Index: net/cert/x509_certificate_nss.cc |
diff --git a/net/cert/x509_certificate_nss.cc b/net/cert/x509_certificate_nss.cc |
index a57f9ce71f200914bb7a597be57ac70073d410c3..4457a275e05e0c7c207a69a4d09c4061ff855a77 100644 |
--- a/net/cert/x509_certificate_nss.cc |
+++ b/net/cert/x509_certificate_nss.cc |
@@ -281,4 +281,15 @@ void X509Certificate::GetPublicKeyInfo(OSCertHandle cert_handle, |
x509_util::GetPublicKeyInfo(cert_handle, size_bits, type); |
} |
+// static |
+bool X509Certificate::IsSelfSigned(OSCertHandle cert_handle) { |
+ SECKEYPublicKey* public_key = CERT_ExtractPublicKey(cert_handle); |
+ if (!public_key) |
+ return false; |
+ |
+ SECStatus verified = CERT_VerifySignedDataWithPublicKey( |
+ &cert_handle->signatureWrap, public_key, NULL); |
+ return verified == SECSuccess; |
+} |
+ |
} // namespace net |