diff options
author | Andreas Schneider <asn@cryptomilk.org> | 2011-08-30 10:28:57 +0200 |
---|---|---|
committer | Andreas Schneider <asn@cryptomilk.org> | 2011-08-30 10:28:57 +0200 |
commit | 822c68eb8e06204170a2b0f9641f5886a45d397f (patch) | |
tree | 92b0872cc10f949108848309dc6aeb3ab0307ee9 /src/pki.c | |
parent | 60b92e458e1cf16f0029d9251e0f117ff27a02d0 (diff) | |
download | libssh-822c68eb8e06204170a2b0f9641f5886a45d397f.tar.gz libssh-822c68eb8e06204170a2b0f9641f5886a45d397f.tar.xz libssh-822c68eb8e06204170a2b0f9641f5886a45d397f.zip |
pki: Use consistent API for ssh_pki_export_privkey_to_pubkey().
Diffstat (limited to 'src/pki.c')
-rw-r--r-- | src/pki.c | 24 |
1 files changed, 19 insertions, 5 deletions
@@ -784,19 +784,33 @@ int ssh_pki_import_pubkey_file(const char *filename, ssh_key *pkey) } /** - * @brief Generate and duplicate a public key from a private key. + * @brief Create a public key from a private key. * - * @param[in] privkey The private key to get the public key from. + * @param[in] privkey The private key to get the public key from. + * + * @param[out] pkey A pointer to store the newly allocated public key. You + * NEED to free the key. * * @return A public key, NULL on error. + * + * @see ssh_key_free() */ -ssh_key ssh_pki_publickey_from_privatekey(const ssh_key privkey) { +int ssh_pki_export_privkey_to_pubkey(const ssh_key privkey, + ssh_key *pkey) +{ + ssh_key pubkey; if (privkey == NULL || !ssh_key_is_private(privkey)) { - return NULL; + return SSH_ERROR; } - return pki_key_dup(privkey, 1); + pubkey = pki_key_dup(privkey, 1); + if (pubkey == NULL) { + return SSH_ERROR; + } + + *pkey = pubkey; + return SSH_OK; } /** |