On import of a revokation certificate of a designated revoker, the revokation does work, but the output includes a "bad signature" line.
To reproduce:
- Generate a certificate with a designated revoker
- Generate the designated revokation certificate
- 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]
539605F663650EDB8E4E3464C51BFDA0D4448569C:\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-24C:\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