diff options
| author | Werner Koch <[email protected]> | 2024-04-15 10:16:40 +0000 |
|---|---|---|
| committer | Werner Koch <[email protected]> | 2024-04-15 10:18:09 +0000 |
| commit | c736052e9ccaca8fc4662af43820090910e88122 (patch) | |
| tree | 836e12da9c2dca21b96608e062ac578aff5d479a /g10/build-packet.c | |
| parent | gpg: Add arg session_algo to pk_decrypt. (diff) | |
| download | gnupg-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.c | 9 |
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); |
