18#include "../Srtp2Helper.hxx"
21#include <openssl/e_os2.h>
22#include <openssl/rand.h>
23#include <openssl/err.h>
24#include <openssl/crypto.h>
25#include <openssl/ssl.h>
39 virtual void write(
const unsigned char* data,
unsigned int len)=0;
45 virtual std::shared_ptr<std::mutex>
timerLock() {
return nullptr; }
135 std::chrono::steady_clock::duration
getAge()
const {
return std::chrono::steady_clock::now() - mCreated; }
145 void handleTimeout();
149 void handlePacketAfterHandshake();
156 void scheduleTimer();
168 void doHandshakeIteration();
171 std::unique_ptr<DtlsSocketContext> mSocketContext;
173 std::shared_ptr<DtlsTimer> mReadTimer;
181 bool mHandshakeCompleted;
182 bool mHandshakeFailed;
183 std::chrono::steady_clock::time_point mCreated;
187 std::chrono::steady_clock::duration serverHandshakeTimeLeft()
const;
188 std::string mCookiePeer;
207 std::vector<unsigned char>&
response,
208 const std::function<std::unique_ptr<DtlsSocketContext>()>&
makeContext);
static Data digest("digest")
DtlsSocket * handlePacket(const unsigned char *bytes, size_t len, const std::string &peer, std::vector< unsigned char > &response, const std::function< std::unique_ptr< DtlsSocketContext >()> &makeContext)
virtual void handshakeFailed(const char *err)=0
virtual ~DtlsSocketContext()
virtual void handshakeCompleted()=0
virtual void write(const unsigned char *data, unsigned int len)=0
virtual std::shared_ptr< std::mutex > timerLock()
bool handshakeFailed() const
std::chrono::steady_clock::duration getAge() const
static const size_t FingerprintSize
bool createSrtpSessionPolicies(srtp_policy_t &outboundPolicy, srtp_policy_t &inboundPolicy)
static void computeFingerprint(X509 *cert, char *fingerprint)
SocketType getSocketType()
static bool isFingerprintHashFunctionSupported(const char *hashFunction)
bool checkFingerprint(const char *hashFunction, const char *fingerprint)
SRTP_PROTECTION_PROFILE * getSrtpProfile()
bool getRemoteFingerprint(const char *hashFunction, char *fingerprint, size_t fingerprintSize)
void expired(DtlsSocketTimer *)
DtlsSocketContext * getSocketContext()
void getMyCertFingerprint(char *fingerprint)
bool handlePacketMaybe(const unsigned char *bytes, size_t len)
SrtpSessionKeys getSrtpSessionKeys()
bool handshakeCompleted()
std::vector< unsigned char > serverMasterSalt
std::vector< unsigned char > clientMasterKey
std::vector< unsigned char > clientMasterSalt
std::vector< unsigned char > serverMasterKey