diff options
| author | ptitSeb <sebastien.chev@gmail.com> | 2022-06-28 20:25:57 +0200 |
|---|---|---|
| committer | ptitSeb <sebastien.chev@gmail.com> | 2022-06-28 20:25:57 +0200 |
| commit | cd695f735b70d37498c796160849226d7c379d59 (patch) | |
| tree | dc6db436e1e63849f1a43e5b75e1d2b699cd9d91 /src | |
| parent | 0e3cd11a5591cc30cc90a457ba979402edc52d5d (diff) | |
| download | box64-cd695f735b70d37498c796160849226d7c379d59.tar.gz box64-cd695f735b70d37498c796160849226d7c379d59.zip | |
Added one libssl wrapped functions with reverse callback (for #331)
Diffstat (limited to 'src')
| -rw-r--r-- | src/wrapped/generated/functions_list.txt | 2 | ||||
| -rw-r--r-- | src/wrapped/generated/wrappedlibssltypes.h | 2 | ||||
| -rwxr-xr-x | src/wrapped/wrappedlibssl.c | 16 | ||||
| -rwxr-xr-x | src/wrapped/wrappedlibssl_private.h | 2 |
4 files changed, 21 insertions, 1 deletions
diff --git a/src/wrapped/generated/functions_list.txt b/src/wrapped/generated/functions_list.txt index 4ac74302..a4f1c7c9 100644 --- a/src/wrapped/generated/functions_list.txt +++ b/src/wrapped/generated/functions_list.txt @@ -3147,6 +3147,8 @@ wrappedlibsndfile: - pFpipp: - sf_open_virtual wrappedlibssl: +- pFp: + - SSL_get_verify_callback - vFpp: - SSL_CTX_set_default_passwd_cb - SSL_set_psk_client_callback diff --git a/src/wrapped/generated/wrappedlibssltypes.h b/src/wrapped/generated/wrappedlibssltypes.h index 6e9684c7..5d293011 100644 --- a/src/wrapped/generated/wrappedlibssltypes.h +++ b/src/wrapped/generated/wrappedlibssltypes.h @@ -11,6 +11,7 @@ #define ADDED_FUNCTIONS() #endif +typedef void* (*pFp_t)(void*); typedef void (*vFpp_t)(void*, void*); typedef void (*vFpip_t)(void*, int64_t, void*); typedef void (*vFppp_t)(void*, void*, void*); @@ -18,6 +19,7 @@ typedef intptr_t (*lFpip_t)(void*, int64_t, void*); 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_default_passwd_cb, vFpp_t) \ GO(SSL_set_psk_client_callback, vFpp_t) \ GO(SSL_CTX_set_verify, vFpip_t) \ diff --git a/src/wrapped/wrappedlibssl.c b/src/wrapped/wrappedlibssl.c index 380394fa..0d7fc823 100755 --- a/src/wrapped/wrappedlibssl.c +++ b/src/wrapped/wrappedlibssl.c @@ -106,6 +106,16 @@ static void* find_verify_Fct(void* fct) printf_log(LOG_NONE, "Warning, no more slot for libSSL verify callback\n"); return NULL; } +static void* reverse_verify_Fct(void* fct) +{ + if(!fct) return fct; + if(CheckBridged(my_lib->priv.w.bridge, fct)) + return (void*)CheckBridged(my_lib->priv.w.bridge, fct); + #define GO(A) if(my_verify_##A == fct) return (void*)my_verify_fct_##A; + SUPER() + #undef GO + return (void*)AddBridge(my_lib->priv.w.bridge, iFip, fct, 0, NULL); +} // ex_new #define GO(A) \ @@ -277,6 +287,12 @@ EXPORT void my_SSL_CTX_set_next_proto_select_cb(x64emu_t* emu, void* ctx, void* my->SSL_CTX_set_next_proto_select_cb(ctx, find_proto_select_Fct(cb), arg); } +EXPORT void* my_SSL_get_verify_callback(x64emu_t* emu, void* ctx) +{ + (void)emu; + return reverse_verify_Fct(my->SSL_get_verify_callback(ctx)); +} + #define CUSTOM_INIT \ getMy(lib); diff --git a/src/wrapped/wrappedlibssl_private.h b/src/wrapped/wrappedlibssl_private.h index 5cc79c5a..827c4a67 100755 --- a/src/wrapped/wrappedlibssl_private.h +++ b/src/wrapped/wrappedlibssl_private.h @@ -414,7 +414,7 @@ GO(SSL_get_shutdown, iFp) //GO(SSL_get_srtp_profiles, //GO(SSL_get_SSL_CTX, //GO(SSL_get_ssl_method, -//GO(SSL_get_verify_callback, +GOM(SSL_get_verify_callback, pFEp) //GO(SSL_get_verify_depth, //GO(SSL_get_verify_mode, GO(SSL_get_verify_result, iFp) |