Index: net/cert/cert_verify_proc.cc |
diff --git a/net/cert/cert_verify_proc.cc b/net/cert/cert_verify_proc.cc |
index 91c8e95445291780d154d3d4804a46dab69580b9..83fec415cdf76a4be49a84c5d41a9dde9b24c798 100644 |
--- a/net/cert/cert_verify_proc.cc |
+++ b/net/cert/cert_verify_proc.cc |
@@ -774,4 +774,33 @@ bool CertVerifyProc::HasTooLongValidity(const X509Certificate& cert) { |
const base::Feature CertVerifyProc::kSHA1LegacyMode{ |
"SHA1LegacyMode", base::FEATURE_DISABLED_BY_DEFAULT}; |
+bool FillCertVerifyResultWeakSignature(X509Certificate::OSCertHandle cert, |
+ bool is_leaf, |
+ CertVerifyResult* verify_result) { |
+ bool uses_weak_hash = true; |
+ |
+ auto hash = X509Certificate::GetSignatureHashAlgorithm(cert); |
Ryan Sleevi
2017/01/05 22:48:24
Seems like this is skirting very close to the "Con
eroman
2017/01/05 23:36:30
Done.
|
+ switch (hash) { |
+ case X509Certificate::kSignatureHashAlgorithmMd2: |
+ verify_result->has_md2 = true; |
+ break; |
+ case X509Certificate::kSignatureHashAlgorithmMd4: |
+ verify_result->has_md4 = true; |
+ break; |
+ case X509Certificate::kSignatureHashAlgorithmMd5: |
+ verify_result->has_md5 = true; |
+ break; |
+ case X509Certificate::kSignatureHashAlgorithmSha1: |
+ verify_result->has_sha1 = true; |
+ if (is_leaf) |
+ verify_result->has_sha1_leaf = true; |
+ break; |
+ case X509Certificate::kSignatureHashAlgorithmOther: |
+ uses_weak_hash = false; |
+ break; |
+ } |
+ |
+ return uses_weak_hash; |
+} |
+ |
} // namespace net |