about summary refs log tree commit diff stats
path: root/src
diff options
context:
space:
mode:
authorptitSeb <sebastien.chev@gmail.com>2024-10-25 17:25:01 +0200
committerptitSeb <sebastien.chev@gmail.com>2024-10-25 17:25:01 +0200
commit138a021fadb78ad3fe5b17f74ec87cbdadf647b9 (patch)
treebecd371829c4ca32d158ef65f205578a94aadb3d /src
parentbdf0e95a12773d5c2137df80af8c144709aae693 (diff)
downloadbox64-138a021fadb78ad3fe5b17f74ec87cbdadf647b9.tar.gz
box64-138a021fadb78ad3fe5b17f74ec87cbdadf647b9.zip
[WRAPPER] Added some ssl3 and crypto3 wrapped functions (for #1860)
Diffstat (limited to 'src')
-rw-r--r--src/wrapped/generated/functions_list.txt6
-rw-r--r--src/wrapped/generated/wrappedlibssl3types.h6
-rw-r--r--src/wrapped/wrappedcrypto3_private.h10
-rw-r--r--src/wrapped/wrappedlibssl3.c168
-rw-r--r--src/wrapped/wrappedlibssl3_private.h19
5 files changed, 199 insertions, 10 deletions
diff --git a/src/wrapped/generated/functions_list.txt b/src/wrapped/generated/functions_list.txt
index aace6c4b..a6548dcd 100644
--- a/src/wrapped/generated/functions_list.txt
+++ b/src/wrapped/generated/functions_list.txt
@@ -5063,12 +5063,18 @@ wrappedlibssl3:
   - SSL_CTX_get_verify_callback
   - SSL_get_verify_callback
 - vFpp:
+  - SSL_CTX_sess_set_new_cb
   - SSL_CTX_set_client_cert_cb
+  - SSL_CTX_set_cookie_generate_cb
+  - SSL_CTX_set_cookie_verify_cb
   - SSL_CTX_set_default_passwd_cb
   - SSL_CTX_set_keylog_callback
   - SSL_CTX_set_msg_callback
+  - SSL_set_info_callback
   - SSL_set_msg_callback
   - SSL_set_psk_client_callback
+  - SSL_set_psk_server_callback
+  - SSL_set_psk_use_session_callback
 - vFpip:
   - SSL_CTX_set_verify
   - SSL_set_verify
diff --git a/src/wrapped/generated/wrappedlibssl3types.h b/src/wrapped/generated/wrappedlibssl3types.h
index 8062a31a..ae0b252e 100644
--- a/src/wrapped/generated/wrappedlibssl3types.h
+++ b/src/wrapped/generated/wrappedlibssl3types.h
@@ -22,12 +22,18 @@ typedef int32_t (*iFlpppp_t)(intptr_t, void*, void*, void*, void*);
 	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_sess_set_new_cb, vFpp_t) \
 	GO(SSL_CTX_set_client_cert_cb, vFpp_t) \
+	GO(SSL_CTX_set_cookie_generate_cb, vFpp_t) \
+	GO(SSL_CTX_set_cookie_verify_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_info_callback, vFpp_t) \
 	GO(SSL_set_msg_callback, vFpp_t) \
 	GO(SSL_set_psk_client_callback, vFpp_t) \
+	GO(SSL_set_psk_server_callback, vFpp_t) \
+	GO(SSL_set_psk_use_session_callback, vFpp_t) \
 	GO(SSL_CTX_set_verify, vFpip_t) \
 	GO(SSL_set_verify, vFpip_t) \
 	GO(SSL_CTX_set_alpn_select_cb, vFppp_t) \
diff --git a/src/wrapped/wrappedcrypto3_private.h b/src/wrapped/wrappedcrypto3_private.h
index 9b4d5cff..534b5956 100644
--- a/src/wrapped/wrappedcrypto3_private.h
+++ b/src/wrapped/wrappedcrypto3_private.h
@@ -218,6 +218,7 @@ GO(ASN1_TYPE_set, vFpip)
 GO(ASN1_TYPE_set1, iFpip)
 GO(ASN1_TYPE_set_int_octetstring, iFplpi)
 GO(ASN1_TYPE_set_octetstring, iFppi)
