summaryrefslogtreecommitdiffstats
path: root/deps/libssh/libssh_libgcrypt.patch
diff options
context:
space:
mode:
Diffstat (limited to 'deps/libssh/libssh_libgcrypt.patch')
-rw-r--r--deps/libssh/libssh_libgcrypt.patch51
1 files changed, 51 insertions, 0 deletions
diff --git a/deps/libssh/libssh_libgcrypt.patch b/deps/libssh/libssh_libgcrypt.patch
new file mode 100644
index 0000000..622c338
--- /dev/null
+++ b/deps/libssh/libssh_libgcrypt.patch
@@ -0,0 +1,51 @@
+From 3880a8ed80a4b1e2c052bd62f328bba2f869d5ae Mon Sep 17 00:00:00 2001
+From: Aris Adamantiadis <aris@0xbadc0de.be>
+Date: Mon, 29 Dec 2014 15:06:33 +0000
+Subject: Fix the dh.c build with libgcrypt
+
+Fixes bug reported by gentoo at https://bugs.gentoo.org/show_bug.cgi?id=533424
+The function was only used by EDCSA backend which are not supported by the libgcrypt code anyway.
+---
+diff --git a/include/libssh/dh.h b/include/libssh/dh.h
+index f28b916..89872e3 100644
+--- a/include/libssh/dh.h
++++ b/include/libssh/dh.h
+@@ -49,7 +49,9 @@ int hashbufin_add_cookie(ssh_session session, unsigned char *cookie);
+ int hashbufout_add_cookie(ssh_session session);
+ int generate_session_keys(ssh_session session);
+ bignum make_string_bn(ssh_string string);
++#ifdef HAVE_LIBCRYPTO
+ void make_string_bn_inplace(ssh_string string, bignum bnout);
++#endif /* HAVE_LIBCRYPTO */
+ ssh_string make_bignum_string(bignum num);
+
+ #endif /* DH_H_ */
+diff --git a/src/dh.c b/src/dh.c
+index 84355d4..010a1dd 100644
+--- a/src/dh.c
++++ b/src/dh.c
+@@ -407,14 +407,17 @@ bignum make_string_bn(ssh_string string){
+ return bn;
+ }
+
++#ifdef HAVE_LIBCRYPTO
++/** @internal
++ * @brief converts the content of a SSH string in an already allocated bignum
++ * @warning only available with OpenSSL builds
++ */
+ void make_string_bn_inplace(ssh_string string, bignum bnout) {
+ unsigned int len = ssh_string_len(string);
+-#ifdef HAVE_LIBGCRYPT
+- #error "unsupported"
+-#elif defined HAVE_LIBCRYPTO
+ bignum_bin2bn(string->data, len, bnout);
+-#endif
+ }
++#endif /* HAVE_LIBCRYPTO */
++
+
+ ssh_string dh_get_e(ssh_session session) {
+ return make_bignum_string(session->next_crypto->e);
+--
+cgit v0.9.1
+