|
|
@ -1,143 +0,0 @@ |
|
|
|
--- a/src/cipher.c
|
|
|
|
+++ b/src/cipher.c
|
|
|
|
@@ -8,6 +8,10 @@ cipher module for lua-openssl binding
|
|
|
|
#include "openssl.h" |
|
|
|
#include "private.h" |
|
|
|
|
|
|
|
+#if OPENSSL_VERSION_NUMBER < 0x10100000L || defined(LIBRESSL_VERSION_NUMBER)
|
|
|
|
+#define EVP_CIPHER_CTX_reset EVP_CIPHER_CTX_init
|
|
|
|
+#endif
|
|
|
|
+
|
|
|
|
/*** |
|
|
|
list all support cipher algs |
|
|
|
|
|
|
|
@@ -109,7 +113,7 @@ static LUA_FUNCTION(openssl_evp_encrypt)
|
|
|
|
memcpy(evp_iv, iv, iv_len); |
|
|
|
} |
|
|
|
|
|
|
|
- EVP_CIPHER_CTX_init(c);
|
|
|
|
+ EVP_CIPHER_CTX_reset(c);
|
|
|
|
ret = EVP_EncryptInit_ex(c, cipher, e, (const byte*)evp_key, iv_len > 0 ? (const byte*)evp_iv : NULL); |
|
|
|
if (ret == 1) |
|
|
|
{ |
|
|
|
@@ -131,8 +135,12 @@ static LUA_FUNCTION(openssl_evp_encrypt)
|
|
|
|
OPENSSL_free(buffer); |
|
|
|
} |
|
|
|
} |
|
|
|
+#if OPENSSL_VERSION_NUMBER >= 0x10100000L || defined(LIBRESSL_VERSION_NUMBER)
|
|
|
|
+ EVP_CIPHER_CTX_reset(c);
|
|
|
|
+#else
|
|
|
|
EVP_CIPHER_CTX_cleanup(c); |
|
|
|
EVP_CIPHER_CTX_free(c); |
|
|
|
+#endif
|
|
|
|
return (ret == 1) ? ret : openssl_pushresult(L, ret); |
|
|
|
} |
|
|
|
else |
|
|
|
@@ -196,7 +204,7 @@ static LUA_FUNCTION(openssl_evp_decrypt)
|
|
|
|
memcpy(evp_iv, iv, iv_len); |
|
|
|
} |
|
|
|
|
|
|
|
- EVP_CIPHER_CTX_init(c);
|
|
|
|
+ EVP_CIPHER_CTX_reset(c);
|
|
|
|
ret = EVP_DecryptInit_ex(c, cipher, e, key ? (const byte*)evp_key : NULL, iv_len > 0 ? (const byte*)evp_iv : NULL); |
|
|
|
if (ret == 1) |
|
|
|
{ |
|
|
|
@@ -220,8 +228,12 @@ static LUA_FUNCTION(openssl_evp_decrypt)
|
|
|
|
OPENSSL_free(buffer); |
|
|
|
} |
|
|
|
} |
|
|
|
+#if OPENSSL_VERSION_NUMBER >= 0x10100000L || defined(LIBRESSL_VERSION_NUMBER)
|
|
|
|
+ EVP_CIPHER_CTX_reset(c);
|
|
|
|
+#else
|
|
|
|
EVP_CIPHER_CTX_cleanup(c); |
|
|
|
EVP_CIPHER_CTX_free(c); |
|
|
|
+#endif
|
|
|
|
return (ret == 1) ? ret : openssl_pushresult(L, ret); |
|
|
|
} |
|
|
|
else |
|
|
|
@@ -292,7 +304,7 @@ static LUA_FUNCTION(openssl_evp_cipher)
|
|
|
|
memcpy(evp_iv, iv, iv_len); |
|
|
|
} |
|
|
|
|
|
|
|
- EVP_CIPHER_CTX_init(c);
|
|
|
|
+ EVP_CIPHER_CTX_reset(c);
|
|
|
|
ret = EVP_CipherInit_ex(c, cipher, e, (const byte*)evp_key, iv_len > 0 ? (const byte*)evp_iv : NULL, enc); |
|
|
|
if (ret == 1) |
|
|
|
{ |
|
|
|
@@ -317,8 +329,12 @@ static LUA_FUNCTION(openssl_evp_cipher)
|
|
|
|
OPENSSL_free(buffer); |
|
|
|
} |
|
|
|
} |
|
|
|
+#if OPENSSL_VERSION_NUMBER >= 0x10100000L || defined(LIBRESSL_VERSION_NUMBER)
|
|
|
|
+ EVP_CIPHER_CTX_reset(c);
|
|
|
|
+#else
|
|
|
|
EVP_CIPHER_CTX_cleanup(c); |
|
|
|
EVP_CIPHER_CTX_free(c); |
|
|
|
+#endif
|
|
|
|
return (ret == 1) ? ret : openssl_pushresult(L, ret); |
|
|
|
} |
|
|
|
else |
|
|
|
@@ -376,7 +392,7 @@ static LUA_FUNCTION(openssl_cipher_new)
|
|
|
|
memcpy(evp_iv, iv, iv_len); |
|
|
|
} |
|
|
|
c = EVP_CIPHER_CTX_new(); |
|
|
|
- EVP_CIPHER_CTX_init(c);
|
|
|
|
+ EVP_CIPHER_CTX_reset(c);
|
|
|
|
if (!EVP_CipherInit_ex(c, cipher, e, key ? (const byte*)evp_key : NULL, iv_len > 0 ? (const byte*)evp_iv : NULL, enc)) |
|
|
|
{ |
|
|
|
luaL_error(L, "EVP_CipherInit_ex failed, please check openssl error"); |
|
|
|
@@ -431,7 +447,7 @@ static LUA_FUNCTION(openssl_cipher_encry
|
|
|
|
memcpy(evp_iv, iv, iv_len); |
|
|
|
} |
|
|
|
c = EVP_CIPHER_CTX_new(); |
|
|
|
- EVP_CIPHER_CTX_init(c);
|
|
|
|
+ EVP_CIPHER_CTX_reset(c);
|
|
|
|
ret = EVP_EncryptInit_ex(c, cipher, e, |
|
|
|
key ? (const byte*)evp_key : NULL, |
|
|
|
iv_len > 0 ? (const byte*)evp_iv : NULL); |
|
|
|
@@ -491,7 +507,7 @@ static LUA_FUNCTION(openssl_cipher_decry
|
|
|
|
memcpy(evp_iv, iv, iv_len); |
|
|
|
} |
|
|
|
c = EVP_CIPHER_CTX_new(); |
|
|
|
- EVP_CIPHER_CTX_init(c);
|
|
|
|
+ EVP_CIPHER_CTX_reset(c);
|
|
|
|
ret = EVP_DecryptInit_ex(c, cipher, e, |
|
|
|
key ? (const byte*)evp_key : NULL, |
|
|
|
iv_len > 0 ? (const byte*)evp_iv : NULL); |
|
|
|
@@ -937,8 +953,12 @@ static LUA_FUNCTION(openssl_cipher_ctx_f
|
|
|
|
return 0; |
|
|
|
lua_pushnil(L); |
|
|
|
lua_rawsetp(L, LUA_REGISTRYINDEX, ctx); |
|
|
|
+#if OPENSSL_VERSION_NUMBER >= 0x10100000L || defined(LIBRESSL_VERSION_NUMBER)
|
|
|
|
+ EVP_CIPHER_CTX_reset(ctx);
|
|
|
|
+#else
|
|
|
|
EVP_CIPHER_CTX_cleanup(ctx); |
|
|
|
EVP_CIPHER_CTX_free(ctx); |
|
|
|
+#endif
|
|
|
|
FREE_OBJECT(1); |
|
|
|
return 0; |
|
|
|
} |
|
|
|
--- a/src/openssl.c
|
|
|
|
+++ b/src/openssl.c
|
|
|
|
@@ -523,9 +523,7 @@ LUALIB_API int luaopen_openssl(lua_State
|
|
|
|
#endif |
|
|
|
|
|
|
|
#ifndef OPENSSL_NO_ENGINE |
|
|
|
- ENGINE_load_dynamic();
|
|
|
|
- ENGINE_load_openssl();
|
|
|
|
- ENGINE_load_builtin_engines();
|
|
|
|
+ ENGINE_register_all_complete();
|
|
|
|
#endif |
|
|
|
#ifdef LOAD_ENGINE_CUSTOM |
|
|
|
LOAD_ENGINE_CUSTOM |
|
|
|
--- a/src/th-lock.c
|
|
|
|
+++ b/src/th-lock.c
|
|
|
|
@@ -310,7 +310,7 @@ unsigned long irix_thread_id(void)
|
|
|
|
|
|
|
|
/* Linux and a few others */ |
|
|
|
#ifdef PTHREADS |
|
|
|
-#ifndef OPENSSL_SYS_WIN32
|
|
|
|
+#if !defined(OPENSSL_SYS_WIN32) && (OPENSSL_VERSION_NUMBER < 0x10100000L || defined(LIBRESSL_VERSION_NUMBER))
|
|
|
|
static pthread_mutex_t *lock_cs; |
|
|
|
static long *lock_count; |
|
|
|
|