| OLD | NEW |
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "net/base/x509_certificate.h" | 5 #include "net/base/x509_certificate.h" |
| 6 | 6 |
| 7 #include <cert.h> | 7 #include <cert.h> |
| 8 #include <cryptohi.h> | 8 #include <cryptohi.h> |
| 9 #include <keyhi.h> | 9 #include <keyhi.h> |
| 10 #include <nss.h> | 10 #include <nss.h> |
| (...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 120 case SEC_ERROR_UNKNOWN_CRITICAL_EXTENSION: | 120 case SEC_ERROR_UNKNOWN_CRITICAL_EXTENSION: |
| 121 case SEC_ERROR_EXTENSION_VALUE_INVALID: | 121 case SEC_ERROR_EXTENSION_VALUE_INVALID: |
| 122 return ERR_CERT_INVALID; | 122 return ERR_CERT_INVALID; |
| 123 default: | 123 default: |
| 124 LOG(WARNING) << "Unknown error " << err << " mapped to net::ERR_FAILED"; | 124 LOG(WARNING) << "Unknown error " << err << " mapped to net::ERR_FAILED"; |
| 125 return ERR_FAILED; | 125 return ERR_FAILED; |
| 126 } | 126 } |
| 127 } | 127 } |
| 128 | 128 |
| 129 // Map PORT_GetError() return values to our cert status flags. | 129 // Map PORT_GetError() return values to our cert status flags. |
| 130 int MapCertErrorToCertStatus(int err) { | 130 CertStatus MapCertErrorToCertStatus(int err) { |
| 131 switch (err) { | 131 switch (err) { |
| 132 case SSL_ERROR_BAD_CERT_DOMAIN: | 132 case SSL_ERROR_BAD_CERT_DOMAIN: |
| 133 return CERT_STATUS_COMMON_NAME_INVALID; | 133 return CERT_STATUS_COMMON_NAME_INVALID; |
| 134 case SEC_ERROR_INVALID_TIME: | 134 case SEC_ERROR_INVALID_TIME: |
| 135 case SEC_ERROR_EXPIRED_CERTIFICATE: | 135 case SEC_ERROR_EXPIRED_CERTIFICATE: |
| 136 case SEC_ERROR_EXPIRED_ISSUER_CERTIFICATE: | 136 case SEC_ERROR_EXPIRED_ISSUER_CERTIFICATE: |
| 137 return CERT_STATUS_DATE_INVALID; | 137 return CERT_STATUS_DATE_INVALID; |
| 138 case SEC_ERROR_UNKNOWN_ISSUER: | 138 case SEC_ERROR_UNKNOWN_ISSUER: |
| 139 case SEC_ERROR_UNTRUSTED_ISSUER: | 139 case SEC_ERROR_UNTRUSTED_ISSUER: |
| 140 case SEC_ERROR_CA_CERT_INVALID: | 140 case SEC_ERROR_CA_CERT_INVALID: |
| (...skipping 664 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 805 flags &= ~VERIFY_EV_CERT; | 805 flags &= ~VERIFY_EV_CERT; |
| 806 } | 806 } |
| 807 status = PKIXVerifyCert(cert_handle_, check_revocation, NULL, 0, cvout); | 807 status = PKIXVerifyCert(cert_handle_, check_revocation, NULL, 0, cvout); |
| 808 if (status != SECSuccess) { | 808 if (status != SECSuccess) { |
| 809 int err = PORT_GetError(); | 809 int err = PORT_GetError(); |
| 810 LOG(ERROR) << "CERT_PKIXVerifyCert for " << hostname | 810 LOG(ERROR) << "CERT_PKIXVerifyCert for " << hostname |
| 811 << " failed err=" << err; | 811 << " failed err=" << err; |
| 812 // CERT_PKIXVerifyCert rerports the wrong error code for | 812 // CERT_PKIXVerifyCert rerports the wrong error code for |
| 813 // expired certificates (NSS bug 491174) | 813 // expired certificates (NSS bug 491174) |
| 814 if (err == SEC_ERROR_CERT_NOT_VALID && | 814 if (err == SEC_ERROR_CERT_NOT_VALID && |
| 815 (verify_result->cert_status & CERT_STATUS_DATE_INVALID) != 0) | 815 (verify_result->cert_status & CERT_STATUS_DATE_INVALID)) |
| 816 err = SEC_ERROR_EXPIRED_CERTIFICATE; | 816 err = SEC_ERROR_EXPIRED_CERTIFICATE; |
| 817 int cert_status = MapCertErrorToCertStatus(err); | 817 CertStatus cert_status = MapCertErrorToCertStatus(err); |
| 818 if (cert_status) { | 818 if (cert_status) { |
| 819 verify_result->cert_status |= cert_status; | 819 verify_result->cert_status |= cert_status; |
| 820 return MapCertStatusToNetError(verify_result->cert_status); | 820 return MapCertStatusToNetError(verify_result->cert_status); |
| 821 } | 821 } |
| 822 // |err| is not a certificate error. | 822 // |err| is not a certificate error. |
| 823 return MapSecurityError(err); | 823 return MapSecurityError(err); |
| 824 } | 824 } |
| 825 | 825 |
| 826 GetCertChainInfo(cvout[cvout_cert_list_index].value.pointer.chain, | 826 GetCertChainInfo(cvout[cvout_cert_list_index].value.pointer.chain, |
| 827 cvout[cvout_trust_anchor_index].value.pointer.cert, | 827 cvout[cvout_trust_anchor_index].value.pointer.cert, |
| (...skipping 181 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1009 | 1009 |
| 1010 // static | 1010 // static |
| 1011 bool X509Certificate::WriteOSCertHandleToPickle(OSCertHandle cert_handle, | 1011 bool X509Certificate::WriteOSCertHandleToPickle(OSCertHandle cert_handle, |
| 1012 Pickle* pickle) { | 1012 Pickle* pickle) { |
| 1013 return pickle->WriteData( | 1013 return pickle->WriteData( |
| 1014 reinterpret_cast<const char*>(cert_handle->derCert.data), | 1014 reinterpret_cast<const char*>(cert_handle->derCert.data), |
| 1015 cert_handle->derCert.len); | 1015 cert_handle->derCert.len); |
| 1016 } | 1016 } |
| 1017 | 1017 |
| 1018 } // namespace net | 1018 } // namespace net |
| OLD | NEW |