1
0
mirror of https://git.libssh.org/projects/libssh.git synced 2025-08-08 19:02:06 +03:00

pki: Improve ssh_pki_import_privkey_base64().

This commit is contained in:
Andreas Schneider
2011-08-07 14:00:42 +02:00
parent 028888719a
commit 9569d053d8
7 changed files with 255 additions and 239 deletions

View File

@@ -247,32 +247,30 @@ ssh_public_key ssh_pki_convert_key_to_publickey(ssh_key key) {
*
* @return SSH_ERROR in case of error, SSH_OK otherwise
*/
int ssh_pki_import_privkey_base64(ssh_key key, ssh_session session,
const char *b64_key, const char *passphrase) {
ssh_private_key priv;
int ssh_pki_import_privkey_base64(ssh_session session,
const char *b64_key,
const char *passphrase,
ssh_key *pkey) {
ssh_key key;
if(key == NULL || session == NULL) {
if (pkey == NULL || session == NULL) {
return SSH_ERROR;
}
if(b64_key == NULL || !*b64_key) {
if (b64_key == NULL || !*b64_key) {
return SSH_ERROR;
}
priv = privatekey_from_base64(session, b64_key, 0, passphrase);
if(priv == NULL) {
ssh_log(session, SSH_LOG_RARE, "Trying to decode privkey passphrase=%s",
passphrase ? "true" : "false");
key = pki_private_key_from_base64(session, b64_key, passphrase);
if (key == NULL) {
return SSH_ERROR;
}
ssh_key_clean(key);
*pkey = 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;
}