From cfc09e09653bb10589f9def34eb250bdb26007ba Mon Sep 17 00:00:00 2001 From: Yang Liu Date: Tue, 3 Dec 2024 17:00:48 +0800 Subject: [WRAPPER] Wrapped more symbols in libcrypto3 (#2105) --- src/wrapped/generated/functions_list.txt | 5 +++++ src/wrapped/generated/wrappedcrypto3types.h | 3 +++ src/wrapped/generated/wrappedlibmtypes.h | 4 ++-- src/wrapped/generated/wrapper.c | 4 ++++ src/wrapped/generated/wrapper.h | 2 ++ src/wrapped/wrappedcrypto3.c | 35 +++++++++++++++++++++++++++++ src/wrapped/wrappedcrypto3_private.h | 24 +++++++++++--------- src/wrapped/wrappedgio2_private.h | 1 + 8 files changed, 65 insertions(+), 13 deletions(-) (limited to 'src') diff --git a/src/wrapped/generated/functions_list.txt b/src/wrapped/generated/functions_list.txt index f9c5ba1f..fca4f013 100644 --- a/src/wrapped/generated/functions_list.txt +++ b/src/wrapped/generated/functions_list.txt @@ -1871,6 +1871,7 @@ #() LFpppii #() LFppppi #() LFppppp +#() pFEiLpp #() pFEuipV #() pFEuipA #() pFEpiii @@ -2597,6 +2598,7 @@ #() iFpiiiiii #() iFpiiiuwp #() iFpiiiuup +#() iFpiipiii #() iFpiipppp #() iFpiuiipp #() iFpiuuuiu @@ -3499,6 +3501,8 @@ wrappedcrypto3: - ERR_set_error - vFiipA: - ERR_vset_error +- pFiLpp: + - RSA_generate_key - pFpppp: - ASN1_d2i_bio - PEM_read_DHparams @@ -3511,6 +3515,7 @@ wrappedcrypto3: - PEM_read_bio_PUBKEY - PEM_read_bio_PrivateKey - PEM_read_bio_RSAPrivateKey + - PEM_read_bio_RSAPublicKey - PEM_read_bio_RSA_PUBKEY - PEM_read_bio_X509 - PEM_read_bio_X509_AUX diff --git a/src/wrapped/generated/wrappedcrypto3types.h b/src/wrapped/generated/wrappedcrypto3types.h index 79fe61bb..5875eaa1 100644 --- a/src/wrapped/generated/wrappedcrypto3types.h +++ b/src/wrapped/generated/wrappedcrypto3types.h @@ -19,6 +19,7 @@ typedef int32_t (*iFppp_t)(void*, void*, void*); typedef int32_t (*iFppV_t)(void*, void*, ...); typedef void (*vFiipV_t)(int32_t, int32_t, void*, ...); typedef void (*vFiipA_t)(int32_t, int32_t, void*, va_list); +typedef void* (*pFiLpp_t)(int32_t, uintptr_t, void*, void*); typedef void* (*pFpppp_t)(void*, void*, void*, void*); typedef int32_t (*iFpiipp_t)(void*, int32_t, int32_t, void*, void*); typedef int32_t (*iFpplppi_t)(void*, void*, intptr_t, void*, void*, int32_t); @@ -37,6 +38,7 @@ typedef int32_t (*iFppppipp_t)(void*, void*, void*, void*, int32_t, void*, void* GO(BIO_printf, iFppV_t) \ GO(ERR_set_error, vFiipV_t) \ GO(ERR_vset_error, vFiipA_t) \ + GO(RSA_generate_key, pFiLpp_t) \ GO(ASN1_d2i_bio, pFpppp_t) \ GO(PEM_read_DHparams, pFpppp_t) \ GO(PEM_read_bio_DHparams, pFpppp_t) \ @@ -48,6 +50,7 @@ typedef int32_t (*iFppppipp_t)(void*, void*, void*, void*, int32_t, void*, void* GO(PEM_read_bio_PUBKEY, pFpppp_t) \ GO(PEM_read_bio_PrivateKey, pFpppp_t) \ GO(PEM_read_bio_RSAPrivateKey, pFpppp_t) \ + GO(PEM_read_bio_RSAPublicKey, 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) \ diff --git a/src/wrapped/generated/wrappedlibmtypes.h b/src/wrapped/generated/wrappedlibmtypes.h index 07b683a9..adeff992 100644 --- a/src/wrapped/generated/wrappedlibmtypes.h +++ b/src/wrapped/generated/wrappedlibmtypes.h @@ -22,10 +22,10 @@ typedef double (*dFd_t)(double); typedef float (*fFff_t)(float, float); typedef double (*dFdd_t)(double, double); -#ifdef HAVE_LD80BITS +#if defined(HAVE_LD80BITS) || defined(ANDROID) typedef int64_t (*IFD_t)(long double); typedef long double (*DFD_t)(long double); -#else // HAVE_LD80BITS +#else // !HAVE_LD80BITS && !ANDROID typedef int64_t (*IFD_t)(double); typedef double (*DFD_t)(double); #endif diff --git a/src/wrapped/generated/wrapper.c b/src/wrapped/generated/wrapper.c index b7e3730a..2f6d5a70 100644 --- a/src/wrapped/generated/wrapper.c +++ b/src/wrapped/generated/wrapper.c @@ -1900,6 +1900,7 @@ typedef uintptr_t (*LFppLpL_t)(void*, void*, uintptr_t, void*, uintptr_t); typedef uintptr_t (*LFpppii_t)(void*, void*, void*, int32_t, int32_t); typedef uintptr_t (*LFppppi_t)(void*, void*, void*, void*, int32_t); typedef uintptr_t (*LFppppp_t)(void*, void*, void*, void*, void*); +typedef void* (*pFEiLpp_t)(x64emu_t*, int32_t, uintptr_t, void*, void*); typedef void* (*pFEuipV_t)(x64emu_t*, uint32_t, int32_t, void*, void*); typedef void* (*pFEuipA_t)(x64emu_t*, uint32_t, int32_t, void*, void*); typedef void* (*pFEpiii_t)(x64emu_t*, void*, int32_t, int32_t, int32_t); @@ -2625,6 +2626,7 @@ typedef int32_t (*iFuippLpp_t)(uint32_t, int32_t, void*, void*, uintptr_t, void* typedef int32_t (*iFpiiiiii_t)(void*, int32_t, int32_t, int32_t, int32_t, int32_t, int32_t); typedef int32_t (*iFpiiiuwp_t)(void*, int32_t, int32_t, int32_t, uint32_t, int16_t, void*); typedef int32_t (*iFpiiiuup_t)(void*, int32_t, int32_t, int32_t, uint32_t, uint32_t, void*); +typedef int32_t (*iFpiipiii_t)(void*, int32_t, int32_t, void*, int32_t, int32_t, int32_t); typedef int32_t (*iFpiipppp_t)(void*, int32_t, int32_t, void*, void*, void*, void*); typedef int32_t (*iFpiuiipp_t)(void*, int32_t, uint32_t, int32_t, int32_t, void*, void*); typedef int32_t (*iFpiuuuiu_t)(void*, int32_t, uint32_t, uint32_t, uint32_t, int32_t, uint32_t); @@ -5319,6 +5321,7 @@ void LFppLpL(x64emu_t *emu, uintptr_t fcn) { LFppLpL_t fn = (LFppLpL_t)fcn; R_RA void LFpppii(x64emu_t *emu, uintptr_t fcn) { LFpppii_t fn = (LFpppii_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (void*)R_RSI, (void*)R_RDX, (int32_t)R_RCX, (int32_t)R_R8); } void LFppppi(x64emu_t *emu, uintptr_t fcn) { LFppppi_t fn = (LFppppi_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (void*)R_RSI, (void*)R_RDX, (void*)R_RCX, (int32_t)R_R8); } void LFppppp(x64emu_t *emu, uintptr_t fcn) { LFppppp_t fn = (LFppppp_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (void*)R_RSI, (void*)R_RDX, (void*)R_RCX, (void*)R_R8); } +void pFEiLpp(x64emu_t *emu, uintptr_t fcn) { pFEiLpp_t fn = (pFEiLpp_t)fcn; R_RAX=(uintptr_t)fn(emu, (int32_t)R_RDI, (uintptr_t)R_RSI, (void*)R_RDX, (void*)R_RCX); } void pFEuipV(x64emu_t *emu, uintptr_t fcn) { pFEuipV_t fn = (pFEuipV_t)fcn; R_RAX=(uintptr_t)fn(emu, (uint32_t)R_RDI, (int32_t)R_RSI, (void*)R_RDX, (void*)(R_RSP + 8)); } void pFEuipA(x64emu_t *emu, uintptr_t fcn) { pFEuipA_t fn = (pFEuipA_t)fcn; R_RAX=(uintptr_t)fn(emu, (uint32_t)R_RDI, (int32_t)R_RSI, (void*)R_RDX, (void*)R_RCX); } void pFEpiii(x64emu_t *emu, uintptr_t fcn) { pFEpiii_t fn = (pFEpiii_t)fcn; R_RAX=(uintptr_t)fn(emu, (void*)R_RDI, (int32_t)R_RSI, (int32_t)R_RDX, (int32_t)R_RCX); } @@ -6044,6 +6047,7 @@ void iFuippLpp(x64emu_t *emu, uintptr_t fcn) { iFuippLpp_t fn = (iFuippLpp_t)fcn void iFpiiiiii(x64emu_t *emu, uintptr_t fcn) { iFpiiiiii_t fn = (iFpiiiiii_t)fcn; R_RAX=(uint32_t)fn((void*)R_RDI, (int32_t)R_RSI, (int32_t)R_RDX, (int32_t)R_RCX, (int32_t)R_R8, (int32_t)R_R9, *(int32_t*)(R_RSP + 8)); } void iFpiiiuwp(x64emu_t *emu, uintptr_t fcn) { iFpiiiuwp_t fn = (iFpiiiuwp_t)fcn; R_RAX=(uint32_t)fn((void*)R_RDI, (int32_t)R_RSI, (int32_t)R_RDX, (int32_t)R_RCX, (uint32_t)R_R8, (int16_t)R_R9, *(void**)(R_RSP + 8)); } void iFpiiiuup(x64emu_t *emu, uintptr_t fcn) { iFpiiiuup_t fn = (iFpiiiuup_t)fcn; R_RAX=(uint32_t)fn((void*)R_RDI, (int32_t)R_RSI, (int32_t)R_RDX, (int32_t)R_RCX, (uint32_t)R_R8, (uint32_t)R_R9, *(void**)(R_RSP + 8)); } +void iFpiipiii(x64emu_t *emu, uintptr_t fcn) { iFpiipiii_t fn = (iFpiipiii_t)fcn; R_RAX=(uint32_t)fn((void*)R_RDI, (int32_t)R_RSI, (int32_t)R_RDX, (void*)R_RCX, (int32_t)R_R8, (int32_t)R_R9, *(int32_t*)(R_RSP + 8)); } void iFpiipppp(x64emu_t *emu, uintptr_t fcn) { iFpiipppp_t fn = (iFpiipppp_t)fcn; R_RAX=(uint32_t)fn((void*)R_RDI, (int32_t)R_RSI, (int32_t)R_RDX, (void*)R_RCX, (void*)R_R8, (void*)R_R9, *(void**)(R_RSP + 8)); } void iFpiuiipp(x64emu_t *emu, uintptr_t fcn) { iFpiuiipp_t fn = (iFpiuiipp_t)fcn; R_RAX=(uint32_t)fn((void*)R_RDI, (int32_t)R_RSI, (uint32_t)R_RDX, (int32_t)R_RCX, (int32_t)R_R8, (void*)R_R9, *(void**)(R_RSP + 8)); } void iFpiuuuiu(x64emu_t *emu, uintptr_t fcn) { iFpiuuuiu_t fn = (iFpiuuuiu_t)fcn; R_RAX=(uint32_t)fn((void*)R_RDI, (int32_t)R_RSI, (uint32_t)R_RDX, (uint32_t)R_RCX, (uint32_t)R_R8, (int32_t)R_R9, *(uint32_t*)(R_RSP + 8)); } diff --git a/src/wrapped/generated/wrapper.h b/src/wrapped/generated/wrapper.h index 4dd75544..72d7a4ac 100644 --- a/src/wrapped/generated/wrapper.h +++ b/src/wrapped/generated/wrapper.h @@ -1908,6 +1908,7 @@ void LFppLpL(x64emu_t *emu, uintptr_t fnc); void LFpppii(x64emu_t *emu, uintptr_t fnc); void LFppppi(x64emu_t *emu, uintptr_t fnc); void LFppppp(x64emu_t *emu, uintptr_t fnc); +void pFEiLpp(x64emu_t *emu, uintptr_t fnc); void pFEuipV(x64emu_t *emu, uintptr_t fnc); void pFEuipA(x64emu_t *emu, uintptr_t fnc); void pFEpiii(x64emu_t *emu, uintptr_t fnc); @@ -2634,6 +2635,7 @@ void iFuippLpp(x64emu_t *emu, uintptr_t fnc); void iFpiiiiii(x64emu_t *emu, uintptr_t fnc); void iFpiiiuwp(x64emu_t *emu, uintptr_t fnc); void iFpiiiuup(x64emu_t *emu, uintptr_t fnc); +void iFpiipiii(x64emu_t *emu, uintptr_t fnc); void iFpiipppp(x64emu_t *emu, uintptr_t fnc); void iFpiuiipp(x64emu_t *emu, uintptr_t fnc); void iFpiuuuiu(x64emu_t *emu, uintptr_t fnc); diff --git a/src/wrapped/wrappedcrypto3.c b/src/wrapped/wrappedcrypto3.c index 127d130e..c073c95b 100644 --- a/src/wrapped/wrappedcrypto3.c +++ b/src/wrapped/wrappedcrypto3.c @@ -198,6 +198,30 @@ static void* find_passphrase_Fct(void* fct) return NULL; } +// rsakeygen +#define GO(A) \ +static uintptr_t my3_rsakeygen_fct_##A = 0; \ +static void my3_rsakeygen_##A(int a, int b, void* c) \ +{ \ + RunFunctionFmt(my3_rsakeygen_fct_##A, "iip", a, b, c); \ +} +SUPER() +#undef GO +static void* find_rsakeygen_Fct(void* fct) +{ + if(!fct) return NULL; + void* p; + if((p = GetNativeFnc((uintptr_t)fct))) return p; + #define GO(A) if(my3_rsakeygen_fct_##A == (uintptr_t)fct) return my3_rsakeygen_##A; + SUPER() + #undef GO + #define GO(A) if(my3_rsakeygen_fct_##A == 0) {my3_rsakeygen_fct_##A = (uintptr_t)fct; return my3_rsakeygen_##A; } + SUPER() + #undef GO + printf_log(LOG_NONE, "Warning, no more slot for libcrypto rsakeygen callback\n"); + return NULL; +} + // xnew #define GO(A) \ static uintptr_t my3_xnew_fct_##A = 0; \ @@ -392,6 +416,12 @@ EXPORT void my3_PEM_read_bio_RSA_PUBKEY(x64emu_t* emu, void* bp, void* x, void* my->PEM_read_bio_RSA_PUBKEY(bp, x, find_passphrase_Fct(cb), u); } +EXPORT void my3_PEM_read_bio_RSAPublicKey(x64emu_t* emu, void* bp, void* x, void* cb, void* u) +{ + (void)emu; + my->PEM_read_bio_RSAPublicKey(bp, x, find_passphrase_Fct(cb), u); +} + EXPORT void my3_PEM_read_bio_ECPrivateKey(x64emu_t* emu, void* bp, void* x, void* cb, void* u) { (void)emu; @@ -551,6 +581,11 @@ EXPORT void* my3_PEM_read_bio_DHparams(x64emu_t* emu, void* bp, void* x, void* c return my->PEM_read_bio_DHparams(bp, x, find_pem_password_cb_Fct(cb), u); } +EXPORT void* my3_RSA_generate_key(x64emu_t* emu, int bits, unsigned long e, void* cb, void* cb_arg) +{ + return my->RSA_generate_key(bits, e, find_rsakeygen_Fct(cb), cb_arg); +} + typedef struct my_v3_ext_method_s { int ext_nid; int ext_flags; diff --git a/src/wrapped/wrappedcrypto3_private.h b/src/wrapped/wrappedcrypto3_private.h index 6f1e5510..cd5311b8 100644 --- a/src/wrapped/wrappedcrypto3_private.h +++ b/src/wrapped/wrappedcrypto3_private.h @@ -1898,6 +1898,7 @@ GO(EVP_DigestSignFinal, iFppp) GO(EVP_DigestSignInit, iFppppp) GO(EVP_DigestUpdate, iFppL) GO(EVP_DigestVerify, iFppLpL) +GO(EVP_DigestVerifyUpdate, iFppL) GO(EVP_DigestVerifyFinal, iFppL) GO(EVP_DigestVerifyInit, iFppppp) //GO(EVP_dss, @@ -2792,7 +2793,7 @@ GOM(PEM_read_bio_PrivateKey, pFEpppp) GOM(PEM_read_bio_PUBKEY, pFEpppp) GOM(PEM_read_bio_RSAPrivateKey, pFEpppp) GOM(PEM_read_bio_RSA_PUBKEY, pFEpppp) -//GO(PEM_read_bio_RSAPublicKey, +GOM(PEM_read_bio_RSAPublicKey, pFEpppp) GOM(PEM_read_bio_X509, pFEpppp) GOM(PEM_read_bio_X509_AUX, pFEpppp) GOM(PEM_read_bio_X509_CERT_PAIR, pFEpppp) @@ -3105,7 +3106,7 @@ GO(RSA_bits, iFp) GO(RSA_check_key, iFp) //GO(RSA_flags, GO(RSA_free, vFp) -//GO(RSA_generate_key, +GOM(RSA_generate_key, pFEiLpp) GO(RSA_generate_key_ex, iFpipp) GO(RSA_get0_crt_params, vFpppp) GO(RSA_get0_factors, vFppp) @@ -3628,11 +3629,11 @@ GO(X509_load_crl_file, iFppi) GO(X509_LOOKUP_file, pFv) //GO(X509_LOOKUP_free, GO(X509_LOOKUP_hash_dir, pFv) -//GO(X509_LOOKUP_init, -//GO(X509_LOOKUP_new, -//GO(X509_LOOKUP_shutdown, -//GO(X509_NAME_add_entry, -//GO(X509_NAME_add_entry_by_NID, +// GO(X509_LOOKUP_init, +// GO(X509_LOOKUP_new, +// GO(X509_LOOKUP_shutdown, +// GO(X509_NAME_add_entry, +GO(X509_NAME_add_entry_by_NID, iFpiipiii) //GO(X509_NAME_add_entry_by_OBJ, GO(X509_NAME_add_entry_by_txt, iFppipiii) //GO(X509_NAME_cmp, @@ -3723,20 +3724,21 @@ GO(X509_PUBKEY_get0_param, iFppppp) //GO(X509_REQ_digest, //GO(X509_REQ_dup, //GO(X509_REQ_extension_nid, -//GO(X509_REQ_free, +GO(X509_REQ_free, vFp) //GO(X509_REQ_get1_email, //GO(X509_REQ_get_attr, //GO(X509_REQ_get_attr_by_NID, //GO(X509_REQ_get_attr_by_OBJ, //GO(X509_REQ_get_attr_count, //GO(X509_REQ_get_extension_nids, -//GO(X509_REQ_get_extensions, +//GO(X509_REQ_get_extensions, GO(X509_REQ_get_pubkey, pFp) +GO(X509_REQ_get_subject_name, pFp) GO(X509_REQ_get_X509_PUBKEY, pFp) GO(X509_REQ_get0_pubkey, pFp) //GO(X509_REQ_INFO_free, //GO(X509_REQ_INFO_new, -//GO(X509_REQ_new, +GO(X509_REQ_new, pFv) //GO(X509_REQ_print, //GO(X509_REQ_print_ex, //GO(X509_REQ_print_fp, @@ -3744,7 +3746,7 @@ GO(X509_REQ_get0_pubkey, pFp) GO(X509_REQ_set_pubkey, iFpp) GO(X509_REQ_set_subject_name, iFpp) //GO(X509_REQ_set_version, -//GO(X509_REQ_sign, +GO(X509_REQ_sign, iFppp) //GO(X509_REQ_sign_ctx, //GO(X509_REQ_to_X509, //GO(X509_REQ_verify, diff --git a/src/wrapped/wrappedgio2_private.h b/src/wrapped/wrappedgio2_private.h index a3f52235..33caa31f 100644 --- a/src/wrapped/wrappedgio2_private.h +++ b/src/wrapped/wrappedgio2_private.h @@ -1143,6 +1143,7 @@ GO(g_network_address_parse_uri, pFpWp) GO(g_network_monitor_can_reach, iFpppp) //GOM(g_network_monitor_can_reach_async, vFppppp) GO(g_network_monitor_can_reach_finish, iFppp) +GO(g_network_monitor_get_connectivity, iFp) GO(g_network_monitor_get_default, pFv) GO(g_network_monitor_get_network_available, iFp) GO(g_network_monitor_get_type, LFv) -- cgit 1.4.1