aboutsummaryrefslogtreecommitdiffstats
path: root/g10/pkglue.c
diff options
context:
space:
mode:
authorNIIBE Yutaka <[email protected]>2025-10-07 01:59:48 +0000
committerNIIBE Yutaka <[email protected]>2025-10-07 01:59:48 +0000
commit06f993dc0eceee0f6ec99b9417d4368eee203e6d (patch)
tree829c77502dfc0566a0f2189d312639cf8e95c663 /g10/pkglue.c
parentdirmngr: Fix wrong diagnostic "failed to create alarm thread". (diff)
downloadgnupg-06f993dc0eceee0f6ec99b9417d4368eee203e6d.tar.gz
gnupg-06f993dc0eceee0f6ec99b9417d4368eee203e6d.zip
agent,common,gpg: Clean up for S/MIME decryption with KEM API.
* agent/agent.h (agent_kem_decrypt): Remove OPTION argument. * agent/command.c (cmd_pkdecrypt): No option is needed. * agent/pkdecrypt.c (composite_pgp_kem_decrypt): Use gnupg_ecc_kem_simple_kdf. (ecc_kem_decrypt): Support the S/MIME case too. Follow the change of gnupg_ecc_kem_kdf. (agent_kem_decrypt): Remove OPTION argument. Also support the S/MIME case. * common/kem.c (gnupg_ecc_kem_kdf): Support the S/MIME case too. Don't support simple ECC part for combined KEM. (gnupg_ecc_kem_simple_kdf): New. * common/util.h (gnupg_ecc_kem_kdf): Support the S/MIME case too. (gnupg_ecc_kem_simple_kdf): New. * g10/pkglue.c (do_encrypt_kem): Use gnupg_ecc_kem_simple_kdf. Use gnupg_ecc_kem_kdf with IS_GPG=1. -- GnuPG-bug-id: 7811 Signed-off-by: NIIBE Yutaka <[email protected]>
Diffstat (limited to 'g10/pkglue.c')
-rw-r--r--g10/pkglue.c13
1 files changed, 6 insertions, 7 deletions
diff --git a/g10/pkglue.c b/g10/pkglue.c
index 11d252f0a..a9d4d8549 100644
--- a/g10/pkglue.c
+++ b/g10/pkglue.c
@@ -544,11 +544,11 @@ do_encrypt_kem (PKT_public_key *pk, gcry_mpi_t data, int seskey_algo,
log_printhex (ecc_ct, ecc_ct_len, "ECC ephem:");
log_printhex (ecc_ecdh, ecc_ecdh_len, "ECC ecdh:");
}
- err = gnupg_ecc_kem_kdf (ecc_ss, ecc_ss_len,
- ecc_hash_algo,
- ecc_ecdh, ecc_ecdh_len,
- ecc_ct, ecc_ct_len,
- ecc_pubkey, ecc_pubkey_len, NULL, 0);
+ err = gnupg_ecc_kem_simple_kdf (ecc_ss, ecc_ss_len,
+ ecc_hash_algo,
+ ecc_ecdh, ecc_ecdh_len,
+ ecc_ct, ecc_ct_len,
+ ecc_pubkey, ecc_pubkey_len);
if (err)
{
if (opt.verbose)
@@ -851,12 +851,11 @@ do_encrypt_ecdh (PKT_public_key *pk, gcry_mpi_t data, gcry_mpi_t *resarr)
goto leave;
}
- err = gnupg_ecc_kem_kdf (kek, kek_len, kdf_hash_algo,
+ err = gnupg_ecc_kem_kdf (kek, kek_len, 1, kdf_hash_algo,
ecc->is_weierstrauss ?
ecc_ecdh + 1 : ecc_ecdh,
ecc->is_weierstrauss ?
(ecc_ecdh_len - 1) / 2 : ecc_ecdh_len,
- NULL, 0, NULL, 0,
kdf_params, kdf_params_len);
xfree (kdf_params);
if (err)