Added -Wno-error to fix. Also added patch to fix compilation without deprecated OpenSSL APIs. Added PKG_BUILD_PARALLEL for faster compilation. Switched libcyassl to libwolfssl. Reorganized makefile for consistency between packages. Signed-off-by: Rosen Penev <rosenp@gmail.com>lilik-openwrt-22.03
@ -0,0 +1,84 @@ | |||||
--- a/src/ms_chap.c | |||||
+++ b/src/ms_chap.c | |||||
@@ -96,18 +96,18 @@ MakeKey(u_char *key, u_char *des_key) | |||||
des_key[6] = Get7Bits(key, 42); | |||||
des_key[7] = Get7Bits(key, 49); | |||||
- des_set_odd_parity((des_cblock *)des_key); | |||||
+ DES_set_odd_parity((DES_cblock *)des_key); | |||||
} | |||||
static void /* IN 8 octets IN 7 octest OUT 8 octets */ | |||||
DesEncrypt(u_char *clear, u_char *key, u_char *cipher) | |||||
{ | |||||
- des_cblock des_key; | |||||
- des_key_schedule key_schedule; | |||||
+ DES_cblock des_key; | |||||
+ DES_key_schedule key_schedule; | |||||
MakeKey(key, des_key); | |||||
- des_set_key(&des_key, key_schedule); | |||||
- des_ecb_encrypt((des_cblock *)clear, (des_cblock *)cipher, key_schedule, 1); | |||||
+ DES_set_key(&des_key, &key_schedule); | |||||
+ DES_ecb_encrypt((DES_cblock *)clear, (DES_cblock *)cipher, &key_schedule, 1); | |||||
} | |||||
#define LENGTH 20 | |||||
--- a/src/ssl.c | |||||
+++ b/src/ssl.c | |||||
@@ -35,11 +35,13 @@ openssl_env * initssl() { | |||||
if (openssl_init == 0) { | |||||
openssl_init = 1; | |||||
#ifdef HAVE_OPENSSL | |||||
+#if OPENSSL_VERSION_NUMBER < 0x10100000L | |||||
if (_options.debug) { | |||||
SSL_load_error_strings(); | |||||
} | |||||
SSL_library_init(); | |||||
OpenSSL_add_all_algorithms(); | |||||
+#endif | |||||
#else | |||||
matrixSslOpen(); | |||||
syslog(LOG_DEBUG, "%s(%d): MatrixSslOpen()", __FUNCTION__, __LINE__); | |||||
@@ -55,11 +57,13 @@ openssl_env * initssl_cli() { | |||||
if (openssl_init == 0) { | |||||
openssl_init = 1; | |||||
#ifdef HAVE_OPENSSL | |||||
+#if OPENSSL_VERSION_NUMBER < 0x10100000L | |||||
if (_options.debug) { | |||||
SSL_load_error_strings(); | |||||
} | |||||
SSL_library_init(); | |||||
OpenSSL_add_all_algorithms(); | |||||
+#endif | |||||
#else | |||||
matrixSslOpen(); | |||||
syslog(LOG_DEBUG, "%s(%d): MatrixSslOpen()", __FUNCTION__, __LINE__); | |||||
@@ -132,7 +136,7 @@ _openssl_env_init(openssl_env *env, char *engine, int server) { | |||||
if (_options.sslciphers) { | |||||
SSL_CTX_set_cipher_list(env->ctx, _options.sslciphers); | |||||
} | |||||
-#ifdef HAVE_OPENSSL_ENGINE | |||||
+#ifndef OPENSSL_NO_ENGINE | |||||
if (engine) { | |||||
retry: | |||||
if ((env->engine = ENGINE_by_id(engine)) == NULL) { | |||||
@@ -609,7 +613,7 @@ openssl_env_free(openssl_env *env) { | |||||
#endif | |||||
#ifdef HAVE_OPENSSL | |||||
if (env->ctx) SSL_CTX_free(env->ctx); | |||||
-#ifdef HAVE_OPENSSL_ENGINE | |||||
+#ifndef OPENSSL_NO_ENGINE | |||||
if (env->engine) ENGINE_free(env->engine); | |||||
#endif | |||||
#endif | |||||
--- a/src/ssl.h | |||||
+++ b/src/ssl.h | |||||
@@ -41,6 +41,7 @@ typedef struct { | |||||
#include <openssl/ssl.h> | |||||
#include <openssl/pem.h> | |||||
#include <openssl/engine.h> | |||||
+#include <openssl/err.h> | |||||
#elif HAVE_CYASSL | |||||
#include <stdio.h> | |||||
#include <stdlib.h> |
@ -0,0 +1,53 @@ | |||||
--- a/configure.ac | |||||
+++ b/configure.ac | |||||
@@ -397,7 +397,7 @@ AC_ARG_WITH([cyassl], | |||||
[AS_HELP_STRING([--with-cyassl], [enable support for cyassl])],[],[with_cyassl=no]) | |||||
AS_IF([test x"$with_cyassl" != xno], | |||||
- [AC_CHECK_LIB([cyassl], [CyaSSL_Init], | |||||
+ [AC_CHECK_LIB([cyassl], [wolfSSL_Init], | |||||
[AC_SUBST([LIBSSL], ["-lcyassl"]) | |||||
AC_DEFINE([HAVE_CYASSL], [1], | |||||
[Define if you have cyassl]) | |||||
--- a/src/ippool.c | |||||
+++ b/src/ippool.c | |||||
@@ -35,6 +35,7 @@ int ippool_print(int fd, struct ippool_t *this) { | |||||
char * sep = "-- %-15s ------------------------------------------------------------\n"; | |||||
#define ERR 0 | |||||
+#undef USED /* defined in <wolfssl/wolfcrypt/integer.h> */ | |||||
#define USED 1 | |||||
#define FREE 2 | |||||
#define LIST 3 | |||||
--- a/src/md5.h | |||||
+++ b/src/md5.h | |||||
@@ -35,7 +35,6 @@ | |||||
#define MD5Update MD5_Update | |||||
#define MD5Final MD5_Final | |||||
-typedef struct CYASSL_MD5_CTX MD5_CTX; | |||||
#else | |||||
struct MD5Context { | |||||
--- a/src/ssl.c | |||||
+++ b/src/ssl.c | |||||
@@ -131,7 +131,7 @@ _openssl_env_init(openssl_env *env, char *engine, int server) { | |||||
*/ | |||||
const long options = SSL_OP_NO_SSLv2 | SSL_OP_NO_SSLv3 | SSL_OP_NO_COMPRESSION; | |||||
env->meth = SSLv23_method(); | |||||
- env->ctx = SSL_CTX_new(env->meth); | |||||
+ env->ctx = SSL_CTX_new((void *)env->meth); | |||||
SSL_CTX_set_options(env->ctx, options); | |||||
if (_options.sslciphers) { | |||||
SSL_CTX_set_cipher_list(env->ctx, _options.sslciphers); | |||||
--- a/src/ssl.h | |||||
+++ b/src/ssl.h | |||||
@@ -48,6 +48,8 @@ typedef struct { | |||||
#include <time.h> | |||||
#include <string.h> | |||||
+#define OPENSSL_NO_ENGINE | |||||
+#include <cyassl/options.h> | |||||
#include <cyassl/ssl.h> | |||||
#include <cyassl/openssl/bio.h> | |||||
#include <cyassl/openssl/crypto.h> |
@ -0,0 +1,44 @@ | |||||
--- a/src/redir.c | |||||
+++ b/src/redir.c | |||||
@@ -3358,14 +3358,17 @@ int redir_main(struct redir_t *redir, | |||||
} | |||||
#define redir_memcopy(msgtype) \ | |||||
+ do { \ | |||||
redir_challenge(challenge); \ | |||||
redir_chartohex(challenge, hexchal, REDIR_MD5LEN); \ | |||||
msg.mtype = msgtype; \ | |||||
memcpy(conn.s_state.redir.uamchal, challenge, REDIR_MD5LEN); \ | |||||
- if (_options.debug) syslog(LOG_DEBUG, "%s(%d): ---->>> resetting challenge: %s", __FUNCTION__, __LINE__, hexchal) | |||||
+ if (_options.debug) syslog(LOG_DEBUG, "%s(%d): ---->>> resetting challenge: %s", __FUNCTION__, __LINE__, hexchal); \ | |||||
+ } while (0) | |||||
#ifdef USING_IPC_UNIX | |||||
#define redir_msg_send(msgopt) \ | |||||
+ do { \ | |||||
msg.mdata.opt = msgopt; \ | |||||
memcpy(&msg.mdata.address, address, sizeof(msg.mdata.address)); \ | |||||
memcpy(&msg.mdata.baddress, baddress, sizeof(msg.mdata.baddress)); \ | |||||
@@ -3375,9 +3378,11 @@ int redir_main(struct redir_t *redir, | |||||
syslog(LOG_ERR, "%s: write() failed! msgfd=%d type=%ld len=%d", \ | |||||
strerror(errno), redir->msgfd, msg.mtype, (int)sizeof(msg.mdata)); \ | |||||
return redir_main_exit(&socket, forked, rreq); \ | |||||
- } | |||||
+ } \ | |||||
+ } while (0) | |||||
#else | |||||
#define redir_msg_send(msgopt) \ | |||||
+ do { \ | |||||
msg.mdata.opt = msgopt; \ | |||||
memcpy(&msg.mdata.address, address, sizeof(msg.mdata.address)); \ | |||||
memcpy(&msg.mdata.baddress, baddress, sizeof(msg.mdata.baddress)); \ | |||||
@@ -3387,7 +3392,8 @@ int redir_main(struct redir_t *redir, | |||||
syslog(LOG_ERR, "%s: msgsnd() failed! msgid=%d type=%ld len=%d", \ | |||||
strerror(errno), redir->msgid, msg.mtype, (int)sizeof(msg.mdata)); \ | |||||
return redir_main_exit(&socket, forked, rreq); \ | |||||
- } | |||||
+ } \ | |||||
+ } while (0) | |||||
#endif | |||||
/* |