Index: net/base/cert_verify_proc_android.cc |
diff --git a/net/base/cert_verify_proc_android.cc b/net/base/cert_verify_proc_android.cc |
index a7b17e6b387733d15e3f40d35554e280ee48beea..cbf9e2966fcc16b8b41e6a3bc64c8363d56aa5e6 100644 |
--- a/net/base/cert_verify_proc_android.cc |
+++ b/net/base/cert_verify_proc_android.cc |
@@ -8,6 +8,7 @@ |
#include <vector> |
#include "base/logging.h" |
+#include "net/android/cert_verify_result_android.h" |
#include "net/android/network_library.h" |
#include "net/base/cert_status_flags.h" |
#include "net/base/cert_verify_result.h" |
@@ -23,23 +24,29 @@ namespace { |
bool VerifyFromAndroidTrustManager(const std::vector<std::string>& cert_bytes, |
CertVerifyResult* verify_result) { |
// TODO(joth): Fetch the authentication type from SSL rather than hardcode. |
- bool verified = true; |
- android::VerifyResult result = |
+ android::CertVerifyResultAndroid android_result = |
android::VerifyX509CertChain(cert_bytes, "RSA"); |
- switch (result) { |
+ switch (android_result) { |
+ case android::VERIFY_FAILED: |
+ return false; |
case android::VERIFY_OK: |
break; |
case android::VERIFY_NO_TRUSTED_ROOT: |
verify_result->cert_status |= CERT_STATUS_AUTHORITY_INVALID; |
break; |
- case android::VERIFY_INVOCATION_ERROR: |
- verified = false; |
+ case android::VERIFY_EXPIRED: |
+ case android::VERIFY_NOT_YET_VALID: |
+ verify_result->cert_status |= CERT_STATUS_DATE_INVALID; |
+ break; |
+ case android::VERIFY_UNABLE_TO_PARSE: |
+ verify_result->cert_status |= CERT_STATUS_INVALID; |
break; |
default: |
+ NOTREACHED(); |
verify_result->cert_status |= CERT_STATUS_INVALID; |
break; |
} |
- return verified; |
+ return true; |
} |
bool GetChainDEREncodedBytes(X509Certificate* cert, |