mirror of
https://git.libssh.org/projects/libssh.git
synced 2026-02-07 02:39:48 +09:00
pki: Use consistent API for ssh_pki_export_privkey_to_pubkey().
This commit is contained in:
@@ -1118,8 +1118,8 @@ int ssh_userauth_publickey_auto(ssh_session session,
|
||||
continue;
|
||||
}
|
||||
|
||||
pubkey = ssh_pki_publickey_from_privatekey(privkey);
|
||||
if (pubkey == NULL) {
|
||||
rc = ssh_pki_export_privkey_to_pubkey(privkey, &pubkey);
|
||||
if (rc == SSH_ERROR) {
|
||||
ssh_key_free(privkey);
|
||||
return SSH_AUTH_ERROR;
|
||||
}
|
||||
|
||||
24
src/pki.c
24
src/pki.c
@@ -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;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -189,8 +189,8 @@ static int dh_handshake_server(ssh_session session) {
|
||||
privkey = NULL;
|
||||
}
|
||||
|
||||
pubkey = ssh_pki_publickey_from_privatekey(privkey);
|
||||
if (pubkey == NULL) {
|
||||
rc = ssh_pki_export_privkey_to_pubkey(privkey, &pubkey);
|
||||
if (rc < 0) {
|
||||
ssh_set_error(session, SSH_FATAL,
|
||||
"Could not get the public key from the private key");
|
||||
ssh_string_free(f);
|
||||
|
||||
Reference in New Issue
Block a user