| Index: net/socket/ssl_server_socket_openssl.h
|
| diff --git a/net/socket/ssl_server_socket_nss.h b/net/socket/ssl_server_socket_openssl.h
|
| similarity index 75%
|
| copy from net/socket/ssl_server_socket_nss.h
|
| copy to net/socket/ssl_server_socket_openssl.h
|
| index a0545777f2ea04f0578ae5303aba46f560289576..42fdb67f59ddfbae935e623bed801232fa815ea3 100644
|
| --- a/net/socket/ssl_server_socket_nss.h
|
| +++ b/net/socket/ssl_server_socket_openssl.h
|
| @@ -1,34 +1,36 @@
|
| -// Copyright (c) 2012 The Chromium Authors. All rights reserved.
|
| +// Copyright (c) 2014 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_SOCKET_SSL_SERVER_SOCKET_NSS_H_
|
| -#define NET_SOCKET_SSL_SERVER_SOCKET_NSS_H_
|
| -
|
| -#include <certt.h>
|
| -#include <keyt.h>
|
| -#include <nspr.h>
|
| -#include <nss.h>
|
| +#ifndef NET_SOCKET_SSL_SERVER_SOCKET_OPENSSL_H_
|
| +#define NET_SOCKET_SSL_SERVER_SOCKET_OPENSSL_H_
|
|
|
| #include "base/memory/scoped_ptr.h"
|
| #include "net/base/completion_callback.h"
|
| -#include "net/base/host_port_pair.h"
|
| +#include "net/base/io_buffer.h"
|
| #include "net/base/net_log.h"
|
| -#include "net/base/nss_memio.h"
|
| #include "net/socket/ssl_server_socket.h"
|
| #include "net/ssl/ssl_config_service.h"
|
|
|
| +// Avoid including misc OpenSSL headers, i.e.:
|
| +// <openssl/bio.h>
|
| +typedef struct bio_st BIO;
|
| +// <openssl/ssl.h>
|
| +typedef struct ssl_st SSL;
|
| +
|
| namespace net {
|
|
|
| -class SSLServerSocketNSS : public SSLServerSocket {
|
| +class SSLInfo;
|
| +
|
| +class SSLServerSocketOpenSSL : public SSLServerSocket {
|
| public:
|
| // See comments on CreateSSLServerSocket for details of how these
|
| // parameters are used.
|
| - SSLServerSocketNSS(scoped_ptr<StreamSocket> socket,
|
| - scoped_refptr<X509Certificate> certificate,
|
| - crypto::RSAPrivateKey* key,
|
| - const SSLConfig& ssl_config);
|
| - virtual ~SSLServerSocketNSS();
|
| + SSLServerSocketOpenSSL(scoped_ptr<StreamSocket> socket,
|
| + scoped_refptr<X509Certificate> certificate,
|
| + crypto::RSAPrivateKey* key,
|
| + const SSLConfig& ssl_config);
|
| + virtual ~SSLServerSocketOpenSSL();
|
|
|
| // SSLServerSocket interface.
|
| virtual int Handshake(const CompletionCallback& callback) OVERRIDE;
|
| @@ -71,16 +73,16 @@ class SSLServerSocketNSS : public SSLServerSocket {
|
| STATE_HANDSHAKE,
|
| };
|
|
|
| - int InitializeSSLOptions();
|
| -
|
| 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();
|
| @@ -93,18 +95,14 @@ class SSLServerSocketNSS : public SSLServerSocket {
|
| void DoReadCallback(int result);
|
| void DoWriteCallback(int result);
|
|
|
| - static SECStatus OwnAuthCertHandler(void* arg,
|
| - PRFileDesc* socket,
|
| - PRBool checksig,
|
| - PRBool is_server);
|
| - static void HandshakeCallback(PRFileDesc* socket, void* arg);
|
| -
|
| - virtual int Init();
|
| + int Init();
|
|
|
| // 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_;
|
| @@ -121,11 +119,13 @@ class SSLServerSocketNSS : public SSLServerSocket {
|
| scoped_refptr<IOBuffer> user_write_buf_;
|
| int user_write_buf_len_;
|
|
|
| - // The NSS SSL state machine
|
| - PRFileDesc* nss_fd_;
|
| + // 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_;
|
|
|
| - // Buffers for the network end of the SSL state machine
|
| - memio_Private* nss_bufs_;
|
| + // OpenSSL stuff
|
| + SSL* ssl_;
|
| + BIO* transport_bio_;
|
|
|
| // StreamSocket for sending and receiving data.
|
| scoped_ptr<StreamSocket> transport_socket_;
|
| @@ -142,9 +142,9 @@ class SSLServerSocketNSS : public SSLServerSocket {
|
| State next_handshake_state_;
|
| bool completed_handshake_;
|
|
|
| - DISALLOW_COPY_AND_ASSIGN(SSLServerSocketNSS);
|
| + DISALLOW_COPY_AND_ASSIGN(SSLServerSocketOpenSSL);
|
| };
|
|
|
| } // namespace net
|
|
|
| -#endif // NET_SOCKET_SSL_SERVER_SOCKET_NSS_H_
|
| +#endif // NET_SOCKET_SSL_SERVER_SOCKET_OPENSSL_H_
|
|
|