diff options
author | sergeyu@chromium.org <sergeyu@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-11-15 03:12:33 +0000 |
---|---|---|
committer | sergeyu@chromium.org <sergeyu@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-11-15 03:12:33 +0000 |
commit | b70a4a2b03c22f4018ee2009d4f88969617104b1 (patch) | |
tree | d61f2f205ba50f8de7d4d2f3aab945fd1dab58ae | |
parent | 75b985094ca3603b5d566227a3dc2d0b62fcf51c (diff) | |
download | chromium_src-b70a4a2b03c22f4018ee2009d4f88969617104b1.zip chromium_src-b70a4a2b03c22f4018ee2009d4f88969617104b1.tar.gz chromium_src-b70a4a2b03c22f4018ee2009d4f88969617104b1.tar.bz2 |
Add SSLSocket interface.
The new interface defines functionality common between SSLClientSocket
and SSLServerSocket.
TEST=None
BUG=None
Review URL: http://codereview.chromium.org/8515026
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@110025 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r-- | net/net.gyp | 1 | ||||
-rw-r--r-- | net/socket/ssl_client_socket.h | 18 | ||||
-rw-r--r-- | net/socket/ssl_server_socket.h | 15 | ||||
-rw-r--r-- | net/socket/ssl_socket.h | 34 |
4 files changed, 42 insertions, 26 deletions
diff --git a/net/net.gyp b/net/net.gyp index a5d69d3..a8bc91d 100644 --- a/net/net.gyp +++ b/net/net.gyp @@ -583,6 +583,7 @@ 'socket/ssl_server_socket_nss.cc', 'socket/ssl_server_socket_nss.h', 'socket/ssl_server_socket_openssl.cc', + 'socket/ssl_socket.h', 'socket/stream_socket.cc', 'socket/stream_socket.h', 'socket/tcp_client_socket.cc', diff --git a/net/socket/ssl_client_socket.h b/net/socket/ssl_client_socket.h index 104cca3..ca4393b 100644 --- a/net/socket/ssl_client_socket.h +++ b/net/socket/ssl_client_socket.h @@ -11,12 +11,9 @@ #include "net/base/completion_callback.h" #include "net/base/load_flags.h" #include "net/base/net_errors.h" +#include "net/socket/ssl_socket.h" #include "net/socket/stream_socket.h" -namespace base { -class StringPiece; -} // namespace base - namespace net { class CertVerifier; @@ -79,7 +76,7 @@ struct SSLClientSocketContext { // connection is established. If a SSL error occurs during the handshake, // Connect will fail. // -class NET_EXPORT SSLClientSocket : public StreamSocket { +class NET_EXPORT SSLClientSocket : public SSLSocket { public: SSLClientSocket(); @@ -107,6 +104,9 @@ class NET_EXPORT SSLClientSocket : public StreamSocket { }; // Gets the SSL connection information of the socket. + // + // TODO(sergeyu): Move this method to the SSLSocket interface and + // implemented in SSLServerSocket too. virtual void GetSSLInfo(SSLInfo* ssl_info) = 0; // Gets the SSL CertificateRequest info of the socket after Connect failed @@ -114,14 +114,6 @@ class NET_EXPORT SSLClientSocket : public StreamSocket { virtual void GetSSLCertRequestInfo( SSLCertRequestInfo* cert_request_info) = 0; - // Exports data derived from the SSL master-secret (see RFC 5705). - // The call will fail with an error if the socket is not connected, or the - // SSL implementation does not support the operation. - virtual int ExportKeyingMaterial(const base::StringPiece& label, - const base::StringPiece& context, - unsigned char *out, - unsigned int outlen) = 0; - // Get the application level protocol that we negotiated with the server. // *proto is set to the resulting protocol (n.b. that the string may have // embedded NULs). diff --git a/net/socket/ssl_server_socket.h b/net/socket/ssl_server_socket.h index 8e0ad60..3a90c7a 100644 --- a/net/socket/ssl_server_socket.h +++ b/net/socket/ssl_server_socket.h @@ -8,12 +8,9 @@ #include "base/basictypes.h" #include "net/base/completion_callback.h" #include "net/base/net_export.h" +#include "net/socket/ssl_socket.h" #include "net/socket/stream_socket.h" -namespace base { -class StringPiece; -} // namespace base - namespace crypto { class RSAPrivateKey; } // namespace crypto @@ -23,7 +20,7 @@ namespace net { struct SSLConfig; class X509Certificate; -class SSLServerSocket : public StreamSocket { +class SSLServerSocket : public SSLSocket { public: virtual ~SSLServerSocket() {} @@ -32,14 +29,6 @@ class SSLServerSocket : public StreamSocket { // completion then the callback will be silently, as for other StreamSocket // calls. virtual int Handshake(OldCompletionCallback* callback) = 0; - - // Exports data derived from the SSL master-secret (see RFC 5705). - // The call will fail with an error if the socket is not connected, or the - // SSL implementation does not support the operation. - virtual int ExportKeyingMaterial(const base::StringPiece& label, - const base::StringPiece& context, - unsigned char *out, - unsigned int outlen) = 0; }; // Creates an SSL server socket over an already-connected transport socket. diff --git a/net/socket/ssl_socket.h b/net/socket/ssl_socket.h new file mode 100644 index 0000000..8445d7d --- /dev/null +++ b/net/socket/ssl_socket.h @@ -0,0 +1,34 @@ +// Copyright (c) 2011 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_SOCKET_H_ +#define NET_SOCKET_SSL_SOCKET_H_ + +#include "base/basictypes.h" +#include "net/socket/stream_socket.h" + +namespace base { +class StringPiece; +} // namespace base + +namespace net { + +// SSLSocket interface defines method that are common between client +// and server SSL sockets. +class NET_EXPORT SSLSocket : public StreamSocket { +public: + virtual ~SSLSocket() {} + + // Exports data derived from the SSL master-secret (see RFC 5705). + // The call will fail with an error if the socket is not connected, or the + // SSL implementation does not support the operation. + virtual int ExportKeyingMaterial(const base::StringPiece& label, + const base::StringPiece& context, + unsigned char *out, + unsigned int outlen) = 0; +}; + +} // namespace net + +#endif // NET_SOCKET_SSL_SOCKET_H_ |