mirror of
https://git.libssh.org/projects/libssh.git
synced 2026-02-11 10:40:27 +09:00
Merge branch 'pki'
This commit is contained in:
@@ -422,6 +422,9 @@ LIBSSH_API void ssh_key_free (ssh_key key);
|
|||||||
LIBSSH_API enum ssh_keytypes_e ssh_key_type(ssh_key key);
|
LIBSSH_API enum ssh_keytypes_e ssh_key_type(ssh_key key);
|
||||||
LIBSSH_API const char *ssh_key_type_to_char(enum ssh_keytypes_e type);
|
LIBSSH_API const char *ssh_key_type_to_char(enum ssh_keytypes_e type);
|
||||||
LIBSSH_API enum ssh_keytypes_e ssh_key_type_from_name(const char *name);
|
LIBSSH_API enum ssh_keytypes_e ssh_key_type_from_name(const char *name);
|
||||||
|
LIBSSH_API int ssh_key_is_public(ssh_key k);
|
||||||
|
LIBSSH_API int ssh_key_is_private(ssh_key k);
|
||||||
|
|
||||||
LIBSSH_API int ssh_pki_import_privkey_base64(ssh_key key, ssh_session session,
|
LIBSSH_API int ssh_pki_import_privkey_base64(ssh_key key, ssh_session session,
|
||||||
const char *b64_key, const char *passphrase);
|
const char *b64_key, const char *passphrase);
|
||||||
LIBSSH_API int ssh_userauth_pki_pubkey(ssh_session session, const char *username,
|
LIBSSH_API int ssh_userauth_pki_pubkey(ssh_session session, const char *username,
|
||||||
|
|||||||
@@ -39,9 +39,6 @@ struct ssh_key_struct {
|
|||||||
#endif
|
#endif
|
||||||
};
|
};
|
||||||
|
|
||||||
#define ssh_key_is_public(k) (k && k->flags & SSH_KEY_FLAG_PUBLIC)
|
|
||||||
#define ssh_key_is_private(k) (k && k->flags & SSH_KEY_FLAG_PRIVATE)
|
|
||||||
|
|
||||||
void ssh_key_clean (ssh_key key);
|
void ssh_key_clean (ssh_key key);
|
||||||
int ssh_key_import_private(ssh_key key, ssh_session session,
|
int ssh_key_import_private(ssh_key key, ssh_session session,
|
||||||
const char *filename, const char *passphrase);
|
const char *filename, const char *passphrase);
|
||||||
|
|||||||
@@ -474,6 +474,12 @@ int ssh_is_server_known(ssh_session session) {
|
|||||||
if (match) {
|
if (match) {
|
||||||
/* We got a match. Now check the key type */
|
/* We got a match. Now check the key type */
|
||||||
if (strcmp(session->current_crypto->server_pubkey_type, type) != 0) {
|
if (strcmp(session->current_crypto->server_pubkey_type, type) != 0) {
|
||||||
|
ssh_log(session,
|
||||||
|
SSH_LOG_PACKET,
|
||||||
|
"ssh_is_server_known: server type [%s] doesn't match the "
|
||||||
|
"type [%s] in known_hosts file",
|
||||||
|
session->current_crypto->server_pubkey_type,
|
||||||
|
type);
|
||||||
/* Different type. We don't override the known_changed error which is
|
/* Different type. We don't override the known_changed error which is
|
||||||
* more important */
|
* more important */
|
||||||
if (ret != SSH_SERVER_KNOWN_CHANGED)
|
if (ret != SSH_SERVER_KNOWN_CHANGED)
|
||||||
|
|||||||
30
src/pki.c
30
src/pki.c
@@ -150,6 +150,36 @@ enum ssh_keytypes_e ssh_key_type_from_name(const char *name) {
|
|||||||
return SSH_KEYTYPE_UNKNOWN;
|
return SSH_KEYTYPE_UNKNOWN;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Check if the key has/is a public key.
|
||||||
|
*
|
||||||
|
* @param[in] k The key to check.
|
||||||
|
*
|
||||||
|
* @return 1 if it is a public key, 0 if not.
|
||||||
|
*/
|
||||||
|
int ssh_key_is_public(ssh_key k) {
|
||||||
|
if (k == NULL) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
return (k->flags & SSH_KEY_FLAG_PUBLIC);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Check if the key is a private key.
|
||||||
|
*
|
||||||
|
* @param[in] k The key to check.
|
||||||
|
*
|
||||||
|
* @return 1 if it is a private key, 0 if not.
|
||||||
|
*/
|
||||||
|
int ssh_key_is_private(ssh_key k) {
|
||||||
|
if (k == NULL) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
return (k->flags & SSH_KEY_FLAG_PRIVATE);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief import a key from a file
|
* @brief import a key from a file
|
||||||
* @param[out] key the ssh_key to update
|
* @param[out] key the ssh_key to update
|
||||||
|
|||||||
Reference in New Issue
Block a user