From 7e066f614a60c1f6bea601f72a330a57474d088c Mon Sep 17 00:00:00 2001 From: Werner Koch Date: Thu, 14 Nov 2024 14:04:50 +0100 Subject: [PATCH] gpg: For composite algos add the algo string to the colons listings. * g10/keylist.c (list_keyblock_colon): Put the algo string into the curve field for Kyber. -- GnuPG-bug-id: 6638 --- NEWS | 3 +++ doc/DETAILS | 5 +++-- g10/keylist.c | 14 ++++++++++++++ 3 files changed, 20 insertions(+), 2 deletions(-) diff --git a/NEWS b/NEWS index 5f68a5f20..deac1fc54 100644 --- a/NEWS +++ b/NEWS @@ -3,6 +3,9 @@ Noteworthy changes in version 2.5.2 (unreleased) * gpg: Add option 16 to --full-gen-key to create ECC+Kyber. [T6638] + * gpg: For composite algos add the algo string to the colons + listings. [T6638] + * dirmngr: A list of used URLs for loaded CRLs is printed first in the output of the LISTCRL command. [T7337] diff --git a/doc/DETAILS b/doc/DETAILS index a02456499..470497dcd 100644 --- a/doc/DETAILS +++ b/doc/DETAILS @@ -245,8 +245,9 @@ described here. *** Field 17 - Curve name For pub, sub, sec, ssb, crt, and crs records this field is used - for the ECC curve name. For combined algorithms the first and the - second algorithm name, delimited by an underscore are put here. + for the ECC curve name. For composite algorithms the first and + the second algorithm name, delimited by an underscore, are put + here. *** Field 18 - Compliance flags diff --git a/g10/keylist.c b/g10/keylist.c index 1fe39433b..499bdf91f 100644 --- a/g10/keylist.c +++ b/g10/keylist.c @@ -1882,6 +1882,7 @@ list_keyblock_colon (ctrl_t ctrl, kbnode_t keyblock, unsigned int keylength; char *curve = NULL; const char *curvename = NULL; + char pkstrbuf[PUBKEY_STRING_SIZE]; /* Get the keyid from the keyblock. */ node = find_kbnode (keyblock, PKT_PUBLIC_KEY); @@ -1971,6 +1972,14 @@ list_keyblock_colon (ctrl_t ctrl, kbnode_t keyblock, curvename = curve; es_fputs (curvename, es_stdout); } + else if (pk->pubkey_algo == PUBKEY_ALGO_KYBER) + { + /* Note that Kyber should actually not appear here because it is + * the primary key and Kyber is not able to certify. But we + * prepare it here for future composite algorithms and in case + * of faulty packets. */ + es_fputs (pubkey_string (pk, pkstrbuf, sizeof pkstrbuf), es_stdout); + } es_putc (':', es_stdout); /* End of field 17. */ print_compliance_flags (pk, keylength, curvename); es_putc (':', es_stdout); /* End of field 18 (compliance). */ @@ -2122,6 +2131,11 @@ list_keyblock_colon (ctrl_t ctrl, kbnode_t keyblock, curvename = curve; es_fputs (curvename, es_stdout); } + else if (pk2->pubkey_algo == PUBKEY_ALGO_KYBER) + { + es_fputs (pubkey_string (pk2, pkstrbuf, sizeof pkstrbuf), + es_stdout); + } es_putc (':', es_stdout); /* End of field 17. */ print_compliance_flags (pk2, keylength, curvename); es_putc (':', es_stdout); /* End of field 18. */