diff --git a/include/libssh/pki.h b/include/libssh/pki.h index f7ce4ccb..182079f2 100644 --- a/include/libssh/pki.h +++ b/include/libssh/pki.h @@ -54,6 +54,7 @@ ssh_string ssh_pki_do_sign(ssh_session session, ssh_buffer sigbuf, /* temporary functions, to be removed after migration to ssh_key */ ssh_public_key ssh_pki_convert_key_to_publickey(ssh_key key); +ssh_private_key ssh_pki_convert_key_to_privatekey(ssh_key key); enum ssh_keytypes_e pki_privatekey_type_from_string(const char *privkey); diff --git a/src/pki.c b/src/pki.c index 57b3ad29..593cc413 100644 --- a/src/pki.c +++ b/src/pki.c @@ -293,6 +293,22 @@ ssh_public_key ssh_pki_convert_key_to_publickey(ssh_key key) { return pub; } +ssh_private_key ssh_pki_convert_key_to_privatekey(ssh_key key) { + ssh_private_key privkey; + + privkey = malloc(sizeof(struct ssh_private_key_struct)); + if (privkey == NULL) { + ssh_key_free(key); + return NULL; + } + + privkey->type = key->type; + privkey->dsa_priv = key->dsa; + privkey->rsa_priv = key->rsa; + + return privkey; +} + /** @brief import a base64 formated key from a memory c-string * * @param key The key to fill, created with ssh_key_new()