Files
platform-external-webrtc/webrtc/base/ssladapter.h
pthatcher@webrtc.org a9b1ec0247 Support for DTLS in OpenSSLAdapter
1)  Added SetMode() to SSLAdapter and OpenSSLAdapter so the mode can be set to
     SSL_MODE_DTLS
 2)  OpenSSLAdapter overrides SendTo() and RecvFrom() to handle calls from
     TurnPort via AsyncUdpSocket
 3)  OpenSSLAdapter derives from MessageHandler to implement an internal DTLS
     timer
 4)  Updated SSLAdapter unit tests

BUG=
R=juberti@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/19059004

git-svn-id: http://webrtc.googlecode.com/svn/trunk@7981 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-12-29 23:00:14 +00:00

66 lines
2.2 KiB
C++

/*
* Copyright 2004 The WebRTC Project Authors. All rights reserved.
*
* Use of this source code is governed by a BSD-style license
* that can be found in the LICENSE file in the root of the source
* tree. An additional intellectual property rights grant can be found
* in the file PATENTS. All contributing project authors may
* be found in the AUTHORS file in the root of the source tree.
*/
#ifndef WEBRTC_BASE_SSLADAPTER_H_
#define WEBRTC_BASE_SSLADAPTER_H_
#include "webrtc/base/asyncsocket.h"
#include "webrtc/base/sslstreamadapter.h"
namespace rtc {
///////////////////////////////////////////////////////////////////////////////
class SSLAdapter : public AsyncSocketAdapter {
public:
explicit SSLAdapter(AsyncSocket* socket)
: AsyncSocketAdapter(socket), ignore_bad_cert_(false) { }
bool ignore_bad_cert() const { return ignore_bad_cert_; }
void set_ignore_bad_cert(bool ignore) { ignore_bad_cert_ = ignore; }
// Do DTLS or TLS (default is TLS, if unspecified)
virtual void SetMode(SSLMode mode) = 0;
// StartSSL returns 0 if successful.
// If StartSSL is called while the socket is closed or connecting, the SSL
// negotiation will begin as soon as the socket connects.
virtual int StartSSL(const char* hostname, bool restartable) = 0;
// Create the default SSL adapter for this platform. On failure, returns NULL
// and deletes |socket|. Otherwise, the returned SSLAdapter takes ownership
// of |socket|.
static SSLAdapter* Create(AsyncSocket* socket);
private:
// If true, the server certificate need not match the configured hostname.
bool ignore_bad_cert_;
};
///////////////////////////////////////////////////////////////////////////////
typedef bool (*VerificationCallback)(void* cert);
// Call this on the main thread, before using SSL.
// Call CleanupSSLThread when finished with SSL.
bool InitializeSSL(VerificationCallback callback = NULL);
// Call to initialize additional threads.
bool InitializeSSLThread();
// Call to cleanup additional threads, and also the main thread.
bool CleanupSSL();
///////////////////////////////////////////////////////////////////////////////
} // namespace rtc
#endif // WEBRTC_BASE_SSLADAPTER_H_