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

Unified Diff: net/base/ssl_client_socket_win.h

Issue 144009: Move socket related files from net/base to net/socket. (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 11 years, 6 months 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « net/base/ssl_client_socket_unittest.cc ('k') | net/base/ssl_client_socket_win.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: net/base/ssl_client_socket_win.h
===================================================================
--- net/base/ssl_client_socket_win.h (revision 18948)
+++ net/base/ssl_client_socket_win.h (working copy)
@@ -1,157 +0,0 @@
-// Copyright (c) 2006-2009 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef NET_BASE_SSL_CLIENT_SOCKET_WIN_H_
-#define NET_BASE_SSL_CLIENT_SOCKET_WIN_H_
-
-#define SECURITY_WIN32 // Needs to be defined before including security.h
-
-#include <windows.h>
-#include <wincrypt.h>
-#include <security.h>
-
-#include <string>
-
-#include "base/scoped_ptr.h"
-#include "net/base/cert_verifier.h"
-#include "net/base/cert_verify_result.h"
-#include "net/base/completion_callback.h"
-#include "net/base/ssl_client_socket.h"
-#include "net/base/ssl_config_service.h"
-
-namespace net {
-
-// An SSL client socket implemented with the Windows Schannel.
-class SSLClientSocketWin : public SSLClientSocket {
- public:
- // Takes ownership of the transport_socket, which may already be connected.
- // The given hostname will be compared with the name(s) in the server's
- // certificate during the SSL handshake. ssl_config specifies the SSL
- // settings.
- SSLClientSocketWin(ClientSocket* transport_socket,
- const std::string& hostname,
- const SSLConfig& ssl_config);
- ~SSLClientSocketWin();
-
- // SSLClientSocket methods:
- virtual void GetSSLInfo(SSLInfo* ssl_info);
- virtual void GetSSLCertRequestInfo(SSLCertRequestInfo* cert_request_info);
-
- // ClientSocket methods:
- virtual int Connect(CompletionCallback* callback);
- virtual void Disconnect();
- virtual bool IsConnected() const;
- virtual bool IsConnectedAndIdle() const;
-
- // Socket methods:
- virtual int Read(IOBuffer* buf, int buf_len, CompletionCallback* callback);
- virtual int Write(IOBuffer* buf, int buf_len, CompletionCallback* callback);
-
- private:
- void DoCallback(int result);
- void OnIOComplete(int result);
-
- int DoLoop(int last_io_result);
- int DoHandshakeRead();
- int DoHandshakeReadComplete(int result);
- int DoHandshakeWrite();
- int DoHandshakeWriteComplete(int result);
- int DoVerifyCert();
- int DoVerifyCertComplete(int result);
- int DoPayloadRead();
- int DoPayloadReadComplete(int result);
- int DoPayloadEncrypt();
- int DoPayloadWrite();
- int DoPayloadWriteComplete(int result);
-
- int DidCallInitializeSecurityContext();
- int DidCompleteHandshake();
- void DidCompleteRenegotiation(int result);
- void LogConnectionTypeMetrics() const;
- void SetNextStateForRead();
- void FreeSendBuffer();
-
- CompletionCallbackImpl<SSLClientSocketWin> io_callback_;
- scoped_ptr<ClientSocket> transport_;
- std::string hostname_;
- SSLConfig ssl_config_;
-
- CompletionCallback* user_callback_;
-
- // Used by both Read and Write functions.
- scoped_refptr<IOBuffer> user_buf_;
- int user_buf_len_;
-
- // Used to Read and Write using transport_.
- scoped_refptr<IOBuffer> transport_buf_;
-
- enum State {
- STATE_NONE,
- STATE_HANDSHAKE_READ,
- STATE_HANDSHAKE_READ_COMPLETE,
- STATE_HANDSHAKE_WRITE,
- STATE_HANDSHAKE_WRITE_COMPLETE,
- STATE_VERIFY_CERT,
- STATE_VERIFY_CERT_COMPLETE,
- STATE_PAYLOAD_ENCRYPT,
- STATE_PAYLOAD_WRITE,
- STATE_PAYLOAD_WRITE_COMPLETE,
- STATE_PAYLOAD_READ,
- STATE_PAYLOAD_READ_COMPLETE,
- };
- State next_state_;
-
- SecPkgContext_StreamSizes stream_sizes_;
- scoped_refptr<X509Certificate> server_cert_;
- CertVerifier verifier_;
- CertVerifyResult server_cert_verify_result_;
-
- CredHandle* creds_;
- CtxtHandle ctxt_;
- SecBuffer in_buffers_[2]; // Input buffers for InitializeSecurityContext.
- SecBuffer send_buffer_; // Output buffer for InitializeSecurityContext.
- SECURITY_STATUS isc_status_; // Return value of InitializeSecurityContext.
- scoped_array<char> payload_send_buffer_;
- int payload_send_buffer_len_;
- int bytes_sent_;
-
- // recv_buffer_ holds the received ciphertext. Since Schannel decrypts
- // data in place, sometimes recv_buffer_ may contain decrypted plaintext and
- // any undecrypted ciphertext. (Ciphertext is decrypted one full SSL record
- // at a time.)
- //
- // If bytes_decrypted_ is 0, the received ciphertext is at the beginning of
- // recv_buffer_, ready to be passed to DecryptMessage.
- scoped_array<char> recv_buffer_;
- char* decrypted_ptr_; // Points to the decrypted plaintext in recv_buffer_
- int bytes_decrypted_; // The number of bytes of decrypted plaintext.
- char* received_ptr_; // Points to the received ciphertext in recv_buffer_
- int bytes_received_; // The number of bytes of received ciphertext.
-
- // True if we're writing the first token (handshake message) to the server,
- // false if we're writing a subsequent token. After we have written a token
- // successfully, DoHandshakeWriteComplete checks this member to set the next
- // state.
- bool writing_first_token_;
-
- bool completed_handshake_;
-
- // Only used in the STATE_HANDSHAKE_READ_COMPLETE and
- // STATE_PAYLOAD_READ_COMPLETE states. True if a 'result' argument of OK
- // should be ignored, to prevent it from being interpreted as EOF.
- //
- // The reason we need this flag is that OK means not only "0 bytes of data
- // were read" but also EOF. We set ignore_ok_result_ to true when we need
- // to continue processing previously read data without reading more data.
- // We have to pass a 'result' of OK to the DoLoop method, and don't want it
- // to be interpreted as EOF.
- bool ignore_ok_result_;
-
- // Renegotiation is in progress.
- bool renegotiating_;
-};
-
-} // namespace net
-
-#endif // NET_BASE_SSL_CLIENT_SOCKET_WIN_H_
« no previous file with comments | « net/base/ssl_client_socket_unittest.cc ('k') | net/base/ssl_client_socket_win.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698