1 // Copyright (c) 2011 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #ifndef NET_SSL_SSL_CERT_REQUEST_INFO_H_
6 #define NET_SSL_SSL_CERT_REQUEST_INFO_H_
11 #include "base/memory/ref_counted.h"
12 #include "net/base/net_export.h"
13 #include "net/ssl/ssl_client_cert_type.h"
17 class X509Certificate
;
19 // The SSLCertRequestInfo class represents server criteria regarding client
20 // certificate required for a secure connection.
22 // In TLS 1.1, the CertificateRequest
23 // message is defined as:
25 // rsa_sign(1), dss_sign(2), rsa_fixed_dh(3), dss_fixed_dh(4),
26 // rsa_ephemeral_dh_RESERVED(5), dss_ephemeral_dh_RESERVED(6),
27 // fortezza_dms_RESERVED(20), (255)
28 // } ClientCertificateType;
30 // opaque DistinguishedName<1..2^16-1>;
33 // ClientCertificateType certificate_types<1..2^8-1>;
34 // DistinguishedName certificate_authorities<3..2^16-1>;
35 // } CertificateRequest;
36 class NET_EXPORT SSLCertRequestInfo
37 : public base::RefCountedThreadSafe
<SSLCertRequestInfo
> {
43 // The host and port of the SSL server that requested client authentication.
44 std::string host_and_port
;
46 // True if the server that issues this request was the HTTPS proxy used in
47 // the request. False, if the server was the origin server.
50 // List of DER-encoded X.509 DistinguishedName of certificate authorities
51 // allowed by the server.
52 std::vector
<std::string
> cert_authorities
;
54 std::vector
<SSLClientCertType
> cert_key_types
;
56 // Client certificates matching the server criteria. This should be removed
57 // soon as being tracked in http://crbug.com/166642.
58 std::vector
<scoped_refptr
<X509Certificate
> > client_certs
;
61 friend class base::RefCountedThreadSafe
<SSLCertRequestInfo
>;
63 ~SSLCertRequestInfo();
68 #endif // NET_SSL_SSL_CERT_REQUEST_INFO_H_