aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authormilo <milo@r0ot.me>2011-03-09 13:19:16 +0100
committermilo <milo@r0ot.me>2011-04-14 14:05:44 +0200
commit69d2457762e1c910bd762bcb02a7f759f55fef8c (patch)
treed1e1f27a002c88ac78da086e5bb489a6d8a1c4f8 /src
parentc1d385f6da64c046a08b7c72ef3a527a1694269a (diff)
downloadlibssh-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.c25
1 files changed, 25 insertions, 0 deletions
diff --git a/src/pki.c b/src/pki.c
index aec7690c..6e1e4512 100644
--- a/src/pki.c
+++ b/src/pki.c
@@ -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;
+}
+
/**
* @}
*/