Index: net/base/x509_util_mac.h |
diff --git a/net/base/x509_util_mac.h b/net/base/x509_util_mac.h |
deleted file mode 100644 |
index 9272bc774f7a391eccb68b3790bfa930280d2e40..0000000000000000000000000000000000000000 |
--- a/net/base/x509_util_mac.h |
+++ /dev/null |
@@ -1,139 +0,0 @@ |
-// Copyright (c) 2012 The Chromium Authors. All rights reserved. |
-// Use of this source code is governed by a BSD-style license that can be |
-// found in the LICENSE file. |
- |
-#ifndef NET_BASE_X509_UTIL_MAC_H_ |
-#define NET_BASE_X509_UTIL_MAC_H_ |
- |
-#include <CoreFoundation/CFArray.h> |
-#include <Security/Security.h> |
- |
-#include <string> |
- |
-#include "base/basictypes.h" |
-#include "net/base/net_export.h" |
- |
-namespace net { |
- |
-namespace x509_util { |
- |
-// Creates a security policy for certificates used as client certificates |
-// in SSL. |
-// If a policy is successfully created, it will be stored in |
-// |*policy| and ownership transferred to the caller. |
-OSStatus NET_EXPORT CreateSSLClientPolicy(SecPolicyRef* policy); |
- |
-// Create an SSL server policy. While certificate name validation will be |
-// performed by SecTrustEvaluate(), it has the following limitations: |
-// - Doesn't support IP addresses in dotted-quad literals (127.0.0.1) |
-// - Doesn't support IPv6 addresses |
-// - Doesn't support the iPAddress subjectAltName |
-// Providing the hostname is necessary in order to locate certain user or |
-// system trust preferences, such as those created by Safari. Preferences |
-// created by Keychain Access do not share this requirement. |
-// On success, stores the resultant policy in |*policy| and returns noErr. |
-OSStatus NET_EXPORT CreateSSLServerPolicy(const std::string& hostname, |
- SecPolicyRef* policy); |
- |
-// Creates a security policy for basic X.509 validation. If the policy is |
-// successfully created, it will be stored in |*policy| and ownership |
-// transferred to the caller. |
-OSStatus NET_EXPORT CreateBasicX509Policy(SecPolicyRef* policy); |
- |
-// Creates security policies to control revocation checking (OCSP and CRL). |
-// If |enable_revocation_checking| is true, revocation checking will be |
-// explicitly enabled. |
-// If |enable_revocation_checking| is false, but |enable_ev_checking| is |
-// true, then the system policies for EV checking (which include checking |
-// for an online OCSP response) will be permitted. However, if the OS |
-// does not believe the certificate is EV, no revocation checking will be |
-// performed. |
-// If both are false, then the policies returned will be explicitly |
-// prohibited from accessing the network or the local cache, regardless of |
-// system settings. |
-// If the policies are successfully created, they will be appended to |
-// |policies|. |
-OSStatus NET_EXPORT CreateRevocationPolicies(bool enable_revocation_checking, |
- bool enable_ev_checking, |
- CFMutableArrayRef policies); |
- |
-// Wrapper for a CSSM_DATA_PTR that was obtained via one of the CSSM field |
-// accessors (such as CSSM_CL_CertGet[First/Next]Value or |
-// CSSM_CL_CertGet[First/Next]CachedValue). |
-class CSSMFieldValue { |
- public: |
- CSSMFieldValue(); |
- CSSMFieldValue(CSSM_CL_HANDLE cl_handle, |
- const CSSM_OID* oid, |
- CSSM_DATA_PTR field); |
- ~CSSMFieldValue(); |
- |
- CSSM_OID_PTR oid() const { return oid_; } |
- CSSM_DATA_PTR field() const { return field_; } |
- |
- // Returns the field as if it was an arbitrary type - most commonly, by |
- // interpreting the field as a specific CSSM/CDSA parsed type, such as |
- // CSSM_X509_SUBJECT_PUBLIC_KEY_INFO or CSSM_X509_ALGORITHM_IDENTIFIER. |
- // An added check is applied to ensure that the current field is large |
- // enough to actually contain the requested type. |
- template <typename T> const T* GetAs() const { |
- if (!field_ || field_->Length < sizeof(T)) |
- return NULL; |
- return reinterpret_cast<const T*>(field_->Data); |
- } |
- |
- void Reset(CSSM_CL_HANDLE cl_handle, |
- CSSM_OID_PTR oid, |
- CSSM_DATA_PTR field); |
- |
- private: |
- CSSM_CL_HANDLE cl_handle_; |
- CSSM_OID_PTR oid_; |
- CSSM_DATA_PTR field_; |
- |
- DISALLOW_COPY_AND_ASSIGN(CSSMFieldValue); |
-}; |
- |
-// CSSMCachedCertificate is a container class that is used to wrap the |
-// CSSM_CL_CertCache APIs and provide safe and efficient access to |
-// certificate fields in their CSSM form. |
-// |
-// To provide efficient access to certificate/CRL fields, CSSM provides an |
-// API/SPI to "cache" a certificate/CRL. The exact meaning of a cached |
-// certificate is not defined by CSSM, but is documented to generally be some |
-// intermediate or parsed form of the certificate. In the case of Apple's |
-// CSSM CL implementation, the intermediate form is the parsed certificate |
-// stored in an internal format (which happens to be NSS). By caching the |
-// certificate, callers that wish to access multiple fields (such as subject, |
-// issuer, and validity dates) do not need to repeatedly parse the entire |
-// certificate, nor are they forced to convert all fields from their NSS types |
-// to their CSSM equivalents. This latter point is especially helpful when |
-// running on OS X 10.5, as it will fail to convert some fields that reference |
-// unsupported algorithms, such as ECC. |
-class CSSMCachedCertificate { |
- public: |
- CSSMCachedCertificate(); |
- ~CSSMCachedCertificate(); |
- |
- // Initializes the CSSMCachedCertificate by caching the specified |
- // |os_cert_handle|. On success, returns noErr. |
- // Note: Once initialized, the cached certificate should only be accessed |
- // from a single thread. |
- OSStatus Init(SecCertificateRef os_cert_handle); |
- |
- // Fetches the first value for the field associated with |field_oid|. |
- // If |field_oid| is a valid OID and is present in the current certificate, |
- // returns CSSM_OK and stores the first value in |field|. If additional |
- // values are associated with |field_oid|, they are ignored. |
- OSStatus GetField(const CSSM_OID* field_oid, CSSMFieldValue* field) const; |
- |
- private: |
- CSSM_CL_HANDLE cl_handle_; |
- CSSM_HANDLE cached_cert_handle_; |
-}; |
- |
-} // namespace x509_util |
- |
-} // namespace net |
- |
-#endif // NET_BASE_X509_UTIL_MAC_H_ |