1#if !defined(FlowManager_hxx)
14#include <openssl/crypto.h>
15#include <openssl/ssl.h>
18#include <asio/ssl.hpp>
30class FlowDtlsTimerContext;
54 const char* natTraversalServerHostname = 0,
55 unsigned short natTraversalServerPort = 0,
56 const char* stunUsername = 0,
57 const char* stunPassword = 0,
58 bool forceCOMedia =
false,
59 std::shared_ptr<FlowContext>
context =
nullptr);
89 std::shared_ptr<RTCPEventLoggingHandler> mRtcpEventLoggingHandler;
92 asio::io_context mIOService;
94 asio::executor_work_guard<asio::io_context::executor_type>* mIOServiceWork;
95 asio::ssl::context mSslContext;
101 bool mValidateTlsServerHostname =
true;
struct evp_pkey_st EVP_PKEY
This class represents the Flow Manager.
void setRTCPEventLoggingHandler(std::shared_ptr< RTCPEventLoggingHandler > handler) noexcept
bool addTlsRootCertificates(const resip::Data &rootCertificatesFile)
Adds the root (CA) certificates in a PEM file to those TURN servers' TLS certificates are verified wi...
static int createCert(const resip::Data &pAor, int expireDays, int keyLen, X509 *&outCert, EVP_PKEY *&outKey)
void setValidateTlsServerHostname(bool validate)
Whether flows using TURN over TLS check that the server's certificate is for the TURN server's host n...
void initializeDtlsFactory(const char *certAor)
MediaStream * createMediaStream(MediaStreamHandler &mediaStreamHandler, const StunTuple &localBinding, bool rtcpEnabled=true, MediaStream::NatTraversalMode natTraversalMode=MediaStream::NoNatTraversal, const char *natTraversalServerHostname=0, unsigned short natTraversalServerPort=0, const char *stunUsername=0, const char *stunPassword=0, bool forceCOMedia=false, std::shared_ptr< FlowContext > context=nullptr)
dtls::DtlsFactory * getDtlsFactory()
RTCPEventLoggingHandler * getRTCPEventLoggingHandler() const noexcept
An alternative to std::string, encapsulates an arbitrary buffer of bytes.
This class is used during media sessions that use Dtls-Srtp for a media transport.