diff options
author | milo <milo@r0ot.me> | 2011-03-09 13:19:16 +0100 |
---|---|---|
committer | milo <milo@r0ot.me> | 2011-04-14 14:05:44 +0200 |
commit | 69d2457762e1c910bd762bcb02a7f759f55fef8c (patch) | |
tree | d1e1f27a002c88ac78da086e5bb489a6d8a1c4f8 /src | |
parent | c1d385f6da64c046a08b7c72ef3a527a1694269a (diff) | |
download | libssh-69d2457762e1c910bd762bcb02a7f759f55fef8c.tar.gz libssh-69d2457762e1c910bd762bcb02a7f759f55fef8c.tar.xz libssh-69d2457762e1c910bd762bcb02a7f759f55fef8c.zip |
[pki] Added ssh_pki_import_privkey_base64()
Diffstat (limited to 'src')
-rw-r--r-- | src/pki.c | 25 |
1 files changed, 25 insertions, 0 deletions
@@ -114,6 +114,31 @@ int ssh_key_import_private(ssh_key key, ssh_session session, const char *filenam return SSH_OK; } +int ssh_pki_import_privkey_base64(ssh_key key, ssh_session session, + const char *b64_key, const char *passphrase) { + ssh_private_key priv; + + if(b64_key == NULL || !*b64_key) { + return SSH_ERROR; + } + + priv = privatekey_from_base64(session, b64_key, 0, passphrase); + if(priv == NULL) { + return SSH_ERROR; + } + + ssh_key_clean(key); + + key->dsa = priv->dsa_priv; + key->rsa = priv->rsa_priv; + key->type = priv->type; + key->flags = SSH_KEY_FLAG_PRIVATE | SSH_KEY_FLAG_PUBLIC; + key->type_c = ssh_type_to_char(key->type); + + SAFE_FREE(priv); + return SSH_OK; +} + /** * @} */ |