• Bug#1101418: debian-keyring: Update OpenPGP nomenclature usage (1/3)

    From Guillem Jover@21:1/5 to All on Thu Mar 27 10:20:01 2025
    Package: debian-keyring
    Version: 2025.03.23
    Severity: wishlist
    Tags: patch

    Hi!

    The attached patches cleans up the OpenPGP nomenclature usage (and some
    other minor lateral cleanups), in package documentation and in the
    keyring filenames, while providing backward compatibility symlinks for
    the old names so that people can transition easily. (I'd like for
    example to be able to extend the filename refs to the keyrings in the
    dpkg codebase for example. :)

    This should also fix multiple pedantic lintian tags. :D

    When looking into this, I realized that there might be a need to
    perhaps update the keyring.debian.org and dsa-puppet side of this,
    because I'm not sure if these changes will break that. But from a
    quick scan over dsa-puppet, it was not immediately clear, and I don't
    have visibility over keyring.debian.org. I'm happy to try to implement
    any needed changes there, but if you can afford it, some minor hand
    holding or assistance/guidance would be appreciated!

    On the last attached patch I trimmed the git --stat output and replaced
    it with a --shortstat one to avoid the bloat. And compressed the last
    two patches to also reduce their size.

    Thanks,
    Guillem

    From c8ee65297b1f34492876d32c7372677f3f285a39 Mon Sep 17 00:00:00 2001
    From: Guillem Jover <guillem@debian.org>
    Date: Sun, 5 Jan 2025 20:35:09 +0100
    Subject: [PATCH 1/4] =?UTF-8?q?Use=20=C2=ABDebian=C2=BB=20instead=20of=20t?=
    =?UTF-8?q?he=20odd=20=C2=ABDebian=20GNU=C2=BB=20when=20referring=20to=20t?=
    =?UTF-8?q?he=20project?=
    MIME-Version: 1.0
    Content-Type: text/plain; charset=UTF-8
    Content-Transfer-Encoding: 8bit

    ---
    debian/copyright | 6 +++---
    1 file changed, 3 insertions(+), 3 deletions(-)

    diff --git a/debian/copyright b/debian/copyright
    index 6e53a917..c835fb4f 100644
    --- a/debian/copyright
    +++ b/debian/copyright
    @@ -1,4 +1,4 @@
    -This is Debian GNU's GnuPG keyrings of developers keys.
    +This is Debian GnuPG keyrings of developers keys.
    =20
    This package was originally put together by James Troup
    <james@nocrew.org> and Igor Grobman <igor@debian.org>. It is now
    @@ -23,7 +23,7 @@ implied warranty of MERCHANTABILITY or FITNESS FOR A PART= ICULAR
    PURPOSE. See the GNU General Public License for more details.
    =20
    You should have received a copy of the GNU General Public License with
    -your Debian GNU system, in /usr/share/common-licenses/GPL, or with the Deb= ian
    -GNU debian-keyring source package as the file COPYING. If not, write
    +your Debian system, in /usr/share/common-licenses/GPL, or with the
    +Debian debian-keyring source package as the file COPYING. If not, write
    to the Free Softwar
  • From Gunnar Wolf@21:1/5 to All on Mon Apr 7 19:10:01 2025
    Hello Guillem,

    Thanks for this bug report!

    I have applied patches 0001, 0002 and 0003 to our working tree, and should include them by the next keyring push. But, of course, patch 0004 is the
    most significative of them all.

    I reviewed it, and find the renaming/editing thorough. However, due to the indirect uses, I would like a further review of the code. I see your patch
    is taking care of providing the symlinks in the packages only, but not in
    the generated output/ directory we push to keyring.debian.org; given the
    way this system is used (keys are used via rsync), I think adding symlinks there would be enough (but I don't want to create that wide breakage
    without another pair of eyes confirming so!).

    Anyway, it would be even better (of course, it would be a future step) to
    get a listing of what actually uses the keyrings, and push to update said programs as well.

    Thank you very much for pushing in this direction!

    – Gunnar.

    -----BEGIN PGP SIGNATURE-----

    wr0EABYKAG8Fgmf0BMUJEOL2O0NT9FmJRxQAAAAAAB4AIHNhbHRAbm90YXRpb25z LnNlcXVvaWEtcGdwLm9yZ6SzbDCoYD3q/jyFi1yFQPsM+fciY8g8fJ77gT++++PX FiEEYLMJPZYQjly5cULv4vY7Q1P0WYkAAP1rAQDSS0Tb7wLTcaFI2W8+bqo7yMuM Zu97wa5df6qt5FZiagEAmtxiRD4RwNu9XZqp+DbImbPEZE/1C9l7wi/XZCZu2wc=
    =oVvd
    -----END PGP SIGNATURE-----

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Guillem Jover@21:1/5 to Gunnar Wolf on Thu Apr 10 04:40:01 2025
    Hi!

    [ Sorry, as mentioned on IRC I only noticed the reply when I checked
    on the web UI, due to the missing CC. :) ]

    On Mon, 2025-04-07 at 11:00:59 -0600, Gunnar Wolf wrote:
    I have applied patches 0001, 0002 and 0003 to our working tree, and should include them by the next keyring push. But, of course, patch 0004 is the
    most significative of them all.

    Perfect thanks!

    I reviewed it, and find the renaming/editing thorough. However, due to the indirect uses, I would like a further review of the code. I see your patch
    is taking care of providing the symlinks in the packages only, but not in
    the generated output/ directory we push to keyring.debian.org; given the
    way this system is used (keys are used via rsync), I think adding symlinks there would be enough (but I don't want to create that wide breakage
    without another pair of eyes confirming so!).

    As mentioned on IRC as well, this was the part I initially mentioned I
    had concerns with. And thanks for pointing out the omission in the
    output directory.

    I've now reworked a bit the build system, and created those symlinks
    there as well. I've not switched to copying them into the packaging,
    because AFAIR debhelper might turn them into actual files on copy (?),
    so left the dh_link handling as is. (Updated patches attached, with
    the last patch stats summary trimmed and patch compressed again.)

    As you mentioned, having more eyes on this from the Keyring Team, and
    probably from DSA might be best, before merging and deploying this to
    avoid potentially obvious breakage.

    (I'm still happy to rework or change anything here or elsewhere that
    might be necessary! :)

    Anyway, it would be even better (of course, it would be a future step) to
    get a listing of what actually uses the keyrings, and push to update said programs as well.

    Yes, this was on my plan, but in my mind, only after this change hits
    the archive, and then ideally I'd only start sending such patches after
    the Debian trixie release, so that no versioned dependency is required.

    For the filesystem part through the .deb packages this seems easier to
    deal with. My concern has been with the rsync side, where I'm not sure
    how such a deprecation process can be handled (if this was an HTTP
    thing, then a permanent redirect would be an obvious solution, f.ex.).
    Perhaps an announcement with a timeline would be enough (dunno)?

    Thanks,
    Guillem

    From a8f16c5f4f58c161a51bd37cb24a0cca5b4deb89 Mon Sep 17 00:00:00 2001
    From: Guillem Jover <guillem@debian.org>
    Date: Thu, 10 Apr 2025 03:43:37 +0200
    Subject: [PATCH 1/3] Remove duplicate debian-keyring.gpg from Makefile
    pre-requisite

    This keyring is listed twice in the Makefile target pre-requisites.
    ---
    Makefile | 2 +-
    1 file changed, 1 insertion(+), 1 deletion(-)

    diff --git a/Makefile b/Makefile
    index 76675fde..087c020d 100644
    --- a/Makefile
    +++ b/Makefile
    @@ -24,7 +24,7 @@ output/README: README
    output/changelog: debian/changelog
    cp debian/changelog output/

    -output/openpgpkey: output/keyrings/debian-keyring.gpg output/keyrings/debian-keyring.gpg output/keyrings/debian-nonupload.gpg output/keyrings/debian-role-keys.gpg
    +output/openpgpkey: output/keyrings/debian-keyring.gpg output/keyrings/debian-nonupload.gpg output/keyrings/debian-role-keys.gpg
    cd output && ../scripts/update-keyrings build-wkd debian.org keyrings/debian-keyring.gpg keyrings/debian-nonupload.gpg keyrings/debian-role-keys.gpg

    test: all
    --
    2.49.0


    From 0af88233385af5cda32256c309430d7373266aa5 Mon Sep 17 00:00:00 2001
    From: Guillem Jover <guillem@debian.org>
    Date: Thu, 10 Apr 2025 03:50:06 +0200
    Subject: [PATCH 2/3] Refactor Makefile targets

    Use variables to track the output files, and a single rule
  • From Guillem Jover@21:1/5 to All on Fri Apr 11 02:10:01 2025
    These keyrings contain OpenPGP certificates, and are not vendor specific,
    so naming them with an extension after GnuPG in detriment to the other
    multiple OpenPGP implementations does not promote the interoperability
    one would expect from that ecosystem.

    Given that these files are API, and will have external references,
    we add new symlinks with the .pgp extension using the .gpg ones as
    targets, and leaving the keyrings with .gpg extension as is, which
    should then be considered deprecated, but should stay until its clear
    they are not being used from the Debian infrastructure, and potentially
    a transition has been coordinated or announced about their fate for
    the rsync endpoints.

    This matches the intent after the changes being discussed as part
    of <https://bugs.debian.org/1101418>. Where after those changes in debian-keyring and ones being prepared for userdir-ldap have been
    deployed, the symlink targets in dsa-puppet can be changed to use the
    canonical .pgp pathnames, with a subsequent patch.
    ---
    modules/roles/manifests/keyring_debian_org_mirror.pp | 12 ++++++++++++
    1 file changed, 12 insertions(+)

    diff --git a/modules/roles/manifests/keyring_debian_org_mirror.pp b/modules/roles/manifests/keyring_debian_org_mirror.pp
    index ca3c633be..6fddb3a50 100644
    --- a/modules/roles/manifests/keyring_debian_org_mirror.pp
    +++ b/modules/roles/manifests/keyring_debian_org_mirror.pp
    @@ -6,14 +6,26 @@ class roles::keyring_debian_org_mirror {
    ensure => 'link',
    target => '/var/lib/misc/thishost/debian-keyring.gpg'
    }
    + file { '/srv/keyring.debian.org/keyrings/debian-keyring.pgp':
    + ensure => 'link',
    + target => '/var/lib/misc/thishost/debian-keyring.gpg'
    + }
    file { '/srv/keyring.debian.org/keyrings/debian-maintainers.gpg':
    ensure => 'link',
    target => '/var/lib/misc/thishost/debian-maintainers.gpg'
    }
    + file { '/srv/keyring.debian.org/keyrings/debian-maintainers.pgp':
    + ensure => 'link',
    + target => '/var/lib/misc/thishost/debian-maintainers.gpg'
    + }
    file { '/srv/keyrin
  • From Gunnar Wolf@21:1/5 to All on Mon Apr 21 21:50:01 2025
    Hello DSA,

    I am writing to you to help us decide whether it is pertinent to do a move right now, or whether we should wait for you to implement anything.

    Bug #1101418 (for which you have been Cc:d already) requests renaming the Debian keyrings from *.gpg to *.pgp, as we are dealing with OpenPGP
    objects, and are not tied to a GnuPG install; the reason *.gpg was chosen
    over 15 years ago is mostly historic, and should be reverted, particularly given the hostility of the GnuPG upstream development towards the OpenPGP community.

    Guillem kindly prepared some patches to do this, and after some discussion, added the creation of some symlinks. The result of the patch in question
    will be that the keyrings published in kaufmann.debian.org will be renamed
    from *.gpg to *.pgp, and that symlinks will be created preserving the
    original names; in the future, we might work towards removing the symlinks.

    We need input from DSA to make sure we can perform this change. some
    specific points we discussed on IRC are:

    - ftp-master processing
    - Email address to db.debian.org
    - vote.debian.org
    - Validation of mails sent to signed-only lists

    But, of course, other subsystems might also need it. We believe everything
    will work transparently if rsync is properly set to mirror symlinks.

    I intend to do a keyring push by Thursday or Friday, and it would be great
    if we could deploy the patch by then. But, as we agreed in the
    keyring-maint channel, I won't do the move unless we get your go-ahead

    Greeetings!

    -----BEGIN PGP SIGNATURE-----

    wr0EABYKAG8FgmgGnwMJEOL2O0NT9FmJRxQAAAAAAB4AIHNhbHRAbm90YXRpb25z LnNlcXVvaWEtcGdwLm9yZ2ZDwzFJt1sn7NcmuWJOScLA7hOIToP6vSPYp6wJCaEE FiEEYLMJPZYQjly5cULv4vY7Q1P0WYkAAGwDAQDJMg98yASyb80zhMwZNo9hPNnk 2jp7q0XTYl4zY0jt8QD9GIiAblp+iranhsp4XWmgnACkbgy4kyA1HGmI2IfoCAA=
    =4RMU
    -----END PGP SIGNATURE-----

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Adam D. Barratt@21:1/5 to Gunnar Wolf on Mon Apr 21 23:10:01 2025
    Hi,

    On Mon, 2025-04-21 at 13:39 -0600, Gunnar Wolf wrote:
    I am writing to you to help us decide whether it is pertinent to do a
    move right now, or whether we should wait for you to implement
    anything.

    Bug #1101418 (for which you have been Cc:d already) requests renaming
    the Debian keyrings from *.gpg to *.pgp
    [...]
    Guillem kindly prepared some patches to do this, and after some
    discussion, added the creation of some symlinks. The result of the
    patch in question will be that the keyrings published in
    kaufmann.debian.org will be renamed from *.gpg to *.pgp, and that
    symlinks will be created preserving the original names; in the
    future, we might work towards removing the ymlinks.

    We need input from DSA to make sure we can perform this change. some
    specific points we discussed on IRC are:

    - ftp-master processing
    - Email address to db.debian.org
    - vote.debian.org
    - Validation of mails sent to signed-only lists

    But, of course, other subsystems might also need it. We believe
    everything will work transparently if rsync is properly set to mirror symlinks.

    This is primarily my personal thoughts rather than an official DSA ack.

    To start from the beginning, as it were, the method by which debian.org
    systems receive updated keyrings is userdir-ldap. The script which
    pulls the current active keyrings from keyring.d.o to db.d.o (so that
    they can be deployed by ud-ldap) is https://salsa.debian.org/dsa-team/mirror/dsa-misc/-/blob/master/scripts/sync-keyring?ref_type=heads

    That script runs from cron every 15 minutes on the db.d.o host.

    This appears to be the primary point at which rsync's behaviour with
    respect to symlinks is relevant. The various copy steps each use
    rsync's "-a" option, so should preserve the symlinks.

    The final stage of the sync - to "keyring-final" - copies only the
    files listed in sha512sums.txt, so you would need to ensure that both
    the .gpg and .pgp files / symlinks are included there.

    userdir-ldap maintains its own list of keyrings which are deployed to
    those hosts requesting them (e.g. ftp-master). While the keyrings are
    copied from db.d.o to each host via rsync, the preparation of the rsync
    source area uses Python's shutil.copy(), so AFAICS would follow the new symlinks and continue to deploy *.gpg to var/lib/misc/thishost/ on
    relevant hosts as real files. That should mean that things would
    continue to work, but does mean that the rename would *not* propagate
    to client hosts.

    Regards,

    Adam

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Guillem Jover@21:1/5 to Adam D. Barratt on Wed Apr 23 02:30:01 2025
    Hi!

    On Mon, 2025-04-21 at 22:00:09 +0100, Adam D. Barratt wrote:
    On Mon, 2025-04-21 at 13:39 -0600, Gunnar Wolf wrote:
    I am writing to you to help us decide whether it is pertinent to do a
    move right now, or whether we should wait for you to implement
    anything.

    Bug #1101418 (for which you have been Cc:d already) requests renaming
    the Debian keyrings from *.gpg to *.pgp
    [...]
    Guillem kindly prepared some patches to do this, and after some
    discussion, added the creation of some symlinks. The result of the
    patch in question will be that the keyrings published in kaufmann.debian.org will be renamed from *.gpg to *.pgp, and that
    symlinks will be created preserving the original names; in the
    future, we might work towards removing the ymlinks.

    We need input from DSA to make sure we can perform this change. some specific points we discussed on IRC are:

    - ftp-master processing
    - Email address to db.debian.org
    - vote.debian.org
    - Validation of mails sent to signed-only lists

    But, of course, other subsystems might also need it. We believe
    everything will work transparently if rsync is properly set to mirror symlinks.

    This is primarily my personal thoughts rather than an official DSA ack.

    Thanks for the context on how this all ties together! I tried to look
    into this, but having no access to the systems involved made it a bit
    hard to follow what stuff was doing what or when, etc.

    To start from the beginning, as it were, the method by which debian.org systems receive updated keyrings is userdir-ldap. The script which
    pulls the current active keyrings from keyring.d.o to db.d.o (so that
    they can be deployed by ud-ldap) is https://salsa.debian.org/dsa-team/mirror/dsa-misc/-/blob/master/scripts/sync-keyring?ref_type=heads

    That script runs from cron every 15 minutes on the db.d.o host.

    This appears to be the primary point at which rsync's behaviour with
    respect to symlinks is relevant. The various copy steps each use
    rsync's "-a" option, so should preserve the symlinks.

    Ok, that sounds good then. :)

    The final stage of the sync - to "keyring-final" - copies only the
    files listed in sha512sums.txt, so you would need to ensure that both
    the .gpg and .pgp files / symlinks are included there.

    Ah! Ok, I had changed the sha512sums.txt call to only list the *.pgp,
    so that would break stuff. Attached an amended patch (the last one in
    the previous series), to restore doing the digest on all files under «output/keyrings/*» as was being done before.

    userdir-ldap maintains its own list of keyrings which are deployed to
    those hosts requesting them (e.g. ftp-master). While the keyrings are
    copied from db.d.o to each host via rsync, the preparation of the rsync source area uses Python's shutil.copy(), so AFAICS would follow the new symlinks and continue to deploy *.gpg to var/lib/misc/thishost/ on
    relevant hosts as real files. That should mean that things would
    continue to work, but does mean that the rename would *not* propagate
    to client hosts.

    Ah, then this would seem to be safe to deploy now, and the file types
    problem could be fixed later on. I have had several changes for
    userdir-ldap pending submission, but not this one about shutil.copy(),
    thanks. Will see how to improve that, and then send patches for
    userdir-ldap to DSA (I think I already sent out patches for
    userdir-ldap-cgi).

    I think though, the other related patch I sent for dsa-puppet, might
    self-heal the symlinks?

    Also, (I'm not sure whether I mentioned this before, besides Gunnar),
    something I noticed while trying to make sense how this all works was
    that:

    * At least on usper.debian.org, the
    /srv/keyring.debian.org/keyrings/ directory contains a non-symlink
    debian-maintainer.gpg file (missing final «s»).

    * On keyring.debian.org there's an extra-keys.pgp leftover(?) file,
    perhaps as part of some old transition?

    $ rsync keyring.debian.org::keyrings/keyrings/
    drwxrwsr-x 4,096 2025/03/23 20:19:28 .
    -rw-rw-r-- 30,705,085 2025/03/23 20:18:27 debian-keyring.gpg
    -rw-rw-r-- 2,950,971 2025/03/23 20:18:27 debian-maintainers.gpg
    -rw-rw-r-- 1,076,680 2025/03/23 20:18:27 debian-nonupload.gpg
    -rw-rw-r-- 26,383 2025/03/23 20:18:27 debian-role-keys.gpg
    -rw-rw-r-- 2,722,836 2025/03/23 20:18:27 emeritus-keyring.gpg
    -rw-rw-r-- 25,015 2018/05/21 19:22:45 extra-keys.pgp

    Thanks,
    Guillem

    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

    [continued in next message]

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Adam D. Barratt@21:1/5 to Guillem Jover on Wed Apr 23 18:20:01 2025
    On Wed, 2025-04-23 at 02:24 +0200, Guillem Jover wrote:
    Hi!

    On Mon, 2025-04-21 at 22:00:09 +0100, Adam D. Barratt wrote:

    [...]
    userdir-ldap maintains its own list of keyrings which are deployed
    to those hosts requesting them (e.g. ftp-master). While the
    keyrings are copied from db.d.o to each host via rsync, the
    preparation of the rsync source area uses Python's shutil.copy(),
    so AFAICS would follow the new symlinks and continue to deploy
    *.gpg to var/lib/misc/thishost/ on relevant hosts as real files.
    That should mean that things would continue to work, but does mean
    that the rename would *not* propagate to client hosts.

    Ah, then this would seem to be safe to deploy now, and the file types
    problem could be fixed later on. I have had several changes for
    userdir-ldap pending submission, but not this one about
    shutil.copy(), thanks. Will see how to improve that, and then send
    patches for userdir-ldap to DSA (I think I already sent out patches
    for userdir-ldap-cgi).

    "Probably". If it doesn't work for some reason, however, the effects
    could include things such as dak no longer accepting any uploads from
    DDs because it can no longer find their public keys.

    I'd therefore be tempted to disable both the "pull" and "push" sides on
    db.d.o shortly before the keyring side is deployed, and test them by
    hand afterwards.

    I can't personally guarantee being around at any particular time this
    week though I'm afraid.

    I think though, the other related patch I sent for dsa-puppet, might self-heal the symlinks?

    Unless I missed a patch, I think it only adds symlinks in the new
    names, to the existing .gpg files? If so then it still relies on the
    files shipped by ud-ldap being named .gpg.

    Also, (I'm not sure whether I mentioned this before, besides Gunnar), something I noticed while trying to make sense how this all works was
    that:

      * At least on usper.debian.org, the
        /srv/keyring.debian.org/keyrings/ directory contains a non-
    symlink
        debian-maintainer.gpg file (missing final «s»).

    I think that was me fat-fingering something when testing a while back;
    removed.

      * On keyring.debian.org there's an extra-keys.pgp leftover(?) file,
        perhaps as part of some old transition?

    That I'd have to defer to keyring-maint on.

    Regards,

    Adam

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Gunnar Wolf@21:1/5 to All on Wed Apr 23 19:30:01 2025
    Adam D. Barratt dijo [Wed, Apr 23, 2025 at 05:13:07PM +0100]:
    Ah, then this would seem to be safe to deploy now, and the file types
    problem could be fixed later on. I have had several changes for
    userdir-ldap pending submission, but not this one about
    shutil.copy(), thanks. Will see how to improve that, and then send
    patches for userdir-ldap to DSA (I think I already sent out patches
    for userdir-ldap-cgi).

    "Probably". If it doesn't work for some reason, however, the effects
    could include things such as dak no longer accepting any uploads from
    DDs because it can no longer find their public keys.

    I'd therefore be tempted to disable both the "pull" and "push" sides on >db.d.o shortly before the keyring side is deployed, and test them by
    hand afterwards.

    I can't personally guarantee being around at any particular time this
    week though I'm afraid.

    ..It makes sense to make sure we have a DSA person available to fix things
    in case it all bursts up in flames.

    I was planning on doing this push this Friday, 2025.04.25, in the morning
    (say, anywhere between 09:00–14:00 GMT-6). Can a DSA member be available in case this messes up something?

    Otherwise, I think it's better to listen to Adam's instinct and delay the
    move. It does not necessarily have to be aligned with a "full" keyring
    push.

    Also, (I'm not sure whether I mentioned this before, besides Gunnar),
    something I noticed while trying to make sense how this all works was
    that:

      * At least on usper.debian.org, the
        /srv/keyring.debian.org/keyrings/ directory contains a non-
    symlink
        debian-maintainer.gpg file (missing final «s»).

    I think that was me fat-fingering something when testing a while back; >removed.

      * On keyring.debian.org there's an extra-keys.pgp leftover(?) file,
        perhaps as part of some old transition?

    That I'd have to defer to keyring-maint on.

    Oops, this file looks completely fat-fingered as well. It was last touched
    in May 2018 by keyring:keyring. Inspecting the file with Sequoia treats it
    as a keyring with 17 mostly malformed certs:

    $ sq keyring list /tmp/extra-keys.pgp
    0. Unsupported Cert: Unsupported primary key: Malformed packet: unknown version
    1. Unsupported Cert: Unsupported primary key: Malformed packet: unknown version
    2. Unsupported Cert: Unsupported primary key: Malformed packet: unknown version
    3. Unsupported Cert: Unsupported primary key: Malformed packet: unknown version
    4. Unsupported Cert: Unsupported primary key: Malformed packet: unknown version
    5. 04D5A231C5CC3B9CA2B06FC24AFC280200F2B9F3 Andreas Schuldei (home account) <andreas@schuldei.org>
    6. Unsupported Cert: Unsupported primary key: Malformed packet: unknown version
    7. Unsupported Cert: Unsupported primary key: Malformed packet: unknown version
    8. Unsupported Cert: Unsupported primary key: Malformed packet: unknown version
    9. Unsupported Cert: Unsupported primary key: Malformed packet: unknown version
    10. Unsupported Cert: Unsupported primary key: Malformed packet: unknown version
    11. Unsupported Cert: Unsupported primary key: Malformed packet: unknown version
    12. Unsupported Cert: Unsupported primary key: Malformed packet: unknown version
    13. Unsupported Cert: Unsupported primary key: Malformed packet: unknown version
    14. Unsupported Cert: Unsupported primary key: Malformed packet: unknown version
    15. Unsupported Cert: Unsupported primary key: Malformed packet: unknown version
    16. Unsupported Cert: Unsupported primary key: Malformed packet: unknown version
    17. Unsupported Cert: Unsupported primary key: Malformed packet: unknown version

    Oddly, I have gpg-from-sq installed, but gpg --list-packets works. Still,
    it yields too much output for posting here, but with 18 instances of
    «:public key packet: [invalid]». The included keys sport signatures created between 1996 and 2003.

    Oh, I see -- Running gpg --list-packets from kaufmann (which is "true"
    GnuPG) yields «:key packet: [obsolete version 3]», which I guess is not suppoted in Sequoia.

    The reported userIDs are:

    Filip Van Raemdonck
    Rick Younie
    Marc Brockschmidt
    Jarno Elonen
    Michael Weber
    Andreas Schuldei
    Ryan Murray
    Siggy Brentrup
    Jonathan Hall
    Jonathan J. Hall
    Torsten Werner
    Gerd Knorr
    Mattia Monga
    Detlev Zundel
    Timshel Knoll
    Patrick Patterson
    Jeremy M. Malcolm
    Jean Pierre LeJacq
    Thomas Bushnell, BSG

    So, it's a list of PGPv3 keys from mostly retired DDs (and I don't know why
    it was touched on 2018.05.21).

    Anyway, according to our changelog, I _did_ upload a keyring on said date,
    so that file is my mistake. I am moving it to my home directory in
    kaufmann, just to be sure, but I really doubt we will miss it.

    Thanks for the sharp eye! :-)

    -----BEGIN PGP SIGNATURE-----

    wr0EABYKAG8FgmgJIK0JEOL2O0NT9FmJRxQAAAAAAB4AIHNhbHRAbm90YXRpb25z LnNlcXVvaWEtcGdwLm9yZ5zrmi7P3aSx+YUCkofvDvfoW6GOeXmjS/kelpwKAmt1 FiEEYLMJPZYQjly5cULv4vY7Q1P0WYkAAPLNAP9prA85pTOUpkDMyZO6PV8wTakZ bvxrxm/eO7GOuDi5ygD8Dnp2MuNMoXBwnd+s3NXPSCSTXAOJLg2Dw1UVUQqezgU=
    =udcF
    -----END PGP SIGNATURE-----

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Philipp Kern@21:1/5 to Gunnar Wolf on Wed Apr 23 21:40:01 2025
    On 2025-04-23 19:17, Gunnar Wolf wrote:
    Adam D. Barratt dijo [Wed, Apr 23, 2025 at 05:13:07PM +0100]:
    Ah, then this would seem to be safe to deploy now, and the file types
    problem could be fixed later on. I have had several changes for
    userdir-ldap pending submission, but not this one about
    shutil.copy(), thanks. Will see how to improve that, and then send
    patches for userdir-ldap to DSA (I think I already sent out patches
    for userdir-ldap-cgi).

    "Probably". If it doesn't work for some reason, however, the effects
    could include things such as dak no longer accepting any uploads from
    DDs because it can no longer find their public keys.

    I'd therefore be tempted to disable both the "pull" and "push" sides
    on
    db.d.o shortly before the keyring side is deployed, and test them by
    hand afterwards.

    I can't personally guarantee being around at any particular time this
    week though I'm afraid.

    ..It makes sense to make sure we have a DSA person available to fix
    things
    in case it all bursts up in flames.

    I was planning on doing this push this Friday, 2025.04.25, in the
    morning
    (say, anywhere between 09:00–14:00 GMT-6). Can a DSA member be
    available in
    case this messes up something?

    Otherwise, I think it's better to listen to Adam's instinct and delay
    the
    move. It does not necessarily have to be aligned with a "full" keyring
    push.

    Can we push .gpg and .pgp files with identical content for a while?
    That'd decouple necessary realtime interactions. I realize that this
    does not fix the fact that we might break stuff once we replace .gpg
    files with a symlink - but it also opens up the opportunity that we can
    also replace the references instead.

    Kind regards
    Philipp Kern

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Guillem Jover@21:1/5 to Philipp Kern on Wed Apr 23 23:30:01 2025
    Hi!

    On Wed, 2025-04-23 at 21:23:20 +0200, Philipp Kern wrote:
    On 2025-04-23 19:17, Gunnar Wolf wrote:
    Adam D. Barratt dijo [Wed, Apr 23, 2025 at 05:13:07PM +0100]:
    Ah, then this would seem to be safe to deploy now, and the file types problem could be fixed later on. I have had several changes for userdir-ldap pending submission, but not this one about
    shutil.copy(), thanks. Will see how to improve that, and then send patches for userdir-ldap to DSA (I think I already sent out patches
    for userdir-ldap-cgi).

    "Probably". If it doesn't work for some reason, however, the effects could include things such as dak no longer accepting any uploads from
    DDs because it can no longer find their public keys.

    I'd therefore be tempted to disable both the "pull" and
    "push" sides on
    db.d.o shortly before the keyring side is deployed, and test them by
    hand afterwards.

    I can't personally guarantee being around at any particular time this week though I'm afraid.

    ..It makes sense to make sure we have a DSA person available to
    fix things
    in case it all bursts up in flames.

    I was planning on doing this push this Friday, 2025.04.25, in
    the morning
    (say, anywhere between 09:00–14:00 GMT-6). Can a DSA member be
    available in
    case this messes up something?

    Otherwise, I think it's better to listen to Adam's instinct and
    delay the
    move. It does not necessarily have to be aligned with a "full" keyring push.

    Can we push .gpg and .pgp files with identical content for a while?
    That'd decouple necessary realtime interactions. I realize that this
    does not fix the fact that we might break stuff once we replace .gpg
    files with a symlink - but it also opens up the opportunity that we
    can also replace the references instead.

    I was thinking something along those lines (as in decouple the archive
    switch from the infra switch), as my current main interest right now
    would be for the changes to hit Debian trixie, via the .deb in the
    archive. But it's true that just duplicating the files might be safer,
    and as you mention then we can just simply flip the infra users, and
    then later on whether it's a symlink or not will not matter as much I
    guess.

    I'll try to come up with an updated patch for debian-keyring trying to
    decouple the package generation from the infra syncing, hopefully by
    tomorrow (Thu), or maybe later today.

    Thanks,
    Guillem

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Guillem Jover@21:1/5 to Guillem Jover on Thu Apr 24 03:50:01 2025
    Hi!

    On Wed, 2025-04-23 at 23:16:51 +0200, Guillem Jover wrote:
    On Wed, 2025-04-23 at 21:23:20 +0200, Philipp Kern wrote:
    Can we push .gpg and .pgp files with identical content for a while?
    That'd decouple necessary realtime interactions. I realize that this
    does not fix the fact that we might break stuff once we replace .gpg
    files with a symlink - but it also opens up the opportunity that we
    can also replace the references instead.

    I was thinking something along those lines (as in decouple the archive
    switch from the infra switch), as my current main interest right now
    would be for the changes to hit Debian trixie, via the .deb in the
    archive. But it's true that just duplicating the files might be safer,
    and as you mention then we can just simply flip the infra users, and
    then later on whether it's a symlink or not will not matter as much I
    guess.

    I'll try to come up with an updated patch for debian-keyring trying to decouple the package generation from the infra syncing, hopefully by
    tomorrow (Thu), or maybe later today.

    So this ended up being trivial, as I had already split the logic and
    was creating the symlinks for the packaging independently from the
    previous symlinks for the infra, which I've now switched to being
    hardlinks. This seems safe, because even if they end up being copied
    as new files, then we at most just lose some space, but should have no
    other consequence given that they are going to be proper files. (If
    there's still concern about this I guess I could switch that to a
    «cp -a» call?). Attached updated patch.

    Thanks,
    Guillem

    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

    [continued in next message]

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Gunnar Wolf@21:1/5 to All on Sat Apr 26 09:00:01 2025
    Philipp Kern dijo [Wed, Apr 23, 2025 at 09:23:20PM +0200]:
    Can we push .gpg and .pgp files with identical content for a while?
    That'd decouple necessary realtime interactions. I realize that this
    does not fix the fact that we might break stuff once we replace .gpg
    files with a symlink - but it also opens up the opportunity that we
    can also replace the references instead.

    Thanks for this simple but brilliant idea, Philipp! That's what we did —
    and, at least for a couple of hours, no part of the project has come down crashing and burning over us ☺

    -----BEGIN PGP SIGNATURE-----

    iHUEABYIAB0WIQRgswk9lhCOXLlxQu/i9jtDU/RZiQUCaAyCKgAKCRDi9jtDU/RZ ieXsAP0Ui6gWeomwo8c7G33X+pY3lN4qyUowGuu6eO+U6y6ecgD/Z7LkrKaSSY/3 DTlu/99h6lIvLZSE3guUSrrxy3zdsQ8=
    =6tw6
    -----END PGP SIGNATURE-----

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Adam D. Barratt@21:1/5 to Gunnar Wolf on Sat Apr 26 11:00:01 2025
    On Sat, 2025-04-26 at 00:50 -0600, Gunnar Wolf wrote:
    Philipp Kern dijo [Wed, Apr 23, 2025 at 09:23:20PM +0200]:
    Can we push .gpg and .pgp files with identical content for a while?
    That'd decouple necessary realtime interactions. I realize that
    this does not fix the fact that we might break stuff once we
    replace .gpg files with a symlink - but it also opens up the
    opportunity that we can also replace the references instead.

    Thanks for this simple but brilliant idea, Philipp! That's what we
    did — and, at least for a couple of hours, no part of the project has
    come down crashing and burning over us ☺

    Yay. :-)

    Just for completeness, the complete set of files was synced from
    kaufmann to db.d.o:

    -rw-rw-r-- 1 keyring-sync keyring-sync 2722836 Apr 26 01:25 emeritus-keyring.pgp
    -rw-rw-r-- 1 keyring-sync keyring-sync 2722836 Apr 26 01:25 emeritus-keyring.gpg
    -rw-rw-r-- 1 keyring-sync keyring-sync 26383 Apr 26 01:25 debian-role-keys.pgp
    -rw-rw-r-- 1 keyring-sync keyring-sync 26383 Apr 26 01:25 debian-role-keys.gpg
    -rw-rw-r-- 1 keyring-sync keyring-sync 1100581 Apr 26 01:25 debian-nonupload.pgp
    -rw-rw-r-- 1 keyring-sync keyring-sync 1100581 Apr 26 01:25 debian-nonupload.gpg
    -rw-rw-r-- 1 keyring-sync keyring-sync 2928260 Apr 26 01:25 debian-maintainers.pgp
    -rw-rw-r-- 1 keyring-sync keyring-sync 2928260 Apr 26 01:25 debian-maintainers.gpg
    -rw-rw-r-- 1 keyring-sync keyring-sync 30786413 Apr 26 01:25 debian-keyring.pgp -rw-rw-r-- 1 keyring-sync keyring-sync 30786413 Apr 26 01:25 debian-keyring.gpg

    with ud-ldap then shipping on just the .gpg files to consuming systems
    (e.g. ftp-master) as before.

    Regards,

    Adam

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)