summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorsergeyu@chromium.org <sergeyu@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-11-15 03:12:33 +0000
committersergeyu@chromium.org <sergeyu@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-11-15 03:12:33 +0000
commitb70a4a2b03c22f4018ee2009d4f88969617104b1 (patch)
treed61f2f205ba50f8de7d4d2f3aab945fd1dab58ae
parent75b985094ca3603b5d566227a3dc2d0b62fcf51c (diff)
downloadchromium_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.gyp1
-rw-r--r--net/socket/ssl_client_socket.h18
-rw-r--r--net/socket/ssl_server_socket.h15
-rw-r--r--net/socket/ssl_socket.h34
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_