Skip to content

Commit

Permalink
agent: Support SSH signature flags.
Browse files Browse the repository at this point in the history
* 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 <dkg@fifthhorseman.net>
Signed-off-by: NIIBE Yutaka <gniibe@fsij.org>
  • Loading branch information
NIIBE Yutaka committed Apr 6, 2018
1 parent d27417d commit 80b775b
Showing 1 changed file with 16 additions and 1 deletion.
17 changes: 16 additions & 1 deletion agent/command-ssh.c
Original file line number Diff line number Diff line change
Expand Up @@ -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.)*/
Expand Down Expand Up @@ -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. */
Expand Down

0 comments on commit 80b775b

Please sign in to comment.