+GO(ASN1_TIME_to_tm, iFpp)
 GO(ASN1_UNIVERSALSTRING_free, vFp)
 GO(ASN1_UNIVERSALSTRING_new, pFv)
 GO(ASN1_UNIVERSALSTRING_to_string, iFp)
@@ -1150,6 +1151,7 @@ GO(DES_set_odd_parity, vFp)
 GO(DES_string_to_2keys, vFppp)
 GO(DES_string_to_key, vFpp)
 GO(DES_xcbc_encrypt, vFpplppppi)
+GO(DH_bits, iFp)
 //GO(DH_check, 
 //GO(DH_check_pub_key, 
 //GO(DH_compute_key, 
@@ -1185,6 +1187,7 @@ GO(DISPLAYTEXT_new, pFv)
 //GO(DIST_POINT_NAME_new, 
 //GO(DIST_POINT_new, 
 //GO(DIST_POINT_set_dpname, 
+GO(DSA_bits, iFp)
 //GO(dsa_builtin_paramgen, 
 //GO(dsa_builtin_paramgen2, 
 //GO(DSA_do_sign, 
@@ -3081,6 +3084,7 @@ GO(RAND_write_file, iFp)
 //GO(RIPEMD160_Init, 
 //GO(RIPEMD160_Transform, 
 //GO(RIPEMD160_Update, 
+GO(RSA_bits, iFp)
 //GO(RSA_blinding_off, 
 //GO(RSA_blinding_on, 
 GO(RSA_check_key, iFp)
@@ -3585,7 +3589,9 @@ GO(X509_get_serialNumber, pFp)
 GO(X509_get_subject_name, pFp)
 GO(X509_get_version, lFp)
 GO(X509_get_X509_PUBKEY, pFp)
-//GO(X509_gmtime_adj, 
+GO(X509_getm_notAfter, pFp)
+GO(X509_getm_notBefore, pFp)
+GO(X509_gmtime_adj, pFpl)
 //GO(X509_http_nbio, 
 GO(X509_INFO_free, vFp)
 GO(X509_INFO_new, pFv)
@@ -3777,7 +3783,7 @@ GO(X509_STORE_CTX_get_chain, pFp)
 GO(X509_STORE_CTX_get_current_cert, pFp)
 GO(X509_STORE_CTX_get_error, iFp)
 GO(X509_STORE_CTX_get_error_depth, iFp)
-//GO(X509_STORE_CTX_get_ex_data, 
+GO(X509_STORE_CTX_get_ex_data, pFpi)
 //GO(X509_STORE_CTX_get_ex_new_index, 
 //GO(X509_STORE_CTX_get_explicit_policy, 
 GO(X509_STORE_CTX_init, iFpppp)
diff --git a/src/wrapped/wrappedlibssl3.c b/src/wrapped/wrappedlibssl3.c
index 4c75d921..15a4fd4f 100644
--- a/src/wrapped/wrappedlibssl3.c
+++ b/src/wrapped/wrappedlibssl3.c
@@ -338,6 +338,144 @@ static void* find_msg_cb_Fct(void* fct)
     printf_log(LOG_NONE, "Warning, no more slot for libSSL msg_cb callback\n");
     return NULL;
 }
