summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMiguel Arroz <750683+arroz@users.noreply.github.com>2020-12-21 17:26:34 -0800
committerMiguel Arroz <750683+arroz@users.noreply.github.com>2020-12-21 17:26:34 -0800
commited7b20e72d0710f329fcfd05001c0c57d424aa09 (patch)
treef8f72fa16be45f729abdd7b52deea7f278a0e8eb
parentf4b473fa842a84147d8036a27bac5c026c44dad4 (diff)
downloadlibgit2-ed7b20e72d0710f329fcfd05001c0c57d424aa09.tar.gz
Add support for additional hostkey types.
Specifically: ECDSA_256, ECDSA_384, ECDSA_521 and ED25519.
-rw-r--r--include/git2/cert.h8
-rw-r--r--src/transports/ssh.c12
2 files changed, 20 insertions, 0 deletions
diff --git a/include/git2/cert.h b/include/git2/cert.h
index 07ae8c9f9..f111b136e 100644
--- a/include/git2/cert.h
+++ b/include/git2/cert.h
@@ -91,6 +91,14 @@ typedef enum {
GIT_CERT_SSH_RAW_TYPE_RSA = 1,
/** The raw key is a DSS key. */
GIT_CERT_SSH_RAW_TYPE_DSS = 2,
+ /** The raw key is a ECDSA 256 key. */
+ GIT_CERT_SSH_RAW_TYPE_KEY_ECDSA_256 = 3,
+ /** The raw key is a ECDSA 384 key. */
+ GIT_CERT_SSH_RAW_TYPE_KEY_ECDSA_384 = 4,
+ /** The raw key is a ECDSA 521 key. */
+ GIT_CERT_SSH_RAW_TYPE_KEY_ECDSA_521 = 5,
+ /** The raw key is a ED25519 key. */
+ GIT_CERT_SSH_RAW_TYPE_KEY_ED25519 = 6
} git_cert_ssh_raw_type_t;
/**
diff --git a/src/transports/ssh.c b/src/transports/ssh.c
index c33c08af1..38274240a 100644
--- a/src/transports/ssh.c
+++ b/src/transports/ssh.c
@@ -580,6 +580,18 @@ post_extract:
case LIBSSH2_HOSTKEY_TYPE_DSS:
cert.raw_type = GIT_CERT_SSH_RAW_TYPE_DSS;
break;
+ case LIBSSH2_HOSTKEY_TYPE_ECDSA_256:
+ cert.raw_type = GIT_CERT_SSH_RAW_TYPE_KEY_ECDSA_256;
+ break;
+ case LIBSSH2_HOSTKEY_TYPE_ECDSA_384:
+ cert.raw_type = GIT_CERT_SSH_RAW_TYPE_KEY_ECDSA_384;
+ break;
+ case LIBSSH2_KNOWNHOST_KEY_ECDSA_521:
+ cert.raw_type = GIT_CERT_SSH_RAW_TYPE_KEY_ECDSA_521;
+ break;
+ case LIBSSH2_HOSTKEY_TYPE_ED25519:
+ cert.raw_type = GIT_CERT_SSH_RAW_TYPE_KEY_ED25519;
+ break;
default:
cert.raw_type = GIT_CERT_SSH_RAW_TYPE_UNKNOWN;
}