Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(143)

Side by Side Diff: net/socket/ssl_client_socket_win.h

Issue 5386001: Cache certificate verification results in memory. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Upload before checkin Created 10 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « net/socket/ssl_client_socket_unittest.cc ('k') | net/socket/ssl_client_socket_win.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef NET_SOCKET_SSL_CLIENT_SOCKET_WIN_H_ 5 #ifndef NET_SOCKET_SSL_CLIENT_SOCKET_WIN_H_
6 #define NET_SOCKET_SSL_CLIENT_SOCKET_WIN_H_ 6 #define NET_SOCKET_SSL_CLIENT_SOCKET_WIN_H_
7 #pragma once 7 #pragma once
8 8
9 #define SECURITY_WIN32 // Needs to be defined before including security.h 9 #define SECURITY_WIN32 // Needs to be defined before including security.h
10 10
(...skipping 10 matching lines...) Expand all
21 #include "net/base/net_log.h" 21 #include "net/base/net_log.h"
22 #include "net/base/ssl_config_service.h" 22 #include "net/base/ssl_config_service.h"
23 #include "net/socket/ssl_client_socket.h" 23 #include "net/socket/ssl_client_socket.h"
24 24
25 namespace net { 25 namespace net {
26 26
27 class BoundNetLog; 27 class BoundNetLog;
28 class CertVerifier; 28 class CertVerifier;
29 class ClientSocketHandle; 29 class ClientSocketHandle;
30 class HostPortPair; 30 class HostPortPair;
31 class SingleRequestCertVerifier;
31 32
32 // An SSL client socket implemented with the Windows Schannel. 33 // An SSL client socket implemented with the Windows Schannel.
33 class SSLClientSocketWin : public SSLClientSocket { 34 class SSLClientSocketWin : public SSLClientSocket {
34 public: 35 public:
35 // Takes ownership of the |transport_socket|, which must already be connected. 36 // Takes ownership of the |transport_socket|, which must already be connected.
36 // The hostname specified in |host_and_port| will be compared with the name(s) 37 // The hostname specified in |host_and_port| will be compared with the name(s)
37 // in the server's certificate during the SSL handshake. If SSL client 38 // in the server's certificate during the SSL handshake. If SSL client
38 // authentication is requested, the host_and_port field of SSLCertRequestInfo 39 // authentication is requested, the host_and_port field of SSLCertRequestInfo
39 // will be populated with |host_and_port|. |ssl_config| specifies 40 // will be populated with |host_and_port|. |ssl_config| specifies
40 // the SSL settings. 41 // the SSL settings.
41 SSLClientSocketWin(ClientSocketHandle* transport_socket, 42 SSLClientSocketWin(ClientSocketHandle* transport_socket,
42 const HostPortPair& host_and_port, 43 const HostPortPair& host_and_port,
43 const SSLConfig& ssl_config); 44 const SSLConfig& ssl_config,
45 CertVerifier* cert_verifier);
44 ~SSLClientSocketWin(); 46 ~SSLClientSocketWin();
45 47
46 // SSLClientSocket methods: 48 // SSLClientSocket methods:
47 virtual void GetSSLInfo(SSLInfo* ssl_info); 49 virtual void GetSSLInfo(SSLInfo* ssl_info);
48 virtual void GetSSLCertRequestInfo(SSLCertRequestInfo* cert_request_info); 50 virtual void GetSSLCertRequestInfo(SSLCertRequestInfo* cert_request_info);
49 virtual NextProtoStatus GetNextProto(std::string* proto); 51 virtual NextProtoStatus GetNextProto(std::string* proto);
50 52
51 // ClientSocket methods: 53 // ClientSocket methods:
52 virtual int Connect(CompletionCallback* callback); 54 virtual int Connect(CompletionCallback* callback);
53 virtual void Disconnect(); 55 virtual void Disconnect();
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after
138 STATE_COMPLETED_RENEGOTIATION, 140 STATE_COMPLETED_RENEGOTIATION,
139 STATE_COMPLETED_HANDSHAKE 141 STATE_COMPLETED_HANDSHAKE
140 // After the handshake, the socket remains 142 // After the handshake, the socket remains
141 // in the STATE_COMPLETED_HANDSHAKE state, 143 // in the STATE_COMPLETED_HANDSHAKE state,
142 // unless a renegotiate handshake occurs. 144 // unless a renegotiate handshake occurs.
143 }; 145 };
144 State next_state_; 146 State next_state_;
145 147
146 SecPkgContext_StreamSizes stream_sizes_; 148 SecPkgContext_StreamSizes stream_sizes_;
147 scoped_refptr<X509Certificate> server_cert_; 149 scoped_refptr<X509Certificate> server_cert_;
148 scoped_ptr<CertVerifier> verifier_; 150 CertVerifier* const cert_verifier_;
151 scoped_ptr<SingleRequestCertVerifier> verifier_;
149 CertVerifyResult server_cert_verify_result_; 152 CertVerifyResult server_cert_verify_result_;
150 153
151 CredHandle* creds_; 154 CredHandle* creds_;
152 CtxtHandle ctxt_; 155 CtxtHandle ctxt_;
153 SecBuffer in_buffers_[2]; // Input buffers for InitializeSecurityContext. 156 SecBuffer in_buffers_[2]; // Input buffers for InitializeSecurityContext.
154 SecBuffer send_buffer_; // Output buffer for InitializeSecurityContext. 157 SecBuffer send_buffer_; // Output buffer for InitializeSecurityContext.
155 SECURITY_STATUS isc_status_; // Return value of InitializeSecurityContext. 158 SECURITY_STATUS isc_status_; // Return value of InitializeSecurityContext.
156 scoped_array<char> payload_send_buffer_; 159 scoped_array<char> payload_send_buffer_;
157 int payload_send_buffer_len_; 160 int payload_send_buffer_len_;
158 int bytes_sent_; 161 int bytes_sent_;
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
192 195
193 // True when the decrypter needs more data in order to decrypt. 196 // True when the decrypter needs more data in order to decrypt.
194 bool need_more_data_; 197 bool need_more_data_;
195 198
196 BoundNetLog net_log_; 199 BoundNetLog net_log_;
197 }; 200 };
198 201
199 } // namespace net 202 } // namespace net
200 203
201 #endif // NET_SOCKET_SSL_CLIENT_SOCKET_WIN_H_ 204 #endif // NET_SOCKET_SSL_CLIENT_SOCKET_WIN_H_
OLDNEW
« no previous file with comments | « net/socket/ssl_client_socket_unittest.cc ('k') | net/socket/ssl_client_socket_win.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698