Index: net/socket/ssl_server_socket_openssl.h |
diff --git a/net/socket/ssl_server_socket_openssl.h b/net/socket/ssl_server_socket_openssl.h |
index 52f8241b438ef6f516afd485d47d032e65063da7..3a9d9c85fc1cd0e6d7d2f420c6128b9095788853 100644 |
--- a/net/socket/ssl_server_socket_openssl.h |
+++ b/net/socket/ssl_server_socket_openssl.h |
@@ -13,6 +13,7 @@ |
#include "net/base/io_buffer.h" |
#include "net/log/net_log.h" |
#include "net/socket/ssl_server_socket.h" |
+#include "net/ssl/scoped_openssl_types.h" |
#include "net/ssl/ssl_server_config.h" |
// Avoid including misc OpenSSL headers, i.e.: |
@@ -26,120 +27,18 @@ namespace net { |
class SSLInfo; |
-class SSLServerSocketOpenSSL : public SSLServerSocket { |
+class SSLServerContextOpenSSL : public SSLServerContext { |
public: |
- // See comments on CreateSSLServerSocket for details of how these |
- // parameters are used. |
- SSLServerSocketOpenSSL(scoped_ptr<StreamSocket> socket, |
- scoped_refptr<X509Certificate> certificate, |
- const crypto::RSAPrivateKey& key, |
- const SSLServerConfig& ssl_server_config); |
- ~SSLServerSocketOpenSSL() override; |
+ SSLServerContextOpenSSL(X509Certificate* certificate, |
+ const crypto::RSAPrivateKey& key, |
+ const SSLServerConfig& ssl_server_config); |
+ ~SSLServerContextOpenSSL() override; |
- // SSLServerSocket interface. |
- int Handshake(const CompletionCallback& callback) override; |
- |
- // SSLSocket interface. |
- int ExportKeyingMaterial(const base::StringPiece& label, |
- bool has_context, |
- const base::StringPiece& context, |
- unsigned char* out, |
- unsigned int outlen) override; |
- int GetTLSUniqueChannelBinding(std::string* out) override; |
- |
- // Socket interface (via StreamSocket). |
- int Read(IOBuffer* buf, |
- int buf_len, |
- const CompletionCallback& callback) override; |
- int Write(IOBuffer* buf, |
- int buf_len, |
- const CompletionCallback& callback) override; |
- int SetReceiveBufferSize(int32_t size) override; |
- int SetSendBufferSize(int32_t size) override; |
- |
- // StreamSocket implementation. |
- int Connect(const CompletionCallback& callback) override; |
- void Disconnect() override; |
- bool IsConnected() const override; |
- bool IsConnectedAndIdle() const override; |
- int GetPeerAddress(IPEndPoint* address) const override; |
- int GetLocalAddress(IPEndPoint* address) const override; |
- const BoundNetLog& NetLog() const override; |
- void SetSubresourceSpeculation() override; |
- void SetOmniboxSpeculation() override; |
- bool WasEverUsed() const override; |
- bool UsingTCPFastOpen() const override; |
- bool WasNpnNegotiated() const override; |
- NextProto GetNegotiatedProtocol() const override; |
- bool GetSSLInfo(SSLInfo* ssl_info) override; |
- void GetConnectionAttempts(ConnectionAttempts* out) const override; |
- void ClearConnectionAttempts() override {} |
- void AddConnectionAttempts(const ConnectionAttempts& attempts) override {} |
- int64_t GetTotalReceivedBytes() const override; |
+ scoped_ptr<SSLServerSocket> CreateSSLServerSocket( |
+ scoped_ptr<StreamSocket> socket) override; |
private: |
- enum State { |
- STATE_NONE, |
- STATE_HANDSHAKE, |
- }; |
- |
- void OnSendComplete(int result); |
- void OnRecvComplete(int result); |
- void OnHandshakeIOComplete(int result); |
- |
- int BufferSend(); |
- void BufferSendComplete(int result); |
- void TransportWriteComplete(int result); |
- int BufferRecv(); |
- void BufferRecvComplete(int result); |
- int TransportReadComplete(int result); |
- bool DoTransportIO(); |
- int DoPayloadRead(); |
- int DoPayloadWrite(); |
- |
- int DoHandshakeLoop(int last_io_result); |
- int DoReadLoop(int result); |
- int DoWriteLoop(int result); |
- int DoHandshake(); |
- void DoHandshakeCallback(int result); |
- void DoReadCallback(int result); |
- void DoWriteCallback(int result); |
- |
- int Init(); |
- static int CertVerifyCallback(X509_STORE_CTX* store_ctx, void* arg); |
- |
- // Members used to send and receive buffer. |
- bool transport_send_busy_; |
- bool transport_recv_busy_; |
- bool transport_recv_eof_; |
- |
- scoped_refptr<DrainableIOBuffer> send_buffer_; |
- scoped_refptr<IOBuffer> recv_buffer_; |
- |
- BoundNetLog net_log_; |
- |
- CompletionCallback user_handshake_callback_; |
- CompletionCallback user_read_callback_; |
- CompletionCallback user_write_callback_; |
- |
- // Used by Read function. |
- scoped_refptr<IOBuffer> user_read_buf_; |
- int user_read_buf_len_; |
- |
- // Used by Write function. |
- scoped_refptr<IOBuffer> user_write_buf_; |
- int user_write_buf_len_; |
- |
- // Used by TransportWriteComplete() and TransportReadComplete() to signify an |
- // error writing to the transport socket. A value of OK indicates no error. |
- int transport_write_error_; |
- |
- // OpenSSL stuff |
- SSL* ssl_; |
- BIO* transport_bio_; |
- |
- // StreamSocket for sending and receiving data. |
- scoped_ptr<StreamSocket> transport_socket_; |
+ ScopedSSL_CTX ssl_ctx_; |
// Options for the SSL socket. |
SSLServerConfig ssl_server_config_; |
@@ -149,14 +48,6 @@ class SSLServerSocketOpenSSL : public SSLServerSocket { |
// Private key used by the server. |
scoped_ptr<crypto::RSAPrivateKey> key_; |
- |
- // Certificate for the client. |
- scoped_refptr<X509Certificate> client_cert_; |
- |
- State next_handshake_state_; |
- bool completed_handshake_; |
- |
- DISALLOW_COPY_AND_ASSIGN(SSLServerSocketOpenSSL); |
}; |
} // namespace net |