diff options
| author | ptitSeb <sebastien.chev@gmail.com> | 2024-10-25 17:25:01 +0200 |
|---|---|---|
| committer | ptitSeb <sebastien.chev@gmail.com> | 2024-10-25 17:25:01 +0200 |
| commit | 138a021fadb78ad3fe5b17f74ec87cbdadf647b9 (patch) | |
| tree | becd371829c4ca32d158ef65f205578a94aadb3d | |
| parent | bdf0e95a12773d5c2137df80af8c144709aae693 (diff) | |
| download | box64-138a021fadb78ad3fe5b17f74ec87cbdadf647b9.tar.gz box64-138a021fadb78ad3fe5b17f74ec87cbdadf647b9.zip | |
[WRAPPER] Added some ssl3 and crypto3 wrapped functions (for #1860)
| -rw-r--r-- | src/wrapped/generated/functions_list.txt | 6 | ||||
| -rw-r--r-- | src/wrapped/generated/wrappedlibssl3types.h | 6 | ||||
| -rw-r--r-- | src/wrapped/wrappedcrypto3_private.h | 10 | ||||
| -rw-r--r-- | src/wrapped/wrappedlibssl3.c | 168 | ||||
| -rw-r--r-- | src/wrapped/wrappedlibssl3_private.h | 19 |
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) |