Index: net/cert/ct_log_verifier_openssl.cc |
diff --git a/net/cert/ct_log_verifier_openssl.cc b/net/cert/ct_log_verifier_openssl.cc |
index 884ae8a4a402774832b02d0ee41523544af9b9a1..55bc3e123aaf71dc54b80e047a8aca56d4d69f1b 100644 |
--- a/net/cert/ct_log_verifier_openssl.cc |
+++ b/net/cert/ct_log_verifier_openssl.cc |
@@ -56,13 +56,10 @@ bool CTLogVerifier::Init(const base::StringPiece& public_key, |
const base::StringPiece& description) { |
crypto::OpenSSLErrStackTracer err_tracer(FROM_HERE); |
- crypto::ScopedBIO bio( |
- BIO_new_mem_buf(const_cast<char*>(public_key.data()), public_key.size())); |
- if (!bio.get()) |
- return false; |
- |
- public_key_ = d2i_PUBKEY_bio(bio.get(), NULL); |
- if (!public_key_) |
+ const uint8_t* ptr = reinterpret_cast<const uint8_t*>(public_key.data()); |
+ const uint8_t* end = ptr + public_key.size(); |
+ public_key_ = d2i_PUBKEY(nullptr, &ptr, public_key.size()); |
+ if (!public_key_ || ptr != end) |
return false; |
key_id_ = crypto::SHA256HashString(public_key); |