diff options
| author | Yang Liu <numbksco@gmail.com> | 2024-12-03 17:00:48 +0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-12-03 10:00:48 +0100 |
| commit | cfc09e09653bb10589f9def34eb250bdb26007ba (patch) | |
| tree | a622e926c8c5d1609585c1beaaac04c0930ee9b8 /src/wrapped/wrappedcrypto3.c | |
| parent | 26c9b3426f5c342c785f303b355969bf11509693 (diff) | |
| download | box64-cfc09e09653bb10589f9def34eb250bdb26007ba.tar.gz box64-cfc09e09653bb10589f9def34eb250bdb26007ba.zip | |
[WRAPPER] Wrapped more symbols in libcrypto3 (#2105)
Diffstat (limited to 'src/wrapped/wrappedcrypto3.c')
| -rw-r--r-- | src/wrapped/wrappedcrypto3.c | 35 |
1 files changed, 35 insertions, 0 deletions
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; |