diff options
author | Justus Winter <[email protected]> | 2017-06-26 12:54:39 +0000 |
---|---|---|
committer | Justus Winter <[email protected]> | 2017-06-26 12:56:54 +0000 |
commit | 273964798592cd479c111f47e8ce46d5b1999d6a (patch) | |
tree | 810f20caced4e5dbe795f348f4ea76d7a33ad112 /agent/command-ssh.c | |
parent | tests: Improve test. (diff) | |
download | gnupg-273964798592cd479c111f47e8ce46d5b1999d6a.tar.gz gnupg-273964798592cd479c111f47e8ce46d5b1999d6a.zip |
agent: Support unprotected ssh keys.
* agent/command-ssh.c (ssh_key_to_protected_buffer): If the empty
passphrase is supplied, do not protect the key.
GnuPG-bug-id: 2856
Signed-off-by: Justus Winter <[email protected]>
Diffstat (limited to 'agent/command-ssh.c')
-rw-r--r-- | agent/command-ssh.c | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/agent/command-ssh.c b/agent/command-ssh.c index e450aed30..c5897efba 100644 --- a/agent/command-ssh.c +++ b/agent/command-ssh.c @@ -2980,6 +2980,7 @@ ssh_key_extract_comment (gcry_sexp_t key, char **r_comment) /* This function converts the key contained in the S-Expression KEY into a buffer, which is protected by the passphrase PASSPHRASE. + If PASSPHRASE is the empty passphrase, the key is not protected. Returns usual error code. */ static gpg_error_t ssh_key_to_protected_buffer (gcry_sexp_t key, const char *passphrase, @@ -3000,7 +3001,17 @@ ssh_key_to_protected_buffer (gcry_sexp_t key, const char *passphrase, gcry_sexp_sprint (key, GCRYSEXP_FMT_CANON, buffer_new, buffer_new_n); /* FIXME: guarantee? */ - err = agent_protect (buffer_new, passphrase, buffer, buffer_n, 0, -1); + if (*passphrase) + err = agent_protect (buffer_new, passphrase, buffer, buffer_n, 0, -1); + else + { + /* The key derivation function does not support zero length + * strings. Store key unprotected if the user wishes so. */ + *buffer = buffer_new; + *buffer_n = buffer_new_n; + buffer_new = NULL; + err = 0; + } out: |