From debbugs-submit-bounces@debbugs.gnu.org Fri May 01 13:20:48 2020 Received: (at 22883) by debbugs.gnu.org; 1 May 2020 17:20:48 +0000 Received: from localhost ([127.0.0.1]:50568 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1jUZLE-0007Wx-D0 for submit@debbugs.gnu.org; Fri, 01 May 2020 13:20:48 -0400 Received: from eggs.gnu.org ([209.51.188.92]:60568) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1jUZLC-0007Wj-69 for 22883@debbugs.gnu.org; Fri, 01 May 2020 13:20:47 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]:60354) by eggs.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jUZL6-00035s-GN; Fri, 01 May 2020 13:20:40 -0400 Received: from [2a01:e0a:1d:7270:af76:b9b:ca24:c465] (port=41198 helo=ribbon) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1jUZL5-0005wj-Sp; Fri, 01 May 2020 13:20:40 -0400 From: =?utf-8?Q?Ludovic_Court=C3=A8s?= To: Ricardo Wurmus Subject: Re: bug#22883: Authenticating a Git checkout References: <87io14sqoa.fsf@dustycloud.org> <87h9ep8gxk.fsf@gnu.org> <20160426001359.GA23088@jasmine> <874majg0z8.fsf@gnu.org> <87bn3iz1xc.fsf_-_@gnu.org> <87wpket748.fsf@gnu.org> <87bmkwm8ed.fsf@gnu.org> <87png9o8i2.fsf@elephly.net> <87fth4bj6y.fsf@gnu.org> <87bln9oupo.fsf@gnu.org> Date: Fri, 01 May 2020 19:20:38 +0200 In-Reply-To: <87bln9oupo.fsf@gnu.org> ("Ludovic \=\?utf-8\?Q\?Court\=C3\=A8s\=22'\?\= \=\?utf-8\?Q\?s\?\= message of "Thu, 30 Apr 2020 17:32:19 +0200") Message-ID: <87y2qbefmh.fsf@gnu.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.3 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 22883 Cc: 22883@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) Ludovic Court=C3=A8s skribis: > =E2=80=A2 Generalize that to channels. As I see it, the generalization would be made by adding the authentication parameters to the =E2=80=98.guix-channel=E2=80=99 file, alon= g these lines: (channel (version 0) (keyring-reference "my-keyring-branch") (historical-authorizations ".guix-authorizations.old")) where: =E2=80=A2 =E2=80=98keyring-reference=E2=80=99 specifies the branch where = to look for *.key files that constitute the keyring. It can be =E2=80=98master=E2=80=99 = and have the key mixed up with other files if that=E2=80=99s OK for the channel. By default, it could be the current branch. =E2=80=A2 =E2=80=98historical-authorizations=E2=80=99 specifies a file to= load in this branch and that contains a =E2=80=98.guix-authorizations=E2=80=99-formatted li= st of fingerprints for commits that lack a =E2=80=98.guix-authorizations=E2= =80=99 file. By default, we could ignore historical commits=E2=80=94more specificall= y, commits whose parent(s) lack(s) =E2=80=98.guix-authorizations=E2=80=99.= It does mean that if an authorized commit removes =E2=80=98.guix-authorizations= =E2=80=99, then we=E2=80=99re back to unauthenticated commits. =E2=80=98guix pull=E2=80=99 would error out before attempting to build anyt= hing if authentication fails. It could display a warning when pulling a commit whose parent(s) lack(s) =E2=80=98.guix-authorizations=E2=80=99. Thoughts? In terms of code, everything is already there, so it=E2=80=99d be mostly ab= out moving code around and double-checking the new data formats since they=E2=80=99ll be hard to change. In terms of processes, it=E2=80=99ll be tricky: if we committers make a mis= take (sign with the wrong key, forget to add a new committer=E2=80=99s key, etc.= ), nobody is able to pull. In such a case, we=E2=80=99ll probably have to do a hard-reset of the affected branch. It would be best if we had a server-side hook to perform all these checks, so that we don=E2=80=99t encounter such problems. That would mean running some of this code on Savannah, I don=E2=80=99t know if it=E2=80=99l= l be possible. If it=E2=80=99s not, we can set up our own Git repo elsewhere and make Savannah a mirror. More thoughts? :-) Ludo=E2=80=99.