about summary refs log tree commit diff stats
path: root/src
diff options
context:
space:
mode:
authorptitSeb <sebastien.chev@gmail.com>2024-02-04 20:39:35 +0100
committerptitSeb <sebastien.chev@gmail.com>2024-02-04 20:39:35 +0100
commit99694d67ca95d3fc531c5007a6906bfc66e9168d (patch)
tree07d17657c3c86de7266a22154bc9a82959e3f3f3 /src
parentbde279f2fad7d48bb534d94573de53796982ff9c (diff)
downloadbox64-99694d67ca95d3fc531c5007a6906bfc66e9168d.tar.gz
box64-99694d67ca95d3fc531c5007a6906bfc66e9168d.zip
Added some more function to wrapped libcrypto.so.3 and libssl.so.3
Diffstat (limited to 'src')
-rw-r--r--src/wrapped/generated/functions_list.txt13
-rw-r--r--src/wrapped/generated/wrappedcrypto3types.h5
-rw-r--r--src/wrapped/generated/wrappedlibssl3types.h5
-rw-r--r--src/wrapped/generated/wrapper.c8
-rw-r--r--src/wrapped/generated/wrapper.h3
-rw-r--r--src/wrapped/wrappedcrypto3.c47
-rw-r--r--src/wrapped/wrappedcrypto3_private.h75
-rw-r--r--src/wrapped/wrappedlibssl3.c81
-rw-r--r--src/wrapped/wrappedlibssl3_private.h57
9 files changed, 254 insertions, 40 deletions
diff --git a/src/wrapped/generated/functions_list.txt b/src/wrapped/generated/functions_list.txt
index b700c725..5973241f 100644
--- a/src/wrapped/generated/functions_list.txt
+++ b/src/wrapped/generated/functions_list.txt
@@ -1194,6 +1194,7 @@
 #() pFipip
 #() pFippi
 #() pFippu
+#() pFippL
 #() pFippp
 #() pFuuii
 #() pFuuip
@@ -1767,6 +1768,7 @@
 #() pFpppLi
 #() pFppppi
 #() pFppppu
+#() pFppppL
 #() pFppppp
 #() pFbuWWW
 #() pFbuuWW
@@ -2829,6 +2831,7 @@
 #() iFpCuWCCCCup
 #() iFpuuLiuiiLL
 #() iFpLLpiiuuii
+#() iFpLpLUUUUpL
 #() iFppuuiiiiii
 #() iFppuuiiuupi
 #() iFpppiiipipi
@@ -3121,14 +3124,19 @@ wrappedcrypto3:
   - X509_STORE_CTX_set_verify_cb
 - pFpp:
   - OPENSSL_sk_pop_free
+- vFppp:
+  - EVP_MD_do_all_provided
 - iFppp:
   - ASN1_i2d_bio
+- iFppV:
+  - BIO_printf
 - vFiipV:
   - ERR_set_error
 - vFiipA:
   - ERR_vset_error
 - pFpppp:
   - ASN1_d2i_bio
+  - PEM_read_DHparams
   - PEM_read_bio_DSAPrivateKey
   - PEM_read_bio_DSA_PUBKEY
   - PEM_read_bio_ECPrivateKey
@@ -4734,10 +4742,15 @@ wrappedlibssl:
   - SSL_get_ex_new_index
 wrappedlibssl3:
 - pFp:
+  - SSL_CTX_get_default_passwd_cb
+  - SSL_CTX_get_verify_callback
   - SSL_get_verify_callback
 - vFpp:
   - SSL_CTX_set_client_cert_cb
   - SSL_CTX_set_default_passwd_cb
+  - SSL_CTX_set_keylog_callback
+  - SSL_CTX_set_msg_callback
+  - SSL_set_msg_callback
   - SSL_set_psk_client_callback
 - vFpip:
   - SSL_CTX_set_verify
diff --git a/src/wrapped/generated/wrappedcrypto3types.h b/src/wrapped/generated/wrappedcrypto3types.h
index dd3b7001..21ef9265 100644
--- a/src/wrapped/generated/wrappedcrypto3types.h
+++ b/src/wrapped/generated/wrappedcrypto3types.h
@@ -14,7 +14,9 @@
 typedef void (*vFp_t)(void*);
 typedef void (*vFpp_t)(void*, void*);
 typedef void* (*pFpp_t)(void*, void*);
+typedef void (*vFppp_t)(void*, void*, void*);
 typedef int32_t (*iFppp_t)(void*, void*, void*);
+typedef int32_t (*iFppV_t)(void*, void*, ...);
 typedef void (*vFiipV_t)(int32_t, int32_t, void*, ...);
 typedef void (*vFiipA_t)(int32_t, int32_t, void*, va_list);
 typedef void* (*pFpppp_t)(void*, void*, void*, void*);
