Index: net/cert/x509_certificate_nss.cc |
diff --git a/net/cert/x509_certificate_nss.cc b/net/cert/x509_certificate_nss.cc |
index abb6f20462e3113a198298359a031ddeb2aeb5cd..d03277906e907d34e54d244e6f2f18b139ac2083 100644 |
--- a/net/cert/x509_certificate_nss.cc |
+++ b/net/cert/x509_certificate_nss.cc |
@@ -263,6 +263,28 @@ void X509Certificate::GetPublicKeyInfo(OSCertHandle cert_handle, |
} |
// static |
+X509Certificate::SignatureHashAlgorithm |
+X509Certificate::GetSignatureHashAlgorithm(OSCertHandle cert_handle) { |
+ SECAlgorithmID& signature = cert_handle->signature; |
+ SECOidTag oid_tag = SECOID_FindOIDTag(&signature.algorithm); |
+ switch (oid_tag) { |
+ case SEC_OID_PKCS1_MD5_WITH_RSA_ENCRYPTION: |
+ return kSignatureHashAlgorithmMd5; |
+ case SEC_OID_PKCS1_MD2_WITH_RSA_ENCRYPTION: |
+ return kSignatureHashAlgorithmMd2; |
+ case SEC_OID_PKCS1_MD4_WITH_RSA_ENCRYPTION: |
+ return kSignatureHashAlgorithmMd4; |
+ case SEC_OID_PKCS1_SHA1_WITH_RSA_ENCRYPTION: |
+ case SEC_OID_ISO_SHA1_WITH_RSA_SIGNATURE: |
+ case SEC_OID_ANSIX9_DSA_SIGNATURE_WITH_SHA1_DIGEST: |
+ case SEC_OID_ANSIX962_ECDSA_SHA1_SIGNATURE: |
+ return kSignatureHashAlgorithmSha1; |
+ default: |
+ return kSignatureHashAlgorithmOther; |
+ } |
+} |
+ |
+// static |
bool X509Certificate::IsSelfSigned(OSCertHandle cert_handle) { |
crypto::ScopedSECKEYPublicKey public_key(CERT_ExtractPublicKey(cert_handle)); |
if (!public_key.get()) |