11#include <openssl/e_os2.h>
12#include <openssl/evp.h>
13#include <openssl/hmac.h>
14#include <openssl/rand.h>
15#include <openssl/err.h>
16#include <openssl/crypto.h>
17#include <openssl/ssl.h>
29 mTimerContext(std::
move(
tc)),
48 r=
RAND_bytes(mCookieSecret,
sizeof(mCookieSecret));
73std::unique_ptr<DtlsListener>
76 return std::unique_ptr<DtlsListener>(
new DtlsListener(
this));
80DtlsFactory::cookiePeerIndex()
82 static const int index =
SSL_get_ex_new_index(0, (
void*)
"dtls cookie peer",
nullptr,
nullptr,
nullptr);
90 const std::string*
peer =
static_cast<const std::string*
>(
SSL_get_ex_data(ssl, cookiePeerIndex()));
107DtlsFactory::verifyCookie(
SSL* ssl,
const unsigned char*
cookie,
unsigned int cookieLen)
151 if((data[0]>=128) && (data[0]<=191))
153 if((data[0]>=20) && (data[0]<=63))
struct evp_pkey_st EVP_PKEY
static const Data cookie("z9hG4bK")
#define resip_assert(x)
This file needs to work for both C and C++ code.
DtlsSocket * createClient(std::unique_ptr< DtlsSocketContext > context)
DtlsSocket * createServer(std::unique_ptr< DtlsSocketContext > context)
static const char * DefaultSrtpProfile
void getMyCertFingerprint(char *fingerprint)
static PacketType demuxPacket(const unsigned char *buf, size_t len)
void setSrtpProfiles(const char *policyStr)
friend class DtlsListener
void setCipherSuites(const char *cipherSuites)
DtlsFactory(std::unique_ptr< DtlsTimerContext > tc, X509 *cert, EVP_PKEY *privkey)
std::unique_ptr< DtlsListener > createListener()
static void computeFingerprint(X509 *cert, char *fingerprint)