From b18fb0264abdb6cb0a99ba0ba941dc9a6e35f74a Mon Sep 17 00:00:00 2001 From: Werner Koch Date: Mon, 18 May 2020 19:24:41 +0200 Subject: agent: Allow to use SETHASH for arbitrary data. * agent/agent.h (struct server_control_s): Add field digest.data. * agent/gpg-agent.c (agent_deinit_default_ctrl): Free that field. * agent/command.c (reset_notify): Ditto. (start_command_handler): ditto. (cmd_sethash): Add new option --inquire. * agent/call-scd.c (agent_card_pksign): For now return an error if inquire mode was used. * agent/command-ssh.c (ssh_handler_sign_request): Make sure digest.data is cleared. * agent/divert-scd.c (divert_pksign): Implement inquire mode. * agent/pksign.c (agent_pksign_do): Ditto. -- This is required to support EdDSA according to RFC8410. GnuPG-bug-id: 4888 --- agent/agent.h | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'agent/agent.h') diff --git a/agent/agent.h b/agent/agent.h index eb819a0ff..90d8f5c73 100644 --- a/agent/agent.h +++ b/agent/agent.h @@ -245,9 +245,12 @@ struct server_control_s /* Information on the currently used digest (for signing commands). */ struct { + char *data; /* NULL or malloced data of length VALUELEN. If + this is set The other fields are ignored. Used + for PureEdDSA. */ + int valuelen; int algo; unsigned char value[MAX_DIGEST_LEN]; - int valuelen; int raw_value: 1; } digest; unsigned char keygrip[20]; -- cgit v1.2.3