| 354 | } |
| 355 | |
| 356 | int EVP_DigestSignInit(EVP_MD_CTX* ctx, EVP_PKEY_CTX** pctx, const EVP_MD* type, ENGINE* e, EVP_PKEY* pkey) { |
| 357 | static int (*origMethod)(EVP_MD_CTX * ctx, EVP_PKEY_CTX * *pctx, const EVP_MD* type, ENGINE* e, EVP_PKEY* pkey) = |
| 358 | nullptr; |
| 359 | if (origMethod == nullptr) origMethod = (decltype(origMethod))dlsym(RTLD_NEXT, SYMBOL_NAME("EVP_DigestSignInit")); |
| 360 | bool fail = fail_EVP_DigestSignInit & 1; |
| 361 | fail_EVP_DigestSignInit = fail_EVP_DigestSignInit >> 1; |
| 362 | if (fail) |
| 363 | return 0; |
| 364 | else |
| 365 | return origMethod(ctx, pctx, type, e, pkey); |
| 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, |