| Index: net/base/origin_bound_cert_service.h
|
| diff --git a/net/base/origin_bound_cert_service.h b/net/base/origin_bound_cert_service.h
|
| index 861602f457515ea1322c1a72a1c7f98f98384c64..c3861e6db06e10ee9f0427e285079b77bb8e5085 100644
|
| --- a/net/base/origin_bound_cert_service.h
|
| +++ b/net/base/origin_bound_cert_service.h
|
| @@ -8,12 +8,14 @@
|
|
|
| #include <map>
|
| #include <string>
|
| +#include <vector>
|
|
|
| #include "base/basictypes.h"
|
| #include "base/memory/scoped_ptr.h"
|
| #include "base/threading/non_thread_safe.h"
|
| #include "net/base/completion_callback.h"
|
| #include "net/base/net_export.h"
|
| +#include "net/base/ssl_client_cert_type.h"
|
|
|
| namespace net {
|
|
|
| @@ -30,20 +32,28 @@ class NET_EXPORT OriginBoundCertService
|
| // Opaque type used to cancel a request.
|
| typedef void* RequestHandle;
|
|
|
| + // Password used on EncryptedPrivateKeyInfo data stored in EC private_key
|
| + // values. (This is not used to provide any security, but to workaround NSS
|
| + // being unable to import unencrypted PrivateKeyInfo for EC keys.)
|
| + static const char kEPKIPassword[];
|
| +
|
| // This object owns origin_bound_cert_store.
|
| explicit OriginBoundCertService(
|
| OriginBoundCertStore* origin_bound_cert_store);
|
|
|
| ~OriginBoundCertService();
|
|
|
| - // TODO(rkn): Specify certificate type (RSA or DSA).
|
| + // Fetches the origin bound cert for the specified origin of the specified
|
| + // type if one exists and creates one otherwise. Returns OK if successful or
|
| + // an error code upon failure.
|
| //
|
| - // Fetches the origin bound cert for the specified origin if one exists
|
| - // and creates one otherwise. Returns OK if successful or an error code upon
|
| - // failure.
|
| + // |requested_types| is a list of the TLS ClientCertificateTypes the site will
|
| + // accept, ordered from most preferred to least preferred. Types we don't
|
| + // support will be ignored. See ssl_client_cert_type.h.
|
| //
|
| // On successful completion, |private_key| stores a DER-encoded
|
| - // PrivateKeyInfo struct, and |cert| stores a DER-encoded certificate.
|
| + // PrivateKeyInfo struct, and |cert| stores a DER-encoded certificate, and
|
| + // |type| specifies the type of certificate that was returned.
|
| //
|
| // |callback| must not be null. ERR_IO_PENDING is returned if the operation
|
| // could not be completed immediately, in which case the result code will
|
| @@ -52,11 +62,14 @@ class NET_EXPORT OriginBoundCertService
|
| // If |out_req| is non-NULL, then |*out_req| will be filled with a handle to
|
| // the async request. This handle is not valid after the request has
|
| // completed.
|
| - int GetOriginBoundCert(const std::string& origin,
|
| - std::string* private_key,
|
| - std::string* cert,
|
| - const CompletionCallback& callback,
|
| - RequestHandle* out_req);
|
| + int GetOriginBoundCert(
|
| + const std::string& origin,
|
| + const std::vector<uint8>& requested_types,
|
| + SSLClientCertType* type,
|
| + std::string* private_key,
|
| + std::string* cert,
|
| + const CompletionCallback& callback,
|
| + RequestHandle* out_req);
|
|
|
| // Cancels the specified request. |req| is the handle returned by
|
| // GetOriginBoundCert(). After a request is canceled, its completion
|
| @@ -79,12 +92,14 @@ class NET_EXPORT OriginBoundCertService
|
| // base::RandInt, which opens the file /dev/urandom. /dev/urandom is opened
|
| // with a LazyInstance, which is not allowed on a worker thread.
|
| static int GenerateCert(const std::string& origin,
|
| + SSLClientCertType type,
|
| uint32 serial_number,
|
| std::string* private_key,
|
| std::string* cert);
|
|
|
| void HandleResult(const std::string& origin,
|
| int error,
|
| + SSLClientCertType type,
|
| const std::string& private_key,
|
| const std::string& cert);
|
|
|
|
|