Index: net/base/origin_bound_cert_store.h |
diff --git a/net/base/origin_bound_cert_store.h b/net/base/origin_bound_cert_store.h |
index 4cb11321779e9c29dad6e9a1fb111b20d7f13681..094839b1e8f52bac105d8b65698e996b4c350220 100644 |
--- a/net/base/origin_bound_cert_store.h |
+++ b/net/base/origin_bound_cert_store.h |
@@ -10,6 +10,7 @@ |
#include <vector> |
#include "net/base/net_export.h" |
+#include "net/base/ssl_client_cert_type.h" |
namespace net { |
@@ -22,30 +23,55 @@ namespace net { |
class NET_EXPORT OriginBoundCertStore { |
public: |
- // Used by GetAllOriginBoundCerts. |
- struct OriginBoundCertInfo { |
- std::string origin; // Origin, for instance "https://www.verisign.com:443". |
- std::string private_key; // DER-encoded PrivateKeyInfo struct. |
- std::string cert; // DER-encoded certificate. |
+ // The OriginBoundCert class contains a private key in addition to the origin |
+ // cert, and cert type. |
+ class NET_EXPORT OriginBoundCert { |
+ public: |
+ OriginBoundCert(); |
+ OriginBoundCert(const std::string& origin, |
+ SSLClientCertType type, |
+ const std::string& private_key, |
+ const std::string& cert); |
+ ~OriginBoundCert(); |
+ |
+ // Origin, for instance "https://www.verisign.com:443" |
+ const std::string& origin() const { return origin_; } |
+ // TLS ClientCertificateType. |
+ SSLClientCertType type() const { return type_; } |
+ // The encoding of the private key depends on the type. |
+ // rsa_sign: DER-encoded PrivateKeyInfo struct. |
+ // ecdsa_sign: DER-encoded EncryptedPrivateKeyInfo struct. |
+ const std::string& private_key() const { return private_key_; } |
+ // DER-encoded certificate. |
+ const std::string& cert() const { return cert_; } |
+ |
+ private: |
+ std::string origin_; |
+ SSLClientCertType type_; |
+ std::string private_key_; |
+ std::string cert_; |
}; |
virtual ~OriginBoundCertStore() {} |
- // TODO(rkn): Specify certificate type (RSA or DSA). |
// TODO(rkn): File I/O may be required, so this should have an asynchronous |
// interface. |
// Returns true on success. |private_key_result| stores a DER-encoded |
// PrivateKeyInfo struct and |cert_result| stores a DER-encoded |
// certificate. Returns false if no origin bound cert exists for the |
// specified origin. |
- virtual bool GetOriginBoundCert(const std::string& origin, |
- std::string* private_key_result, |
- std::string* cert_result) = 0; |
+ virtual bool GetOriginBoundCert( |
+ const std::string& origin, |
+ SSLClientCertType* type, |
+ std::string* private_key_result, |
+ std::string* cert_result) = 0; |
// Adds an origin bound cert and the corresponding private key to the store. |
- virtual void SetOriginBoundCert(const std::string& origin, |
- const std::string& private_key, |
- const std::string& cert) = 0; |
+ virtual void SetOriginBoundCert( |
+ const std::string& origin, |
+ SSLClientCertType type, |
+ const std::string& private_key, |
+ const std::string& cert) = 0; |
// Removes an origin bound cert and the corresponding private key from the |
// store. |
@@ -57,7 +83,7 @@ class NET_EXPORT OriginBoundCertStore { |
// Returns all origin bound certs and the corresponding private keys. |
virtual void GetAllOriginBoundCerts( |
- std::vector<OriginBoundCertInfo>* origin_bound_certs) = 0; |
+ std::vector<OriginBoundCert>* origin_bound_certs) = 0; |
// Returns the number of certs in the store. |
// Public only for unit testing. |