mirror of
https://git.libssh.org/projects/libssh.git
synced 2025-11-29 01:03:57 +03:00
auth: Add cert auth support to ssh_userauth_publickey()
Signed-off-by: Axel Eppe <aeppe@google.com> Reviewed-by: Andreas Schneider <asn@cryptomilk.org>
This commit is contained in:
committed by
Andreas Schneider
parent
6cbab4936d
commit
8923a01264
14
src/auth.c
14
src/auth.c
@@ -524,7 +524,7 @@ fail:
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Authenticate with public/private key.
|
* @brief Authenticate with public/private key or certificate.
|
||||||
*
|
*
|
||||||
* @param[in] session The SSH session.
|
* @param[in] session The SSH session.
|
||||||
*
|
*
|
||||||
@@ -552,6 +552,8 @@ int ssh_userauth_publickey(ssh_session session,
|
|||||||
{
|
{
|
||||||
ssh_string str = NULL;
|
ssh_string str = NULL;
|
||||||
int rc;
|
int rc;
|
||||||
|
const char *type_c;
|
||||||
|
enum ssh_keytypes_e key_type;
|
||||||
|
|
||||||
if (session == NULL) {
|
if (session == NULL) {
|
||||||
return SSH_AUTH_ERROR;
|
return SSH_AUTH_ERROR;
|
||||||
@@ -587,7 +589,11 @@ int ssh_userauth_publickey(ssh_session session,
|
|||||||
return SSH_AUTH_ERROR;
|
return SSH_AUTH_ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* public key */
|
/* Cert auth requires presenting the cert type name (*-cert@openssh.com) */
|
||||||
|
key_type = privkey->cert != NULL ? privkey->cert_type : privkey->type;
|
||||||
|
type_c = ssh_key_type_to_char(key_type);
|
||||||
|
|
||||||
|
/* get public key or cert */
|
||||||
rc = ssh_pki_export_pubkey_blob(privkey, &str);
|
rc = ssh_pki_export_pubkey_blob(privkey, &str);
|
||||||
if (rc < 0) {
|
if (rc < 0) {
|
||||||
goto fail;
|
goto fail;
|
||||||
@@ -600,8 +606,8 @@ int ssh_userauth_publickey(ssh_session session,
|
|||||||
"ssh-connection",
|
"ssh-connection",
|
||||||
"publickey",
|
"publickey",
|
||||||
1, /* private key */
|
1, /* private key */
|
||||||
privkey->type_c, /* algo */
|
type_c, /* algo */
|
||||||
str /* public key */
|
str /* public key or cert */
|
||||||
);
|
);
|
||||||
if (rc < 0) {
|
if (rc < 0) {
|
||||||
goto fail;
|
goto fail;
|
||||||
|
|||||||
Reference in New Issue
Block a user