Index: net/base/x509_util_ios.h |
diff --git a/net/base/x509_util_ios.h b/net/base/x509_util_ios.h |
index 641ddba136041179919cbef059dcf228db0f8cff..b8aca014d1716e1c6ea74ba14797817161898314 100644 |
--- a/net/base/x509_util_ios.h |
+++ b/net/base/x509_util_ios.h |
@@ -9,11 +9,17 @@ |
#define NET_BASE_X509_UTIL_IOS_H_ |
#include <Security/Security.h> |
+#include <vector> |
+ |
+#include "net/base/x509_cert_types.h" |
// Forward declaration; real one in <cert.h> |
typedef struct CERTCertificateStr CERTCertificate; |
namespace net { |
+ |
+class X509Certificate; |
+ |
namespace x509_util_ios { |
// Converts a Security.framework certificate handle (SecCertificateRef) into |
@@ -25,6 +31,16 @@ CERTCertificate* CreateNSSCertHandleFromOSHandle(SecCertificateRef cert_handle); |
SecCertificateRef CreateOSCertHandleFromNSSHandle( |
CERTCertificate* nss_cert_handle); |
+// Create a new X509Certificate from the specified NSS server cert and |
+// intermediates. This is functionally equivalent to |
+// X509Certificate::CreateFromHandle(), except it supports receiving |
+// NSS CERTCertificate*s rather than iOS SecCertificateRefs. |
+X509Certificate* CreateCertFromNSSHandles( |
+ CERTCertificate* cert_handle, |
+ const std::vector<CERTCertificate*>& intermediates); |
+ |
+SHA1HashValue CalculateFingerprintNSS(CERTCertificate* cert); |
+ |
// This is a wrapper class around the native NSS certificate handle. |
// The constructor copies the certificate data from |cert_handle| and |
// uses the NSS library to parse it. |
@@ -32,11 +48,23 @@ class NSSCertificate { |
public: |
explicit NSSCertificate(SecCertificateRef cert_handle); |
~NSSCertificate(); |
- CERTCertificate* cert_handle(); |
+ CERTCertificate* cert_handle() const; |
private: |
CERTCertificate* nss_cert_handle_; |
}; |
+// A wrapper class that loads a certificate and all of its intermediates into |
+// NSS. This is necessary for libpkix path building to be able to locate |
+// needed intermediates. |
+class NSSCertChain { |
+ public: |
+ explicit NSSCertChain(X509Certificate* certificate); |
+ ~NSSCertChain(); |
+ CERTCertificate* cert_handle() const; |
+ private: |
+ std::vector<CERTCertificate*> certs_; |
+}; |
+ |
} // namespace x509_util_ios |
} // namespace net |