about summary refs log tree commit diff stats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/wrapped/generated/functions_list.txt21
-rw-r--r--src/wrapped/generated/wrappedcryptotypes.h12
-rw-r--r--src/wrapped/generated/wrappedlibssltypes.h2
-rw-r--r--src/wrapped/generated/wrapper.c17
-rw-r--r--src/wrapped/generated/wrapper.h7
-rwxr-xr-xsrc/wrapped/wrappedcrypto.c180
-rwxr-xr-xsrc/wrapped/wrappedcrypto_private.h578
-rwxr-xr-xsrc/wrapped/wrappedlibssl.c39
-rwxr-xr-xsrc/wrapped/wrappedlibssl_private.h26
-rwxr-xr-xsrc/wrapped/wrappedlibx11_private.h2
10 files changed, 584 insertions, 300 deletions
diff --git a/src/wrapped/generated/functions_list.txt b/src/wrapped/generated/functions_list.txt
index 4323028f..242d5f91 100644
--- a/src/wrapped/generated/functions_list.txt
+++ b/src/wrapped/generated/functions_list.txt
@@ -1054,6 +1054,7 @@
 #() vFEpppp
 #() vFiiiii
 #() vFiiiiu
+#() vFiiipi
 #() vFiiuii
 #() vFiiuup
 #() vFiillu
@@ -1559,6 +1560,8 @@
 #() iFiiiuwp
 #() iFiuiipi
 #() iFipiipi
+#() iFipipip
+#() iFipippp
 #() iFipuufp
 #() iFipupup
 #() iFipuppp
@@ -1818,6 +1821,7 @@
 #() iFpiupiii
 #() iFpiupppp
 #() iFpipipip
+#() iFpipippp
 #() iFpippLpp
 #() iFpippppW
 #() iFpippppp
@@ -1838,6 +1842,7 @@
 #() iFppiipii
 #() iFppiipiL
 #() iFppiuppi
+#() iFppipiii
 #() iFppipiip
 #() iFppipipi
 #() iFppipipp
@@ -1892,6 +1897,7 @@
 #() pFppiiCCC
 #() pFppiippp
 #() pFppipipp
+#() pFppipLpp
 #() pFppuuppp
 #() pFppLiiip
 #() pFppLipip
@@ -1981,6 +1987,7 @@
 #() iFEppppipp
 #() iFiiiiiiip
 #() iFiiupiupi
+#() iFipippppp
 #() iFuipuuluf
 #() iFuuuuuuuu
 #() iFullfpppp
@@ -2388,14 +2395,26 @@ wrappedcrypto:
 - pFp:
   - sk_new
 - vFpp:
+  - X509_STORE_CTX_set_verify_cb
   - sk_pop_free
+- pFpp:
+  - OPENSSL_sk_pop_free
+- iFppp:
+  - ASN1_i2d_bio
 - pFpppp:
+  - ASN1_d2i_bio
   - PEM_read_bio_DSAPrivateKey
   - PEM_read_bio_DSA_PUBKEY
   - PEM_read_bio_ECPrivateKey
   - PEM_read_bio_EC_PUBKEY
+  - PEM_read_bio_PKCS7
   - PEM_read_bio_RSAPrivateKey
   - PEM_read_bio_RSA_PUBKEY
+  - PEM_read_bio_X509
+  - PEM_read_bio_X509_AUX
+  - PEM_read_bio_X509_CERT_PAIR
+  - PEM_read_bio_X509_CRL
+  - PEM_read_bio_X509_REQ
 - iFpiipp:
   - ENGINE_ctrl
 - iFpplppi:
@@ -3596,12 +3615,14 @@ wrappedlibssl:
 - pFp:
   - SSL_get_verify_callback
 - vFpp:
+  - SSL_CTX_set_client_cert_cb
   - SSL_CTX_set_default_passwd_cb
   - SSL_set_psk_client_callback
 - vFpip:
   - SSL_CTX_set_verify
   - SSL_set_verify
 - vFppp:
+  - SSL_CTX_set_cert_verify_callback
   - SSL_CTX_set_next_proto_select_cb
 - lFpip:
   - SSL_CTX_callback_ctrl
diff --git a/src/wrapped/generated/wrappedcryptotypes.h b/src/wrapped/generated/wrappedcryptotypes.h
index 157db9a3..2e4d8254 100644
--- a/src/wrapped/generated/wrappedcryptotypes.h
+++ b/src/wrapped/generated/wrappedcryptotypes.h
@@ -14,6 +14,8 @@
 typedef void (*vFp_t)(void*);
 typedef void* (*pFp_t)(void*);
 typedef void (*vFpp_t)(void*, void*);
+typedef void* (*pFpp_t)(void*, void*);
+typedef int64_t (*iFppp_t)(void*, void*, void*);
 typedef void* (*pFpppp_t)(void*, void*, void*, void*);
 typedef int64_t (*iFpiipp_t)(void*, int64_t, int64_t, void*, void*);
 typedef int64_t (*iFpplppi_t)(void*, void*, intptr_t, void*, void*, int64_t);
@@ -23,13 +25,23 @@ typedef int64_t (*iFppppipp_t)(void*, void*, void*, void*, int64_t, void*, void*
 	GO(CRYPTO_set_id_callback, vFp_t) \
 	GO(CRYPTO_set_locking_callback, vFp_t) \
 	GO(sk_new, pFp_t) \
+	GO(X509_STORE_CTX_set_verify_cb, vFpp_t) \
 	GO(sk_pop_free, vFpp_t) \
+	GO(OPENSSL_sk_pop_free, pFpp_t) \
+	GO(ASN1_i2d_bio, iFppp_t) \
+	GO(ASN1_d2i_bio, pFpppp_t) \
 	GO(PEM_read_bio_DSAPrivateKey, pFpppp_t) \
 	GO(PEM_read_bio_DSA_PUBKEY, pFpppp_t) \
 	GO(PEM_read_bio_ECPrivateKey, pFpppp_t) \
 	GO(PEM_read_bio_EC_PUBKEY, pFpppp_t) \
+	GO(PEM_read_bio_PKCS7, pFpppp_t) \
 	GO(PEM_read_bio_RSAPrivateKey, pFpppp_t) \
 	GO(PEM_read_bio_RSA_PUBKEY, pFpppp_t) \
+	GO(PEM_read_bio_X509, pFpppp_t) \
+	GO(PEM_read_bio_X509_AUX, pFpppp_t) \
+	GO(PEM_read_bio_X509_CERT_PAIR, pFpppp_t) \
+	GO(PEM_read_bio_X509_CRL, pFpppp_t) \
+	GO(PEM_read_bio_X509_REQ, pFpppp_t) \
 	GO(ENGINE_ctrl, iFpiipp_t) \
 	GO(ENGINE_ctrl_cmd, iFpplppi_t) \
 	GO(PEM_write_bio_DSAPrivateKey, iFppppipp_t) \
diff --git a/src/wrapped/generated/wrappedlibssltypes.h b/src/wrapped/generated/wrappedlibssltypes.h
index 80d19a29..cc567b6d 100644
--- a/src/wrapped/generated/wrappedlibssltypes.h
+++ b/src/wrapped/generated/wrappedlibssltypes.h
@@ -20,10 +20,12 @@ typedef int64_t (*iFlpppp_t)(intptr_t, void*, void*, void*, void*);
 
 #define SUPER() ADDED_FUNCTIONS() \
 	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_set_psk_client_callback, vFpp_t) \
 	GO(SSL_CTX_set_verify, vFpip_t) \
 	GO(SSL_set_verify, vFpip_t) \
+	GO(SSL_CTX_set_cert_verify_callback, vFppp_t) \
 	GO(SSL_CTX_set_next_proto_select_cb, vFppp_t) \
 	GO(SSL_CTX_callback_ctrl, lFpip_t) \
 	GO(SSL_callback_ctrl, lFpip_t) \
diff --git a/src/wrapped/generated/wrapper.c b/src/wrapped/generated/wrapper.c
index c23a6f42..b6caf5b2 100644
--- a/src/wrapped/generated/wrapper.c
+++ b/src/wrapped/generated/wrapper.c
@@ -1088,6 +1088,7 @@ typedef void (*vFEpppi_t)(x64emu_t*, void*, void*, void*, int64_t);
 typedef void (*vFEpppp_t)(x64emu_t*, void*, void*, void*, void*);
 typedef void (*vFiiiii_t)(int64_t, int64_t, int64_t, int64_t, int64_t);
 typedef void (*vFiiiiu_t)(int64_t, int64_t, int64_t, int64_t, uint64_t);
+typedef void (*vFiiipi_t)(int64_t, int64_t, int64_t, void*, int64_t);
 typedef void (*vFiiuii_t)(int64_t, int64_t, uint64_t, int64_t, int64_t);
 typedef void (*vFiiuup_t)(int64_t, int64_t, uint64_t, uint64_t, void*);
 typedef void (*vFiillu_t)(int64_t, int64_t, intptr_t, intptr_t, uint64_t);
