Page MenuHome GnuPG

GnuPG: Bad signature on import of designated revokation certificate
Open, NormalPublic

Description

On import of a revokation certificate of a designated revoker, the revokation does work, but the output includes a "bad signature" line.

To reproduce:

  1. Generate a certificate with a designated revoker
  2. Generate the designated revokation certificate
  3. Import the designated revokation certificate
gpg: key C5D6C919005F36A4: invalid revocation certificate: Bad signature - rejected

Note: 78C3C63D8D16D0FD is the keyid of the designated revoker

Tested with:

  • gpg4win 5.0.1, gnupg 2.5.17 @ win11 and gnupg 2.5.18 @ linux
  • one gnupghome dir (with both the designated revoker and the to-be-revoked certificate)
  • two distinct gnupghome dirs (one for the designated revoker, one for the to-be-revoked cert), same behaviour on import in both keyrings

Full output:

C:\Users\g10>gpg --batch --yes --passphrase '' --add-desig-revoker 98111E67AE06F2BEFD2BDE10C5D6C919005F36A4 --quick-gen-key "to-be-revoked"
gpg: revocation certificate stored as 'C:\\Users\\g10\\AppData\\Roaming\\gnupg\\openpgp-revocs.d\\395E08CB440EEB7ED954218D74FC0984EB496414.rev'
C:\Users\g10>gpg -k ted to-be-revoked
gpg: checking the trustdb
gpg: marginals needed: 3  completes needed: 1  trust model: pgp
gpg: depth: 0  valid:   3  signed:   6  trust: 0-, 0q, 0n, 0m, 0f, 3u
gpg: depth: 1  valid:   6  signed:   1  trust: 6-, 0q, 0n, 0m, 0f, 0u
gpg: next trustdb check due at 2029-03-24
pub   rsa3072 2023-03-08 [SC]
      98111E67AE06F2BEFD2BDE10C5D6C919005F36A4
uid           [ultimate] Ted Tester <Ted.Tester@demo.gnupg.com>
sub   rsa3072 2023-03-08 [E]
      CC5274CB8072E9778DADD15BCD573B2B0736643A

pub   ed25519 2026-03-25 [SC] [expires: 2029-03-24]
      395E08CB440EEB7ED954218D74FC0984EB496414
      Revocable by: 98111E67AE06F2BEFD2BDE10C5D6C919005F36A4
uid           [ultimate] to-be-revoked
sub   cv25519 2026-03-25 [E]
      539605F663650EDB8E4E3464C51BFDA0D4448569
C:\Users\g10>gpg --desig-revoke to-be-revoked > revokation.asc

pub  ed25519/74FC0984EB496414 2026-03-25 to-be-revoked

To be revoked by:

sec  rsa3072/C5D6C919005F36A4 2023-03-08 Ted Tester <Ted.Tester@demo.gnupg.com>

Create a designated revocation certificate for this key? (y/N) y
Please select the reason for the revocation:
  0 = No reason specified
  1 = Key has been compromised
  2 = Key is superseded
  3 = Key is no longer used
  Q = Cancel
(Probably you want to select 1 here)
Your decision? 0
Enter an optional description; end it with an empty line:
>
Reason for revocation: No reason specified
(No description given)
Is this okay? (y/N) y
ASCII armored output forced.
Revocation certificate created.
C:\Users\g10>gpg -vvv --import --no-sig-cache revokation.asc
gpg: using character set 'utf-8'
gpg: enabled compatibility flags:
gpg: armor: BEGIN PGP PUBLIC KEY BLOCK
gpg: armor header: Comment: A designated revocation certificate should follow
# off=0 ctb=98 tag=6 hlen=2 plen=51
:public key packet:
        version 4, algo 22, created 1774433020, expires 0
        pkey[0]: [80 bits] ed25519 (1.3.6.1.4.1.11591.15.1)
        pkey[1]: [263 bits]
        keyid: 74FC0984EB496414
# off=53 ctb=89 tag=2 hlen=3 plen=438
:signature packet: algo 1, keyid C5D6C919005F36A4
        version 4, created 1774433093, md5len 0, sigclass 0x20
        digest algo 8, begin of digest 69 11
        hashed subpkt 33 len 21 (issuer fpr v4 98111E67AE06F2BEFD2BDE10C5D6C919005F36A4)
        hashed subpkt 2 len 4 (sig created 2026-03-25)
        hashed subpkt 29 len 1 (revocation reason 0x00 ())
        subpkt 16 len 8 (issuer key ID C5D6C919005F36A4)
        data: [3069 bits]
