diff options
| author | NIIBE Yutaka <[email protected]> | 2025-10-07 01:59:48 +0000 |
|---|---|---|
| committer | NIIBE Yutaka <[email protected]> | 2025-10-07 01:59:48 +0000 |
| commit | 06f993dc0eceee0f6ec99b9417d4368eee203e6d (patch) | |
| tree | 829c77502dfc0566a0f2189d312639cf8e95c663 /g10/pkglue.c | |
| parent | dirmngr: Fix wrong diagnostic "failed to create alarm thread". (diff) | |
| download | gnupg-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.c | 13 |
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) |
