diff options
Diffstat (limited to 'src/ssl/ssl_privkey.cc')
-rw-r--r-- | src/ssl/ssl_privkey.cc | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/src/ssl/ssl_privkey.cc b/src/ssl/ssl_privkey.cc index 1ddb1b16..23f8d124 100644 --- a/src/ssl/ssl_privkey.cc +++ b/src/ssl/ssl_privkey.cc @@ -236,9 +236,16 @@ bool ssl_public_key_verify(SSL *ssl, Span<const uint8_t> signature, uint16_t sigalg, EVP_PKEY *pkey, Span<const uint8_t> in) { ScopedEVP_MD_CTX ctx; - return setup_ctx(ssl, ctx.get(), pkey, sigalg, true /* verify */) && - EVP_DigestVerify(ctx.get(), signature.data(), signature.size(), - in.data(), in.size()); + if (!setup_ctx(ssl, ctx.get(), pkey, sigalg, true /* verify */)) { + return false; + } + bool ok = EVP_DigestVerify(ctx.get(), signature.data(), signature.size(), + in.data(), in.size()); +#if defined(BORINGSSL_UNSAFE_FUZZER_MODE) + ok = true; + ERR_clear_error(); +#endif + return ok; } enum ssl_private_key_result_t ssl_private_key_decrypt(SSL_HANDSHAKE *hs, |