21#ifndef CRYPTOCONTEXT_H
22#define CRYPTOCONTEXT_H
24#include <commoncpp/config.h>
29#define REPLAY_WINDOW_SIZE 64
41#ifndef CRYPTOCONTEXTCTRL_H
46#include <ccrtp/crypto/SrtpSymCrypto.h>
175 int32 masterKeyLength,
177 int32 masterSaltLength,
366 int64 key_deriv_rate;
369 uint64 replay_window;
372 uint32 master_key_length;
373 uint32 master_key_srtp_use_nb;
374 uint32 master_key_srtcp_use_nb;
376 uint32 master_salt_length;
397 SrtpSymCrypto* cipher;
398 SrtpSymCrypto* f8Cipher;
const int SrtpEncryptionTWOF8
Definition: CryptoContext.h:39
const int SrtpEncryptionAESF8
Definition: CryptoContext.h:37
const int SrtpEncryptionAESCM
Definition: CryptoContext.h:36
const int SrtpAuthenticationSkeinHmac
Definition: CryptoContext.h:33
const int SrtpEncryptionNull
Definition: CryptoContext.h:35
const int SrtpEncryptionTWOCM
Definition: CryptoContext.h:38
const int SrtpAuthenticationSha1Hmac
Definition: CryptoContext.h:32
const int SrtpAuthenticationNull
Definition: CryptoContext.h:31
The implementation for a SRTP cryptographic context.
Definition: CryptoContext.h:83
uint64 guessIndex(uint16 newSeqNumber)
Compute (guess) the new SRTP index based on the sequence number of a received RTP packet.
uint32 getRoc() const
Get the Roll-Over-Counter.
Definition: CryptoContext.h:211
int32 getMkiLength() const
Get the length of the MKI in bytes.
Definition: CryptoContext.h:321
void srtpEncrypt(RTPPacket *rtp, uint64 index, uint32 ssrc)
Perform SRTP encryption.
void srtpAuthenticate(RTPPacket *rtp, uint32 roc, uint8 *tag)
Compute the authentication tag.
CryptoContext(uint32 ssrc)
Constructor for empty SRTP cryptographic context.
void setRoc(uint32 r)
Set the Roll-Over-Counter.
Definition: CryptoContext.h:199
CryptoContext * newCryptoContextForSSRC(uint32 ssrc, int roc, int64 keyDerivRate)
Derive a new Crypto Context for use with a new SSRC.
uint32 getSsrc() const
Get the SSRC of this SRTP Cryptograhic context.
Definition: CryptoContext.h:330
~CryptoContext()
Destructor.
void update(uint16 newSeqNumber)
Update the SRTP packet index.
int32 getTagLength() const
Get the length of the SRTP authentication tag in bytes.
Definition: CryptoContext.h:311
bool checkReplay(uint16 newSeqNumber)
Check for packet replay.
void deriveSrtpKeys(uint64 index)
Perform key derivation according to SRTP specification.
CryptoContext(uint32 ssrc, int32 roc, int64 keyDerivRate, const int32 ealg, const int32 aalg, uint8 *masterKey, int32 masterKeyLength, uint8 *masterSalt, int32 masterSaltLength, int32 ekeyl, int32 akeyl, int32 skeyl, int32 tagLength)
Constructor for an active SRTP cryptographic context.
A base class for both IncomingRTPPkt and OutgoingRTPPkt.
Definition: rtppkt.h:74