| /* | |
| * 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_ |