--- 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;
|
|
|