# off=494 ctb=88 tag=2 hlen=2 plen=144
:signature packet: algo 22, keyid 74FC0984EB496414
        version 4, created 1774433020, md5len 0, sigclass 0x1f
        digest algo 10, begin of digest 6f ab
        hashed subpkt 33 len 21 (issuer fpr v4 395E08CB440EEB7ED954218D74FC0984EB496414)
        hashed subpkt 2 len 4 (sig created 2026-03-25)
        hashed subpkt 12 len 22 (revocation key: c=80 a=1 f=98111E67AE06F2BEFD2BDE10C5D6C919005F36A4)
        hashed subpkt 7 len 1 (not revocable)
        subpkt 16 len 8 (issuer key ID 74FC0984EB496414)
        data: [252 bits]
        data: [253 bits]
# off=640 ctb=b4 tag=13 hlen=2 plen=13
:user ID packet: "to-be-revoked"
# off=655 ctb=88 tag=2 hlen=2 plen=181
:signature packet: algo 22, keyid 74FC0984EB496414
        version 4, created 1774433020, md5len 0, sigclass 0x13
        digest algo 10, begin of digest 00 c0
        hashed subpkt 33 len 21 (issuer fpr v4 395E08CB440EEB7ED954218D74FC0984EB496414)
        hashed subpkt 2 len 4 (sig created 2026-03-25)
        hashed subpkt 20 len 26 (notation: manu=2,2.5+1.11,2,1)
        hashed subpkt 27 len 1 (key flags: 03)
        hashed subpkt 9 len 4 (key expires after 3y0d0h0m)
        hashed subpkt 11 len 4 (pref-sym-algos: 9 8 7 2)
        hashed subpkt 34 len 1 (pref-aead-algos: 2)
        hashed subpkt 21 len 5 (pref-hash-algos: 10 9 8 11 2)
        hashed subpkt 22 len 3 (pref-zip-algos: 2 3 1)
        hashed subpkt 30 len 1 (features: 07)
        hashed subpkt 23 len 1 (keyserver preferences: 80)
        subpkt 16 len 8 (issuer key ID 74FC0984EB496414)
        data: [256 bits]
        data: [255 bits]
gpg: pub  ed25519/74FC0984EB496414 2026-03-25  to-be-revoked
gpg: key 74FC0984EB496414: "to-be-revoked" revocation certificate added
gpg: using pgp trust model
gpg: key 06E28F5FB5297489: accepted as trusted key
gpg: key C5D6C919005F36A4: accepted as trusted key
gpg: key 74FC0984EB496414: accepted as trusted key
gpg: key 74FC0984EB496414: "to-be-revoked" 1 new signature

gpg: key C5D6C919005F36A4: invalid revocation certificate: Bad signature - rejected

gpg: Total number processed: 1
gpg:         new signatures: 1
gpg: 13 keys processed (9 validity counts cleared)
gpg: marginals needed: 3  completes needed: 1  trust model: pgp
gpg: Note: signature key C2577F23F8E93418 expired 2023-03-09 11:00:00
gpg: depth: 0  valid:   3  signed:   6  trust: 0-, 0q, 0n, 0m, 0f, 3u
gpg: depth: 1  valid:   6  signed:   1  trust: 6-, 0q, 0n, 0m, 0f, 0u
gpg: next trustdb check due at 2029-03-24
C:\Users\g10>gpg -k ted to-be-revoked
pub   rsa3072 2023-03-08 [SC]
      98111E67AE06F2BEFD2BDE10C5D6C919005F36A4
uid           [ultimate] Ted Tester <Ted.Tester@demo.gnupg.com>
sub   rsa3072 2023-03-08 [E]
      CC5274CB8072E9778DADD15BCD573B2B0736643A

pub   ed25519 2026-03-25 [SC] [revoked: 2026-03-25]
      395E08CB440EEB7ED954218D74FC0984EB496414
      Revocable by: 98111E67AE06F2BEFD2BDE10C5D6C919005F36A4
uid           [ revoked] to-be-revoked

Details

Version
gpg4win 5.0.1, gnupg 2.5.17 @ win11; gnupg 2.5.18 @ linux

Event Timeline

timegrid triaged this task as Normal priority.Wed, Mar 25, 11:10 AM
timegrid created this task.
timegrid created this object with edit policy "Contributor (Project)".
timegrid changed Version from gpg4win 5.0.1, gnupg 2.5.17 @ win11 to gpg4win 5.0.1, gnupg 2.5.17 @ win11; gnupg 2.5.18 @ linux.

Note: The invalid revocation certificate: Bad signature - rejected line is also shown on vsd 3.3.4, gpg 2.2.53 @ win10 (but revocation works).