
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
66 lines
2.2 KiB
C++
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_
|