Skip to content

Commit 1c3f29a

Browse files
authored
Merge pull request libgit2#5750 from arroz/missing_hostkey_types
Add support for additional SSH hostkey types.
2 parents 381991a + 8dc0ba7 commit 1c3f29a

File tree

3 files changed

+29
-3
lines changed

3 files changed

+29
-3
lines changed

ci/docker/focal

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -48,9 +48,9 @@ RUN cd /tmp && \
4848

4949
FROM mbedtls AS libssh2
5050
RUN cd /tmp && \
51-
curl --insecure --location --silent --show-error https://www.libssh2.org/download/libssh2-1.8.2.tar.gz | \
51+
curl --insecure --location --silent --show-error https://www.libssh2.org/download/libssh2-1.9.0.tar.gz | \
5252
tar -xz && \
53-
cd libssh2-1.8.2 && \
53+
cd libssh2-1.9.0 && \
5454
mkdir build build-msan && \
5555
cd build && \
5656
CC=clang-10 CFLAGS="-fPIC" cmake -G Ninja -DBUILD_SHARED_LIBS=ON -DCRYPTO_BACKEND=Libgcrypt -DCMAKE_PREFIX_PATH=/usr/local -DCMAKE_INSTALL_PREFIX=/usr/local .. && \
@@ -59,7 +59,7 @@ RUN cd /tmp && \
5959
CC=clang-10 CFLAGS="-fPIC -fsanitize=memory -fno-optimize-sibling-calls -fsanitize-memory-track-origins=2 -fno-omit-frame-pointer" LDFLAGS="-fsanitize=memory" cmake -G Ninja -DBUILD_SHARED_LIBS=ON -DCRYPTO_BACKEND=mbedTLS -DCMAKE_PREFIX_PATH=/usr/local/msan -DCMAKE_INSTALL_PREFIX=/usr/local/msan .. && \
6060
ninja install && \
6161
cd .. && \
62-
rm -rf libssh2-1.8.2
62+
rm -rf libssh2-1.9.0
6363

6464
FROM libssh2 AS valgrind
6565
RUN cd /tmp && \

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: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -580,6 +580,24 @@ 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+
584+
#ifdef LIBSSH2_HOSTKEY_TYPE_ECDSA_256
585+
case LIBSSH2_HOSTKEY_TYPE_ECDSA_256:
586+
cert.raw_type = GIT_CERT_SSH_RAW_TYPE_KEY_ECDSA_256;
587+
break;
588+
case LIBSSH2_HOSTKEY_TYPE_ECDSA_384:
589+
cert.raw_type = GIT_CERT_SSH_RAW_TYPE_KEY_ECDSA_384;
590+
break;
591+
case LIBSSH2_KNOWNHOST_KEY_ECDSA_521:
592+
cert.raw_type = GIT_CERT_SSH_RAW_TYPE_KEY_ECDSA_521;
593+
break;
594+
#endif
595+
596+
#ifdef LIBSSH2_HOSTKEY_TYPE_ED25519
597+
case LIBSSH2_HOSTKEY_TYPE_ED25519:
598+
cert.raw_type = GIT_CERT_SSH_RAW_TYPE_KEY_ED25519;
599+
break;
600+
#endif
583601
default:
584602
cert.raw_type = GIT_CERT_SSH_RAW_TYPE_UNKNOWN;
585603
}

0 commit comments

Comments
 (0)