Index: net/cert/jwk_serializer_openssl.cc |
diff --git a/net/cert/jwk_serializer_openssl.cc b/net/cert/jwk_serializer_openssl.cc |
index f5afd4fb7343cd12bd7cc8dec7a7dfba6d602fc3..12c8e4dae890afaf5bb44be6f273cfd18904e07c 100644 |
--- a/net/cert/jwk_serializer_openssl.cc |
+++ b/net/cert/jwk_serializer_openssl.cc |
@@ -5,10 +5,10 @@ |
#include "net/cert/jwk_serializer.h" |
#include <openssl/bn.h> |
+#include <openssl/bytestring.h> |
#include <openssl/ec.h> |
#include <openssl/ec_key.h> |
#include <openssl/evp.h> |
-#include <openssl/x509.h> |
#include "base/base64url.h" |
#include "base/logging.h" |
@@ -96,10 +96,11 @@ bool ConvertSpkiFromDerToJwk( |
crypto::EnsureOpenSSLInit(); |
crypto::OpenSSLErrStackTracer err_tracer(FROM_HERE); |
- const uint8_t *data = reinterpret_cast<const uint8_t*>(spki_der.data()); |
- const uint8_t *ptr = data; |
- crypto::ScopedEVP_PKEY pubkey(d2i_PUBKEY(NULL, &ptr, spki_der.size())); |
- if (!pubkey || ptr != data + spki_der.size()) |
+ CBS cbs; |
+ CBS_init(&cbs, reinterpret_cast<const uint8_t*>(spki_der.data()), |
+ spki_der.size()); |
+ crypto::ScopedEVP_PKEY pubkey(EVP_parse_public_key(&cbs)); |
+ if (!pubkey || CBS_len(&cbs) != 0) |
return false; |
if (pubkey->type == EVP_PKEY_EC) { |