about summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorYang Liu <numbksco@gmail.com>2024-12-03 17:00:48 +0800
committerGitHub <noreply@github.com>2024-12-03 10:00:48 +0100
commitcfc09e09653bb10589f9def34eb250bdb26007ba (patch)
treea622e926c8c5d1609585c1beaaac04c0930ee9b8
parent26c9b3426f5c342c785f303b355969bf11509693 (diff)
downloadbox64-cfc09e09653bb10589f9def34eb250bdb26007ba.tar.gz
box64-cfc09e09653bb10589f9def34eb250bdb26007ba.zip
[WRAPPER] Wrapped more symbols in libcrypto3 (#2105)
-rw-r--r--src/wrapped/generated/functions_list.txt5
-rw-r--r--src/wrapped/generated/wrappedcrypto3types.h3
-rw-r--r--src/wrapped/generated/wrappedlibmtypes.h4
-rw-r--r--src/wrapped/generated/wrapper.c4
-rw-r--r--src/wrapped/generated/wrapper.h2
-rw-r--r--src/wrapped/wrappedcrypto3.c35
-rw-r--r--src/wrapped/wrappedcrypto3_private.h24
-rw-r--r--src/wrapped/wrappedgio2_private.h1
8 files changed, 65 insertions, 13 deletions
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)