+// info_cb
+#define GO(A)   \
+static uintptr_t my3_info_cb_fct_##A = 0;                   \
+static void my3_info_cb_##A(void* a, int b, int c)          \
+{                                                           \
+    RunFunctionFmt(my3_info_cb_fct_##A, "pii", a, b, c);    \
+}
+SUPER()
+#undef GO
+static void* find_info_cb_Fct(void* fct)
+{
+    if(!fct) return NULL;
+    void* p;
+    if((p = GetNativeFnc((uintptr_t)fct))) return p;
+    #define GO(A) if(my3_info_cb_fct_##A == (uintptr_t)fct) return my3_info_cb_##A;
+    SUPER()
+    #undef GO
+    #define GO(A) if(my3_info_cb_fct_##A == 0) {my3_info_cb_fct_##A = (uintptr_t)fct; return my3_info_cb_##A; }
+    SUPER()
+    #undef GO
+    printf_log(LOG_NONE, "Warning, no more slot for libSSL info_cb callback\n");
+    return NULL;
+}
+// new_seesion_cb
+#define GO(A)   \
+static uintptr_t my_new_seesion_cb_fct_##A = 0;                         \
+static int my_new_seesion_cb_##A(void* a, void* b)                      \
+{                                                                       \
+    return (int)RunFunctionFmt(my_new_seesion_cb_fct_##A, "pp", a, b);  \
+}
+SUPER()
+#undef GO
+static void* find_new_seesion_cb_Fct(void* fct)
+{
+    if(!fct) return NULL;
+    void* p;
+    if((p = GetNativeFnc((uintptr_t)fct))) return p;
+    #define GO(A) if(my_new_seesion_cb_fct_##A == (uintptr_t)fct) return my_new_seesion_cb_##A;
+    SUPER()
+    #undef GO
+    #define GO(A) if(my_new_seesion_cb_fct_##A == 0) {my_new_seesion_cb_fct_##A = (uintptr_t)fct; return my_new_seesion_cb_##A; }
+    SUPER()
+    #undef GO
+    printf_log(LOG_NONE, "Warning, no more slot for ssl3 new_seesion_cb callback\n");
+    return NULL;
+}
+// psk_use_session_cb
+#define GO(A)   \
+static uintptr_t my_psk_use_session_cb_fct_##A = 0;                                     \
+static int my_psk_use_session_cb_##A(void* a, void* b, void* c, void* d, void* e)       \
+{                                                                                       \
+    return (int)RunFunctionFmt(my_psk_use_session_cb_fct_##A, "ppppp", a, b, c, d, e);  \
+}
+SUPER()
+#undef GO
+static void* find_psk_use_session_cb_Fct(void* fct)
+{
+    if(!fct) return NULL;
+    void* p;
+    if((p = GetNativeFnc((uintptr_t)fct))) return p;
+    #define GO(A) if(my_psk_use_session_cb_fct_##A == (uintptr_t)fct) return my_psk_use_session_cb_##A;
+    SUPER()
+    #undef GO
+    #define GO(A) if(my_psk_use_session_cb_fct_##A == 0) {my_psk_use_session_cb_fct_##A = (uintptr_t)fct; return my_psk_use_session_cb_##A; }
+    SUPER()
+    #undef GO
+    printf_log(LOG_NONE, "Warning, no more slot for ssl3 psk_use_session_cb callback\n");
+    return NULL;
+}
+// app_verify_cookie_cb
+#define GO(A)   \
+static uintptr_t my_app_verify_cookie_cb_fct_##A = 0;                               \
+static int my_app_verify_cookie_cb_##A(void* a, void* b, uint32_t c)                \
+{                                                                                   \
+    return (int)RunFunctionFmt(my_app_verify_cookie_cb_fct_##A, "ppu", a, b, c);    \
+}
+SUPER()
+#undef GO
+static void* find_app_verify_cookie_cb_Fct(void* fct)
+{
+    if(!fct) return NULL;
+    void* p;
+    if((p = GetNativeFnc((uintptr_t)fct))) return p;
+    #define GO(A) if(my_app_verify_cookie_cb_fct_##A == (uintptr_t)fct) return my_app_verify_cookie_cb_##A;
+    SUPER()
+    #undef GO
+    #define GO(A) if(my_app_verify_cookie_cb_fct_##A == 0) {my_app_verify_cookie_cb_fct_##A = (uintptr_t)fct; return my_app_verify_cookie_cb_##A; }
+    SUPER()
+    #undef GO
+    printf_log(LOG_NONE, "Warning, no more slot for ssl3 app_verify_cookie_cb callback\n");
+    return NULL;
+}
+// set_cookie_generate_cb
+#define GO(A)   \
+static uintptr_t my_set_cookie_generate_cb_fct_##A = 0;                             \
+static int my_set_cookie_generate_cb_##A(void* a, void* b, void* c)                 \
+{                                                                                   \
+    return (int)RunFunctionFmt(my_set_cookie_generate_cb_fct_##A, "ppp", a, b, c);  \
+}
+SUPER()
+#undef GO
+static void* find_set_cookie_generate_cb_Fct(void* fct)
+{
+    if(!fct) return NULL;
+    void* p;
+    if((p = GetNativeFnc((uintptr_t)fct))) return p;
+    #define GO(A) if(my_set_cookie_generate_cb_fct_##A == (uintptr_t)fct) return my_set_cookie_generate_cb_##A;
+    SUPER()
+    #undef GO
+    #define GO(A) if(my_set_cookie_generate_cb_fct_##A == 0) {my_set_cookie_generate_cb_fct_##A = (uintptr_t)fct; return my_set_cookie_generate_cb_##A; }
+    SUPER()
+    #undef GO
+    printf_log(LOG_NONE, "Warning, no more slot for ssl3 set_cookie_generate_cb callback\n");
+    return NULL;
+}
+// psk_server_cb
+#define GO(A)   \
+static uintptr_t my_psk_server_cb_fct_##A = 0;                                      \
+static uint32_t my_psk_server_cb_##A(void* a, void* b, void* c, uint32_t d)         \
+{                                                                                   \
+    return (uint32_t)RunFunctionFmt(my_psk_server_cb_fct_##A, "pppu", a, b, c, d);  \
+}
+SUPER()
+#undef GO
+static void* find_psk_server_cb_Fct(void* fct)
+{
+    if(!fct) return NULL;
+    void* p;
+    if((p = GetNativeFnc((uintptr_t)fct))) return p;
+    #define GO(A) if(my_psk_server_cb_fct_##A == (uintptr_t)fct) return my_psk_server_cb_##A;
+    SUPER()
+    #undef GO
+    #define GO(A) if(my_psk_server_cb_fct_##A == 0) {my_psk_server_cb_fct_##A = (uintptr_t)fct; return my_psk_server_cb_##A; }
+    SUPER()
+    #undef GO
+    printf_log(LOG_NONE, "Warning, no more slot for ssl3 psk_server_cb callback\n");
+    return NULL;
+}
 
 #undef SUPER
 
@@ -437,6 +575,36 @@ 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));
 }
 
+EXPORT void my3_SSL_CTX_sess_set_new_cb(x64emu_t* emu, void *ctx, void* f)
+{
+    my->SSL_CTX_sess_set_new_cb(ctx, find_new_seesion_cb_Fct(f));
+}
+
+EXPORT void my3_SSL_set_info_callback(x64emu_t* emmu, void* ctx, void* f)
+{
+    my->SSL_set_info_callback(ctx, find_info_cb_Fct(f));
+}
+
+EXPORT void my3_SSL_set_psk_use_session_callback(x64emu_t* emu, void* ctx, void* f)
+{
+    my->SSL_set_psk_use_session_callback(ctx, find_psk_use_session_cb_Fct(f));
+}
+
+EXPORT void my3_SSL_CTX_set_cookie_verify_cb(x64emu_t* emu, void* ctx, void* f)
+{
+    my->SSL_CTX_set_cookie_verify_cb(ctx, find_app_verify_cookie_cb_Fct(f));
+}
+
+EXPORT void my3_SSL_CTX_set_cookie_generate_cb(x64emu_t* emu, void* ctx, void* f)
+{
+    my->SSL_CTX_set_cookie_generate_cb(ctx, find_set_cookie_generate_cb_Fct(f));
+}
+
+EXPORT void my3_SSL_set_psk_server_callback(x64emu_t* emu, void* ctx, void* f)
+{
+    my->SSL_set_psk_server_callback(ctx, find_psk_server_cb_Fct(f));
+}
+
 #define ALTMY my3_
 
 #define NEEDED_LIBS "libcrypto.so.3", "libpthread.so.0"
diff --git a/src/wrapped/wrappedlibssl3_private.h b/src/wrapped/wrappedlibssl3_private.h
index ef44cf78..e57ea37e 100644
--- a/src/wrapped/wrappedlibssl3_private.h
+++ b/src/wrapped/wrappedlibssl3_private.h
@@ -56,7 +56,7 @@ GO(d2i_SSL_SESSION, pFppl)
 //GO(dtls1_stop_timer, 
 //GO(dtls1_write_app_data_bytes, 
 //GO(dtls1_write_bytes, 
-//GO(DTLS_client_method, 
+GO(DTLS_client_method, pFv)
 GO(DTLS_method, pFv)
 GO(DTLS_server_method, pFv)
 GO(DTLSv1_2_client_method, pFv)
@@ -294,6 +294,7 @@ GO(SSL_CTX_get_security_level, iFp)
 GOM(SSL_CTX_get_verify_callback, pFEp)
 //GO(SSL_CTX_get_verify_depth, 
 GO(SSL_CTX_get_verify_mode, iFp)
+GO(SSL_CTX_load_verify_dir, iFpp)
 GO(SSL_CTX_load_verify_locations, iFppp)
 GO(SSL_CTX_new, pFp)
 //GO(SSL_CTX_remove_session, 
@@ -302,7 +303,7 @@ GO(SSL_CTX_new, pFp)
 //GO(SSL_CTX_sess_get_remove_cb, 
 //GO(SSL_CTX_sessions, 
 //GO(SSL_CTX_sess_set_get_cb, 
-//GO(SSL_CTX_sess_set_new_cb, 
+GOM(SSL_CTX_sess_set_new_cb, vFEpp)
 //GO(SSL_CTX_sess_set_remove_cb, 
 //GO(SSL_CTX_set1_param, 
 GO(SSL_CTX_set_alpn_protos, iFppu)
@@ -315,8 +316,8 @@ GO(SSL_CTX_set_cipher_list, iFpp)
 GO(SSL_CTX_set_client_CA_list, vFpp)
 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, 
+GOM(SSL_CTX_set_cookie_generate_cb, vFEpp)
+GOM(SSL_CTX_set_cookie_verify_cb, vFEpp)
 GOM(SSL_CTX_set_default_passwd_cb, vFEpp)
 GO(SSL_CTX_set_default_passwd_cb_userdata, vFpp)
 GO(SSL_CTX_set_default_verify_paths, iFp)
@@ -361,7 +362,7 @@ GO(SSL_CTX_use_certificate_file, iFppi)
 GO(SSL_CTX_use_PrivateKey, iFpp)
 GO(SSL_CTX_use_PrivateKey_ASN1, iFuppi)
 GO(SSL_CTX_use_PrivateKey_file, iFppi)
-//GO(SSL_CTX_use_psk_identity_hint, 
+GO(SSL_CTX_use_psk_identity_hint, iFpp)
 GO(SSL_CTX_use_RSAPrivateKey, iFpp)
 GO(SSL_CTX_use_RSAPrivateKey_ASN1, iFppl)
 GO(SSL_CTX_use_RSAPrivateKey_file, iFppi)
@@ -441,6 +442,7 @@ GO(SSL_get_version, pFp)
 GO(SSL_get_wbio, pFp)
 //GO(SSL_get_wfd, 
 //GO(SSL_has_matching_session_id, 
+GO(SSL_in_init, iFp)
 //GO(ssl_init_wbio_buffer, 
 GO(SSL_is_init_finished, iFp)
 GO(SSL_is_server, iFp)
@@ -494,7 +496,7 @@ GO(SSL_session_reused, iFp)
 GO(SSL_SESSION_up_ref, iFp)
 //GO(SSL_set1_param, 
 GO(SSL_set_accept_state, vFp)
-//GO(SSL_set_alpn_protos, 
+GO(SSL_set_alpn_protos, iFppu)
 GO(SSL_set_bio, vFppp)
 //GO(SSL_set_cert_cb, 
 //GO(ssl_set_cert_masks, 
@@ -506,13 +508,14 @@ GO(SSL_set_connect_state, vFp)
 GO(SSL_set_ex_data, iFpip)
 GO(SSL_set_fd, iFpi)
 //GO(SSL_set_generate_session_id, 
-//GO(SSL_set_info_callback, 
+GOM(SSL_set_info_callback, vFEpp)
 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, 
+GOM(SSL_set_psk_use_session_callback, vFEpp)
+GOM(SSL_set_psk_server_callback, vFEpp)
 //GO(SSL_set_purpose, 
 GO(SSL_set_quiet_shutdown, vFpi)
 GO(SSL_set_read_ahead, vFpi)