diff options
author | NIIBE Yutaka <[email protected]> | 2018-04-06 05:58:14 +0000 |
---|---|---|
committer | NIIBE Yutaka <[email protected]> | 2018-04-06 05:58:14 +0000 |
commit | 80b775bdbb852aa4a80292c9357e5b1876110c00 (patch) | |
tree | 0b3d81cb7a975df380681de8a613297fc8cb462e /agent/command-ssh.c | |
parent | gpg: Add new OpenPGP card vendor. (diff) | |
download | gnupg-80b775bdbb852aa4a80292c9357e5b1876110c00.tar.gz gnupg-80b775bdbb852aa4a80292c9357e5b1876110c00.zip |
agent: Support SSH signature flags.
* agent/command-ssh.c (SSH_AGENT_RSA_SHA2_256): New.
(SSH_AGENT_RSA_SHA2_512): New.
(ssh_handler_sign_request): Override SPEC when FLAGS
is specified.
--
GnuPG-bug-id: 3880
Reported-by: Daniel Kahn Gillmor <[email protected]>
Signed-off-by: NIIBE Yutaka <[email protected]>
Diffstat (limited to 'agent/command-ssh.c')
-rw-r--r-- | agent/command-ssh.c | 17 |
1 files changed, 16 insertions, 1 deletions
diff --git a/agent/command-ssh.c b/agent/command-ssh.c index 517231a8c..d1158e70b 100644 --- a/agent/command-ssh.c +++ b/agent/command-ssh.c @@ -83,6 +83,8 @@ /* Other constants. */ #define SSH_DSA_SIGNATURE_PADDING 20 #define SSH_DSA_SIGNATURE_ELEMS 2 +#define SSH_AGENT_RSA_SHA2_256 0x02 +#define SSH_AGENT_RSA_SHA2_512 0x04 #define SPEC_FLAG_USE_PKCS1V2 (1 << 0) #define SPEC_FLAG_IS_ECDSA (1 << 1) #define SPEC_FLAG_IS_EdDSA (1 << 2) /*(lowercase 'd' on purpose.)*/ @@ -2880,11 +2882,24 @@ ssh_handler_sign_request (ctrl_t ctrl, estream_t request, estream_t response) if (err) goto out; - /* FIXME? */ err = stream_read_uint32 (request, &flags); if (err) goto out; + if (spec.algo == GCRY_PK_RSA) + { + if ((flags & SSH_AGENT_RSA_SHA2_256)) + { + spec.ssh_identifier = "rsa-sha2-256"; + spec.hash_algo = GCRY_MD_SHA256; + } + else if ((flags & SSH_AGENT_RSA_SHA2_512)) + { + spec.ssh_identifier = "rsa-sha2-512"; + spec.hash_algo = GCRY_MD_SHA512; + } + } + hash_algo = spec.hash_algo; if (!hash_algo) hash_algo = GCRY_MD_SHA1; /* Use the default. */ |