| 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) = |
| 382 | nullptr; |
| 383 | if (origMethod == nullptr) origMethod = (decltype(origMethod))dlsym(RTLD_NEXT, SYMBOL_NAME("EVP_DigestVerifyInit")); |
| 384 | bool fail = fail_EVP_DigestVerifyInit & 1; |
| 385 | fail_EVP_DigestVerifyInit = fail_EVP_DigestVerifyInit >> 1; |
| 386 | if (fail) |
| 387 | return 0; |
| 388 | else |
| 389 | return origMethod(ctx, pctx, type, e, pkey); |
| 390 | } |
| 391 | |
| 392 | int EVP_DigestVerify(EVP_MD_CTX* ctx, unsigned char* sigret, size_t* siglen, const unsigned char* tbs, size_t tbslen) { |
| 393 | static int (*origMethod)(EVP_MD_CTX * ctx, unsigned char* sigret, size_t* siglen, const unsigned char* tbs, |