Index: net/cert/x509_util_mac.h |
diff --git a/net/cert/x509_util_mac.h b/net/cert/x509_util_mac.h |
index 6b320a8cd6c30aeeefa84f9f4406170f047856e0..eb3bea82e4a72eacd6bb16cab6f44fb2872fa3bc 100644 |
--- a/net/cert/x509_util_mac.h |
+++ b/net/cert/x509_util_mac.h |
@@ -10,13 +10,62 @@ |
#include <string> |
+#include "base/mac/scoped_cftyperef.h" |
#include "base/macros.h" |
+#include "base/memory/ref_counted.h" |
+#include "net/base/hash_value.h" |
#include "net/base/net_export.h" |
namespace net { |
+class X509Certificate; |
+ |
namespace x509_util { |
+// Test that a given |cert_handle| is actually a valid X.509 certificate, and |
+// return true if it is. |
+// |
+// On OS X, SecCertificateCreateFromData() does not return any errors if |
+// called with invalid data, as long as data is present. The actual decoding |
+// of the certificate does not happen until an API that requires a CSSM |
+// handle is called. While SecCertificateGetCLHandle is the most likely |
+// candidate, as it performs the parsing, it does not check whether the |
+// parsing was actually successful. Instead, SecCertificateGetSubject is |
+// used (supported since 10.3), as a means to check that the certificate |
+// parsed as a valid X.509 certificate. |
+bool NET_EXPORT IsValidSecCertificate(SecCertificateRef cert_handle); |
+ |
+// Creates a SecCertificate handle from the DER-encoded representation. |
+// Returns NULL on failure. |
+base::ScopedCFTypeRef<SecCertificateRef> NET_EXPORT |
+CreateSecCertificateFromBytes(const uint8_t* data, size_t length); |
+ |
+// Returns a SecCertificate representing |cert|, or NULL on failure. |
+base::ScopedCFTypeRef<SecCertificateRef> NET_EXPORT |
+CreateSecCertificateFromX509Certificate(const X509Certificate* cert); |
+ |
+// Returns a new CFMutableArrayRef containing this certificate and its |
+// intermediate certificates in the form expected by Security.framework |
+// and Keychain Services, or NULL on failure. |
+// The first item in the array will be this certificate, followed by its |
+// intermediates, if any. |
+base::ScopedCFTypeRef<CFMutableArrayRef> NET_EXPORT |
+CreateSecCertificateArrayForX509Certificate(X509Certificate* cert); |
+ |
+// Creates an X509Certificate representing |sec_cert| with intermediates |
+// |sec_chain|. |
+scoped_refptr<X509Certificate> NET_EXPORT |
+CreateX509CertificateFromSecCertificate( |
+ SecCertificateRef sec_cert, |
+ const std::vector<SecCertificateRef>& sec_chain); |
+ |
+// Returns true if the certificate is self-signed. |
+bool NET_EXPORT IsSelfSigned(SecCertificateRef cert_handle); |
+ |
+// Calculates the SHA-256 fingerprint of the certificate. Returns an empty |
+// (all zero) fingerprint on failure. |
+SHA256HashValue NET_EXPORT CalculateFingerprint256(SecCertificateRef cert); |
+ |
// Creates a security policy for certificates used as client certificates |
// in SSL. |
// If a policy is successfully created, it will be stored in |