From 298f056fd6931e5e8bedc4fce5142a46c8f9f4b9 Mon Sep 17 00:00:00 2001 From: Viktor Szakats Date: Sat, 13 Feb 2016 17:02:23 +0100 Subject: [PATCH] openssl: add OpenSSL 1.1.0-pre3-dev compatibility by using API instead of accessing an internal structure. Closes #83 --- src/openssl.c | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/src/openssl.c b/src/openssl.c index bb107526..d7a63f24 100644 --- a/src/openssl.c +++ b/src/openssl.c @@ -958,6 +958,7 @@ _libssh2_pub_priv_keyfile(LIBSSH2_SESSION *session, int st; BIO* bp; EVP_PKEY* pk; + int pktype; _libssh2_debug(session, LIBSSH2_TRACE_AUTH, @@ -992,7 +993,14 @@ _libssh2_pub_priv_keyfile(LIBSSH2_SESSION *session, "private key file format"); } - switch (pk->type) { +#if OPENSSL_VERSION_NUMBER >= 0x10100000L && \ + !defined(LIBRESSL_VERSION_NUMBER) + pktype = EVP_PKEY_id(pk); +#else + pktype = pk->type; +#endif + + switch (pktype) { case EVP_PKEY_RSA : st = gen_publickey_from_rsa_evp( session, method, method_len, pubkeydata, pubkeydata_len, pk); @@ -1031,6 +1039,7 @@ _libssh2_pub_priv_keyfilememory(LIBSSH2_SESSION *session, int st; BIO* bp; EVP_PKEY* pk; + int pktype; _libssh2_debug(session, LIBSSH2_TRACE_AUTH, @@ -1061,7 +1070,14 @@ _libssh2_pub_priv_keyfilememory(LIBSSH2_SESSION *session, "private key file format"); } - switch (pk->type) { +#if OPENSSL_VERSION_NUMBER >= 0x10100000L && \ + !defined(LIBRESSL_VERSION_NUMBER) + pktype = EVP_PKEY_id(pk); +#else + pktype = pk->type; +#endif + + switch (pktype) { case EVP_PKEY_RSA : st = gen_publickey_from_rsa_evp(session, method, method_len, pubkeydata, pubkeydata_len, pk);