@@ -27,10 +29,13 @@ typedef int32_t (*iFppppipp_t)(void*, void*, void*, void*, int32_t, void*, void*
 	GO(CRYPTO_set_locking_callback, vFp_t) \
 	GO(X509_STORE_CTX_set_verify_cb, vFpp_t) \
 	GO(OPENSSL_sk_pop_free, pFpp_t) \
+	GO(EVP_MD_do_all_provided, vFppp_t) \
 	GO(ASN1_i2d_bio, iFppp_t) \
+	GO(BIO_printf, iFppV_t) \
 	GO(ERR_set_error, vFiipV_t) \
 	GO(ERR_vset_error, vFiipA_t) \
 	GO(ASN1_d2i_bio, pFpppp_t) \
+	GO(PEM_read_DHparams, pFpppp_t) \
 	GO(PEM_read_bio_DSAPrivateKey, pFpppp_t) \
 	GO(PEM_read_bio_DSA_PUBKEY, pFpppp_t) \
 	GO(PEM_read_bio_ECPrivateKey, pFpppp_t) \
diff --git a/src/wrapped/generated/wrappedlibssl3types.h b/src/wrapped/generated/wrappedlibssl3types.h
index a4675e29..98872627 100644
--- a/src/wrapped/generated/wrappedlibssl3types.h
+++ b/src/wrapped/generated/wrappedlibssl3types.h
@@ -19,9 +19,14 @@ typedef intptr_t (*lFpip_t)(void*, int32_t, void*);
 typedef int32_t (*iFlpppp_t)(intptr_t, void*, void*, void*, void*);
 
 #define SUPER() ADDED_FUNCTIONS() \
+	GO(SSL_CTX_get_default_passwd_cb, pFp_t) \
+	GO(SSL_CTX_get_verify_callback, pFp_t) \
 	GO(SSL_get_verify_callback, pFp_t) \
 	GO(SSL_CTX_set_client_cert_cb, vFpp_t) \
 	GO(SSL_CTX_set_default_passwd_cb, vFpp_t) \
+	GO(SSL_CTX_set_keylog_callback, vFpp_t) \
+	GO(SSL_CTX_set_msg_callback, vFpp_t) \
+	GO(SSL_set_msg_callback, vFpp_t) \
 	GO(SSL_set_psk_client_callback, vFpp_t) \
 	GO(SSL_CTX_set_verify, vFpip_t) \
 	GO(SSL_set_verify, vFpip_t) \
diff --git a/src/wrapped/generated/wrapper.c b/src/wrapped/generated/wrapper.c
index 6079438f..43fac0a6 100644
--- a/src/wrapped/generated/wrapper.c
+++ b/src/wrapped/generated/wrapper.c
@@ -1232,6 +1232,7 @@ typedef void* (*pFipii_t)(int32_t, void*, int32_t, int32_t);
 typedef void* (*pFipip_t)(int32_t, void*, int32_t, void*);
 typedef void* (*pFippi_t)(int32_t, void*, void*, int32_t);
 typedef void* (*pFippu_t)(int32_t, void*, void*, uint32_t);
+typedef void* (*pFippL_t)(int32_t, void*, void*, uintptr_t);
 typedef void* (*pFippp_t)(int32_t, void*, void*, void*);
 typedef void* (*pFuuii_t)(uint32_t, uint32_t, int32_t, int32_t);
 typedef void* (*pFuuip_t)(uint32_t, uint32_t, int32_t, void*);
@@ -1805,6 +1806,7 @@ typedef void* (*pFpppli_t)(void*, void*, void*, intptr_t, int32_t);
 typedef void* (*pFpppLi_t)(void*, void*, void*, uintptr_t, int32_t);
 typedef void* (*pFppppi_t)(void*, void*, void*, void*, int32_t);
 typedef void* (*pFppppu_t)(void*, void*, void*, void*, uint32_t);
+typedef void* (*pFppppL_t)(void*, void*, void*, void*, uintptr_t);
 typedef void* (*pFppppp_t)(void*, void*, void*, void*, void*);
 typedef void* (*pFbuWWW_t)(void*, uint32_t, uint16_t, uint16_t, uint16_t);
 typedef void* (*pFbuuWW_t)(void*, uint32_t, uint32_t, uint16_t, uint16_t);
@@ -2867,6 +2869,7 @@ typedef int32_t (*iFpippddiidd_t)(void*, int32_t, void*, void*, double, double,
 typedef int32_t (*iFpCuWCCCCup_t)(void*, uint8_t, uint32_t, uint16_t, uint8_t, uint8_t, uint8_t, uint8_t, uint32_t, void*);
 typedef int32_t (*iFpuuLiuiiLL_t)(void*, uint32_t, uint32_t, uintptr_t, int32_t, uint32_t, int32_t, int32_t, uintptr_t, uintptr_t);
 typedef int32_t (*iFpLLpiiuuii_t)(void*, uintptr_t, uintptr_t, void*, int32_t, int32_t, uint32_t, uint32_t, int32_t, int32_t);
+typedef int32_t (*iFpLpLUUUUpL_t)(void*, uintptr_t, void*, uintptr_t, uint64_t, uint64_t, uint64_t, uint64_t, void*, uintptr_t);
 typedef int32_t (*iFppuuiiiiii_t)(void*, void*, uint32_t, uint32_t, int32_t, int32_t, int32_t, int32_t, int32_t, int32_t);
 typedef int32_t (*iFppuuiiuupi_t)(void*, void*, uint32_t, uint32_t, int32_t, int32_t, uint32_t, uint32_t, void*, int32_t);
 typedef int32_t (*iFpppiiipipi_t)(void*, void*, void*, int32_t, int32_t, int32_t, void*, int32_t, void*, int32_t);
@@ -4272,6 +4275,7 @@ void pFipii(x64emu_t *emu, uintptr_t fcn) { pFipii_t fn = (pFipii_t)fcn; R_RAX=(
 void pFipip(x64emu_t *emu, uintptr_t fcn) { pFipip_t fn = (pFipip_t)fcn; R_RAX=(uintptr_t)fn((int32_t)R_RDI, (void*)R_RSI, (int32_t)R_RDX, (void*)R_RCX); }
 void pFippi(x64emu_t *emu, uintptr_t fcn) { pFippi_t fn = (pFippi_t)fcn; R_RAX=(uintptr_t)fn((int32_t)R_RDI, (void*)R_RSI, (void*)R_RDX, (int32_t)R_RCX); }
 void pFippu(x64emu_t *emu, uintptr_t fcn) { pFippu_t fn = (pFippu_t)fcn; R_RAX=(uintptr_t)fn((int32_t)R_RDI, (void*)R_RSI, (void*)R_RDX, (uint32_t)R_RCX); }
+void pFippL(x64emu_t *emu, uintptr_t fcn) { pFippL_t fn = (pFippL_t)fcn; R_RAX=(uintptr_t)fn((int32_t)R_RDI, (void*)R_RSI, (void*)R_RDX, (uintptr_t)R_RCX); }
 void pFippp(x64emu_t *emu, uintptr_t fcn) { pFippp_t fn = (pFippp_t)fcn; R_RAX=(uintptr_t)fn((int32_t)R_RDI, (void*)R_RSI, (void*)R_RDX, (void*)R_RCX); }
 void pFuuii(x64emu_t *emu, uintptr_t fcn) { pFuuii_t fn = (pFuuii_t)fcn; R_RAX=(uintptr_t)fn((uint32_t)R_RDI, (uint32_t)R_RSI, (int32_t)R_RDX, (int32_t)R_RCX); }
 void pFuuip(x64emu_t *emu, uintptr_t fcn) { pFuuip_t fn = (pFuuip_t)fcn; R_RAX=(uintptr_t)fn((uint32_t)R_RDI, (uint32_t)R_RSI, (int32_t)R_RDX, (void*)R_RCX); }
@@ -4845,6 +4849,7 @@ void pFpppli(x64emu_t *emu, uintptr_t fcn) { pFpppli_t fn = (pFpppli_t)fcn; R_RA
 void pFpppLi(x64emu_t *emu, uintptr_t fcn) { pFpppLi_t fn = (pFpppLi_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (void*)R_RSI, (void*)R_RDX, (uintptr_t)R_RCX, (int32_t)R_R8); }
 void pFppppi(x64emu_t *emu, uintptr_t fcn) { pFppppi_t fn = (pFppppi_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (void*)R_RSI, (void*)R_RDX, (void*)R_RCX, (int32_t)R_R8); }
 void pFppppu(x64emu_t *emu, uintptr_t fcn) { pFppppu_t fn = (pFppppu_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (void*)R_RSI, (void*)R_RDX, (void*)R_RCX, (uint32_t)R_R8); }
+void pFppppL(x64emu_t *emu, uintptr_t fcn) { pFppppL_t fn = (pFppppL_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (void*)R_RSI, (void*)R_RDX, (void*)R_RCX, (uintptr_t)R_R8); }
 void pFppppp(x64emu_t *emu, uintptr_t fcn) { pFppppp_t fn = (pFppppp_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (void*)R_RSI, (void*)R_RDX, (void*)R_RCX, (void*)R_R8); }
 void pFbuWWW(x64emu_t *emu, uintptr_t fcn) { pFbuWWW_t fn = (pFbuWWW_t)fcn; void *aligned_xcb = align_xcb_connection((void*)R_RDI); R_RAX=(uintptr_t)fn(aligned_xcb, (uint32_t)R_RSI, (uint16_t)R_RDX, (uint16_t)R_RCX, (uint16_t)R_R8); unalign_xcb_connection(aligned_xcb, (void*)R_RDI); }
 void pFbuuWW(x64emu_t *emu, uintptr_t fcn) { pFbuuWW_t fn = (pFbuuWW_t)fcn; void *aligned_xcb = align_xcb_connection((void*)R_RDI); R_RAX=(uintptr_t)fn(aligned_xcb, (uint32_t)R_RSI, (uint32_t)R_RDX, (uint16_t)R_RCX, (uint16_t)R_R8); unalign_xcb_connection(aligned_xcb, (void*)R_RDI); }
@@ -5907,6 +5912,7 @@ void iFpippddiidd(x64emu_t *emu, uintptr_t fcn) { iFpippddiidd_t fn = (iFpippddi
 void iFpCuWCCCCup(x64emu_t *emu, uintptr_t fcn) { iFpCuWCCCCup_t fn = (iFpCuWCCCCup_t)fcn; R_RAX=(int32_t)fn((void*)R_RDI, (uint8_t)R_RSI, (uint32_t)R_RDX, (uint16_t)R_RCX, (uint8_t)R_R8, (uint8_t)R_R9, *(uint8_t*)(R_RSP + 8), *(uint8_t*)(R_RSP + 16), *(uint32_t*)(R_RSP + 24), *(void**)(R_RSP + 32)); }
 void iFpuuLiuiiLL(x64emu_t *emu, uintptr_t fcn) { iFpuuLiuiiLL_t fn = (iFpuuLiuiiLL_t)fcn; R_RAX=(int32_t)fn((void*)R_RDI, (uint32_t)R_RSI, (uint32_t)R_RDX, (uintptr_t)R_RCX, (int32_t)R_R8, (uint32_t)R_R9, *(int32_t*)(R_RSP + 8), *(int32_t*)(R_RSP + 16), *(uintptr_t*)(R_RSP + 24), *(uintptr_t*)(R_RSP + 32)); }
 void iFpLLpiiuuii(x64emu_t *emu, uintptr_t fcn) { iFpLLpiiuuii_t fn = (iFpLLpiiuuii_t)fcn; R_RAX=(int32_t)fn((void*)R_RDI, (uintptr_t)R_RSI, (uintptr_t)R_RDX, (void*)R_RCX, (int32_t)R_R8, (int32_t)R_R9, *(uint32_t*)(R_RSP + 8), *(uint32_t*)(R_RSP + 16), *(int32_t*)(R_RSP + 24), *(int32_t*)(R_RSP + 32)); }
+void iFpLpLUUUUpL(x64emu_t *emu, uintptr_t fcn) { iFpLpLUUUUpL_t fn = (iFpLpLUUUUpL_t)fcn; R_RAX=(int32_t)fn((void*)R_RDI, (uintptr_t)R_RSI, (void*)R_RDX, (uintptr_t)R_RCX, (uint64_t)R_R8, (uint64_t)R_R9, *(uint64_t*)(R_RSP + 8), *(uint64_t*)(R_RSP + 16), *(void**)(R_RSP + 24), *(uintptr_t*)(R_RSP + 32)); }
 void iFppuuiiiiii(x64emu_t *emu, uintptr_t fcn) { iFppuuiiiiii_t fn = (iFppuuiiiiii_t)fcn; R_RAX=(int32_t)fn((void*)R_RDI, (void*)R_RSI, (uint32_t)R_RDX, (uint32_t)R_RCX, (int32_t)R_R8, (int32_t)R_R9, *(int32_t*)(R_RSP + 8), *(int32_t*)(R_RSP + 16), *(int32_t*)(R_RSP + 24), *(int32_t*)(R_RSP + 32)); }
 void iFppuuiiuupi(x64emu_t *emu, uintptr_t fcn) { iFppuuiiuupi_t fn = (iFppuuiiuupi_t)fcn; R_RAX=(int32_t)fn((void*)R_RDI, (void*)R_RSI, (uint32_t)R_RDX, (uint32_t)R_RCX, (int32_t)R_R8, (int32_t)R_R9, *(uint32_t*)(R_RSP + 8), *(uint32_t*)(R_RSP + 16), *(void**)(R_RSP + 24), *(int32_t*)(R_RSP + 32)); }
 void iFpppiiipipi(x64emu_t *emu, uintptr_t fcn) { iFpppiiipipi_t fn = (iFpppiiipipi_t)fcn; R_RAX=(int32_t)fn((void*)R_RDI, (void*)R_RSI, (void*)R_RDX, (int32_t)R_RCX, (int32_t)R_R8, (int32_t)R_R9, *(void**)(R_RSP + 8), *(int32_t*)(R_RSP + 16), *(void**)(R_RSP + 24), *(int32_t*)(R_RSP + 32)); }
@@ -7094,6 +7100,7 @@ int isSimpleWrapper(wrapper_t fun) {
 	if (fun == &pFipip) return 1;
 	if (fun == &pFippi) return 1;
 	if (fun == &pFippu) return 1;
+	if (fun == &pFippL) return 1;
 	if (fun == &pFippp) return 1;
 	if (fun == &pFuuii) return 1;
 	if (fun == &pFuuip) return 1;
@@ -7569,6 +7576,7 @@ int isSimpleWrapper(wrapper_t fun) {
 	if (fun == &pFpppLi) return 1;
 	if (fun == &pFppppi) return 1;
 	if (fun == &pFppppu) return 1;
+	if (fun == &pFppppL) return 1;
 	if (fun == &pFppppp) return 1;
 	if (fun == &vFiiiiii) return 1;
 	if (fun == &vFiiiuil) return 1;
diff --git a/src/wrapped/generated/wrapper.h b/src/wrapped/generated/wrapper.h
index 02a6ec31..df9a83ab 100644
--- a/src/wrapped/generated/wrapper.h
+++ b/src/wrapped/generated/wrapper.h
@@ -1232,6 +1232,7 @@ void pFipii(x64emu_t *emu, uintptr_t fnc);
 void pFipip(x64emu_t *emu, uintptr_t fnc);
 void pFippi(x64emu_t *emu, uintptr_t fnc);
 void pFippu(x64emu_t *emu, uintptr_t fnc);
+void pFippL(x64emu_t *emu, uintptr_t fnc);
 void pFippp(x64emu_t *emu, uintptr_t fnc);
 void pFuuii(x64emu_t *emu, uintptr_t fnc);
 void pFuuip(x64emu_t *emu, uintptr_t fnc);
@@ -1805,6 +1806,7 @@ void pFpppli(x64emu_t *emu, uintptr_t fnc);
 void pFpppLi(x64emu_t *emu, uintptr_t fnc);
 void pFppppi(x64emu_t *emu, uintptr_t fnc);
 void pFppppu(x64emu_t *emu, uintptr_t fnc);
+void pFppppL(x64emu_t *emu, uintptr_t fnc);
 void pFppppp(x64emu_t *emu, uintptr_t fnc);
 void pFbuWWW(x64emu_t *emu, uintptr_t fnc);
 void pFbuuWW(x64emu_t *emu, uintptr_t fnc);
@@ -2867,6 +2869,7 @@ void iFpippddiidd(x64emu_t *emu, uintptr_t fnc);
 void iFpCuWCCCCup(x64emu_t *emu, uintptr_t fnc);
 void iFpuuLiuiiLL(x64emu_t *emu, uintptr_t fnc);
 void iFpLLpiiuuii(x64emu_t *emu, uintptr_t fnc);
+void iFpLpLUUUUpL(x64emu_t *emu, uintptr_t fnc);
 void iFppuuiiiiii(x64emu_t *emu, uintptr_t fnc);
 void iFppuuiiuupi(x64emu_t *emu, uintptr_t fnc);
 void iFpppiiipipi(x64emu_t *emu, uintptr_t fnc);
diff --git a/src/wrapped/wrappedcrypto3.c b/src/wrapped/wrappedcrypto3.c
index a6317af8..730a23bb 100644
--- a/src/wrapped/wrappedcrypto3.c
+++ b/src/wrapped/wrappedcrypto3.c
@@ -1,7 +1,7 @@
+#define _GNU_SOURCE
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
-#define _GNU_SOURCE         /* See feature_test_macros(7) */
 #include <dlfcn.h>
 
 #include "wrappedlibs.h"
@@ -22,6 +22,11 @@
 const char* crypto3Name = "libcrypto.so.3";
 #define LIBNAME crypto3
 
+typedef int(*iFppA_t)   (void*, void*, va_list);
+
+#define ADDED_FUNCTIONS()                   \
+    GO(BIO_vprintf, iFppA_t);               \
+
 #include "generated/wrappedcrypto3types.h"
 
 #include "wrappercallback.h"
@@ -298,6 +303,30 @@ static void* find_verify_cb_Fct(void* fct)
     return NULL;
 }
 
+// do_all_provided_cb
+#define GO(A)   \
+static uintptr_t my3_do_all_provided_cb_fct_##A = 0;            \
+static void my3_do_all_provided_cb_##A(void* a, void* b)        \
+{                                                               \
+    RunFunctionFmt(my3_do_all_provided_cb_fct_##A, "pp", a, b); \
+}
+SUPER()
+#undef GO
+static void* find_do_all_provided_cb_Fct(void* fct)
+{
+    if(!fct) return NULL;
+    void* p;
+    if((p = GetNativeFnc((uintptr_t)fct))) return p;
+    #define GO(A) if(my3_do_all_provided_cb_fct_##A == (uintptr_t)fct) return my3_do_all_provided_cb_##A;
+    SUPER()
+    #undef GO
+    #define GO(A) if(my3_do_all_provided_cb_fct_##A == 0) {my3_do_all_provided_cb_fct_##A = (uintptr_t)fct; return my3_do_all_provided_cb_##A; }
+    SUPER()
+    #undef GO
+    printf_log(LOG_NONE, "Warning, no more slot for libcrypto do_all_provided_cb callback\n");
+    return NULL;
+}
+
 #undef SUPER
 
 EXPORT int32_t my3_ENGINE_ctrl(x64emu_t* emu, void* e, int32_t cmd, int32_t i, void* p, void* f)
@@ -455,6 +484,22 @@ EXPORT void my3_ERR_vset_error(x64emu_t* emu, int lib, int reason, void* fmt, x6
     my->ERR_vset_error(lib, reason, fmt, VARARGS);
 }
 
+EXPORT int my3_BIO_printf(x64emu_t* emu, void* bio, void* fmt, uintptr_t* b)
+{
+    myStackAlign(emu, (const char*)fmt, b, emu->scratch, R_EAX, 2);
+    PREPARE_VALIST;
+    return my->BIO_vprintf(bio, fmt, VARARGS);
+}
+
+EXPORT void* my3_PEM_read_DHparams(x64emu_t* emu, void* fp, void* x, void* cb, void* u)
+{
+    return my->PEM_read_DHparams(fp, x, find_pem_password_cb_Fct(cb), u);
+}
+
+EXPORT void my3_EVP_MD_do_all_provided(x64emu_t* emu, void* ctx, void* cb, void* arg)
+{
+    my->EVP_MD_do_all_provided(ctx, find_do_all_provided_cb_Fct(cb), arg);
+}
 
 #define CUSTOM_INIT \
     SETALT(my3_);   \
diff --git a/src/wrapped/wrappedcrypto3_private.h b/src/wrapped/wrappedcrypto3_private.h
index 40a0c185..53bb3405 100644
--- a/src/wrapped/wrappedcrypto3_private.h
+++ b/src/wrapped/wrappedcrypto3_private.h
@@ -8,7 +8,7 @@ GO(a2i_ASN1_INTEGER, iFpppi)
 GO(a2i_ASN1_STRING, iFpppi)
 //GO(a2i_GENERAL_NAME, 
 //GO(a2i_ipadd, 
-//GO(a2i_IPADDRESS, 
+GO(a2i_IPADDRESS, pFp)
 //GO(a2i_IPADDRESS_NC, 
 //GO(ACCESS_DESCRIPTION_free, 
 //GO(ACCESS_DESCRIPTION_new, 
@@ -171,6 +171,7 @@ GO(ASN1_STRING_copy, iFpp)
 GO(ASN1_STRING_data, pFp)
 GO(ASN1_STRING_dup, pFp)
 GO(ASN1_STRING_free, vFp)
+GO(ASN1_STRING_get0_data, pFp)
 GO(ASN1_STRING_get_default_mask, LFv)
 GO(ASN1_STRING_length, iFp)
 GO(ASN1_STRING_length_set, vFpi)
@@ -235,7 +236,7 @@ GO(ASN1_UTF8STRING_new, pFv)
 //GO(ASN1_verify, 
 GO(ASN1_VISIBLESTRING_free, vFp)
 GO(ASN1_VISIBLESTRING_new, pFv)
-//GO(AUTHORITY_INFO_ACCESS_free, 
+GO(AUTHORITY_INFO_ACCESS_free, vFp)
 //GO(AUTHORITY_INFO_ACCESS_new, 
 GO(AUTHORITY_KEYID_free, vFp)
 GO(AUTHORITY_KEYID_new, pFv)
@@ -260,7 +261,7 @@ GO(BIO_asn1_get_suffix, iFppp)
 //GO(BIO_asn1_set_prefix, 
 //GO(BIO_asn1_set_suffix, 
 //GO(BIO_callback_ctrl, 
-//GO(BIO_clear_flags, 
+GO(BIO_clear_flags, vFpi)
 //GO(BIO_CONNECT_free, 
 //GO(BIO_CONNECT_new, 
 GO(BIO_copy_next_retry, vFp)
@@ -334,7 +335,7 @@ GO(BIO_nwrite, iFppi)
 GO(BIO_nwrite0, iFpp)
 GO(BIO_pending, iFp)
 //GO(BIO_pop, 
-//GO(BIO_printf, 
+GOM(BIO_printf, iFEppV)
 GO(BIO_ptr_ctrl, pFpil)
 GO(BIO_push, pFpp)
 GO(BIO_puts, iFpp)
@@ -351,10 +352,10 @@ GO(BIO_set_callback_arg, vFpp)
 GO(BIO_set_close, iFpl)
 //GO(BIO_set_cipher, 
 GO(BIO_set_ex_data, iFpip)
-//GO(BIO_set_flags, 
+GO(BIO_set_flags, vFpi)
 GO(BIO_set_tcp_ndelay, iFii)
 //GO(BIO_s_fd, 
-//GO(BIO_s_file, 
+GO(BIO_s_file, pFv)
 //GO(BIO_s_log, 
 GO(BIO_s_mem, pFv)
 //GO(BIO_snprintf, 
@@ -794,8 +795,9 @@ GO(CONF_modules_unload, vFi)
 //GO(CONF_parse_list, 
 //GO(CONF_set_default_method, 
 //GO(CONF_set_nconf, 
-//GO(CRL_DIST_POINTS_free, 
-//GO(CRL_DIST_POINTS_new, 
+GO(COMP_get_type, iFp)
+GO(CRL_DIST_POINTS_free, vFp)
+GO(CRL_DIST_POINTS_new, pFv)
 //GO(CRYPTO_128_unwrap, 
 //GO(CRYPTO_128_wrap, 
 GO(CRYPTO_add_lock, iFpiipi)
@@ -1843,7 +1845,7 @@ GO(EVP_CIPHER_param_to_asn1, iFpp)
 GO(EVP_CIPHER_type, iFp)
 GO(EVP_CipherUpdate, iFppppi)
 GO(EVP_cleanup, vFv)
-//GO(EVP_DecodeBlock, 
+GO(EVP_DecodeBlock, iFppi)
 //GO(EVP_DecodeFinal, 
 //GO(EVP_DecodeInit, 
 //GO(EVP_DecodeUpdate, 
@@ -1852,6 +1854,7 @@ GO(EVP_DecryptFinal_ex, iFppp)
 GO(EVP_DecryptInit, iFpppp)
 GO(EVP_DecryptInit_ex, iFppppp)
 GO(EVP_DecryptUpdate, iFppppi)
+GO(EVP_default_properties_is_fips_enabled, iFp)
 GO(EVP_des_cbc, pFv)
 GO(EVP_des_cfb, pFv)
 GO(EVP_des_cfb1, pFv)
@@ -1876,20 +1879,23 @@ GO(EVP_des_ede_ofb, pFv)
 //GO(EVP_des_ofb, 
 //GO(EVP_desx_cbc, 
 //GO(EVP_Digest, 
-//GO(EVP_DigestFinal, 
+GO(EVP_DigestFinal, iFppp)
+GO(EVP_DigestFinalXOF, iFppL)
 GO(EVP_DigestFinal_ex, iFppp)
 GO(EVP_DigestInit, iFpp)
 GO(EVP_DigestInit_ex, iFppp)
+GO(EVP_DigestSign, iFppppL)
 GO(EVP_DigestSignFinal, iFppp)
-//GO(EVP_DigestSignInit, 
+GO(EVP_DigestSignInit, iFppppp)
 GO(EVP_DigestUpdate, iFppL)
+GO(EVP_DigestVerify, iFppLpL)
 //GO(EVP_DigestVerifyFinal, 
-//GO(EVP_DigestVerifyInit, 
+GO(EVP_DigestVerifyInit, iFppppp)
 //GO(EVP_dss, 
 //GO(EVP_dss1, 
 //GO(EVP_ecdsa, 
 //GO(EVP_enc_null, 
-//GO(EVP_EncodeBlock, 
+GO(EVP_EncodeBlock, iFppi)
 //GO(EVP_EncodeFinal, 
 //GO(EVP_EncodeInit, 
 //GO(EVP_EncodeUpdate, 
@@ -1906,6 +1912,13 @@ GO(EVP_get_digestbyname, pFp)
 //GO(EVP_idea_cfb64, 
 //GO(EVP_idea_ecb, 
 //GO(EVP_idea_ofb, 
+GO(EVP_MAC_CTX_free, vFp)
+GO(EVP_MAC_CTX_new, pFp)
+GO(EVP_MAC_fetch, pFppp)
+GO(EVP_MAC_final, iFpppL)
+GO(EVP_MAC_free, vFp)
+GO(EVP_MAC_init, iFppLp)
+GO(EVP_MAC_update, iFppL)
 GO(EVP_md4, pFv)
 GO(EVP_md5, pFv)
 GO(EVP_MD_block_size, iFp)
@@ -1918,6 +1931,7 @@ GO(EVP_MD_CTX_create, pFv)
 GO(EVP_MD_CTX_ctrl, vFpiip)
 GO(EVP_MD_CTX_destroy, vFp)
 GO(EVP_MD_CTX_free, vFp)
+GO(EVP_MD_CTX_get0_md, pFp)
 //GO(EVP_MD_CTX_init, 
 GO(EVP_MD_CTX_md, pFp)
 GO(EVP_MD_CTX_new, pFv)
@@ -1925,12 +1939,19 @@ GO(EVP_MD_CTX_reset, iFp)
 GO(EVP_MD_CTX_set_flags, vFpi)
 //GO(EVP_MD_CTX_test_flags, 
 //GO(EVP_MD_do_all, 
+GOM(EVP_MD_do_all_provided, vFEppp)
 //GO(EVP_MD_do_all_sorted, 
+GO(EVP_MD_fetch, pFppp)
 //GO(EVP_MD_flags, 
+GO(EVP_MD_free, vFp)
+GO(EVP_MD_get_block_size, iFp)
+GO(EVP_MD_get_flags, LFp)
 GO(EVP_MD_get_size, iFp)
+GO(EVP_MD_get_type, iFp)
 GO(EVP_md_null, pFv)
 GO(EVP_MD_pkey_type, iFp)
 GO(EVP_MD_type, iFp)
+GO(EVP_MD_up_ref, iFp)
 //GO(EVP_OpenFinal, 
 //GO(EVP_OpenInit, 
 //GO(EVP_PBE_alg_add, 
@@ -1938,6 +1959,7 @@ GO(EVP_MD_type, iFp)
 //GO(EVP_PBE_CipherInit, 
 //GO(EVP_PBE_cleanup, 
 //GO(EVP_PBE_find, 
+GO(EVP_PBE_scrypt, iFpLpLUUUUpL)
 GO(EVP_PKCS82PKEY, pFp)
 GO(EVP_PKCS82PKEY_ex, pFppp)
 GO(EVP_PKEY2PKCS8, pFp)
@@ -2015,6 +2037,10 @@ GO(EVP_PKEY_get1_RSA, pFp)
 //GO(EVP_PKEY_get_attr_count, 
 GO(EVP_PKEY_get_base_id, iFp)
 //GO(EVP_PKEY_get_default_digest_nid, 
+GO(EVP_PKEY_get_raw_private_key, iFppp)
+GO(EVP_PKEY_get_raw_public_key, iFppp)
+GO(EVP_PKEY_new_raw_private_key, pFppppL)
+GO(EVP_PKEY_new_raw_public_key, pFippL)
 GO(EVP_PKEY_get_size, iFp)
 //GO(EVP_PKEY_id, 
 GO(EVP_PKEY_keygen, iFpp)
@@ -2077,7 +2103,7 @@ GO(EVP_rc2_ofb, pFv)
 //GO(EVP_rc4_hmac_md5, 
 //GO(EVP_read_pw_string, 
 //GO(EVP_read_pw_string_min, 
-//GO(EVP_ripemd160, 
+GO(EVP_ripemd160, pFp)
 //GO(EVP_SealFinal, 
 //GO(EVP_SealInit, 
 //GO(EVP_seed_cbc, 
@@ -2117,7 +2143,7 @@ GO(GENERAL_NAME_free, vFp)
 //GO(GENERAL_NAME_get0_otherName, 
 //GO(GENERAL_NAME_get0_value, 
 GO(GENERAL_NAME_new, pFv)
-//GO(GENERAL_NAME_print, 
+GO(GENERAL_NAME_print, iFpp)
 //GO(GENERAL_NAME_set0_othername, 
 //GO(GENERAL_NAME_set0_value, 
 GO(GENERAL_NAMES_free, vFp)
@@ -2137,6 +2163,7 @@ GO(HMAC, pFppipLpp)
 GO(HMAC_CTX_cleanup, vFp)
 GO(HMAC_CTX_copy, iFpp)
 GO(HMAC_CTX_free, vFp)
+GO(HMAC_CTX_get_md, pFp)
 GO(HMAC_CTX_init, vFp)
 GO(HMAC_CTX_new, pFv)
 GO(HMAC_CTX_set_flags, vFpL)
@@ -2654,6 +2681,7 @@ GO(OPENSSL_init_crypto, iFLp)
 //GO(OPENSSL_memcmp, 
 GO(OPENSSL_no_config, vFv)
 //GO(OPENSSL_rdtsc, 
+GO(OPENSSL_sk_find, iFpp)
 GO(OPENSSL_sk_free, vFp)    //1.1+
 GO(OPENSSL_sk_new_null, pFv)    //1.1+
 GO(OPENSSL_sk_num, iFp) //1.1+
@@ -2667,6 +2695,7 @@ GO(OPENSSL_strcasecmp, iFpp)
 GO(OPENSSL_strncasecmp, iFppL)
 //GO(OPENSSL_uni2asc, 
 //GO(OPENSSL_wipe_cpu, 
+GO(OpenSSL_version, pFi)
 GO(OpenSSL_version_num, LFv)
 //GO(_ossl_096_des_random_seed, 
 //GO(_ossl_old_crypt, 
@@ -2753,7 +2782,7 @@ GOM(PEM_read_bio_X509_CERT_PAIR, pFEpppp)
 GOM(PEM_read_bio_X509_CRL, pFEpppp)
 GOM(PEM_read_bio_X509_REQ, pFEpppp)
 //GO(PEM_read_CMS, 
-//GO(PEM_read_DHparams, 
+GOM(PEM_read_DHparams, pFEpppp)
 //GO(PEM_read_DSAparams, 
 //GO(PEM_read_DSAPrivateKey, 
 //GO(PEM_read_DSA_PUBKEY, 
@@ -3453,7 +3482,7 @@ GO(X509_add1_ext_i2d, iFpipiL)
 //GO(X509_chain_check_suiteb, 
 //GO(X509_chain_up_ref, 
 //GO(X509_check_akid, 
-//GO(X509_check_ca, 
+GO(X509_check_ca, iFp)
 //GO(X509_check_email, 
 GO(X509_check_host, iFppLup)
 //GO(X509_check_ip, 
@@ -3597,6 +3626,7 @@ GO(X509_NAME_ENTRY_create_by_txt, pFppipi)
 GO(X509_NAME_ENTRY_get_data, pFp)
 GO(X509_NAME_ENTRY_get_object, pFp)
 //GO(X509_NAME_ENTRY_new, 
+GO(X509_NAME_ENTRY_set, iFp)
 GO(X509_NAME_ENTRY_set_data, iFpipi)
 GO(X509_NAME_ENTRY_set_object, iFpp)
 GO(X509_NAME_free, vFp)
@@ -3616,6 +3646,8 @@ GO(X509_NAME_print_ex_fp, iFppiu)
 //GO(X509_NAME_set, 
 GO(X509_new, pFv)
 //GO(X509_OBJECT_free_contents, 
+GO(X509_OBJECT_get_type, iFp)
+GO(X509_OBJECT_get0_X509, pFp)
 //GO(X509_OBJECT_idx_by_subject, 
 //GO(X509_OBJECT_retrieve_by_subject, 
 //GO(X509_OBJECT_retrieve_match, 
@@ -3768,6 +3800,7 @@ GOM(X509_STORE_CTX_set_verify_cb, vFEpp)
 //GO(X509_STORE_CTX_trusted_stack, 
 GO(X509_STORE_free, vFp)
 GO(X509_STORE_get0_param, pFp)
+GO(X509_STORE_get0_objects, pFp)
 //GO(X509_STORE_get1_certs, 
 //GO(X509_STORE_get1_crls, 
 //GO(X509_STORE_get_by_subject, 
@@ -3875,14 +3908,14 @@ GO(X509_VERIFY_PARAM_get_flags, LFp)
 //GO(X509_VERIFY_PARAM_new, 
 //GO(X509_VERIFY_PARAM_set1, 
 //GO(X509_VERIFY_PARAM_set1_email, 
-//GO(X509_VERIFY_PARAM_set1_host, 
-//GO(X509_VERIFY_PARAM_set1_ip, 
+GO(X509_VERIFY_PARAM_set1_host, iFppL)
+GO(X509_VERIFY_PARAM_set1_ip, iFppL)
 //GO(X509_VERIFY_PARAM_set1_ip_asc, 
 //GO(X509_VERIFY_PARAM_set1_name, 
 //GO(X509_VERIFY_PARAM_set1_policies, 
 //GO(X509_VERIFY_PARAM_set_depth, 
-//GO(X509_VERIFY_PARAM_set_flags, 
-//GO(X509_VERIFY_PARAM_set_hostflags, 
+GO(X509_VERIFY_PARAM_set_flags, iFpL)
+GO(X509_VERIFY_PARAM_set_hostflags, vFpu)
 //GO(X509_VERIFY_PARAM_set_purpose, 
 GO(X509_VERIFY_PARAM_set_time, vFpl)
 //GO(X509_VERIFY_PARAM_set_trust, 
diff --git a/src/wrapped/wrappedlibssl3.c b/src/wrapped/wrappedlibssl3.c
index 23d2e3b5..0460651c 100644
--- a/src/wrapped/wrappedlibssl3.c
+++ b/src/wrapped/wrappedlibssl3.c
@@ -55,6 +55,16 @@ static void* find_pem_passwd_cb_Fct(void* fct)
     printf_log(LOG_NONE, "Warning, no more slot for libSSL pem_passwd_cb callback\n");
     return NULL;
 }
+static void* reverse_pem_passwd_cb_Fct(void* fct)
+{
+    if(!fct) return fct;
+    if(CheckBridged(my_lib->w.bridge, fct))
+        return (void*)CheckBridged(my_lib->w.bridge, fct);
+    #define GO(A) if(my3_pem_passwd_cb_##A == fct) return (void*)my3_pem_passwd_cb_fct_##A;
+    SUPER()
+    #undef GO
+    return (void*)AddBridge(my_lib->w.bridge, pFp, fct, 0, NULL);
+}
 
 // anonymous
 #define GO(A)   \
@@ -282,6 +292,52 @@ static void* find_alpn_select_cb_Fct(void* fct)
     printf_log(LOG_NONE, "Warning, no more slot for libSSL alpn_select_cb callback\n");
     return NULL;
 }
+// keylog_cb
+#define GO(A)   \
+static uintptr_t my3_keylog_cb_fct_##A = 0;                 \
+static void my3_keylog_cb_##A(void* ssl, void* line)        \
+{                                                           \
+    RunFunctionFmt(my3_keylog_cb_fct_##A, "pp", ssl, line); \
+}
+SUPER()
+#undef GO
+static void* find_keylog_cb_Fct(void* fct)
+{
+    if(!fct) return NULL;
+    void* p;
+    if((p = GetNativeFnc((uintptr_t)fct))) return p;
+    #define GO(A) if(my3_keylog_cb_fct_##A == (uintptr_t)fct) return my3_keylog_cb_##A;
+    SUPER()
+    #undef GO
+    #define GO(A) if(my3_keylog_cb_fct_##A == 0) {my3_keylog_cb_fct_##A = (uintptr_t)fct; return my3_keylog_cb_##A; }
+    SUPER()
+    #undef GO
+    printf_log(LOG_NONE, "Warning, no more slot for libSSL keylog_cb callback\n");
+    return NULL;
+}
+// msg_cb
+#define GO(A)   \
+static uintptr_t my3_msg_cb_fct_##A = 0;                                                \
+static void my3_msg_cb_##A(int a, int b, int c, void* d, size_t e, void* f, void* g)    \
+{                                                                                       \
+    RunFunctionFmt(my3_msg_cb_fct_##A, "iiipLpp", a, b, c, d, e, f, g);                 \
+}
+SUPER()
+#undef GO
+static void* find_msg_cb_Fct(void* fct)
+{
+    if(!fct) return NULL;
+    void* p;
+    if((p = GetNativeFnc((uintptr_t)fct))) return p;
+    #define GO(A) if(my3_msg_cb_fct_##A == (uintptr_t)fct) return my3_msg_cb_##A;
+    SUPER()
+    #undef GO
+    #define GO(A) if(my3_msg_cb_fct_##A == 0) {my3_msg_cb_fct_##A = (uintptr_t)fct; return my3_msg_cb_##A; }
+    SUPER()
+    #undef GO
+    printf_log(LOG_NONE, "Warning, no more slot for libSSL msg_cb callback\n");
+    return NULL;
+}
 
 #undef SUPER
 
@@ -356,6 +412,31 @@ EXPORT void my3_SSL_CTX_set_alpn_select_cb(x64emu_t* emu, void* ctx, void* f, vo
     my->SSL_CTX_set_alpn_select_cb(ctx, find_alpn_select_cb_Fct(f), arg);
 }
 
+EXPORT void* my3_SSL_CTX_get_default_passwd_cb(x64emu_t* emu, void* ctx)
+{
+    return reverse_pem_passwd_cb_Fct(my->SSL_CTX_get_default_passwd_cb(ctx));
+}
+
+EXPORT void* my3_SSL_CTX_get_verify_callback(x64emu_t* emu, void* ctx)
+{
+    return reverse_verify_Fct(my->SSL_CTX_get_verify_callback(ctx));
+}
+
+EXPORT void my3_SSL_CTX_set_keylog_callback(x64emu_t* emu, void* ctx, void* cb)
+{
+    my->SSL_CTX_set_keylog_callback(ctx, find_keylog_cb_Fct(cb));
+}
+
+EXPORT void my3_SSL_CTX_set_msg_callback(x64emu_t* emu, void* ctx, void* cb)
+{
+    my->SSL_CTX_set_msg_callback(ctx, find_msg_cb_Fct(cb));
+}
+
+EXPORT void my3_SSL_set_msg_callback(x64emu_t* emu, void* ctx, void* cb)
+{
+    my->SSL_set_msg_callback(ctx, find_msg_cb_Fct(cb));
+}
+
 #define CUSTOM_INIT \
     SETALT(my3_);   \
     getMy(lib);     \
diff --git a/src/wrapped/wrappedlibssl3_private.h b/src/wrapped/wrappedlibssl3_private.h
index e9ff941c..ef44cf78 100644
--- a/src/wrapped/wrappedlibssl3_private.h
+++ b/src/wrapped/wrappedlibssl3_private.h
@@ -225,13 +225,18 @@ GO(SSL_check_private_key, iFp)
 //GO(ssl_check_srvr_ecc_cert_and_alg, 
 GO(SSL_CIPHER_description, pFppi)
 GO(SSL_CIPHER_find, pFpp)
+GO(SSL_CIPHER_get_auth_nid, iFp)
 GO(SSL_CIPHER_get_bits, iFpp)
 //GO(ssl_cipher_get_cert_index, 
+GO(SSL_CIPHER_get_cipher_nid, iFp)
+GO(SSL_CIPHER_get_digest_nid, iFp)
 //GO(ssl_cipher_get_evp, 
 GO(SSL_CIPHER_get_id, uFp)
+GO(SSL_CIPHER_get_kx_nid, iFp)
 GO(SSL_CIPHER_get_name, pFp)
 GO(SSL_CIPHER_get_version, pFp)
 //GO(ssl_cipher_id_cmp, 
+GO(SSL_CIPHER_is_aead, iFp)
 //GO(ssl_cipher_list_to_bytes, 
 //GO(ssl_cipher_ptr_id_cmp, 
 GO(SSL_clear, iFp)
@@ -264,26 +269,31 @@ GO(SSL_CTX_add_client_CA, iFpp)
 //GO(SSL_CTX_add_session, 
 GOM(SSL_CTX_callback_ctrl, lFEpip)
 GO(SSL_CTX_check_private_key, iFp)
+GO(SSL_CTX_clear_options, UFpU)
 GO(SSL_CTX_config, iFpp)
 GO(SSL_CTX_ctrl, lFpilp)
 //GO(SSL_CTX_flush_sessions, 
 GO(SSL_CTX_free, vFp)
 //GO(SSL_CTX_get0_certificate, 
-//GO(SSL_CTX_get0_param, 
+GO(SSL_CTX_get0_param, pFp)
 //GO(SSL_CTX_get0_privatekey, 
 GO(SSL_CTX_get_cert_store, pFp)
 //GO(SSL_CTX_get_client_CA_list, 
 //GO(SSL_CTX_get_client_cert_cb, 
+GOM(SSL_CTX_get_default_passwd_cb, pFEp)
 GO(SSL_CTX_get_default_passwd_cb_userdata, pFp)
 GO(SSL_CTX_get_ex_data, pFpi)
 //GO(SSL_CTX_get_ex_new_index, 
-//GO(SSL_CTX_get_info_callback, 
+//GO(SSL_CTX_get_info_callback,
+GO(SSL_CTX_get_num_tickets, LFp)
+GO(SSL_CTX_get_options, UFp) 
 //GO(SSL_CTX_get_quiet_shutdown, 
+GO(SSL_CTX_get_security_level, iFp)
 //GO(SSL_CTX_get_ssl_method, 
 //GO(SSL_CTX_get_timeout, 
-//GO(SSL_CTX_get_verify_callback, 
+GOM(SSL_CTX_get_verify_callback, pFEp)
 //GO(SSL_CTX_get_verify_depth, 
-//GO(SSL_CTX_get_verify_mode, 
+GO(SSL_CTX_get_verify_mode, iFp)
 GO(SSL_CTX_load_verify_locations, iFppp)
 GO(SSL_CTX_new, pFp)
 //GO(SSL_CTX_remove_session, 
@@ -313,16 +323,19 @@ GO(SSL_CTX_set_default_verify_paths, iFp)
 //GO(SSL_CTX_set_ex_data, 
 //GO(SSL_CTX_set_generate_session_id, 
 //GO(SSL_CTX_set_info_callback, 
-//GO(SSL_CTX_set_msg_callback, 
+GOM(SSL_CTX_set_keylog_callback, vFEpp)
+GOM(SSL_CTX_set_msg_callback, vFEpp)
 //GO(SSL_CTX_set_next_protos_advertised_cb, 
 GOM(SSL_CTX_set_next_proto_select_cb, vFEppp)
+GO(SSL_CTX_set_num_tickets, iFpL)
 GO(SSL_CTX_set_options, lFpl)
+GO(SSL_CTX_set_post_handshake_auth, vFpi)
 //GO(SSL_CTX_set_psk_client_callback, 
 //GO(SSL_CTX_set_psk_server_callback, 
 //GO(SSL_CTX_set_purpose, 
 GO(SSL_CTX_set_quiet_shutdown, vFpi)
 GO(SSL_CTX_set_security_level, vFpi)
-//GO(SSL_CTX_set_session_id_context, 
+GO(SSL_CTX_set_session_id_context, iFppu)
 //GO(SSL_CTX_set_srp_cb_arg, 
 //GO(SSL_CTX_set_srp_client_pwd_callback, 
 //GO(SSL_CTX_set_srp_password, 
@@ -365,9 +378,10 @@ GO(SSL_free, vFp)
 //GO(ssl_free_wbio_buffer, 
 GO(SSL_get0_alpn_selected, iFppp)
 GO(SSL_get0_next_proto_negotiated, vFppp)
-//GO(SSL_get0_param, 
+GO(SSL_get0_param, pFp)
 GO(SSL_get0_peer_certificate, pFp)
 GO(SSL_get0_session, pFp)
+GO(SSL_get0_verified_chain, pFp)
 GO(SSL_get1_peer_certificate, pFp)
 GO(SSL_get1_session, pFp)
 //GO(ssl_get_algorithm2, 
@@ -377,8 +391,9 @@ GO(SSL_get_certificate, pFp)
 GO(SSL_get_ciphers, pFp)
 //GO(ssl_get_ciphers_by_id, 
 GO(SSL_get_client_CA_list, pFp)
+GO(SSL_get_client_ciphers, pFp)
 GO(SSL_get_current_cipher, pFp)
-//GO(SSL_get_current_compression, 
+GO(SSL_get_current_compression, pFp)
 //GO(SSL_get_current_expansion, 
 //GO(SSL_get_default_timeout, 
 GO(SSL_get_error, iFpi)
@@ -397,13 +412,13 @@ GO(SSL_get_privatekey, pFp)
 //GO(SSL_get_psk_identity, 
 //GO(SSL_get_psk_identity_hint, 
 //GO(SSL_get_quiet_shutdown, 
-//GO(SSL_get_rbio, 
+GO(SSL_get_rbio, pFp)
 //GO(SSL_get_read_ahead, 
 //GO(SSL_get_rfd, 
 //GO(SSL_get_selected_srtp_profile, 
 //GO(ssl_get_server_cert_serverinfo, 
-//GO(SSL_get_servername, 
-//GO(SSL_get_servername_type, 
+GO(SSL_get_servername, pFpi)
+GO(SSL_get_servername_type, iFp)
 //GO(ssl_get_server_send_pkey, 
 GO(SSL_get_session, pFp)
 //GO(SSL_get_shared_ciphers, 
@@ -423,7 +438,7 @@ GO(SSL_get_verify_depth, iFp)
 GO(SSL_get_verify_mode, iFp)
 GO(SSL_get_verify_result, iFp)
 GO(SSL_get_version, pFp)
-//GO(SSL_get_wbio, 
+GO(SSL_get_wbio, pFp)
 //GO(SSL_get_wfd, 
 //GO(SSL_has_matching_session_id, 
 //GO(ssl_init_wbio_buffer, 
@@ -446,6 +461,7 @@ GO(SSL_pending, iFp)
 //GO(ssl_prepare_clienthello_tlsext, 
 //GO(ssl_prepare_serverhello_tlsext, 
 GO(SSL_read, iFppi)
+GO(SSL_read_ex, iFppLp)
 GO(SSL_renegotiate, iFp)
 GO(SSL_renegotiate_abbreviated, iFp)
 GO(SSL_renegotiate_pending, iFp)
@@ -462,9 +478,11 @@ GO(SSL_SESSION_free, vFp)
 //GO(SSL_SESSION_get_compress_id, 
 //GO(SSL_SESSION_get_ex_data, 
 //GO(SSL_SESSION_get_ex_new_index, 
-//GO(SSL_SESSION_get_id, 
-//GO(SSL_SESSION_get_time, 
-//GO(SSL_SESSION_get_timeout, 
+GO(SSL_SESSION_get_id, pFpp)
+GO(SSL_SESSION_get_ticket_lifetime_hint, LFp)
+GO(SSL_SESSION_get_time, lFp)
+GO(SSL_SESSION_get_timeout, lFp)
+GO(SSL_SESSION_has_ticket, iFp)
 GO(SSL_SESSION_new, pFv)
 //GO(SSL_SESSION_print, 
 //GO(SSL_SESSION_print_fp, 
@@ -489,14 +507,15 @@ GO(SSL_set_ex_data, iFpip)
 GO(SSL_set_fd, iFpi)
 //GO(SSL_set_generate_session_id, 
 //GO(SSL_set_info_callback, 
-//GO(SSL_set_msg_callback, 
+GOM(SSL_set_msg_callback, vFEpp)
 GO(SSL_set_options, UFpU)
 //GO(ssl_set_peer_cert_type, 
+GO(SSL_set_post_handshake_auth, vFpi)
 GOM(SSL_set_psk_client_callback, vFEpp)
 //GO(SSL_set_psk_server_callback, 
 //GO(SSL_set_purpose, 
 GO(SSL_set_quiet_shutdown, vFpi)
-//GO(SSL_set_read_ahead, 
+GO(SSL_set_read_ahead, vFpi)
 GO(SSL_set_rfd, iFpi)
 GO(SSL_set_session, iFpp)
 //GO(SSL_set_session_id_context, 
@@ -506,7 +525,7 @@ GO(SSL_set_session, iFpp)
 GO(SSL_set_shutdown, iFp)
 //GO(SSL_set_srp_server_param, 
 //GO(SSL_set_srp_server_param_pw, 
-//GO(SSL_set_SSL_CTX, 
+GO(SSL_set_SSL_CTX, pFpp)
 //GO(SSL_set_ssl_method, 
 //GO(SSL_set_state, 
 //GO(SSL_set_tlsext_use_srtp, 
@@ -539,6 +558,7 @@ GO(SSL_use_PrivateKey_file, iFppi)
 GO(SSL_use_RSAPrivateKey, iFpp)
 GO(SSL_use_RSAPrivateKey_ASN1, iFppl)
 GO(SSL_use_RSAPrivateKey_file, iFppi)
+GO(SSL_verify_client_post_handshake, iFp)
 GO(SSLv23_client_method, pFv)
 GO(SSLv23_method, pFv)
 GO(SSLv23_server_method, pFv)
@@ -553,6 +573,7 @@ GO(SSLv3_server_method, pFv)
 GO(SSL_version, iFp)
 //GO(SSL_want, 
 GO(SSL_write, iFppi)
+GO(SSL_write_ex, iFppLp)
 //GO(tls12_check_peer_sigalg, 
 //GO(tls12_get_hash, 
 //GO(tls12_get_psigalgs,