| 366 | } |
| 367 | |
| 368 | int EVP_DigestSign(EVP_MD_CTX* ctx, unsigned char* sigret, size_t* siglen, const unsigned char* tbs, size_t tbslen) { |
| 369 | static int (*origMethod)(EVP_MD_CTX * ctx, unsigned char* sigret, size_t* siglen, const unsigned char* tbs, |
| 370 | size_t tbslen) = nullptr; |
| 371 | if (origMethod == nullptr) origMethod = (decltype(origMethod))dlsym(RTLD_NEXT, SYMBOL_NAME("EVP_DigestSign")); |
| 372 | bool fail = fail_EVP_DigestSign & 1; |
| 373 | fail_EVP_DigestSign = fail_EVP_DigestSign >> 1; |
| 374 | if (fail) |
| 375 | return 0; |
| 376 | else |
| 377 | return origMethod(ctx, sigret, siglen, tbs, tbslen); |
| 378 | } |
| 379 | |
| 380 | int EVP_DigestVerifyInit(EVP_MD_CTX* ctx, EVP_PKEY_CTX** pctx, const EVP_MD* type, ENGINE* e, EVP_PKEY* pkey) { |
| 381 | static int (*origMethod)(EVP_MD_CTX * ctx, EVP_PKEY_CTX * *pctx, const EVP_MD* type, ENGINE* e, EVP_PKEY* pkey) = |