summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorWerner Koch <wk@gnupg.org>2024-11-14 14:04:50 +0100
committerWerner Koch <wk@gnupg.org>2024-11-14 14:04:50 +0100
commit7e066f614a60c1f6bea601f72a330a57474d088c (patch)
tree28ca772d2bb3006014f7bfd9459968211176aca4
parentgpg: Add option to create Kyber with --full-gen-key. (diff)
downloadgnupg2-7e066f614a60c1f6bea601f72a330a57474d088c.tar.xz
gnupg2-7e066f614a60c1f6bea601f72a330a57474d088c.zip
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
-rw-r--r--NEWS3
-rw-r--r--doc/DETAILS5
-rw-r--r--g10/keylist.c14
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. */