aboutsummaryrefslogtreecommitdiffstats
path: root/g10/build-packet.c
diff options
context:
space:
mode:
authorWerner Koch <[email protected]>2024-04-15 10:16:40 +0000
committerWerner Koch <[email protected]>2024-04-15 10:18:09 +0000
commitc736052e9ccaca8fc4662af43820090910e88122 (patch)
tree836e12da9c2dca21b96608e062ac578aff5d479a /g10/build-packet.c
parentgpg: Add arg session_algo to pk_decrypt. (diff)
downloadgnupg-c736052e9ccaca8fc4662af43820090910e88122.tar.gz
gnupg-c736052e9ccaca8fc4662af43820090910e88122.zip
gpg: Implement Kyber encryption.
* g10/build-packet.c (do_pubkey_enc): Support Kyber. * g10/pkglue.c (do_encrypt_kem): Implement. -- Note that the code does only work for ky768_cv25519 for now. GnuPG-bug-id: 6815
Diffstat (limited to 'g10/build-packet.c')
-rw-r--r--g10/build-packet.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/g10/build-packet.c b/g10/build-packet.c
index fd315b313..606c5c2d8 100644
--- a/g10/build-packet.c
+++ b/g10/build-packet.c
@@ -987,9 +987,14 @@ do_pubkey_enc( IOBUF out, int ctb, PKT_pubkey_enc *enc )
if (enc->pubkey_algo == PUBKEY_ALGO_KYBER && i == 2)
iobuf_put (a, enc->seskey_algo);
- if (enc->pubkey_algo == PUBKEY_ALGO_ECDH && i == 1)
+ if (i == 1 && enc->pubkey_algo == PUBKEY_ALGO_ECDH)
rc = gpg_mpi_write_opaque_nohdr (a, enc->data[i]);
- else if (enc->pubkey_algo == PUBKEY_ALGO_ECDH)
+ else if (i == 1 && enc->pubkey_algo == PUBKEY_ALGO_KYBER)
+ rc = gpg_mpi_write_opaque_32 (a, enc->data[i], NULL);
+ else if (i == 2 && enc->pubkey_algo == PUBKEY_ALGO_KYBER)
+ rc = gpg_mpi_write_opaque_nohdr (a, enc->data[i]);
+ else if (enc->pubkey_algo == PUBKEY_ALGO_ECDH
+ || enc->pubkey_algo == PUBKEY_ALGO_KYBER)
rc = sos_write (a, enc->data[i], NULL);
else
rc = gpg_mpi_write (a, enc->data[i], NULL);