@@ -1593,6 +1594,8 @@ typedef int64_t (*iFiiiiip_t)(int64_t, int64_t, int64_t, int64_t, int64_t, void*
 typedef int64_t (*iFiiiuwp_t)(int64_t, int64_t, int64_t, uint64_t, int16_t, void*);
 typedef int64_t (*iFiuiipi_t)(int64_t, uint64_t, int64_t, int64_t, void*, int64_t);
 typedef int64_t (*iFipiipi_t)(int64_t, void*, int64_t, int64_t, void*, int64_t);
+typedef int64_t (*iFipipip_t)(int64_t, void*, int64_t, void*, int64_t, void*);
+typedef int64_t (*iFipippp_t)(int64_t, void*, int64_t, void*, void*, void*);
 typedef int64_t (*iFipuufp_t)(int64_t, void*, uint64_t, uint64_t, float, void*);
 typedef int64_t (*iFipupup_t)(int64_t, void*, uint64_t, void*, uint64_t, void*);
 typedef int64_t (*iFipuppp_t)(int64_t, void*, uint64_t, void*, void*, void*);
@@ -1852,6 +1855,7 @@ typedef int64_t (*iFpiuiipp_t)(void*, int64_t, uint64_t, int64_t, int64_t, void*
 typedef int64_t (*iFpiupiii_t)(void*, int64_t, uint64_t, void*, int64_t, int64_t, int64_t);
 typedef int64_t (*iFpiupppp_t)(void*, int64_t, uint64_t, void*, void*, void*, void*);
 typedef int64_t (*iFpipipip_t)(void*, int64_t, void*, int64_t, void*, int64_t, void*);
+typedef int64_t (*iFpipippp_t)(void*, int64_t, void*, int64_t, void*, void*, void*);
 typedef int64_t (*iFpippLpp_t)(void*, int64_t, void*, void*, uintptr_t, void*, void*);
 typedef int64_t (*iFpippppW_t)(void*, int64_t, void*, void*, void*, void*, uint16_t);
 typedef int64_t (*iFpippppp_t)(void*, int64_t, void*, void*, void*, void*, void*);
@@ -1872,6 +1876,7 @@ typedef int64_t (*iFppiiuup_t)(void*, void*, int64_t, int64_t, uint64_t, uint64_
 typedef int64_t (*iFppiipii_t)(void*, void*, int64_t, int64_t, void*, int64_t, int64_t);
 typedef int64_t (*iFppiipiL_t)(void*, void*, int64_t, int64_t, void*, int64_t, uintptr_t);
 typedef int64_t (*iFppiuppi_t)(void*, void*, int64_t, uint64_t, void*, void*, int64_t);
+typedef int64_t (*iFppipiii_t)(void*, void*, int64_t, void*, int64_t, int64_t, int64_t);
 typedef int64_t (*iFppipiip_t)(void*, void*, int64_t, void*, int64_t, int64_t, void*);
 typedef int64_t (*iFppipipi_t)(void*, void*, int64_t, void*, int64_t, void*, int64_t);
 typedef int64_t (*iFppipipp_t)(void*, void*, int64_t, void*, int64_t, void*, void*);
@@ -1926,6 +1931,7 @@ typedef void* (*pFppiiipp_t)(void*, void*, int64_t, int64_t, int64_t, void*, voi
 typedef void* (*pFppiiCCC_t)(void*, void*, int64_t, int64_t, uint8_t, uint8_t, uint8_t);
 typedef void* (*pFppiippp_t)(void*, void*, int64_t, int64_t, void*, void*, void*);
 typedef void* (*pFppipipp_t)(void*, void*, int64_t, void*, int64_t, void*, void*);
+typedef void* (*pFppipLpp_t)(void*, void*, int64_t, void*, uintptr_t, void*, void*);
 typedef void* (*pFppuuppp_t)(void*, void*, uint64_t, uint64_t, void*, void*, void*);
 typedef void* (*pFppLiiip_t)(void*, void*, uintptr_t, int64_t, int64_t, int64_t, void*);
 typedef void* (*pFppLipip_t)(void*, void*, uintptr_t, int64_t, void*, int64_t, void*);
@@ -2015,6 +2021,7 @@ typedef int64_t (*iFEppipppp_t)(x64emu_t*, void*, void*, int64_t, void*, void*,
 typedef int64_t (*iFEppppipp_t)(x64emu_t*, void*, void*, void*, void*, int64_t, void*, void*);
 typedef int64_t (*iFiiiiiiip_t)(int64_t, int64_t, int64_t, int64_t, int64_t, int64_t, int64_t, void*);
 typedef int64_t (*iFiiupiupi_t)(int64_t, int64_t, uint64_t, void*, int64_t, uint64_t, void*, int64_t);
+typedef int64_t (*iFipippppp_t)(int64_t, void*, int64_t, void*, void*, void*, void*, void*);
 typedef int64_t (*iFuipuuluf_t)(uint64_t, int64_t, void*, uint64_t, uint64_t, intptr_t, uint64_t, float);
 typedef int64_t (*iFuuuuuuuu_t)(uint64_t, uint64_t, uint64_t, uint64_t, uint64_t, uint64_t, uint64_t, uint64_t);
 typedef int64_t (*iFullfpppp_t)(uint64_t, intptr_t, intptr_t, float, void*, void*, void*, void*);
@@ -3448,6 +3455,7 @@ void vFEpppi(x64emu_t *emu, uintptr_t fcn) { vFEpppi_t fn = (vFEpppi_t)fcn; fn(e
 void vFEpppp(x64emu_t *emu, uintptr_t fcn) { vFEpppp_t fn = (vFEpppp_t)fcn; fn(emu, (void*)R_RDI, (void*)R_RSI, (void*)R_RDX, (void*)R_RCX); }
 void vFiiiii(x64emu_t *emu, uintptr_t fcn) { vFiiiii_t fn = (vFiiiii_t)fcn; fn((int64_t)R_RDI, (int64_t)R_RSI, (int64_t)R_RDX, (int64_t)R_RCX, (int64_t)R_R8); }
 void vFiiiiu(x64emu_t *emu, uintptr_t fcn) { vFiiiiu_t fn = (vFiiiiu_t)fcn; fn((int64_t)R_RDI, (int64_t)R_RSI, (int64_t)R_RDX, (int64_t)R_RCX, (uint64_t)R_R8); }
+void vFiiipi(x64emu_t *emu, uintptr_t fcn) { vFiiipi_t fn = (vFiiipi_t)fcn; fn((int64_t)R_RDI, (int64_t)R_RSI, (int64_t)R_RDX, (void*)R_RCX, (int64_t)R_R8); }
 void vFiiuii(x64emu_t *emu, uintptr_t fcn) { vFiiuii_t fn = (vFiiuii_t)fcn; fn((int64_t)R_RDI, (int64_t)R_RSI, (uint64_t)R_RDX, (int64_t)R_RCX, (int64_t)R_R8); }
 void vFiiuup(x64emu_t *emu, uintptr_t fcn) { vFiiuup_t fn = (vFiiuup_t)fcn; fn((int64_t)R_RDI, (int64_t)R_RSI, (uint64_t)R_RDX, (uint64_t)R_RCX, (void*)R_R8); }
 void vFiillu(x64emu_t *emu, uintptr_t fcn) { vFiillu_t fn = (vFiillu_t)fcn; fn((int64_t)R_RDI, (int64_t)R_RSI, (intptr_t)R_RDX, (intptr_t)R_RCX, (uint64_t)R_R8); }
@@ -3953,6 +3961,8 @@ void iFiiiiip(x64emu_t *emu, uintptr_t fcn) { iFiiiiip_t fn = (iFiiiiip_t)fcn; R
 void iFiiiuwp(x64emu_t *emu, uintptr_t fcn) { iFiiiuwp_t fn = (iFiiiuwp_t)fcn; R_RAX=(int64_t)fn((int64_t)R_RDI, (int64_t)R_RSI, (int64_t)R_RDX, (uint64_t)R_RCX, (int16_t)R_R8, (void*)R_R9); }
 void iFiuiipi(x64emu_t *emu, uintptr_t fcn) { iFiuiipi_t fn = (iFiuiipi_t)fcn; R_RAX=(int64_t)fn((int64_t)R_RDI, (uint64_t)R_RSI, (int64_t)R_RDX, (int64_t)R_RCX, (void*)R_R8, (int64_t)R_R9); }
 void iFipiipi(x64emu_t *emu, uintptr_t fcn) { iFipiipi_t fn = (iFipiipi_t)fcn; R_RAX=(int64_t)fn((int64_t)R_RDI, (void*)R_RSI, (int64_t)R_RDX, (int64_t)R_RCX, (void*)R_R8, (int64_t)R_R9); }
+void iFipipip(x64emu_t *emu, uintptr_t fcn) { iFipipip_t fn = (iFipipip_t)fcn; R_RAX=(int64_t)fn((int64_t)R_RDI, (void*)R_RSI, (int64_t)R_RDX, (void*)R_RCX, (int64_t)R_R8, (void*)R_R9); }
+void iFipippp(x64emu_t *emu, uintptr_t fcn) { iFipippp_t fn = (iFipippp_t)fcn; R_RAX=(int64_t)fn((int64_t)R_RDI, (void*)R_RSI, (int64_t)R_RDX, (void*)R_RCX, (void*)R_R8, (void*)R_R9); }
 void iFipuufp(x64emu_t *emu, uintptr_t fcn) { iFipuufp_t fn = (iFipuufp_t)fcn; R_RAX=(int64_t)fn((int64_t)R_RDI, (void*)R_RSI, (uint64_t)R_RDX, (uint64_t)R_RCX, emu->xmm[0].f[0], (void*)R_R8); }
 void iFipupup(x64emu_t *emu, uintptr_t fcn) { iFipupup_t fn = (iFipupup_t)fcn; R_RAX=(int64_t)fn((int64_t)R_RDI, (void*)R_RSI, (uint64_t)R_RDX, (void*)R_RCX, (uint64_t)R_R8, (void*)R_R9); }
 void iFipuppp(x64emu_t *emu, uintptr_t fcn) { iFipuppp_t fn = (iFipuppp_t)fcn; R_RAX=(int64_t)fn((int64_t)R_RDI, (void*)R_RSI, (uint64_t)R_RDX, (void*)R_RCX, (void*)R_R8, (void*)R_R9); }
@@ -4212,6 +4222,7 @@ void iFpiuiipp(x64emu_t *emu, uintptr_t fcn) { iFpiuiipp_t fn = (iFpiuiipp_t)fcn
 void iFpiupiii(x64emu_t *emu, uintptr_t fcn) { iFpiupiii_t fn = (iFpiupiii_t)fcn; R_RAX=(int64_t)fn((void*)R_RDI, (int64_t)R_RSI, (uint64_t)R_RDX, (void*)R_RCX, (int64_t)R_R8, (int64_t)R_R9, *(int64_t*)(R_RSP + 8)); }
 void iFpiupppp(x64emu_t *emu, uintptr_t fcn) { iFpiupppp_t fn = (iFpiupppp_t)fcn; R_RAX=(int64_t)fn((void*)R_RDI, (int64_t)R_RSI, (uint64_t)R_RDX, (void*)R_RCX, (void*)R_R8, (void*)R_R9, *(void**)(R_RSP + 8)); }
 void iFpipipip(x64emu_t *emu, uintptr_t fcn) { iFpipipip_t fn = (iFpipipip_t)fcn; R_RAX=(int64_t)fn((void*)R_RDI, (int64_t)R_RSI, (void*)R_RDX, (int64_t)R_RCX, (void*)R_R8, (int64_t)R_R9, *(void**)(R_RSP + 8)); }
+void iFpipippp(x64emu_t *emu, uintptr_t fcn) { iFpipippp_t fn = (iFpipippp_t)fcn; R_RAX=(int64_t)fn((void*)R_RDI, (int64_t)R_RSI, (void*)R_RDX, (int64_t)R_RCX, (void*)R_R8, (void*)R_R9, *(void**)(R_RSP + 8)); }
 void iFpippLpp(x64emu_t *emu, uintptr_t fcn) { iFpippLpp_t fn = (iFpippLpp_t)fcn; R_RAX=(int64_t)fn((void*)R_RDI, (int64_t)R_RSI, (void*)R_RDX, (void*)R_RCX, (uintptr_t)R_R8, (void*)R_R9, *(void**)(R_RSP + 8)); }
 void iFpippppW(x64emu_t *emu, uintptr_t fcn) { iFpippppW_t fn = (iFpippppW_t)fcn; R_RAX=(int64_t)fn((void*)R_RDI, (int64_t)R_RSI, (void*)R_RDX, (void*)R_RCX, (void*)R_R8, (void*)R_R9, *(uint16_t*)(R_RSP + 8)); }
 void iFpippppp(x64emu_t *emu, uintptr_t fcn) { iFpippppp_t fn = (iFpippppp_t)fcn; R_RAX=(int64_t)fn((void*)R_RDI, (int64_t)R_RSI, (void*)R_RDX, (void*)R_RCX, (void*)R_R8, (void*)R_R9, *(void**)(R_RSP + 8)); }
@@ -4232,6 +4243,7 @@ void iFppiiuup(x64emu_t *emu, uintptr_t fcn) { iFppiiuup_t fn = (iFppiiuup_t)fcn
 void iFppiipii(x64emu_t *emu, uintptr_t fcn) { iFppiipii_t fn = (iFppiipii_t)fcn; R_RAX=(int64_t)fn((void*)R_RDI, (void*)R_RSI, (int64_t)R_RDX, (int64_t)R_RCX, (void*)R_R8, (int64_t)R_R9, *(int64_t*)(R_RSP + 8)); }
 void iFppiipiL(x64emu_t *emu, uintptr_t fcn) { iFppiipiL_t fn = (iFppiipiL_t)fcn; R_RAX=(int64_t)fn((void*)R_RDI, (void*)R_RSI, (int64_t)R_RDX, (int64_t)R_RCX, (void*)R_R8, (int64_t)R_R9, *(uintptr_t*)(R_RSP + 8)); }
 void iFppiuppi(x64emu_t *emu, uintptr_t fcn) { iFppiuppi_t fn = (iFppiuppi_t)fcn; R_RAX=(int64_t)fn((void*)R_RDI, (void*)R_RSI, (int64_t)R_RDX, (uint64_t)R_RCX, (void*)R_R8, (void*)R_R9, *(int64_t*)(R_RSP + 8)); }
+void iFppipiii(x64emu_t *emu, uintptr_t fcn) { iFppipiii_t fn = (iFppipiii_t)fcn; R_RAX=(int64_t)fn((void*)R_RDI, (void*)R_RSI, (int64_t)R_RDX, (void*)R_RCX, (int64_t)R_R8, (int64_t)R_R9, *(int64_t*)(R_RSP + 8)); }
 void iFppipiip(x64emu_t *emu, uintptr_t fcn) { iFppipiip_t fn = (iFppipiip_t)fcn; R_RAX=(int64_t)fn((void*)R_RDI, (void*)R_RSI, (int64_t)R_RDX, (void*)R_RCX, (int64_t)R_R8, (int64_t)R_R9, *(void**)(R_RSP + 8)); }
 void iFppipipi(x64emu_t *emu, uintptr_t fcn) { iFppipipi_t fn = (iFppipipi_t)fcn; R_RAX=(int64_t)fn((void*)R_RDI, (void*)R_RSI, (int64_t)R_RDX, (void*)R_RCX, (int64_t)R_R8, (void*)R_R9, *(int64_t*)(R_RSP + 8)); }
 void iFppipipp(x64emu_t *emu, uintptr_t fcn) { iFppipipp_t fn = (iFppipipp_t)fcn; R_RAX=(int64_t)fn((void*)R_RDI, (void*)R_RSI, (int64_t)R_RDX, (void*)R_RCX, (int64_t)R_R8, (void*)R_R9, *(void**)(R_RSP + 8)); }
@@ -4286,6 +4298,7 @@ void pFppiiipp(x64emu_t *emu, uintptr_t fcn) { pFppiiipp_t fn = (pFppiiipp_t)fcn
 void pFppiiCCC(x64emu_t *emu, uintptr_t fcn) { pFppiiCCC_t fn = (pFppiiCCC_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (void*)R_RSI, (int64_t)R_RDX, (int64_t)R_RCX, (uint8_t)R_R8, (uint8_t)R_R9, *(uint8_t*)(R_RSP + 8)); }
 void pFppiippp(x64emu_t *emu, uintptr_t fcn) { pFppiippp_t fn = (pFppiippp_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (void*)R_RSI, (int64_t)R_RDX, (int64_t)R_RCX, (void*)R_R8, (void*)R_R9, *(void**)(R_RSP + 8)); }
 void pFppipipp(x64emu_t *emu, uintptr_t fcn) { pFppipipp_t fn = (pFppipipp_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (void*)R_RSI, (int64_t)R_RDX, (void*)R_RCX, (int64_t)R_R8, (void*)R_R9, *(void**)(R_RSP + 8)); }
+void pFppipLpp(x64emu_t *emu, uintptr_t fcn) { pFppipLpp_t fn = (pFppipLpp_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (void*)R_RSI, (int64_t)R_RDX, (void*)R_RCX, (uintptr_t)R_R8, (void*)R_R9, *(void**)(R_RSP + 8)); }
 void pFppuuppp(x64emu_t *emu, uintptr_t fcn) { pFppuuppp_t fn = (pFppuuppp_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (void*)R_RSI, (uint64_t)R_RDX, (uint64_t)R_RCX, (void*)R_R8, (void*)R_R9, *(void**)(R_RSP + 8)); }
 void pFppLiiip(x64emu_t *emu, uintptr_t fcn) { pFppLiiip_t fn = (pFppLiiip_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (void*)R_RSI, (uintptr_t)R_RDX, (int64_t)R_RCX, (int64_t)R_R8, (int64_t)R_R9, *(void**)(R_RSP + 8)); }
 void pFppLipip(x64emu_t *emu, uintptr_t fcn) { pFppLipip_t fn = (pFppLipip_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (void*)R_RSI, (uintptr_t)R_RDX, (int64_t)R_RCX, (void*)R_R8, (int64_t)R_R9, *(void**)(R_RSP + 8)); }
@@ -4375,6 +4388,7 @@ void iFEppipppp(x64emu_t *emu, uintptr_t fcn) { iFEppipppp_t fn = (iFEppipppp_t)
 void iFEppppipp(x64emu_t *emu, uintptr_t fcn) { iFEppppipp_t fn = (iFEppppipp_t)fcn; R_RAX=(int64_t)fn(emu, (void*)R_RDI, (void*)R_RSI, (void*)R_RDX, (void*)R_RCX, (int64_t)R_R8, (void*)R_R9, *(void**)(R_RSP + 8)); }
 void iFiiiiiiip(x64emu_t *emu, uintptr_t fcn) { iFiiiiiiip_t fn = (iFiiiiiiip_t)fcn; R_RAX=(int64_t)fn((int64_t)R_RDI, (int64_t)R_RSI, (int64_t)R_RDX, (int64_t)R_RCX, (int64_t)R_R8, (int64_t)R_R9, *(int64_t*)(R_RSP + 8), *(void**)(R_RSP + 16)); }
 void iFiiupiupi(x64emu_t *emu, uintptr_t fcn) { iFiiupiupi_t fn = (iFiiupiupi_t)fcn; R_RAX=(int64_t)fn((int64_t)R_RDI, (int64_t)R_RSI, (uint64_t)R_RDX, (void*)R_RCX, (int64_t)R_R8, (uint64_t)R_R9, *(void**)(R_RSP + 8), *(int64_t*)(R_RSP + 16)); }
+void iFipippppp(x64emu_t *emu, uintptr_t fcn) { iFipippppp_t fn = (iFipippppp_t)fcn; R_RAX=(int64_t)fn((int64_t)R_RDI, (void*)R_RSI, (int64_t)R_RDX, (void*)R_RCX, (void*)R_R8, (void*)R_R9, *(void**)(R_RSP + 8), *(void**)(R_RSP + 16)); }
 void iFuipuuluf(x64emu_t *emu, uintptr_t fcn) { iFuipuuluf_t fn = (iFuipuuluf_t)fcn; R_RAX=(int64_t)fn((uint64_t)R_RDI, (int64_t)R_RSI, (void*)R_RDX, (uint64_t)R_RCX, (uint64_t)R_R8, (intptr_t)R_R9, *(uint64_t*)(R_RSP + 8), emu->xmm[0].f[0]); }
 void iFuuuuuuuu(x64emu_t *emu, uintptr_t fcn) { iFuuuuuuuu_t fn = (iFuuuuuuuu_t)fcn; R_RAX=(int64_t)fn((uint64_t)R_RDI, (uint64_t)R_RSI, (uint64_t)R_RDX, (uint64_t)R_RCX, (uint64_t)R_R8, (uint64_t)R_R9, *(uint64_t*)(R_RSP + 8), *(uint64_t*)(R_RSP + 16)); }
 void iFullfpppp(x64emu_t *emu, uintptr_t fcn) { iFullfpppp_t fn = (iFullfpppp_t)fcn; R_RAX=(int64_t)fn((uint64_t)R_RDI, (intptr_t)R_RSI, (intptr_t)R_RDX, emu->xmm[0].f[0], (void*)R_RCX, (void*)R_R8, (void*)R_R9, *(void**)(R_RSP + 8)); }
@@ -5614,6 +5628,7 @@ int isSimpleWrapper(wrapper_t fun) {
 	if (fun == &pFpppp) return 1;
 	if (fun == &vFiiiii) return 1;
 	if (fun == &vFiiiiu) return 1;
+	if (fun == &vFiiipi) return 1;
 	if (fun == &vFiiuii) return 1;
 	if (fun == &vFiiuup) return 1;
 	if (fun == &vFiillu) return 1;
@@ -6038,6 +6053,8 @@ int isSimpleWrapper(wrapper_t fun) {
 	if (fun == &iFiiiuwp) return 1;
 	if (fun == &iFiuiipi) return 1;
 	if (fun == &iFipiipi) return 1;
+	if (fun == &iFipipip) return 1;
+	if (fun == &iFipippp) return 1;
 	if (fun == &iFipuufp) return 2;
 	if (fun == &iFipupup) return 1;
 	if (fun == &iFipuppp) return 1;
diff --git a/src/wrapped/generated/wrapper.h b/src/wrapped/generated/wrapper.h
index fd27a99d..f5338ad3 100644
--- a/src/wrapped/generated/wrapper.h
+++ b/src/wrapped/generated/wrapper.h
@@ -1087,6 +1087,7 @@ void vFEpppi(x64emu_t *emu, uintptr_t fnc);
 void vFEpppp(x64emu_t *emu, uintptr_t fnc);
 void vFiiiii(x64emu_t *emu, uintptr_t fnc);
 void vFiiiiu(x64emu_t *emu, uintptr_t fnc);
+void vFiiipi(x64emu_t *emu, uintptr_t fnc);
 void vFiiuii(x64emu_t *emu, uintptr_t fnc);
 void vFiiuup(x64emu_t *emu, uintptr_t fnc);
 void vFiillu(x64emu_t *emu, uintptr_t fnc);
@@ -1592,6 +1593,8 @@ void iFiiiiip(x64emu_t *emu, uintptr_t fnc);
 void iFiiiuwp(x64emu_t *emu, uintptr_t fnc);
 void iFiuiipi(x64emu_t *emu, uintptr_t fnc);
 void iFipiipi(x64emu_t *emu, uintptr_t fnc);
+void iFipipip(x64emu_t *emu, uintptr_t fnc);
+void iFipippp(x64emu_t *emu, uintptr_t fnc);
 void iFipuufp(x64emu_t *emu, uintptr_t fnc);
 void iFipupup(x64emu_t *emu, uintptr_t fnc);
 void iFipuppp(x64emu_t *emu, uintptr_t fnc);
@@ -1851,6 +1854,7 @@ void iFpiuiipp(x64emu_t *emu, uintptr_t fnc);
 void iFpiupiii(x64emu_t *emu, uintptr_t fnc);
 void iFpiupppp(x64emu_t *emu, uintptr_t fnc);
 void iFpipipip(x64emu_t *emu, uintptr_t fnc);
+void iFpipippp(x64emu_t *emu, uintptr_t fnc);
 void iFpippLpp(x64emu_t *emu, uintptr_t fnc);
 void iFpippppW(x64emu_t *emu, uintptr_t fnc);
 void iFpippppp(x64emu_t *emu, uintptr_t fnc);
@@ -1871,6 +1875,7 @@ void iFppiiuup(x64emu_t *emu, uintptr_t fnc);
 void iFppiipii(x64emu_t *emu, uintptr_t fnc);
 void iFppiipiL(x64emu_t *emu, uintptr_t fnc);
 void iFppiuppi(x64emu_t *emu, uintptr_t fnc);
+void iFppipiii(x64emu_t *emu, uintptr_t fnc);
 void iFppipiip(x64emu_t *emu, uintptr_t fnc);
 void iFppipipi(x64emu_t *emu, uintptr_t fnc);
 void iFppipipp(x64emu_t *emu, uintptr_t fnc);
@@ -1925,6 +1930,7 @@ void pFppiiipp(x64emu_t *emu, uintptr_t fnc);
 void pFppiiCCC(x64emu_t *emu, uintptr_t fnc);
 void pFppiippp(x64emu_t *emu, uintptr_t fnc);
 void pFppipipp(x64emu_t *emu, uintptr_t fnc);
+void pFppipLpp(x64emu_t *emu, uintptr_t fnc);
 void pFppuuppp(x64emu_t *emu, uintptr_t fnc);
 void pFppLiiip(x64emu_t *emu, uintptr_t fnc);
 void pFppLipip(x64emu_t *emu, uintptr_t fnc);
@@ -2014,6 +2020,7 @@ void iFEppipppp(x64emu_t *emu, uintptr_t fnc);
 void iFEppppipp(x64emu_t *emu, uintptr_t fnc);
 void iFiiiiiiip(x64emu_t *emu, uintptr_t fnc);
 void iFiiupiupi(x64emu_t *emu, uintptr_t fnc);
+void iFipippppp(x64emu_t *emu, uintptr_t fnc);
 void iFuipuuluf(x64emu_t *emu, uintptr_t fnc);
 void iFuuuuuuuu(x64emu_t *emu, uintptr_t fnc);
 void iFullfpppp(x64emu_t *emu, uintptr_t fnc);
diff --git a/src/wrapped/wrappedcrypto.c b/src/wrapped/wrappedcrypto.c
index b84added..21941bbf 100755
--- a/src/wrapped/wrappedcrypto.c
+++ b/src/wrapped/wrappedcrypto.c
@@ -179,6 +179,126 @@ static void* find_passphrase_Fct(void* fct)
     return NULL;
 }
 
+// xnew
+#define GO(A)   \
+static uintptr_t my_xnew_fct_##A = 0;                           \
+static void* my_xnew_##A()                                      \
+{                                                               \
+    return (void*)RunFunction(my_context, my_xnew_fct_##A, 0);  \
+}
+SUPER()
+#undef GO
+static void* find_xnew_Fct(void* fct)
+{
+    if(!fct) return NULL;
+    void* p;
+    if((p = GetNativeFnc((uintptr_t)fct))) return p;
+    #define GO(A) if(my_xnew_fct_##A == (uintptr_t)fct) return my_xnew_##A;
+    SUPER()
+    #undef GO
+    #define GO(A) if(my_xnew_fct_##A == 0) {my_xnew_fct_##A = (uintptr_t)fct; return my_xnew_##A; }
+    SUPER()
+    #undef GO
+    printf_log(LOG_NONE, "Warning, no more slot for libcrypto xnew callback\n");
+    return NULL;
+}
+
+// d2i
+#define GO(A)   \
+static uintptr_t my_d2i_fct_##A = 0;                            \
+static void* my_d2i_##A()                                       \
+{                                                               \
+    return (void*)RunFunction(my_context, my_d2i_fct_##A, 0);   \
+}
+SUPER()
+#undef GO
+static void* find_d2i_Fct(void* fct)
+{
+    if(!fct) return NULL;
+    void* p;
+    if((p = GetNativeFnc((uintptr_t)fct))) return p;
+    #define GO(A) if(my_d2i_fct_##A == (uintptr_t)fct) return my_d2i_##A;
+    SUPER()
+    #undef GO
+    #define GO(A) if(my_d2i_fct_##A == 0) {my_d2i_fct_##A = (uintptr_t)fct; return my_d2i_##A; }
+    SUPER()
+    #undef GO
+    printf_log(LOG_NONE, "Warning, no more slot for libcrypto d2i callback\n");
+    return NULL;
+}
+
+// i2d
+#define GO(A)   \
+static uintptr_t my_i2d_fct_##A = 0;                        \
+static int my_i2d_##A()                                     \
+{                                                           \
+    return (int)RunFunction(my_context, my_i2d_fct_##A, 0); \
+}
+SUPER()
+#undef GO
+static void* find_i2d_Fct(void* fct)
+{
+    if(!fct) return NULL;
+    void* p;
+    if((p = GetNativeFnc((uintptr_t)fct))) return p;
+    #define GO(A) if(my_i2d_fct_##A == (uintptr_t)fct) return my_i2d_##A;
+    SUPER()
+    #undef GO
+    #define GO(A) if(my_i2d_fct_##A == 0) {my_i2d_fct_##A = (uintptr_t)fct; return my_i2d_##A; }
+    SUPER()
+    #undef GO
+    printf_log(LOG_NONE, "Warning, no more slot for libcrypto i2d callback\n");
+    return NULL;
+}
+
+// pem_password_cb
+#define GO(A)   \
+static uintptr_t my_pem_password_cb_fct_##A = 0;                                    \
+static int my_pem_password_cb_##A(void* a, int b, int c, void* d)                   \
+{                                                                                   \
+    return (int)RunFunction(my_context, my_pem_password_cb_fct_##A, 4, a, b, c, d); \
+}
+SUPER()
+#undef GO
+static void* find_pem_password_cb_Fct(void* fct)
+{
+    if(!fct) return NULL;
+    void* p;
+    if((p = GetNativeFnc((uintptr_t)fct))) return p;
+    #define GO(A) if(my_pem_password_cb_fct_##A == (uintptr_t)fct) return my_pem_password_cb_##A;
+    SUPER()
+    #undef GO
+    #define GO(A) if(my_pem_password_cb_fct_##A == 0) {my_pem_password_cb_fct_##A = (uintptr_t)fct; return my_pem_password_cb_##A; }
+    SUPER()
+    #undef GO
+    printf_log(LOG_NONE, "Warning, no more slot for libcrypto pem_password_cb callback\n");
+    return NULL;
+}
+
+// verify_cb
+#define GO(A)   \
+static uintptr_t my_verify_cb_fct_##A = 0;                              \
+static int my_verify_cb_##A(int a, void* b)                             \
+{                                                                       \
+    return (int)RunFunction(my_context, my_verify_cb_fct_##A, 2, a, b); \
+}
+SUPER()
+#undef GO
+static void* find_verify_cb_Fct(void* fct)
+{
+    if(!fct) return NULL;
+    void* p;
+    if((p = GetNativeFnc((uintptr_t)fct))) return p;
+    #define GO(A) if(my_verify_cb_fct_##A == (uintptr_t)fct) return my_verify_cb_##A;
+    SUPER()
+    #undef GO
+    #define GO(A) if(my_verify_cb_fct_##A == 0) {my_verify_cb_fct_##A = (uintptr_t)fct; return my_verify_cb_##A; }
+    SUPER()
+    #undef GO
+    printf_log(LOG_NONE, "Warning, no more slot for libcrypto verify_cb callback\n");
+    return NULL;
+}
+
 #undef SUPER
 
 EXPORT int32_t my_ENGINE_ctrl(x64emu_t* emu, void* e, int32_t cmd, int32_t i, void* p, void* f)
@@ -271,6 +391,66 @@ EXPORT void my_sk_pop_free(x64emu_t* emu, void* st, void* f)
     my->sk_pop_free(st, find_free_fnc_Fct(f));
 }
 
+EXPORT void* my_ASN1_d2i_bio(x64emu_t* emu, void* xnew, void* d2i, void* bp, void* x)
+{
+    (void)emu;
+    return my->ASN1_d2i_bio(find_xnew_Fct(xnew), find_d2i_Fct(d2i), bp, x);
+}
+
+EXPORT int my_ASN1_i2d_bio(x64emu_t* emu, void* i2d, void* bp, void* x)
+{
+    (void)emu;
+    return my->ASN1_i2d_bio(find_i2d_Fct(i2d), bp, x);
+}
+
+EXPORT void* my_PEM_read_bio_PKCS7(x64emu_t* emu, void* bp, void* x, void* cb, void* u)
+{
+    (void)emu;
+    return my->PEM_read_bio_PKCS7(bp, x, find_pem_password_cb_Fct(cb), u);
+}
+
+EXPORT void* my_PEM_read_bio_X509(x64emu_t* emu, void* bp, void* x, void* cb, void* u)
+{
+    (void)emu;
+    return my->PEM_read_bio_X509(bp, x, find_pem_password_cb_Fct(cb), u);
+}
+
+EXPORT void* my_PEM_read_bio_X509_AUX(x64emu_t* emu, void* bp, void* x, void* cb, void* u)
+{
+    (void)emu;
+    return my->PEM_read_bio_X509_AUX(bp, x, find_pem_password_cb_Fct(cb), u);
+}
+
+EXPORT void* my_PEM_read_bio_X509_CRL(x64emu_t* emu, void* bp, void* x, void* cb, void* u)
+{
+    (void)emu;
+    return my->PEM_read_bio_X509_CRL(bp, x, find_pem_password_cb_Fct(cb), u);
+}
+
+EXPORT void* my_PEM_read_bio_X509_REQ(x64emu_t* emu, void* bp, void* x, void* cb, void* u)
+{
+    (void)emu;
+    return my->PEM_read_bio_X509_REQ(bp, x, find_pem_password_cb_Fct(cb), u);
+}
+
+EXPORT void* my_PEM_read_bio_X509_CERT_PAIR(x64emu_t* emu, void* bp, void* x, void* cb, void* u)
+{
+    (void)emu;
+    return my->PEM_read_bio_X509_CERT_PAIR(bp, x, find_pem_password_cb_Fct(cb), u);
+}
+
+EXPORT void my_X509_STORE_CTX_set_verify_cb(x64emu_t* emu, void* ctx, void* cb)
+{
+    (void)emu;
+    my->X509_STORE_CTX_set_verify_cb(ctx, find_verify_cb_Fct(cb));
+}
+
+EXPORT void my_OPENSSL_sk_pop_free(x64emu_t* emu, void* s, void* cb)
+{
+    (void)emu;
+    my->OPENSSL_sk_pop_free(s, find_free_fnc_Fct(cb));
+}
+
 #define CUSTOM_INIT \
     getMy(lib);
 
diff --git a/src/wrapped/wrappedcrypto_private.h b/src/wrapped/wrappedcrypto_private.h
index 37ac8cc5..87d73af2 100755
--- a/src/wrapped/wrappedcrypto_private.h
+++ b/src/wrapped/wrappedcrypto_private.h
@@ -58,7 +58,7 @@ GO(ASN1_BIT_STRING_new, pFv)
 //GO(ASN1_check_infinite_end, 
 //GO(ASN1_const_check_infinite_end, 
 //GO(asn1_const_Finish, 
-//GO(ASN1_d2i_bio, 
+GOM(ASN1_d2i_bio, pFEpppp)
 //GO(ASN1_d2i_fp, 
 //GO(ASN1_digest, 
 //GO(asn1_do_adb, 
@@ -78,7 +78,7 @@ GO(ASN1_ENUMERATED_to_BN, pFpp)
 //GO(asn1_Finish, 
 //GO(ASN1_GENERALIZEDTIME_adj, 
 //GO(ASN1_GENERALIZEDTIME_check, 
-//GO(ASN1_GENERALIZEDTIME_free, 
+GO(ASN1_GENERALIZEDTIME_free, vFp)
 //GO(ASN1_GENERALIZEDTIME_new, 
 //GO(ASN1_GENERALIZEDTIME_print, 
 //GO(ASN1_GENERALIZEDTIME_set, 
@@ -92,7 +92,7 @@ GO(ASN1_ENUMERATED_to_BN, pFpp)
 //GO(asn1_get_field_ptr, 
 //GO(ASN1_get_object, 
 //GO(asn1_GetSequence, 
-//GO(ASN1_i2d_bio, 
+GOM(ASN1_i2d_bio, iFEppp)
 //GO(ASN1_i2d_fp, 
 //GO(ASN1_IA5STRING_free, 
 //GO(ASN1_IA5STRING_new, 
@@ -129,14 +129,14 @@ GO(ASN1_INTEGER_to_BN, pFpp)
 //GO(ASN1_NULL_free, 
 //GO(ASN1_NULL_new, 
 //GO(ASN1_OBJECT_create, 
-//GO(ASN1_OBJECT_free, 
+GO(ASN1_OBJECT_free, vFp)
 //GO(ASN1_OBJECT_new, 
 //GO(ASN1_object_size, 
 //GO(ASN1_OCTET_STRING_cmp, 
 //GO(ASN1_OCTET_STRING_dup, 
-//GO(ASN1_OCTET_STRING_free, 
-//GO(ASN1_OCTET_STRING_new, 
-//GO(ASN1_OCTET_STRING_set, 
+GO(ASN1_OCTET_STRING_free, vFp)
+GO(ASN1_OCTET_STRING_new, pFv)
+GO(ASN1_OCTET_STRING_set, iFppi)
 //GO(ASN1_pack_string, 
 //GO(ASN1_parse, 
 //GO(ASN1_parse_dump, 
@@ -170,7 +170,7 @@ GO(ASN1_STRING_cmp, iFpp)
 //GO(ASN1_STRING_copy, 
 GO(ASN1_STRING_data, pFp)
 GO(ASN1_STRING_dup, pFp)
-//GO(ASN1_STRING_free, 
+GO(ASN1_STRING_free, vFp)
 //GO(ASN1_STRING_get_default_mask, 
 GO(ASN1_STRING_length, iFp)
 //GO(ASN1_STRING_length_set, 
@@ -201,10 +201,10 @@ GO(ASN1_STRING_type, iFp)
 //GO(ASN1_TIME_adj, 
 //GO(ASN1_TIME_check, 
 //GO(ASN1_TIME_diff, 
-//GO(ASN1_TIME_free, 
-//GO(ASN1_TIME_new, 
+GO(ASN1_TIME_free, vFp)
+GO(ASN1_TIME_new, pFv)
 //GO(ASN1_TIME_print, 
-//GO(ASN1_TIME_set, 
+GO(ASN1_TIME_set, pFpL)
 //GO(ASN1_TIME_set_string, 
 //GO(ASN1_TIME_to_generalizedtime, 
 //GO(ASN1_TYPE_cmp, 
@@ -319,7 +319,7 @@ GO(BIO_new_bio_pair, iFpLpL)
 //GO(BIO_new_connect, 
 //GO(BIO_new_dgram, 
 //GO(BIO_new_fd, 
-//GO(BIO_new_file, 
+GO(BIO_new_file, pFpp)
 //GO(BIO_new_fp, 
 GO(BIO_new_mem_buf, pFpi)
 //GO(BIO_new_NDEF, 
@@ -797,7 +797,7 @@ GO(CONF_modules_unload, vFi)
 //GO(CRL_DIST_POINTS_new, 
 //GO(CRYPTO_128_unwrap, 
 //GO(CRYPTO_128_wrap, 
-//GO(CRYPTO_add_lock, 
+GO(CRYPTO_add_lock, iFpiipi)
 //GO(CRYPTO_cbc128_decrypt, 
 //GO(CRYPTO_cbc128_encrypt, 
 //GO(CRYPTO_ccm128_aad, 
@@ -907,7 +907,7 @@ GO(CRYPTO_strdup, pFppi)
 //GO(CRYPTO_THREADID_set_pointer, 
 //GO(CRYPTO_xts128_encrypt, 
 //GO(d2i_ACCESS_DESCRIPTION, 
-//GO(d2i_ASN1_BIT_STRING, 
+GO(d2i_ASN1_BIT_STRING, pFppl)
 //GO(d2i_ASN1_BMPSTRING, 
 //GO(d2i_ASN1_BOOLEAN, 
 //GO(d2i_ASN1_bytes, 
@@ -936,7 +936,7 @@ GO(CRYPTO_strdup, pFppi)
 //GO(d2i_AUTHORITY_INFO_ACCESS, 
 //GO(d2i_AUTHORITY_KEYID, 
 GO(d2i_AutoPrivateKey, pFppl)
-//GO(d2i_BASIC_CONSTRAINTS, 
+GO(d2i_BASIC_CONSTRAINTS, pFppl)
 //GO(d2i_CERTIFICATEPOLICIES, 
 //GO(d2i_CMS_bio, 
 //GO(d2i_CMS_ContentInfo, 
@@ -972,7 +972,7 @@ GO(d2i_EC_PUBKEY_fp, pFpp)
 //GO(d2i_ESS_CERT_ID, 
 //GO(d2i_ESS_ISSUER_SERIAL, 
 //GO(d2i_ESS_SIGNING_CERT, 
-//GO(d2i_EXTENDED_KEY_USAGE, 
+GO(d2i_EXTENDED_KEY_USAGE, pFppl)
 //GO(d2i_GENERAL_NAME, 
 //GO(d2i_GENERAL_NAMES, 
 //GO(d2i_int_dhx, 
@@ -1006,7 +1006,7 @@ GO(d2i_EC_PUBKEY_fp, pFpp)
 //GO(d2i_OCSP_RESPBYTES, 
 //GO(d2i_OCSP_RESPDATA, 
 //GO(d2i_OCSP_RESPID, 
-//GO(d2i_OCSP_RESPONSE, 
+GO(d2i_OCSP_RESPONSE, pFppl)
 //GO(d2i_OCSP_REVOKEDINFO, 
 //GO(d2i_OCSP_SERVICELOC, 
 //GO(d2i_OCSP_SIGNATURE, 
@@ -1097,7 +1097,7 @@ GO(d2i_X509_CRL_fp, pFpp)
 //GO(d2i_X509_EXTENSION, 
 //GO(d2i_X509_EXTENSIONS, 
 GO(d2i_X509_fp, pFppl)
-//GO(d2i_X509_NAME, 
+GO(d2i_X509_NAME, pFppl)
 //GO(d2i_X509_NAME_ENTRY, 
 //GO(d2i_X509_PKEY, 
 //GO(d2i_X509_PUBKEY, 
@@ -1188,15 +1188,15 @@ GO(DH_new, pFv)
 //GO(DSA_do_verify, 
 //GO(DSA_dup_DH, 
 GO(DSA_free, vFp)
-//GO(DSA_generate_key, 
+GO(DSA_generate_key, iFp)
 //GO(DSA_generate_parameters, 
-//GO(DSA_generate_parameters_ex, 
+GO(DSA_generate_parameters_ex, iFpipippp)
 //GO(DSA_get_default_method, 
 //GO(DSA_get_ex_data, 
 //GO(DSA_get_ex_new_index, 
 GO(DSA_new, pFv)
 //GO(DSA_new_method, 
-//GO(DSA_OpenSSL, 
+GO(DSA_OpenSSL, pFv)
 //GO(dsa_paramgen_check_g, 
 //GO(DSAparams_dup, 
 //GO(DSAparams_print, 
@@ -1207,12 +1207,12 @@ GO(DSA_new, pFv)
 //GO(DSA_set_ex_data, 
 //GO(DSA_set_method, 
 //GO(DSA_SIG_free, 
-//GO(DSA_sign, 
+GO(DSA_sign, iFipippp)
 //GO(DSA_SIG_new, 
 //GO(DSA_sign_setup, 
-//GO(DSA_size, 
-//GO(DSA_up_ref, 
-//GO(DSA_verify, 
+GO(DSA_size, iFp)
+GO(DSA_up_ref, iFp)
+GO(DSA_verify, iFipipip)
 //GO(DSO_bind_func, 
 //GO(DSO_bind_var, 
 //GO(DSO_convert_filename, 
@@ -1274,14 +1274,14 @@ GO(ECDSA_do_verify, iFpipp)
 //GO(ECDSA_set_ex_data, 
 //GO(ECDSA_set_method, 
 GO(ECDSA_SIG_free, vFp)
-//GO(ECDSA_sign, 
+GO(ECDSA_sign, iFipippp)
 GO(ECDSA_SIG_get0, vFppp)
 GO(ECDSA_SIG_new, pFv)
 GO(ECDSA_SIG_set0, iFppp)
-//GO(ECDSA_sign_ex, 
+GO(ECDSA_sign_ex, iFipippppp)
 GO(ECDSA_sign_setup, iFpppp)
-//GO(ECDSA_size, 
-//GO(ECDSA_verify, 
+GO(ECDSA_size, iFp)
+GO(ECDSA_verify, iFipipip)
 //GO(EC_EX_DATA_clear_free_all_data, 
 //GO(EC_EX_DATA_clear_free_data, 
 //GO(EC_EX_DATA_free_all_data, 
@@ -1372,21 +1372,21 @@ GO(EC_GFp_simple_method, pFv)
 //GO(ec_GFp_simple_points_make_affine, 
 //GO(ec_GFp_simple_set_compressed_coordinates, 
 //GO(ec_GFp_simple_set_Jprojective_coordinates_GFp, 
-//GO(EC_GROUP_check, 
-//GO(EC_GROUP_check_discriminant, 
+GO(EC_GROUP_check, iFpp)
+GO(EC_GROUP_check_discriminant, iFpp)
 GO(EC_GROUP_clear_free, vFp)
 //GO(EC_GROUP_cmp, 
 //GO(EC_GROUP_copy, 
 //GO(EC_GROUP_dup, 
 GO(EC_GROUP_free, vFp)
 GO(EC_GROUP_get0_generator, pFp)
-//GO(EC_GROUP_get0_seed, 
+GO(EC_GROUP_get0_seed, pFp)
 //GO(EC_GROUP_get_asn1_flag, 
 //GO(EC_GROUP_get_basis_type, 
-//GO(EC_GROUP_get_cofactor, 
+GO(EC_GROUP_get_cofactor, iFppp)
 GO(EC_GROUP_get_curve_GF2m, iFppppp)
 GO(EC_GROUP_get_curve_GFp, iFppppp)
-//GO(EC_GROUP_get_curve_name, 
+GO(EC_GROUP_get_curve_name, iFp)
 GO(EC_GROUP_get_degree, iFp)
 GO(EC_GROUP_get_ecparameters, pFpp)
 GO(EC_GROUP_get_ecpkparameters, pFpp)
@@ -1394,10 +1394,10 @@ GO(EC_GROUP_get_ecpkparameters, pFpp)
 GO(EC_GROUP_get_order, iFppp)
 //GO(EC_GROUP_get_pentanomial_basis, 
 //GO(EC_GROUP_get_point_conversion_form, 
-//GO(EC_GROUP_get_seed_len, 
+GO(EC_GROUP_get_seed_len, LFp)
 //GO(EC_GROUP_get_trinomial_basis, 
 //GO(EC_GROUP_have_precompute_mult, 
-//GO(EC_GROUP_method_of, 
+GO(EC_GROUP_method_of, pFp)
 GO(EC_GROUP_new, pFp)
 GO(EC_GROUP_new_by_curve_name, pFi)
 GO(EC_GROUP_new_curve_GF2m, pFpppp)
@@ -1411,16 +1411,16 @@ GO(EC_GROUP_set_curve_GFp, iFppppp)
 //GO(EC_GROUP_set_curve_name, 
 GO(EC_GROUP_set_generator, iFpppp)
 //GO(EC_GROUP_set_point_conversion_form, 
-//GO(EC_GROUP_set_seed, 
-//GO(EC_KEY_check_key, 
+GO(EC_GROUP_set_seed, LFppL)
+GO(EC_KEY_check_key, iFp)
 //GO(EC_KEY_clear_flags, 
 //GO(EC_KEY_copy, 
 GO(EC_KEY_dup, pFp)
 GO(EC_KEY_free, vFp)
-//GO(EC_KEY_generate_key, 
+GO(EC_KEY_generate_key, iFp)
 GO(EC_KEY_get0_group, pFp)
-//GO(EC_KEY_get0_private_key, 
-//GO(EC_KEY_get0_public_key, 
+GO(EC_KEY_get0_private_key, pFp)
+GO(EC_KEY_get0_public_key, pFp)
 //GO(EC_KEY_get_conv_form, 
 //GO(EC_KEY_get_enc_flags, 
 //GO(EC_KEY_get_flags, 
@@ -1439,7 +1439,7 @@ GO(EC_KEY_set_group, iFpp)
 GO(EC_KEY_set_private_key, iFpp)
 GO(EC_KEY_set_public_key, iFpp)
 GO(EC_KEY_set_public_key_affine_coordinates, iFppp)
-//GO(EC_KEY_up_ref, 
+GO(EC_KEY_up_ref, iFp)
 GO(EC_METHOD_get_field_type, iFp)
 //GO(ECPARAMETERS_free, 
 //GO(ECPARAMETERS_new, 
@@ -1700,7 +1700,7 @@ GO(ERR_peek_last_error_line_data, LFpppp)
 //GO(ERR_print_errors, 
 //GO(ERR_print_errors_cb, 
 //GO(ERR_print_errors_fp, 
-//GO(ERR_put_error, 
+GO(ERR_put_error, vFiiipi)
 GO(ERR_reason_error_string, pFu)
 //GO(ERR_release_err_state_table, 
 //GO(ERR_remove_state, 
@@ -1721,41 +1721,41 @@ GO(ERR_remove_thread_state, vFp)
 //GO(EVP_add_alg_module, 
 //GO(EVP_add_cipher, 
 //GO(EVP_add_digest, 
-//GO(EVP_aes_128_cbc, 
-//GO(EVP_aes_128_cbc_hmac_sha1, 
-//GO(EVP_aes_128_cbc_hmac_sha256, 
-//GO(EVP_aes_128_ccm, 
-//GO(EVP_aes_128_cfb, 
-//GO(EVP_aes_128_cfb1, 
-//GO(EVP_aes_128_cfb128, 
-//GO(EVP_aes_128_cfb8, 
-//GO(EVP_aes_128_ctr, 
-//GO(EVP_aes_128_ecb, 
-//GO(EVP_aes_128_gcm, 
-//GO(EVP_aes_128_ofb, 
-//GO(EVP_aes_128_wrap, 
-//GO(EVP_aes_128_xts, 
-//GO(EVP_aes_192_cbc, 
-//GO(EVP_aes_192_ccm, 
-//GO(EVP_aes_192_cfb, 
-//GO(EVP_aes_192_cfb1, 
-//GO(EVP_aes_192_cfb128, 
-//GO(EVP_aes_192_cfb8, 
-//GO(EVP_aes_192_ctr, 
-//GO(EVP_aes_192_ecb, 
-//GO(EVP_aes_192_gcm, 
-//GO(EVP_aes_192_ofb, 
-//GO(EVP_aes_192_wrap, 
-//GO(EVP_aes_256_cbc, 
-//GO(EVP_aes_256_cbc_hmac_sha1, 
-//GO(EVP_aes_256_cbc_hmac_sha256, 
-//GO(EVP_aes_256_ccm, 
-//GO(EVP_aes_256_cfb, 
-//GO(EVP_aes_256_cfb1, 
-//GO(EVP_aes_256_cfb128, 
-//GO(EVP_aes_256_cfb8, 
-//GO(EVP_aes_256_ctr, 
-//GO(EVP_aes_256_ecb, 
+GO(EVP_aes_128_cbc, pFv)
+GO(EVP_aes_128_cbc_hmac_sha1, pFv)
+GO(EVP_aes_128_cbc_hmac_sha256, pFv)
+GO(EVP_aes_128_ccm, pFv)
+GO(EVP_aes_128_cfb, pFv)
+GO(EVP_aes_128_cfb1, pFv)
+GO(EVP_aes_128_cfb128, pFv)
+GO(EVP_aes_128_cfb8, pFv)
+GO(EVP_aes_128_ctr, pFv)
+GO(EVP_aes_128_ecb, pFv)
+GO(EVP_aes_128_gcm, pFv)
+GO(EVP_aes_128_ofb, pFv)
+GO(EVP_aes_128_wrap, pFv)
+GO(EVP_aes_128_xts, pFv)
+GO(EVP_aes_192_cbc, pFv)
+GO(EVP_aes_192_ccm, pFv)
+GO(EVP_aes_192_cfb, pFv)
+GO(EVP_aes_192_cfb1, pFv)
+GO(EVP_aes_192_cfb128, pFv)
+GO(EVP_aes_192_cfb8, pFv)
+GO(EVP_aes_192_ctr, pFv)
+GO(EVP_aes_192_ecb, pFv)
+GO(EVP_aes_192_gcm, pFv)
+GO(EVP_aes_192_ofb, pFv)
+GO(EVP_aes_192_wrap, pFv)
+GO(EVP_aes_256_cbc, pFv)
+GO(EVP_aes_256_cbc_hmac_sha1, pFv)
+GO(EVP_aes_256_cbc_hmac_sha256, pFv)
+GO(EVP_aes_256_ccm, pFv)
+GO(EVP_aes_256_cfb, pFv)
+GO(EVP_aes_256_cfb1, pFv)
+GO(EVP_aes_256_cfb128, pFv)
+GO(EVP_aes_256_cfb8, pFv)
+GO(EVP_aes_256_ctr, pFv)
+GO(EVP_aes_256_ecb, pFv)
 GO(EVP_aes_256_gcm, pFv)
 //GO(EVP_aes_256_ofb, 
 //GO(EVP_aes_256_wrap, 
@@ -1838,26 +1838,26 @@ GO(EVP_DecryptInit, iFpppp)
 GO(EVP_DecryptInit_ex, iFppppp)
 GO(EVP_DecryptUpdate, iFppppi)
 GO(EVP_des_cbc, pFv)
-//GO(EVP_des_cfb, 
-//GO(EVP_des_cfb1, 
-//GO(EVP_des_cfb64, 
-//GO(EVP_des_cfb8, 
-//GO(EVP_des_ecb, 
-//GO(EVP_des_ede, 
-//GO(EVP_des_ede3, 
+GO(EVP_des_cfb, pFv)
+GO(EVP_des_cfb1, pFv)
+GO(EVP_des_cfb64, pFv)
+GO(EVP_des_cfb8, pFv)
+GO(EVP_des_ecb, pFv)
+GO(EVP_des_ede, pFv)
+GO(EVP_des_ede3, pFv)
 GO(EVP_des_ede3_cbc, pFv)
-//GO(EVP_des_ede3_cfb, 
-//GO(EVP_des_ede3_cfb1, 
-//GO(EVP_des_ede3_cfb64, 
-//GO(EVP_des_ede3_cfb8, 
-//GO(EVP_des_ede3_ecb, 
-//GO(EVP_des_ede3_ofb, 
-//GO(EVP_des_ede3_wrap, 
-//GO(EVP_des_ede_cbc, 
-//GO(EVP_des_ede_cfb, 
-//GO(EVP_des_ede_cfb64, 
-//GO(EVP_des_ede_ecb, 
-//GO(EVP_des_ede_ofb, 
+GO(EVP_des_ede3_cfb, pFv)
+GO(EVP_des_ede3_cfb1, pFv)
+GO(EVP_des_ede3_cfb64, pFv)
+GO(EVP_des_ede3_cfb8, pFv)
+GO(EVP_des_ede3_ecb, pFv)
+GO(EVP_des_ede3_ofb, pFv)
+GO(EVP_des_ede3_wrap, pFv)
+GO(EVP_des_ede_cbc, pFv)
+GO(EVP_des_ede_cfb, pFv)
+GO(EVP_des_ede_cfb64, pFv)
+GO(EVP_des_ede_ecb, pFv)
+GO(EVP_des_ede_ofb, pFv)
 //GO(EVP_des_ofb, 
 //GO(EVP_desx_cbc, 
 //GO(EVP_Digest, 
@@ -1899,7 +1899,7 @@ GO(EVP_MD_CTX_cleanup, iFp)
 GO(EVP_MD_CTX_clear_flags, vFpi)
 GO(EVP_MD_CTX_copy, iFpp)
 GO(EVP_MD_CTX_copy_ex, iFpp)
-//GO(EVP_MD_CTX_create, 
+GO(EVP_MD_CTX_create, pFv)
 GO(EVP_MD_CTX_ctrl, vFpiip)
 GO(EVP_MD_CTX_destroy, vFp)
 GO(EVP_MD_CTX_free, vFp)
@@ -2016,7 +2016,7 @@ GO(EVP_PKEY_keygen_init, iFp)
 //GO(EVP_PKEY_meth_set_verify_recover, 
 GO(EVP_PKEY_missing_parameters, iFp)
 GO(EVP_PKEY_new, pFv)
-//GO(EVP_PKEY_new_mac_key, 
+GO(EVP_PKEY_new_mac_key, pFippi)
 GO(EVP_PKEY_paramgen, iFpp)
 GO(EVP_PKEY_paramgen_init, iFp)
 //GO(EVP_PKEY_print_params, 
@@ -2039,13 +2039,13 @@ GO(EVP_PKEY_verify, iFppLpL)
 GO(EVP_PKEY_verify_init, iFp)
 //GO(EVP_PKEY_verify_recover, 
 //GO(EVP_PKEY_verify_recover_init, 
-//GO(EVP_rc2_40_cbc, 
-//GO(EVP_rc2_64_cbc, 
-//GO(EVP_rc2_cbc, 
-//GO(EVP_rc2_cfb, 
-//GO(EVP_rc2_cfb64, 
-//GO(EVP_rc2_ecb, 
-//GO(EVP_rc2_ofb, 
+GO(EVP_rc2_40_cbc, pFv)
+GO(EVP_rc2_64_cbc, pFv)
+GO(EVP_rc2_cbc, pFv)
+GO(EVP_rc2_cfb, pFv)
+GO(EVP_rc2_cfb64, pFv)
+GO(EVP_rc2_ecb, pFv)
+GO(EVP_rc2_ofb, pFv)
 //GO(EVP_rc4, 
 //GO(EVP_rc4_40, 
 //GO(EVP_rc4_hmac_md5, 
@@ -2071,7 +2071,7 @@ GO(EVP_VerifyInit, iFpp)        // 1.1.0+
 GO(EVP_VerifyInit_ex, iFppp)    // 1.1.0+
 GO(EVP_VerifyUpdate, iFppu)     // 1.1.0+
 //GO(EVP_whirlpool, 
-//GO(EXTENDED_KEY_USAGE_free, 
+GO(EXTENDED_KEY_USAGE_free, vFp)
 //GO(EXTENDED_KEY_USAGE_new, 
 //GO(fcrypt_body, 
 //GO(_fini, 
@@ -2107,15 +2107,15 @@ GO(GENERAL_SUBTREE_new, pFv)
 //GO(get_rfc3526_prime_6144, 
 //GO(get_rfc3526_prime_8192, 
 //GO(hex_to_string, 
-//GO(HMAC, 
-//GO(HMAC_CTX_cleanup, 
-//GO(HMAC_CTX_copy, 
-//GO(HMAC_CTX_init, 
-//GO(HMAC_CTX_set_flags, 
-//GO(HMAC_Final, 
-//GO(HMAC_Init, 
-//GO(HMAC_Init_ex, 
-//GO(HMAC_Update, 
+GO(HMAC, pFppipLpp)
+GO(HMAC_CTX_cleanup, vFp)
+GO(HMAC_CTX_copy, iFpp)
+GO(HMAC_CTX_init, vFp)
+GO(HMAC_CTX_set_flags, vFpL)
+GO(HMAC_Final, iFppp)
+GO(HMAC_Init, iFppip)
+GO(HMAC_Init_ex, iFppipp)
+GO(HMAC_Update, iFppi)
 //GO(i2a_ACCESS_DESCRIPTION, 
 //GO(i2a_ASN1_ENUMERATED, 
 //GO(i2a_ASN1_INTEGER, 
@@ -2136,7 +2136,7 @@ GO(GENERAL_SUBTREE_new, pFv)
 //GO(i2d_ASN1_GENERALIZEDTIME, 
 //GO(i2d_ASN1_GENERALSTRING, 
 //GO(i2d_ASN1_IA5STRING, 
-//GO(i2d_ASN1_INTEGER, 
+GO(i2d_ASN1_INTEGER, iFpp)
 //GO(i2d_ASN1_NULL, 
 //GO(i2d_ASN1_OBJECT, 
 //GO(i2d_ASN1_OCTET_STRING, 
@@ -2147,7 +2147,7 @@ GO(GENERAL_SUBTREE_new, pFv)
 //GO(i2d_ASN1_SET_ANY, 
 //GO(i2d_ASN1_T61STRING, 
 //GO(i2d_ASN1_TIME, 
-//GO(i2d_ASN1_TYPE, 
+GO(i2d_ASN1_TYPE, iFpp)
 //GO(i2d_ASN1_UNIVERSALSTRING, 
 //GO(i2d_ASN1_UTCTIME, 
 //GO(i2d_ASN1_UTF8STRING, 
@@ -2187,73 +2187,73 @@ GO(i2d_ECPrivateKey_fp, iFpp)
 GO(i2d_EC_PUBKEY, iFpp)
 GO(i2d_EC_PUBKEY_bio, iFpp)
 GO(i2d_EC_PUBKEY_fp, iFpp)
-//GO(i2d_EDIPARTYNAME, 
-//GO(i2d_ESS_CERT_ID, 
-//GO(i2d_ESS_ISSUER_SERIAL, 
-//GO(i2d_ESS_SIGNING_CERT, 
-//GO(i2d_EXTENDED_KEY_USAGE, 
-//GO(i2d_GENERAL_NAME, 
-//GO(i2d_GENERAL_NAMES, 
+GO(i2d_EDIPARTYNAME, iFpp)
+GO(i2d_ESS_CERT_ID, iFpp)
+GO(i2d_ESS_ISSUER_SERIAL, iFpp)
+GO(i2d_ESS_SIGNING_CERT, iFpp)
+GO(i2d_EXTENDED_KEY_USAGE, iFpp)
+GO(i2d_GENERAL_NAME, iFpp)
+GO(i2d_GENERAL_NAMES, iFpp)
 //GO(i2d_int_dhx, 
-//GO(i2d_ISSUING_DIST_POINT, 
-//GO(i2d_KRB5_APREQ, 
-//GO(i2d_KRB5_APREQBODY, 
-//GO(i2d_KRB5_AUTHDATA, 
-//GO(i2d_KRB5_AUTHENT, 
-//GO(i2d_KRB5_AUTHENTBODY, 
-//GO(i2d_KRB5_CHECKSUM, 
-//GO(i2d_KRB5_ENCDATA, 
-//GO(i2d_KRB5_ENCKEY, 
-//GO(i2d_KRB5_PRINCNAME, 
-//GO(i2d_KRB5_TICKET, 
-//GO(i2d_KRB5_TKTBODY, 
-//GO(i2d_NETSCAPE_CERT_SEQUENCE, 
-//GO(i2d_NETSCAPE_ENCRYPTED_PKEY, 
-//GO(i2d_NETSCAPE_PKEY, 
-//GO(i2d_Netscape_RSA, 
-//GO(i2d_NETSCAPE_SPKAC, 
-//GO(i2d_NETSCAPE_SPKI, 
-//GO(i2d_NETSCAPE_X509, 
-//GO(i2d_NOTICEREF, 
-//GO(i2d_OCSP_BASICRESP, 
-//GO(i2d_OCSP_CERTID, 
-//GO(i2d_OCSP_CERTSTATUS, 
-//GO(i2d_OCSP_CRLID, 
-//GO(i2d_OCSP_ONEREQ, 
-//GO(i2d_OCSP_REQINFO, 
-//GO(i2d_OCSP_REQUEST, 
-//GO(i2d_OCSP_RESPBYTES, 
-//GO(i2d_OCSP_RESPDATA, 
-//GO(i2d_OCSP_RESPID, 
-//GO(i2d_OCSP_RESPONSE, 
-//GO(i2d_OCSP_REVOKEDINFO, 
-//GO(i2d_OCSP_SERVICELOC, 
-//GO(i2d_OCSP_SIGNATURE, 
-//GO(i2d_OCSP_SINGLERESP, 
-//GO(i2d_OTHERNAME, 
-//GO(i2d_PBE2PARAM, 
-//GO(i2d_PBEPARAM, 
-//GO(i2d_PBKDF2PARAM, 
+GO(i2d_ISSUING_DIST_POINT, iFpp)
+GO(i2d_KRB5_APREQ, iFpp)
+GO(i2d_KRB5_APREQBODY, iFpp)
+GO(i2d_KRB5_AUTHDATA, iFpp)
+GO(i2d_KRB5_AUTHENT, iFpp)
+GO(i2d_KRB5_AUTHENTBODY, iFpp)
+GO(i2d_KRB5_CHECKSUM, iFpp)
+GO(i2d_KRB5_ENCDATA, iFpp)
+GO(i2d_KRB5_ENCKEY, iFpp)
+GO(i2d_KRB5_PRINCNAME, iFpp)
+GO(i2d_KRB5_TICKET, iFpp)
+GO(i2d_KRB5_TKTBODY, iFpp)
+GO(i2d_NETSCAPE_CERT_SEQUENCE, iFpp)
+GO(i2d_NETSCAPE_ENCRYPTED_PKEY, iFpp)
+GO(i2d_NETSCAPE_PKEY, iFpp)
+GO(i2d_Netscape_RSA, iFpp)
+GO(i2d_NETSCAPE_SPKAC, iFpp)
+GO(i2d_NETSCAPE_SPKI, iFpp)
+GO(i2d_NETSCAPE_X509, iFpp)
+GO(i2d_NOTICEREF, iFpp)
+GO(i2d_OCSP_BASICRESP, iFpp)
+GO(i2d_OCSP_CERTID, iFpp)
+GO(i2d_OCSP_CERTSTATUS, iFpp)
+GO(i2d_OCSP_CRLID, iFpp)
+GO(i2d_OCSP_ONEREQ, iFpp)
+GO(i2d_OCSP_REQINFO, iFpp)
+GO(i2d_OCSP_REQUEST, iFpp)
+GO(i2d_OCSP_RESPBYTES, iFpp)
+GO(i2d_OCSP_RESPDATA, iFpp)
+GO(i2d_OCSP_RESPID, iFpp)
+GO(i2d_OCSP_RESPONSE, iFpp)
+GO(i2d_OCSP_REVOKEDINFO, iFpp)
+GO(i2d_OCSP_SERVICELOC, iFpp)
+GO(i2d_OCSP_SIGNATURE, iFpp)
+GO(i2d_OCSP_SINGLERESP, iFpp)
+GO(i2d_OTHERNAME, iFpp)
+GO(i2d_PBE2PARAM, iFpp)
+GO(i2d_PBEPARAM, iFpp)
+GO(i2d_PBKDF2PARAM, iFpp)
 GO(i2d_PKCS12, iFpp)
-//GO(i2d_PKCS12_BAGS, 
+GO(i2d_PKCS12_BAGS, iFpp)
 GO(i2d_PKCS12_bio, iFpp)
 GO(i2d_PKCS12_fp, iFpp)
-//GO(i2d_PKCS12_MAC_DATA, 
-//GO(i2d_PKCS12_SAFEBAG, 
+GO(i2d_PKCS12_MAC_DATA, iFpp)
+GO(i2d_PKCS12_SAFEBAG, iFpp)
 GO(i2d_PKCS7, iFpp)
 GO(i2d_PKCS7_bio, iFpp)
-//GO(i2d_PKCS7_bio_stream, 
-//GO(i2d_PKCS7_DIGEST, 
-//GO(i2d_PKCS7_ENC_CONTENT, 
-//GO(i2d_PKCS7_ENCRYPT, 
-//GO(i2d_PKCS7_ENVELOPE, 
+GO(i2d_PKCS7_bio_stream, iFpppi)
+GO(i2d_PKCS7_DIGEST, iFpp)
+GO(i2d_PKCS7_ENC_CONTENT, iFpp)
+GO(i2d_PKCS7_ENCRYPT, iFpp)
+GO(i2d_PKCS7_ENVELOPE, iFpp)
 GO(i2d_PKCS7_fp, iFpp)
-//GO(i2d_PKCS7_ISSUER_AND_SERIAL, 
-//GO(i2d_PKCS7_NDEF, 
-//GO(i2d_PKCS7_RECIP_INFO, 
-//GO(i2d_PKCS7_SIGNED, 
-//GO(i2d_PKCS7_SIGN_ENVELOPE, 
-//GO(i2d_PKCS7_SIGNER_INFO, 
+GO(i2d_PKCS7_ISSUER_AND_SERIAL, iFpp)
+GO(i2d_PKCS7_NDEF, iFpp)
+GO(i2d_PKCS7_RECIP_INFO, iFpp)
+GO(i2d_PKCS7_SIGNED, iFpp)
+GO(i2d_PKCS7_SIGN_ENVELOPE, iFpp)
+GO(i2d_PKCS7_SIGNER_INFO, iFpp)
 GO(i2d_PKCS8_bio, iFpp)
 GO(i2d_PKCS8_fp, iFpp)
 GO(i2d_PKCS8PrivateKey_bio, iFpp)
@@ -2265,34 +2265,34 @@ GO(i2d_PKCS8PrivateKey_nid_fp, iFpp)
 GO(i2d_PKCS8_PRIV_KEY_INFO, iFpp)
 GO(i2d_PKCS8_PRIV_KEY_INFO_bio, iFpp)
 GO(i2d_PKCS8_PRIV_KEY_INFO_fp, iFpp)
-//GO(i2d_PKEY_USAGE_PERIOD, 
-//GO(i2d_POLICYINFO, 
-//GO(i2d_POLICYQUALINFO, 
+GO(i2d_PKEY_USAGE_PERIOD, iFpp)
+GO(i2d_POLICYINFO, iFpp)
+GO(i2d_POLICYQUALINFO, iFpp)
 GO(i2d_PrivateKey, iFpp)
 GO(i2d_PrivateKey_bio, iFpp)
 GO(i2d_PrivateKey_fp, iFpp)
-//GO(i2d_PROXY_CERT_INFO_EXTENSION, 
-//GO(i2d_PROXY_POLICY, 
+GO(i2d_PROXY_CERT_INFO_EXTENSION, iFpp)
+GO(i2d_PROXY_POLICY, iFpp)
 GO(i2d_PUBKEY, iFpp)
 GO(i2d_PUBKEY_bio, iFpp)
 GO(i2d_PUBKEY_fp, iFpp)
 //GO(i2d_PublicKey, 
 //GO(i2d_re_X509_tbs, 
-//GO(i2d_RSA_NET, 
-//GO(i2d_RSA_OAEP_PARAMS, 
+GO(i2d_RSA_NET, iFpp)
+GO(i2d_RSA_OAEP_PARAMS, iFpp)
 GO(i2d_RSAPrivateKey, iFpp)
 GO(i2d_RSAPrivateKey_bio, iFpp)
 GO(i2d_RSAPrivateKey_fp, iFpp)
-//GO(i2d_RSA_PSS_PARAMS, 
+GO(i2d_RSA_PSS_PARAMS, iFpp)
 GO(i2d_RSA_PUBKEY, iFpp)
 GO(i2d_RSA_PUBKEY_bio, iFpp)
 GO(i2d_RSA_PUBKEY_fp, iFpp)
 GO(i2d_RSAPublicKey, iFpp)
 GO(i2d_RSAPublicKey_bio, iFpp)
 GO(i2d_RSAPublicKey_fp, iFpp)
-//GO(i2d_SXNET, 
-//GO(i2d_SXNETID, 
-//GO(i2d_TS_ACCURACY, 
+GO(i2d_SXNET, iFpp)
+GO(i2d_SXNETID, iFpp)
+GO(i2d_TS_ACCURACY, iFpp)
 GO(i2d_TS_MSG_IMPRINT, iFpp)
 GO(i2d_TS_MSG_IMPRINT_bio, iFpp)
 GO(i2d_TS_MSG_IMPRINT_fp, iFpp)
@@ -2302,38 +2302,38 @@ GO(i2d_TS_REQ_fp, iFpp)
 GO(i2d_TS_RESP, iFpp)
 GO(i2d_TS_RESP_bio, iFpp)
 GO(i2d_TS_RESP_fp, iFpp)
-//GO(i2d_TS_STATUS_INFO, 
+GO(i2d_TS_STATUS_INFO, iFpp)
 GO(i2d_TS_TST_INFO, iFpp)
 GO(i2d_TS_TST_INFO_bio, iFpp)
 GO(i2d_TS_TST_INFO_fp, iFpp)
-//GO(i2d_USERNOTICE, 
+GO(i2d_USERNOTICE, iFpp)
 GO(i2d_X509, iFpp)
-//GO(i2d_X509_ALGOR, 
-//GO(i2d_X509_ALGORS, 
-//GO(i2d_X509_ATTRIBUTE, 
-//GO(i2d_X509_AUX, 
+GO(i2d_X509_ALGOR, iFpp)
+GO(i2d_X509_ALGORS, iFpp)
+GO(i2d_X509_ATTRIBUTE, iFpp)
+GO(i2d_X509_AUX, iFpp)
 GO(i2d_X509_bio, iFpp)
-//GO(i2d_X509_CERT_AUX, 
-//GO(i2d_X509_CERT_PAIR, 
-//GO(i2d_X509_CINF, 
+GO(i2d_X509_CERT_AUX, iFpp)
+GO(i2d_X509_CERT_PAIR, iFpp)
+GO(i2d_X509_CINF, iFpp)
 GO(i2d_X509_CRL, iFpp)
 GO(i2d_X509_CRL_bio, iFpp)
 GO(i2d_X509_CRL_fp, iFpp)
-//GO(i2d_X509_CRL_INFO, 
-//GO(i2d_X509_EXTENSION, 
-//GO(i2d_X509_EXTENSIONS, 
+GO(i2d_X509_CRL_INFO, iFpp)
+GO(i2d_X509_EXTENSION, iFpp)
+GO(i2d_X509_EXTENSIONS, iFpp)
 GO(i2d_X509_fp, iFpp)
-//GO(i2d_X509_NAME, 
-//GO(i2d_X509_NAME_ENTRY, 
-//GO(i2d_X509_PKEY, 
-//GO(i2d_X509_PUBKEY, 
+GO(i2d_X509_NAME, iFpp)
+GO(i2d_X509_NAME_ENTRY, iFpp)
+GO(i2d_X509_PKEY, iFpp)
+GO(i2d_X509_PUBKEY, iFpp)
 GO(i2d_X509_REQ, iFpp)
 GO(i2d_X509_REQ_bio, iFpp)
 GO(i2d_X509_REQ_fp, iFpp)
-//GO(i2d_X509_REQ_INFO, 
-//GO(i2d_X509_REVOKED, 
-//GO(i2d_X509_SIG, 
-//GO(i2d_X509_VAL, 
+GO(i2d_X509_REQ_INFO, iFpp)
+GO(i2d_X509_REVOKED, iFpp)
+GO(i2d_X509_SIG, iFpp)
+GO(i2d_X509_VAL, iFpp)
 //GO(i2o_ECPublicKey, 
 //GO(i2s_ASN1_ENUMERATED, 
 //GO(i2s_ASN1_ENUMERATED_TABLE, 
@@ -2444,8 +2444,8 @@ GO(MD5_Update, iFppu)
 //GO(NETSCAPE_SPKI_set_pubkey, 
 //GO(NETSCAPE_SPKI_sign, 
 //GO(NETSCAPE_SPKI_verify, 
-//GO(NETSCAPE_X509_free, 
-//GO(NETSCAPE_X509_new, 
+GO(NETSCAPE_X509_free, vFp)
+GO(NETSCAPE_X509_new, pFv)
 //GO(NOTICEREF_free, 
 //GO(NOTICEREF_new, 
 //GO(o2i_ECPublicKey, 
@@ -2487,7 +2487,7 @@ GO(OBJ_txt2obj, pFpi)
 //GO(OCSP_BASICRESP_add1_ext_i2d, 
 //GO(OCSP_BASICRESP_add_ext, 
 //GO(OCSP_BASICRESP_delete_ext, 
-//GO(OCSP_BASICRESP_free, 
+GO(OCSP_BASICRESP_free, vFp)
 //GO(OCSP_BASICRESP_get1_ext_d2i, 
 //GO(OCSP_BASICRESP_get_ext, 
 //GO(OCSP_BASICRESP_get_ext_by_critical, 
@@ -2496,16 +2496,16 @@ GO(OBJ_txt2obj, pFpi)
 //GO(OCSP_BASICRESP_get_ext_count, 
 //GO(OCSP_BASICRESP_new, 
 //GO(OCSP_basic_sign, 
-//GO(OCSP_basic_verify, 
+GO(OCSP_basic_verify, iFpppL)
 //GO(OCSP_CERTID_dup, 
-//GO(OCSP_CERTID_free, 
+GO(OCSP_CERTID_free, vFp)
 //GO(OCSP_cert_id_new, 
 //GO(OCSP_CERTID_new, 
 //GO(OCSP_CERTSTATUS_free, 
 //GO(OCSP_CERTSTATUS_new, 
 //GO(OCSP_cert_status_str, 
-//GO(OCSP_cert_to_id, 
-//GO(OCSP_check_nonce, 
+GO(OCSP_cert_to_id, pFppp)
+GO(OCSP_check_nonce, iFpp)
 //GO(OCSP_check_validity, 
 //GO(OCSP_copy_nonce, 
 //GO(OCSP_CRLID_free, 
@@ -2539,13 +2539,13 @@ GO(OBJ_txt2obj, pFpi)
 //GO(OCSP_REQ_CTX_set1_req, 
 //GO(OCSP_REQINFO_free, 
 //GO(OCSP_REQINFO_new, 
-//GO(OCSP_request_add0_id, 
+GO(OCSP_request_add0_id, pFpp)
 //GO(OCSP_request_add1_cert, 
 //GO(OCSP_REQUEST_add1_ext_i2d, 
-//GO(OCSP_request_add1_nonce, 
+GO(OCSP_request_add1_nonce, iFppi)
 //GO(OCSP_REQUEST_add_ext, 
 //GO(OCSP_REQUEST_delete_ext, 
-//GO(OCSP_REQUEST_free, 
+GO(OCSP_REQUEST_free, vFp)
 //GO(OCSP_REQUEST_get1_ext_d2i, 
 //GO(OCSP_REQUEST_get_ext, 
 //GO(OCSP_REQUEST_get_ext_by_critical, 
@@ -2553,7 +2553,7 @@ GO(OBJ_txt2obj, pFpi)
 //GO(OCSP_REQUEST_get_ext_by_OBJ, 
 //GO(OCSP_REQUEST_get_ext_count, 
 //GO(OCSP_request_is_signed, 
-//GO(OCSP_REQUEST_new, 
+GO(OCSP_REQUEST_new, pFv)
 //GO(OCSP_request_onereq_count, 
 //GO(OCSP_request_onereq_get0, 
 //GO(OCSP_REQUEST_print, 
@@ -2566,14 +2566,14 @@ GO(OBJ_txt2obj, pFpi)
 //GO(OCSP_RESPDATA_free, 
 //GO(OCSP_RESPDATA_new, 
 //GO(OCSP_resp_find, 
-//GO(OCSP_resp_find_status, 
+GO(OCSP_resp_find_status, iFppppppp)
 //GO(OCSP_resp_get0, 
 //GO(OCSP_RESPID_free, 
 //GO(OCSP_RESPID_new, 
 //GO(OCSP_response_create, 
-//GO(OCSP_RESPONSE_free, 
-//GO(OCSP_response_get1_basic, 
-//GO(OCSP_RESPONSE_new, 
+GO(OCSP_RESPONSE_free, vFp)
+GO(OCSP_response_get1_basic, pFp)
+GO(OCSP_RESPONSE_new, pFv)
 //GO(OCSP_RESPONSE_print, 
 //GO(OCSP_response_status, 
 //GO(OCSP_response_status_str, 
@@ -2606,7 +2606,7 @@ GO(OpenSSL_add_all_ciphers, vFv)
 //GO(OpenSSL_add_all_digests, 
 //GO(OPENSSL_asc2uni, 
 //GO(OPENSSL_atomic_add, 
-//GO(OPENSSL_cleanse, 
+GO(OPENSSL_cleanse, vFpL)
 GO(OPENSSL_config, vFp)
 //GO(OPENSSL_cpuid_setup, 
 //GO(OpenSSLDie, 
@@ -2626,6 +2626,13 @@ GO(OPENSSL_init_crypto, iFUp)
 //GO(OPENSSL_memcmp, 
 GO(OPENSSL_no_config, vFv)
 //GO(OPENSSL_rdtsc, 
+GO(OPENSSL_sk_free, vFp)    //1.1+
+GO(OPENSSL_sk_new_null, pFv)    //1.1+
+GO(OPENSSL_sk_num, iFp) //1.1+
+GO(OPENSSL_sk_pop, pFp) //1.1+
+GOM(OPENSSL_sk_pop_free, pFEpp) //1.1+
+GO(OPENSSL_sk_push, iFpp)   //1.1+
+GO(OPENSSL_sk_value, pFpi)  //1.1+
 //GO(OPENSSL_showfatal, 
 //GO(OPENSSL_stderr, 
 //GO(OPENSSL_strcasecmp, 
@@ -2702,7 +2709,7 @@ GOM(PEM_read_bio_ECPrivateKey, pFEpppp)
 GOM(PEM_read_bio_EC_PUBKEY, pFEpppp)
 //GO(PEM_read_bio_NETSCAPE_CERT_SEQUENCE, 
 //GO(PEM_read_bio_Parameters, 
-//GO(PEM_read_bio_PKCS7, 
+GOM(PEM_read_bio_PKCS7, pFEpppp)
 //GO(PEM_read_bio_PKCS8, 
 //GO(PEM_read_bio_PKCS8_PRIV_KEY_INFO, 
 //GO(PEM_read_bio_PrivateKey, 
@@ -2710,11 +2717,11 @@ GOM(PEM_read_bio_EC_PUBKEY, pFEpppp)
 GOM(PEM_read_bio_RSAPrivateKey, pFEpppp)
 GOM(PEM_read_bio_RSA_PUBKEY, pFEpppp)
 //GO(PEM_read_bio_RSAPublicKey, 
-//GO(PEM_read_bio_X509, 
-//GO(PEM_read_bio_X509_AUX, 
-//GO(PEM_read_bio_X509_CERT_PAIR, 
-//GO(PEM_read_bio_X509_CRL, 
-//GO(PEM_read_bio_X509_REQ, 
+GOM(PEM_read_bio_X509, pFEpppp)
+GOM(PEM_read_bio_X509_AUX, pFEpppp)
+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, 
 //GO(PEM_read_DSAparams, 
@@ -2772,7 +2779,7 @@ GO(PEM_write_bio_RSA_PUBKEY, iFpp)
 GO(PEM_write_bio_X509, iFpp)
 GO(PEM_write_bio_X509_AUX, iFpp)
 //GO(PEM_write_bio_X509_CERT_PAIR, 
-//GO(PEM_write_bio_X509_CRL, 
+GO(PEM_write_bio_X509_CRL, iFpp)
 GO(PEM_write_bio_X509_REQ, iFpp)
 //GO(PEM_write_bio_X509_REQ_NEW, 
 //GO(PEM_write_CMS, 
@@ -2818,7 +2825,7 @@ GO(PEM_write_bio_X509_REQ, iFpp)
 //GO(PKCS12_BAGS_new, 
 //GO(PKCS12_certbag2x509, 
 //GO(PKCS12_certbag2x509crl, 
-//GO(PKCS12_create, 
+GO(PKCS12_create, pFppppp)
 //GO(PKCS12_decrypt_skey, 
 GO(PKCS12_free, vFp)
 //GO(PKCS12_gen_mac, 
@@ -2897,7 +2904,7 @@ GO(PKCS12_PBE_keyivgen, iFppipppi)
 //GO(PKCS7_ENVELOPE_free, 
 //GO(PKCS7_ENVELOPE_new, 
 //GO(PKCS7_final, 
-//GO(PKCS7_free, 
+GO(PKCS7_free, vFp)
 //GO(PKCS7_get0_signers, 
 //GO(PKCS7_get_attribute, 
 //GO(PKCS7_get_issuer_and_serial, 
@@ -2920,9 +2927,9 @@ GO(PKCS12_PBE_keyivgen, iFppipppi)
 //GO(PKCS7_set_digest, 
 //GO(PKCS7_set_signed_attributes, 
 //GO(PKCS7_set_type, 
-//GO(PKCS7_sign, 
-//GO(PKCS7_sign_add_signer, 
-//GO(PKCS7_signatureVerify, 
+GO(PKCS7_sign, pFppppi)
+GO(PKCS7_sign_add_signer, pFppppi)
+GO(PKCS7_signatureVerify, iFpppp)
 //GO(PKCS7_SIGNED_free, 
 //GO(PKCS7_SIGNED_new, 
 //GO(PKCS7_SIGN_ENVELOPE_free, 
@@ -2989,13 +2996,13 @@ GO(RAND_egd_bytes, iFpi)
 GO(RAND_file_name, pFpL)
 //GO(RAND_get_rand_method, 
 GO(RAND_load_file, iFpl)
-//GO(RAND_poll, 
+GO(RAND_poll, iFv)
 GO(RAND_pseudo_bytes, iFpi)
 GO(RAND_query_egd_bytes, iFppi)
 GO(RAND_seed, vFpi)
 //GO(RAND_set_rand_engine, 
 //GO(RAND_set_rand_method, 
-//GO(RAND_SSLeay, 
+GO(RAND_SSLeay, pFv)
 GO(RAND_status, iFv)
 GO(RAND_write_file, iFp)
 //GO(RC2_cbc_encrypt, 
@@ -3016,18 +3023,18 @@ GO(RAND_write_file, iFp)
 //GO(RIPEMD160_Update, 
 //GO(RSA_blinding_off, 
 //GO(RSA_blinding_on, 
-//GO(RSA_check_key, 
+GO(RSA_check_key, iFp)
 //GO(RSA_flags, 
 GO(RSA_free, vFp)
 //GO(RSA_generate_key, 
-//GO(RSA_generate_key_ex, 
+GO(RSA_generate_key_ex, iFpipp)
 //GO(RSA_get_default_method, 
 //GO(RSA_get_ex_data, 
 //GO(RSA_get_ex_new_index, 
-//GO(RSA_get_method, 
+GO(RSA_get_method, pFp)
 //GO(RSA_memory_lock, 
 GO(RSA_new, pFv)
-//GO(RSA_new_method, 
+GO(RSA_new_method, pFp)
 //GO(RSA_null_method, 
 //GO(RSA_OAEP_PARAMS_free, 
 //GO(RSA_OAEP_PARAMS_new, 
@@ -3047,29 +3054,30 @@ GO(RSA_new, pFv)
 //GO(RSA_padding_check_PKCS1_type_2, 
 //GO(RSA_padding_check_SSLv23, 
 //GO(RSA_padding_check_X931, 
-//GO(RSA_PKCS1_SSLeay, 
+GO(RSA_PKCS1_OpenSSL, pFv)
+GO(RSA_PKCS1_SSLeay, pFv)
 //GO(RSA_print, 
 //GO(RSA_print_fp, 
-//GO(RSA_private_decrypt, 
-//GO(RSA_private_encrypt, 
+GO(RSA_private_decrypt, iFipppi)
+GO(RSA_private_encrypt, iFipppi)
 //GO(RSAPrivateKey_dup, 
 //GO(RSA_PSS_PARAMS_free, 
 //GO(RSA_PSS_PARAMS_new, 
-//GO(RSA_public_decrypt, 
-//GO(RSA_public_encrypt, 
+GO(RSA_public_decrypt, iFipppi)
+GO(RSA_public_encrypt, iFipppi)
 //GO(RSAPublicKey_dup, 
 //GO(RSA_set_default_method, 
 //GO(RSA_set_ex_data, 
-//GO(RSA_set_method, 
+GO(RSA_set_method, iFpp)
 //GO(RSA_setup_blinding, 
 GO(RSA_sign, iFipuppp)
-//GO(RSA_sign_ASN1_OCTET_STRING, 
+GO(RSA_sign_ASN1_OCTET_STRING, iFipuppp)
 GO(RSA_size, iFp)
-//GO(RSA_up_ref, 
+GO(RSA_up_ref, iFp)
 GO(RSA_verify, iFipupup)
-//GO(RSA_verify_ASN1_OCTET_STRING, 
-//GO(RSA_verify_PKCS1_PSS, 
-//GO(RSA_verify_PKCS1_PSS_mgf1, 
+GO(RSA_verify_ASN1_OCTET_STRING, iFipupup)
+GO(RSA_verify_PKCS1_PSS, iFppppi)
+GO(RSA_verify_PKCS1_PSS_mgf1, iFpppppi)
 //GO(RSA_X931_hash_id, 
 //GO(s2i_ASN1_INTEGER, 
 //GO(s2i_ASN1_OCTET_STRING, 
@@ -3435,13 +3443,13 @@ GO(X509_add1_ext_i2d, iFpipiL)
 //GO(X509_check_ip_asc, 
 GO(X509_check_issued, iFpp)
 //GO(X509_check_private_key, 
-//GO(X509_check_purpose, 
+GO(X509_check_purpose, iFpii)
 //GO(X509_check_trust, 
 //GO(X509_CINF_free, 
 //GO(X509_CINF_new, 
 GO(X509_cmp, iFpp)
-//GO(X509_cmp_current_time, 
-//GO(X509_cmp_time, 
+GO(X509_cmp_current_time, iFp)
+GO(X509_cmp_time, iFpp)
 //GO(X509_CRL_add0_revoked, 
 GO(X509_CRL_add1_ext_i2d, iFpipiL)
 //GO(X509_CRL_add_ext, 
@@ -3451,7 +3459,7 @@ GO(X509_CRL_add1_ext_i2d, iFpipiL)
 //GO(X509_CRL_diff, 
 //GO(X509_CRL_digest, 
 //GO(X509_CRL_dup, 
-//GO(X509_CRL_free, 
+GO(X509_CRL_free, vFp)
 //GO(X509_CRL_get0_by_cert, 
 //GO(X509_CRL_get0_by_serial, 
 //GO(X509_CRL_get_ext, 
@@ -3481,13 +3489,13 @@ GO(X509_CRL_set_issuer_name, iFpp)
 //GO(X509_CRL_sort, 
 //GO(X509_CRL_verify, 
 //GO(X509_delete_ext, 
-//GO(X509_digest, 
+GO(X509_digest, iFpppp)
 GO(X509_dup, pFp)
 //GO(X509_email_free, 
 GO(X509_EXTENSION_create_by_NID, pFpiip)
 GO(X509_EXTENSION_create_by_OBJ, pFppip)
 //GO(X509_EXTENSION_dup, 
-//GO(X509_EXTENSION_free, 
+GO(X509_EXTENSION_free, vFp)
 GO(X509_EXTENSION_get_critical, iFp)
 GO(X509_EXTENSION_get_data, pFp)
 GO(X509_EXTENSION_get_object, pFp)
@@ -3503,17 +3511,17 @@ GO(X509_free, vFp)
 //GO(X509_get1_email, 
 //GO(X509_get1_ocsp, 
 //GO(X509_get_default_cert_area, 
-//GO(X509_get_default_cert_dir, 
-//GO(X509_get_default_cert_dir_env, 
-//GO(X509_get_default_cert_file, 
-//GO(X509_get_default_cert_file_env, 
+GO(X509_get_default_cert_dir, pFv)
+GO(X509_get_default_cert_dir_env, pFv)
+GO(X509_get_default_cert_file, pFv)
+GO(X509_get_default_cert_file_env, pFv)
 //GO(X509_get_default_private_dir, 
 //GO(X509_get_ex_data, 
 //GO(X509_get_ex_new_index, 
 GO(X509_get_ext, pFpi)
-//GO(X509_get_ext_by_critical, 
-//GO(X509_get_ext_by_NID, 
-//GO(X509_get_ext_by_OBJ, 
+GO(X509_get_ext_by_critical, iFpii)
+GO(X509_get_ext_by_NID, iFpii)
+GO(X509_get_ext_by_OBJ, iFppi)
 GO(X509_get_ext_count, iFp)
 GO(X509_get_ext_d2i, pFpipp)
 GO(X509_get_issuer_name, pFp)
@@ -3532,8 +3540,8 @@ GO(X509_get0_pubkey, pFp)
 //GO(X509_issuer_and_serial_cmp, 
 //GO(X509_issuer_and_serial_hash, 
 //GO(X509_issuer_name_cmp, 
-//GO(X509_issuer_name_hash, 
-//GO(X509_issuer_name_hash_old, 
+GO(X509_issuer_name_hash, LFp)
+GO(X509_issuer_name_hash_old, LFp)
 //GO(X509_keyid_get0, 
 //GO(X509_keyid_set1, 
 GO(X509_load_cert_crl_file, iFppi)
@@ -3553,7 +3561,7 @@ GO(X509_LOOKUP_hash_dir, pFv)
 //GO(X509_NAME_add_entry, 
 //GO(X509_NAME_add_entry_by_NID, 
 //GO(X509_NAME_add_entry_by_OBJ, 
-//GO(X509_NAME_add_entry_by_txt, 
+GO(X509_NAME_add_entry_by_txt, iFppipiii)
 //GO(X509_NAME_cmp, 
 //GO(X509_NAME_delete_entry, 
 //GO(X509_NAME_digest, 
@@ -3569,7 +3577,7 @@ GO(X509_NAME_ENTRY_get_object, pFp)
 //GO(X509_NAME_ENTRY_new, 
 GO(X509_NAME_ENTRY_set_data, iFpipi)
 GO(X509_NAME_ENTRY_set_object, iFpp)
-//GO(X509_NAME_free, 
+GO(X509_NAME_free, vFp)
 GO(X509_NAME_get_entry, pFpi)
 GO(X509_NAME_get_index_by_NID, iFpii)
 GO(X509_NAME_get_index_by_OBJ, iFppi)
@@ -3611,7 +3619,7 @@ GO(X509_print_fp, iFpp)
 //GO(X509_pubkey_digest, 
 //GO(X509_PUBKEY_free, 
 GO(X509_PUBKEY_get, pFp)
-//GO(X509_PUBKEY_get0_param, 
+GO(X509_PUBKEY_get0_param, iFppppp)
 //GO(X509_PUBKEY_new, 
 //GO(X509_PUBKEY_set, 
 //GO(X509_PUBKEY_set0_param, 
@@ -3686,10 +3694,10 @@ GO(X509_set_serialNumber, iFpp)
 GO(X509_set_subject_name, iFpp)
 //GO(X509_set_version, 
 //GO(X509_SIG_free, 
-//GO(X509_sign, 
-//GO(X509_signature_dump, 
-//GO(X509_signature_print, 
-//GO(X509_sign_ctx, 
+GO(X509_sign, iFppp)
+GO(X509_signature_dump, iFppi)
+GO(X509_signature_print, iFppp)
+GO(X509_sign_ctx, iFpp)
 //GO(X509_SIG_new, 
 GO(X509_STORE_add_cert, iFpp)
 GO(X509_STORE_add_crl, iFpp)
@@ -3698,12 +3706,12 @@ GO(X509_STORE_CTX_cleanup, vFp)
 GO(X509_STORE_CTX_free, vFp)
 //GO(X509_STORE_CTX_get0_current_crl, 
 //GO(X509_STORE_CTX_get0_current_issuer, 
-//GO(X509_STORE_CTX_get0_param, 
+GO(X509_STORE_CTX_get0_param, pFp)
 //GO(X509_STORE_CTX_get0_parent_ctx, 
 //GO(X509_STORE_CTX_get0_policy_tree, 
 //GO(X509_STORE_CTX_get0_store, 
 GO(X509_STORE_CTX_get1_chain, pFp)
-//GO(X509_STORE_CTX_get1_issuer, 
+GO(X509_STORE_CTX_get1_issuer, iFppp)
 GO(X509_STORE_CTX_get_chain, pFp)
 GO(X509_STORE_CTX_get_current_cert, pFp)
 GO(X509_STORE_CTX_get_error, iFp)
@@ -3724,11 +3732,11 @@ GO(X509_STORE_CTX_set_default, iFp)
 GO(X509_STORE_CTX_set_error, vFpi)
 GO(X509_STORE_CTX_set_error_depth, vFpi)
 //GO(X509_STORE_CTX_set_ex_data, 
-//GO(X509_STORE_CTX_set_flags, 
+GO(X509_STORE_CTX_set_flags, vFpL)
 GO(X509_STORE_CTX_set_purpose, iFpi)
 //GO(X509_STORE_CTX_set_time, 
 //GO(X509_STORE_CTX_set_trust, 
-//GO(X509_STORE_CTX_set_verify_cb, 
+GOM(X509_STORE_CTX_set_verify_cb, vFEpp)
 //GO(X509_STORE_CTX_trusted_stack, 
 GO(X509_STORE_free, vFp)
 //GO(X509_STORE_get1_certs, 
@@ -3748,8 +3756,8 @@ GO(X509_STORE_set_purpose, iFpi)
 GO(X509_STORE_set_trust, iFpi)
 //GO(X509_STORE_set_verify_cb, 
 //GO(X509_subject_name_cmp, 
-//GO(X509_subject_name_hash, 
-//GO(X509_subject_name_hash_old, 
+GO(X509_subject_name_hash, LFp)
+GO(X509_subject_name_hash_old, LFp)
 //GO(X509_supported_extension, 
 //GO(X509_time_adj, 
 //GO(X509_time_adj_ex, 
@@ -3824,14 +3832,14 @@ GO(X509_verify_cert_error_string, pFl)
 //GO(X509_VERIFY_PARAM_add0_policy, 
 //GO(X509_VERIFY_PARAM_add0_table, 
 //GO(X509_VERIFY_PARAM_add1_host, 
-//GO(X509_VERIFY_PARAM_clear_flags, 
+GO(X509_VERIFY_PARAM_clear_flags, iFpL)
 //GO(X509_VERIFY_PARAM_free, 
 //GO(X509_VERIFY_PARAM_get0, 
 //GO(X509_VERIFY_PARAM_get0_name, 
 //GO(X509_VERIFY_PARAM_get0_peername, 
 //GO(X509_VERIFY_PARAM_get_count, 
 //GO(X509_VERIFY_PARAM_get_depth, 
-//GO(X509_VERIFY_PARAM_get_flags, 
+GO(X509_VERIFY_PARAM_get_flags, LFp)
 //GO(X509_VERIFY_PARAM_inherit, 
 //GO(X509_VERIFY_PARAM_lookup, 
 //GO(X509_VERIFY_PARAM_new, 
@@ -3846,7 +3854,7 @@ GO(X509_verify_cert_error_string, pFl)
 //GO(X509_VERIFY_PARAM_set_flags, 
 //GO(X509_VERIFY_PARAM_set_hostflags, 
 //GO(X509_VERIFY_PARAM_set_purpose, 
-//GO(X509_VERIFY_PARAM_set_time, 
+GO(X509_VERIFY_PARAM_set_time, vFpl)
 //GO(X509_VERIFY_PARAM_set_trust, 
 //GO(X509_VERIFY_PARAM_table_cleanup, 
 //GO(X9_62_CHARACTERISTIC_TWO_free, 
diff --git a/src/wrapped/wrappedlibssl.c b/src/wrapped/wrappedlibssl.c
index 40ca1a7f..48dae430 100755
--- a/src/wrapped/wrappedlibssl.c
+++ b/src/wrapped/wrappedlibssl.c
@@ -237,6 +237,30 @@ static void* find_proto_select_Fct(void* fct)
     return NULL;
 }
 
+// client_cert
+#define GO(A)   \
+static uintptr_t my_client_cert_fct_##A = 0;                                    \
+static int my_client_cert_##A(void* a, void* b, void* c)                        \
+{                                                                               \
+    return (int)RunFunction(my_context, my_client_cert_fct_##A, 3, a, b, c);    \
+}
+SUPER()
+#undef GO
+static void* find_client_cert_Fct(void* fct)
+{
+    if(!fct) return NULL;
+    void* p;
+    if((p = GetNativeFnc((uintptr_t)fct))) return p;
+    #define GO(A) if(my_client_cert_fct_##A == (uintptr_t)fct) return my_client_cert_##A;
+    SUPER()
+    #undef GO
+    #define GO(A) if(my_client_cert_fct_##A == 0) {my_client_cert_fct_##A = (uintptr_t)fct; return my_client_cert_##A; }
+    SUPER()
+    #undef GO
+    printf_log(LOG_NONE, "Warning, no more slot for libSSL client_cert callback\n");
+    return NULL;
+}
+
 #undef SUPER
 
 EXPORT void my_SSL_CTX_set_default_passwd_cb(x64emu_t* emu, void* ctx, void* cb)
@@ -293,8 +317,21 @@ EXPORT void* my_SSL_get_verify_callback(x64emu_t* emu, void* ctx)
     return reverse_verify_Fct(my->SSL_get_verify_callback(ctx));
 }
 
+EXPORT void my_SSL_CTX_set_cert_verify_callback(x64emu_t* emu, void* ctx, void* cb, void* arg)
+{
+    (void)emu;
+    my->SSL_CTX_set_cert_verify_callback(ctx, find_verify_Fct(cb), arg);
+}
+
+EXPORT void my_SSL_CTX_set_client_cert_cb(x64emu_t* emu, void* ctx, void* cb)
+{
+    (void)emu;
+    my->SSL_CTX_set_client_cert_cb(ctx, find_client_cert_Fct(cb));
+}
+
 #define CUSTOM_INIT \
-    getMy(lib);
+    getMy(lib);     \
+    setNeededLibs(lib, 2, "libcrypto.so.1.1", "libpthread.so.0");
 
 #define CUSTOM_FINI \
     freeMy();
diff --git a/src/wrapped/wrappedlibssl_private.h b/src/wrapped/wrappedlibssl_private.h
index 4466e23f..755854d7 100755
--- a/src/wrapped/wrappedlibssl_private.h
+++ b/src/wrapped/wrappedlibssl_private.h
@@ -228,7 +228,7 @@ GO(SSL_CIPHER_description, pFppi)
 GO(SSL_CIPHER_get_bits, iFpp)
 //GO(ssl_cipher_get_cert_index, 
 //GO(ssl_cipher_get_evp, 
-//GO(SSL_CIPHER_get_id, 
+GO(SSL_CIPHER_get_id, uFp)
 GO(SSL_CIPHER_get_name, pFp)
 GO(SSL_CIPHER_get_version, pFp)
 //GO(ssl_cipher_id_cmp, 
@@ -298,10 +298,10 @@ GO(SSL_CTX_new, pFp)
 //GO(SSL_CTX_set_alpn_select_cb, 
 //GO(SSL_CTX_set_cert_cb, 
 GO(SSL_CTX_set_cert_store, vFpp)
-//GO(SSL_CTX_set_cert_verify_callback, 
+GOM(SSL_CTX_set_cert_verify_callback, vFEppp)
 GO(SSL_CTX_set_cipher_list, iFpp)
 GO(SSL_CTX_set_client_CA_list, vFpp)
-//GO(SSL_CTX_set_client_cert_cb, 
+GOM(SSL_CTX_set_client_cert_cb, vFEpp)
 //GO(SSL_CTX_set_client_cert_engine, 
 //GO(SSL_CTX_set_cookie_generate_cb, 
 //GO(SSL_CTX_set_cookie_verify_cb, 
@@ -318,7 +318,7 @@ GO(SSL_CTX_set_options, lFpl)
 //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, 
+GO(SSL_CTX_set_quiet_shutdown, vFpi)
 //GO(SSL_CTX_set_session_id_context, 
 //GO(SSL_CTX_set_srp_cb_arg, 
 //GO(SSL_CTX_set_srp_client_pwd_callback, 
@@ -352,7 +352,7 @@ GO(SSL_CTX_use_RSAPrivateKey_file, iFppi)
 //GO(SSL_CTX_use_serverinfo, 
 //GO(SSL_CTX_use_serverinfo_file, 
 //GO(ssl_do_client_cert_cb, 
-//GO(SSL_do_handshake, 
+GO(SSL_do_handshake, iFp)
 //GO(SSL_dup, 
 //GO(SSL_dup_CA_list, 
 //GO(SSL_export_keying_material, 
@@ -371,7 +371,7 @@ GO(SSL_get_certificate, pFp)
 //GO(SSL_get_cipher_list, 
 GO(SSL_get_ciphers, pFp)
 //GO(ssl_get_ciphers_by_id, 
-//GO(SSL_get_client_CA_list, 
+GO(SSL_get_client_CA_list, pFp)
 GO(SSL_get_current_cipher, pFp)
 //GO(SSL_get_current_compression, 
 //GO(SSL_get_current_expansion, 
@@ -381,13 +381,13 @@ GO(SSL_get_ex_data, pFpi)
 GO(SSL_get_ex_data_X509_STORE_CTX_idx, iFv)
 GOM(SSL_get_ex_new_index, iFElpppp)
 //GO(SSL_get_fd, 
-//GO(SSL_get_finished, 
+GO(SSL_get_finished, LFppL)
 //GO(ssl_get_handshake_digest, 
 //GO(SSL_get_info_callback, 
 //GO(ssl_get_new_session, 
 GO(SSL_get_peer_cert_chain, pFp)
 GO(SSL_get_peer_certificate, pFp)
-//GO(SSL_get_peer_finished, 
+GO(SSL_get_peer_finished, LFppL)
 //GO(ssl_get_prev_session, 
 GO(SSL_get_privatekey, pFp)
 //GO(SSL_get_psk_identity, 
@@ -412,13 +412,13 @@ GO(SSL_get_shutdown, iFp)
 //GO(SSL_get_srp_userinfo, 
 //GO(SSL_get_srp_username, 
 //GO(SSL_get_srtp_profiles, 
-//GO(SSL_get_SSL_CTX, 
+GO(SSL_get_SSL_CTX, pFp)
 //GO(SSL_get_ssl_method, 
 GOM(SSL_get_verify_callback, pFEp)
 GO(SSL_get_verify_depth, iFp)
 GO(SSL_get_verify_mode, iFp)
 GO(SSL_get_verify_result, iFp)
-//GO(SSL_get_version, 
+GO(SSL_get_version, pFp)
 //GO(SSL_get_wbio, 
 //GO(SSL_get_wfd, 
 //GO(SSL_has_matching_session_id, 
@@ -443,7 +443,7 @@ GO(SSL_pending, iFp)
 GO(SSL_read, iFppi)
 //GO(SSL_renegotiate, 
 //GO(SSL_renegotiate_abbreviated, 
-//GO(SSL_renegotiate_pending, 
+GO(SSL_renegotiate_pending, iFp)
 //GO(ssl_replace_hash, 
 //GO(SSL_rstate_string, 
 //GO(SSL_rstate_string_long, 
@@ -488,7 +488,7 @@ GO(SSL_set_fd, iFpi)
 GOM(SSL_set_psk_client_callback, vFEpp)
 //GO(SSL_set_psk_server_callback, 
 //GO(SSL_set_purpose, 
-//GO(SSL_set_quiet_shutdown, 
+GO(SSL_set_quiet_shutdown, vFpi)
 //GO(SSL_set_read_ahead, 
 GO(SSL_set_rfd, iFpi)
 GO(SSL_set_session, iFpp)
@@ -515,7 +515,7 @@ GO(SSL_shutdown, iFp)
 //GO(SSL_SRP_CTX_free, 
 //GO(SSL_SRP_CTX_init, 
 //GO(SSL_srp_server_param_with_username, 
-//GO(SSL_state, 
+GO(SSL_state, iFp)
 //GO(SSL_state_string, 
 //GO(SSL_state_string_long, 
 //GO(ssl_undefined_const_function, 
diff --git a/src/wrapped/wrappedlibx11_private.h b/src/wrapped/wrappedlibx11_private.h
index 6e93ee22..bd82eb61 100755
--- a/src/wrapped/wrappedlibx11_private.h
+++ b/src/wrapped/wrappedlibx11_private.h
@@ -41,7 +41,7 @@ GO(XAllocSizeHints, pFv)
 GO(XAllocWMHints, pFv)
 GO(XAllowEvents, iFpiL)
 GO(XAllPlanes, LFv)
-// _XAsyncErrorHandler
+GO(_XAsyncErrorHandler, iFpppip)
 GO(XAutoRepeatOff, iFp)
 GO(XAutoRepeatOn, iFp)
 GO(XBaseFontNameListOfFontSet, pFp)