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 --- agent/command.c | 14 +++----------- 1 file changed, 3 insertions(+), 11 deletions(-) (limited to 'agent/command.c') diff --git a/agent/command.c b/agent/command.c index dcb758e37..d1ff8e27c 100644 --- a/agent/command.c +++ b/agent/command.c @@ -1080,8 +1080,6 @@ cmd_pkdecrypt (assuan_context_t ctx, char *line) size_t valuelen; membuf_t outbuf; int padding = -1; - unsigned char *option = NULL; - size_t optionlen = 0; const char *p; int kemid = -1; @@ -1107,10 +1105,7 @@ cmd_pkdecrypt (assuan_context_t ctx, char *line) rc = print_assuan_status (ctx, "INQUIRE_MAXLEN", "%u", MAXLEN_CIPHERTEXT); if (!rc) rc = assuan_inquire (ctx, "CIPHERTEXT", - &value, &valuelen, MAXLEN_CIPHERTEXT); - if (!rc && kemid > KEM_PGP) - rc = assuan_inquire (ctx, "OPTION", - &option, &optionlen, MAXLEN_CIPHERTEXT); + &value, &valuelen, MAXLEN_CIPHERTEXT); if (rc) return rc; @@ -1120,11 +1115,8 @@ cmd_pkdecrypt (assuan_context_t ctx, char *line) rc = agent_pkdecrypt (ctrl, ctrl->server_local->keydesc, value, valuelen, &outbuf, &padding); else - { - rc = agent_kem_decrypt (ctrl, ctrl->server_local->keydesc, kemid, - value, valuelen, option, optionlen, &outbuf); - xfree (option); - } + rc = agent_kem_decrypt (ctrl, ctrl->server_local->keydesc, kemid, + value, valuelen, &outbuf); xfree (value); if (rc) clear_outbuf (&outbuf); -- cgit