From 06f993dc0eceee0f6ec99b9417d4368eee203e6d Mon Sep 17 00:00:00 2001 From: NIIBE Yutaka Date: Tue, 7 Oct 2025 10:59:48 +0900 Subject: 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 --- common/util.h | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) (limited to 'common/util.h') diff --git a/common/util.h b/common/util.h index 3fb205685..8f54ffaa5 100644 --- a/common/util.h +++ b/common/util.h @@ -315,13 +315,22 @@ char *gnupg_get_help_string (const char *key, int only_current_locale); const char *gnupg_messages_locale_name (void); /*-- kem.c --*/ -gpg_error_t gnupg_ecc_kem_kdf (void *kek, size_t kek_len, +gpg_error_t +gpgsm_ecc_kem_kdf (void *kek, size_t kek_len, + int hashalgo, const void *ecdh, size_t ecdh_len, + const unsigned char *wrap, size_t wrap_len, + const unsigned char *ukm, size_t ukm_len); + +gpg_error_t gnupg_ecc_kem_kdf (void *kek, size_t kek_len, int is_pgp, int hashalgo, const void *ecdh, size_t ecdh_len, - const void *ecc_ct, size_t ecc_ct_len, - const void *ecc_pk, size_t ecc_pk_len, - unsigned char *kdf_params, + const unsigned char *kdf_params, size_t kdf_params_len); +gpg_error_t gnupg_ecc_kem_simple_kdf (void *kek, size_t kek_len, int hashalgo, + const void *ecdh, size_t ecdh_len, + const void *ecc_ct, size_t ecc_ct_len, + const void *ecc_pk, size_t ecc_pk_len); + gpg_error_t gnupg_kem_combiner (void *kek, size_t kek_len, const void *ecc_ss, size_t ecc_ss_len, const void *ecc_ct, size_t ecc_ct_len, -- cgit