Skip to content

Commit ed7b20e

Browse files
committed
Add support for additional hostkey types.
Specifically: ECDSA_256, ECDSA_384, ECDSA_521 and ED25519.
1 parent f4b473f commit ed7b20e

File tree

2 files changed

+20
-0
lines changed

2 files changed

+20
-0
lines changed

include/git2/cert.h

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,14 @@ typedef enum {
9191
GIT_CERT_SSH_RAW_TYPE_RSA = 1,
9292
/** The raw key is a DSS key. */
9393
GIT_CERT_SSH_RAW_TYPE_DSS = 2,
94+
/** The raw key is a ECDSA 256 key. */
95+
GIT_CERT_SSH_RAW_TYPE_KEY_ECDSA_256 = 3,
96+
/** The raw key is a ECDSA 384 key. */
97+
GIT_CERT_SSH_RAW_TYPE_KEY_ECDSA_384 = 4,
98+
/** The raw key is a ECDSA 521 key. */
99+
GIT_CERT_SSH_RAW_TYPE_KEY_ECDSA_521 = 5,
100+
/** The raw key is a ED25519 key. */
101+
GIT_CERT_SSH_RAW_TYPE_KEY_ED25519 = 6
94102
} git_cert_ssh_raw_type_t;
95103

96104
/**

src/transports/ssh.c

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -580,6 +580,18 @@ static int _git_ssh_setup_conn(
580580
case LIBSSH2_HOSTKEY_TYPE_DSS:
581581
cert.raw_type = GIT_CERT_SSH_RAW_TYPE_DSS;
582582
break;
583+
case LIBSSH2_HOSTKEY_TYPE_ECDSA_256:
584+
cert.raw_type = GIT_CERT_SSH_RAW_TYPE_KEY_ECDSA_256;
585+
break;
586+
case LIBSSH2_HOSTKEY_TYPE_ECDSA_384:
587+
cert.raw_type = GIT_CERT_SSH_RAW_TYPE_KEY_ECDSA_384;
588+
break;
589+
case LIBSSH2_KNOWNHOST_KEY_ECDSA_521:
590+
cert.raw_type = GIT_CERT_SSH_RAW_TYPE_KEY_ECDSA_521;
591+
break;
592+
case LIBSSH2_HOSTKEY_TYPE_ED25519:
593+
cert.raw_type = GIT_CERT_SSH_RAW_TYPE_KEY_ED25519;
594+
break;
583595
default:
584596
cert.raw_type = GIT_CERT_SSH_RAW_TYPE_UNKNOWN;
585597
}

0 commit comments

Comments
 (0)