Cleaned up Makefile. Fixed license information. Simplified big endian condition. Removed InstallDev section. CMAKE_INSTALL handles it. Signed-off-by: Rosen Penev <rosenp@gmail.com>lilik-openwrt-22.03
@ -0,0 +1,73 @@ | |||
From ce7de0261f0c1f1640da5673dd24939a37e33bd9 Mon Sep 17 00:00:00 2001 | |||
From: Rosen Penev <rosenp@gmail.com> | |||
Date: Thu, 23 Jan 2020 18:53:06 -0800 | |||
Subject: [PATCH 1/2] libcrypto-compat: add extra functions | |||
Changed the define to compare OPENSSL_API_COMPAT instead of version as | |||
OpenSSL can be compiled in different ways. One is to disable all | |||
deprecated APIs. | |||
Added extra functions. The next commit will switch to them. | |||
Signed-off-by: Rosen Penev <rosenp@gmail.com> | |||
--- | |||
src/libcrypto-compat.c | 14 ++++++++++++++ | |||
src/libcrypto-compat.h | 8 +++++++- | |||
2 files changed, 21 insertions(+), 1 deletion(-) | |||
diff --git a/src/libcrypto-compat.c b/src/libcrypto-compat.c | |||
index 048d1781..3604763f 100644 | |||
--- a/src/libcrypto-compat.c | |||
+++ b/src/libcrypto-compat.c | |||
@@ -280,6 +280,11 @@ void EVP_MD_CTX_free(EVP_MD_CTX *ctx) | |||
OPENSSL_free(ctx); | |||
} | |||
+int EVP_CIPHER_CTX_reset(EVP_CIPHER_CTX *ctx) | |||
+{ | |||
+ EVP_CIPHER_CTX_init(ctx); | |||
+} | |||
+ | |||
HMAC_CTX *HMAC_CTX_new(void) | |||
{ | |||
HMAC_CTX *ctx = OPENSSL_zalloc(sizeof(HMAC_CTX)); | |||
@@ -394,3 +399,12 @@ int DH_set0_key(DH *dh, BIGNUM *pub_key, BIGNUM *priv_key) | |||
} | |||
return 1; | |||
} | |||
+ | |||
+const char *OpenSSL_version(int type) | |||
+{ | |||
+ return SSLeay_version(type); | |||
+} | |||
+unsigned long OpenSSL_version_num(void) | |||
+{ | |||
+ return SSLeay(); | |||
+} | |||
diff --git a/src/libcrypto-compat.h b/src/libcrypto-compat.h | |||
index bda0473e..44e14801 100644 | |||
--- a/src/libcrypto-compat.h | |||
+++ b/src/libcrypto-compat.h | |||
@@ -34,6 +34,8 @@ int EVP_MD_CTX_reset(EVP_MD_CTX *ctx); | |||
EVP_MD_CTX *EVP_MD_CTX_new(void); | |||
void EVP_MD_CTX_free(EVP_MD_CTX *ctx); | |||
+int EVP_CIPHER_CTX_reset(EVP_CIPHER_CTX *ctx); | |||
+ | |||
HMAC_CTX *HMAC_CTX_new(void); | |||
int HMAC_CTX_reset(HMAC_CTX *ctx); | |||
void HMAC_CTX_free(HMAC_CTX *ctx); | |||
@@ -44,6 +46,10 @@ int DH_set0_pqg(DH *dh, BIGNUM *p, BIGNUM *q, BIGNUM *g); | |||
void DH_get0_key(const DH *dh, | |||
const BIGNUM **pub_key, const BIGNUM **priv_key); | |||
int DH_set0_key(DH *dh, BIGNUM *pub_key, BIGNUM *priv_key); | |||
+ | |||
+const char *OpenSSL_version(int type); | |||
+unsigned long OpenSSL_version_num(void); | |||
+ | |||
#endif /* OPENSSL_VERSION_NUMBER */ | |||
#endif /* LIBCRYPTO_COMPAT_H */ | |||
-- | |||
2.24.1 | |||
@ -0,0 +1,63 @@ | |||
From 73f0e186964126c9e2bfba43488f543ace54746b Mon Sep 17 00:00:00 2001 | |||
From: Rosen Penev <rosenp@gmail.com> | |||
Date: Thu, 23 Jan 2020 18:54:51 -0800 | |||
Subject: [PATCH 2/2] libcrypto: remove deprecated API usage | |||
EVP_CIPHER_CTX_init was replaced with _reset. | |||
Removed EVP_CIPHER_CTX_cleanup. The successive _free call handles that. | |||
Removed old SSLeay function usage. | |||
Signed-off-by: Rosen Penev <rosenp@gmail.com> | |||
--- | |||
src/libcrypto.c | 9 ++++----- | |||
1 file changed, 4 insertions(+), 5 deletions(-) | |||
diff --git a/src/libcrypto.c b/src/libcrypto.c | |||
index b3792264..7ce7d93a 100644 | |||
--- a/src/libcrypto.c | |||
+++ b/src/libcrypto.c | |||
@@ -541,7 +541,7 @@ static int evp_cipher_set_encrypt_key(struct ssh_cipher_struct *cipher, | |||
int rc; | |||
evp_cipher_init(cipher); | |||
- EVP_CIPHER_CTX_init(cipher->ctx); | |||
+ EVP_CIPHER_CTX_reset(cipher->ctx); | |||
rc = EVP_EncryptInit_ex(cipher->ctx, cipher->cipher, NULL, key, IV); | |||
if (rc != 1){ | |||
@@ -574,7 +574,7 @@ static int evp_cipher_set_decrypt_key(struct ssh_cipher_struct *cipher, | |||
int rc; | |||
evp_cipher_init(cipher); | |||
- EVP_CIPHER_CTX_init(cipher->ctx); | |||
+ EVP_CIPHER_CTX_reset(cipher->ctx); | |||
rc = EVP_DecryptInit_ex(cipher->ctx, cipher->cipher, NULL, key, IV); | |||
if (rc != 1){ | |||
@@ -657,7 +657,6 @@ static void evp_cipher_decrypt(struct ssh_cipher_struct *cipher, | |||
static void evp_cipher_cleanup(struct ssh_cipher_struct *cipher) { | |||
if (cipher->ctx != NULL) { | |||
- EVP_CIPHER_CTX_cleanup(cipher->ctx); | |||
EVP_CIPHER_CTX_free(cipher->ctx); | |||
} | |||
} | |||
@@ -1481,11 +1480,11 @@ int ssh_crypto_init(void) | |||
if (libcrypto_initialized) { | |||
return SSH_OK; | |||
} | |||
- if (SSLeay() != OPENSSL_VERSION_NUMBER){ | |||
+ if (OpenSSL_version_num() != OPENSSL_VERSION_NUMBER){ | |||
SSH_LOG(SSH_LOG_WARNING, "libssh compiled with %s " | |||
"headers, currently running with %s.", | |||
OPENSSL_VERSION_TEXT, | |||
- SSLeay_version(SSLeay()) | |||
+ OpenSSL_version(OpenSSL_version_num()) | |||
); | |||
} | |||
#ifdef CAN_DISABLE_AESNI | |||
-- | |||
2.24.1 | |||