aboutsummaryrefslogtreecommitdiffstats
path: root/g10/packet.h
diff options
context:
space:
mode:
authorWerner Koch <[email protected]>2024-04-11 13:56:21 +0000
committerWerner Koch <[email protected]>2024-04-11 13:56:21 +0000
commit813f8d1b8e4b6c4365f0bd2a5305bdbe1e049d05 (patch)
treee8c88bf44d695c7d1e3d8186e52324f9b12c9aaf /g10/packet.h
parentagent: Add more diagnostics to PQC decryption. (diff)
downloadgnupg-813f8d1b8e4b6c4365f0bd2a5305bdbe1e049d05.tar.gz
gnupg-813f8d1b8e4b6c4365f0bd2a5305bdbe1e049d05.zip
gpg: Changed internal data format for Kyber.
* g10/packet.h (PKT_pubkey_enc): Add field seskey_algo. (struct pubkey_enc_list): Ditto. * g10/misc.c (pubkey_get_nenc): Change value for Kyber from 4 to 3. * g10/parse-packet.c (parse_pubkeyenc): Store the Kyber algo in the new field and adjust data. Do not store the length byte in data[2]. * g10/build-packet.c (do_pubkey_enc): Take the session algo for Kyber from the new field. * g10/encrypt.c (write_pubkey_enc): Ses the seskey_algo. * g10/mainproc.c (proc_pubkey_enc): Copy it. * g10/pubkey-enc.c (get_it): Support Kyber decryption. * g10/seskey.c (encode_session_key): Handle Kyber different from ECDH. -- Having always the single byte in the packet data than to store and retrieve it from an MPI is much easier. Thus this patch changes the original internal format. With this chnages decryption of the slighly modified test data works now. See the bug tracker for test data. GnuPG-bug-id: 6815
Diffstat (limited to 'g10/packet.h')
-rw-r--r--g10/packet.h3
1 files changed, 3 insertions, 0 deletions
diff --git a/g10/packet.h b/g10/packet.h
index 40e5051c0..459e38dda 100644
--- a/g10/packet.h
+++ b/g10/packet.h
@@ -137,6 +137,8 @@ typedef struct {
byte version;
/* The algorithm used for the public key encryption scheme. */
byte pubkey_algo;
+ /* The session key algorithm used by some pubkey algos. */
+ byte seskey_algo;
/* Whether to hide the key id. This value is not directly
serialized. */
byte throw_keyid;
@@ -151,6 +153,7 @@ struct pubkey_enc_list
struct pubkey_enc_list *next;
u32 keyid[2];
int pubkey_algo;
+ int seskey_algo;
int result;
gcry_mpi_t data[PUBKEY_MAX_NENC];
};