| OLD | NEW |
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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 #ifndef NET_CERT_INTERNAL_VERIFY_CERTIFICATE_CHAIN_H_ | 5 #ifndef NET_CERT_INTERNAL_VERIFY_CERTIFICATE_CHAIN_H_ |
| 6 #define NET_CERT_INTERNAL_VERIFY_CERTIFICATE_CHAIN_H_ | 6 #define NET_CERT_INTERNAL_VERIFY_CERTIFICATE_CHAIN_H_ |
| 7 | 7 |
| 8 #include <vector> | 8 #include <vector> |
| 9 | 9 |
| 10 #include "base/compiler_specific.h" | 10 #include "base/compiler_specific.h" |
| (...skipping 12 matching lines...) Expand all Loading... |
| 23 class SignaturePolicy; | 23 class SignaturePolicy; |
| 24 class TrustAnchor; | 24 class TrustAnchor; |
| 25 | 25 |
| 26 // The key purpose (extended key usage) to check for during verification. | 26 // The key purpose (extended key usage) to check for during verification. |
| 27 enum class KeyPurpose { | 27 enum class KeyPurpose { |
| 28 ANY_EKU, | 28 ANY_EKU, |
| 29 SERVER_AUTH, | 29 SERVER_AUTH, |
| 30 CLIENT_AUTH, | 30 CLIENT_AUTH, |
| 31 }; | 31 }; |
| 32 | 32 |
| 33 // VerifyCertificateChain() verifies a certificate path (chain) based on the | 33 // VerifyCertificateChain() verifies an ordered certificate path in accordance |
| 34 // rules in RFC 5280. The caller is responsible for building the path and | 34 // with RFC 5280 (with some modifications [1]). |
| 35 // finding the trust anchor. | 35 // |
| 36 // [1] Deviations from RFC 5280: |
| 37 // |
| 38 // * If Extended Key Usage appears on intermediates it is treated as a |
| 39 // restriction on subordinate certificates. |
| 40 // |
| 41 // The caller is responsible for additionally checking: |
| 42 // |
| 43 // * The end-entity's KeyUsage before using its SPKI. |
| 44 // * The end-entity's name/subjectAltName (note that name constraints from |
| 45 // intermediates will have already been applied, so just need to check |
| 46 // the end-entity for a match). |
| 47 // * Policies |
| 36 // | 48 // |
| 37 // WARNING: This implementation is in progress, and is currently incomplete. | 49 // WARNING: This implementation is in progress, and is currently incomplete. |
| 38 // Consult an OWNER before using it. | 50 // Consult an OWNER before using it. |
| 39 // | 51 // |
| 40 // TODO(eroman): Take a CertPath instead of ParsedCertificateList + | 52 // TODO(eroman): Take a CertPath instead of ParsedCertificateList + |
| 41 // TrustAnchor. | 53 // TrustAnchor. |
| 42 // | 54 // |
| 43 // --------- | 55 // --------- |
| 44 // Inputs | 56 // Inputs |
| 45 // --------- | 57 // --------- |
| (...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 85 KeyPurpose required_key_purpose, | 97 KeyPurpose required_key_purpose, |
| 86 CertPathErrors* errors); | 98 CertPathErrors* errors); |
| 87 | 99 |
| 88 // TODO(crbug.com/634443): Move exported errors to a central location? | 100 // TODO(crbug.com/634443): Move exported errors to a central location? |
| 89 extern CertErrorId kValidityFailedNotAfter; | 101 extern CertErrorId kValidityFailedNotAfter; |
| 90 extern CertErrorId kValidityFailedNotBefore; | 102 extern CertErrorId kValidityFailedNotBefore; |
| 91 | 103 |
| 92 } // namespace net | 104 } // namespace net |
| 93 | 105 |
| 94 #endif // NET_CERT_INTERNAL_VERIFY_CERTIFICATE_CHAIN_H_ | 106 #endif // NET_CERT_INTERNAL_VERIFY_CERTIFICATE_CHAIN_H_ |
| OLD | NEW |