| 215 | } |
| 216 | |
| 217 | int EVP_DigestSignFinal(EVP_MD_CTX* ctx, unsigned char* sigret, size_t* siglen) { |
| 218 | static int (*origMethod)(EVP_MD_CTX * ctx, unsigned char* sigret, size_t* siglen) = nullptr; |
| 219 | if (origMethod == nullptr) origMethod = (decltype(origMethod))dlsym(RTLD_NEXT, SYMBOL_NAME("EVP_DigestSignFinal")); |
| 220 | bool fail = fail_EVP_DigestSignFinal & 1; |
| 221 | fail_EVP_DigestSignFinal = fail_EVP_DigestSignFinal >> 1; |
| 222 | if (fail) |
| 223 | return 0; |
| 224 | else |
| 225 | return origMethod(ctx, sigret, siglen); |
| 226 | } |
| 227 | |
| 228 | int EVP_DigestInit(EVP_MD_CTX* ctx, const EVP_MD* type) { |
| 229 | static int (*origMethod)(EVP_MD_CTX * ctx, const EVP_MD* type) = nullptr; |