1
1

pki: Add ssh_pki_publickey_to_base64().

Этот коммит содержится в:
Andreas Schneider 2011-08-16 00:25:29 +02:00
родитель c085892802
Коммит 9dfef44fd8
3 изменённых файлов: 50 добавлений и 0 удалений

Просмотреть файл

@ -444,6 +444,9 @@ LIBSSH_API int ssh_pki_import_pubkey_file(ssh_session session,
const char *filename,
ssh_key *pkey);
LIBSSH_API ssh_string ssh_pki_publickey_to_blob(const ssh_key key);
LIBSSH_API int ssh_pki_publickey_to_base64(const ssh_key key,
unsigned char **b64_key,
enum ssh_keytypes_e *ptype);
LIBSSH_API int ssh_userauth_pki_pubkey(ssh_session session, const char *username,
ssh_string publickey, ssh_key privatekey);

Просмотреть файл

@ -714,6 +714,48 @@ ssh_string ssh_pki_publickey_to_blob(const ssh_key key)
return pki_publickey_to_string(key);
}
/**
* @brief Convert a public key to a base64 hased key.
*
* @param[in] key The key to hash
*
* @param[out] b64_key A pointer to store the base64 hased key.
*
* @param[out] ptype The type of the key.
*
* @return SSH_OK on success, SSH_ERROR on error.
*
* @see ssh_string_free_char()
*/
int ssh_pki_publickey_to_base64(const ssh_key key, unsigned char **b64_key,
enum ssh_keytypes_e *ptype)
{
enum ssh_keytypes_e type;
ssh_string key_str;
ssh_buffer key_buf;
char *type_c;
unsigned char *b64;
int rc;
if (key == NULL || b64_key == NULL || ptype == NULL) {
return SSH_ERROR;
}
key_str = pki_publickey_to_string(key);
if (key_str == NULL) {
return SSH_ERROR;
}
b64 = bin_to_base64(ssh_string_data(key_str), ssh_string_len(key_str));
ssh_string_free(key_str);
*ptype = type;
*b64_key = b64;
return SSH_OK;
}
/*
* This function signs the session id (known as H) as a string then
* the content of sigbuf */

Просмотреть файл

@ -306,6 +306,11 @@ static void torture_pki_publickey_rsa_base64(void **state)
rc = ssh_pki_import_pubkey_base64(session, q, type, &key);
assert_true(rc == 0);
rc = ssh_pki_publickey_to_base64(key, &b64_key, &type);
assert_true(rc == 0);
assert_string_equal(q, b64_key);
free(key_buf);
ssh_key_free(key);
}