mirror of
git://git.gnupg.org/gnupg.git
synced 2025-07-02 22:46:30 +02:00
gpg: Some support to allow Kyber decryption.
* g10/call-agent.c (agent_pkdecrypt): Support dual keygrips and switch to KEM mode. * g10/ecdh.c (pk_ecdh_decrypt): Add an extra length check. * g10/keyid.c (do_hash_public_key): Fix Kyber fingerprint computation. * g10/mainproc.c (release_list): Free all 4 data elements. (proc_pubkey_enc): Copy all 4 data elements. * g10/misc.c (openpgp_pk_test_algo2): Map Kyber to KEM. * g10/parse-packet.c (parse_pubkeyenc): Fix Kyber parser. * g10/pubkey-enc.c (get_session_key): Allow Kyber. (get_it): Support Kyber. -- GnuPG-bug-id: 6815
This commit is contained in:
parent
1a37f0080b
commit
52c4b09080
7 changed files with 67 additions and 15 deletions
|
@ -117,6 +117,7 @@ get_session_key (ctrl_t ctrl, struct pubkey_enc_list *list, DEK *dek)
|
|||
{
|
||||
if (!(k->pubkey_algo == PUBKEY_ALGO_ELGAMAL_E
|
||||
|| k->pubkey_algo == PUBKEY_ALGO_ECDH
|
||||
|| k->pubkey_algo == PUBKEY_ALGO_KYBER
|
||||
|| k->pubkey_algo == PUBKEY_ALGO_RSA
|
||||
|| k->pubkey_algo == PUBKEY_ALGO_RSA_E
|
||||
|| k->pubkey_algo == PUBKEY_ALGO_ELGAMAL))
|
||||
|
@ -237,6 +238,16 @@ get_it (ctrl_t ctrl,
|
|||
err = gcry_sexp_build (&s_data, NULL, "(enc-val(ecdh(s%m)(e%m)))",
|
||||
enc->data[1], enc->data[0]);
|
||||
}
|
||||
else if (sk->pubkey_algo == PUBKEY_ALGO_KYBER)
|
||||
{
|
||||
if (!enc->data[0] || !enc->data[1] || !enc->data[2] || !enc->data[3])
|
||||
err = gpg_error (GPG_ERR_BAD_MPI);
|
||||
else
|
||||
err = gcry_sexp_build (&s_data, NULL,
|
||||
"(enc-val(pqc(e%m)(k%m)(s%m)(fixed-info%s)))",
|
||||
enc->data[0], enc->data[1], enc->data[3],
|
||||
"\x1d" /*PUBKEY_ALGO_KYBER*/);
|
||||
}
|
||||
else
|
||||
err = gpg_error (GPG_ERR_BUG);
|
||||
|
||||
|
@ -249,7 +260,6 @@ get_it (ctrl_t ctrl,
|
|||
/* Decrypt. */
|
||||
desc = gpg_format_keydesc (ctrl, sk, FORMAT_KEYDESC_NORMAL, 1);
|
||||
|
||||
/*FIXME: Support dual keys. */
|
||||
err = agent_pkdecrypt (NULL, keygrip,
|
||||
desc, sk->keyid, sk->main_keyid, sk->pubkey_algo,
|
||||
s_data, &frame, &nframe, &padding);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue