SRTP implementation.
More...
#include <yatertp.h>
List of all members.
Public Member Functions |
| RTPSecure () |
| RTPSecure (const String &suite) |
| RTPSecure (const RTPSecure &other) |
virtual | ~RTPSecure () |
RTPBaseIO * | owner () const |
void | owner (RTPBaseIO *newOwner) |
Cipher * | rtpCipher () const |
virtual bool | supported (RTPSession *session=0) const |
virtual bool | setup (const String &suite, const String &keyParams, const ObjList *paramList=0) |
virtual bool | create (String &suite, String &keyParams, bool buildMaster=true) |
Protected Member Functions |
virtual void | init () |
virtual void | rtpEncipher (unsigned char *data, int len) |
virtual void | rtpAddIntegrity (const unsigned char *data, int len, unsigned char *authData) |
virtual bool | rtpDecipher (unsigned char *data, int len, const void *secData, u_int32_t ssrc, u_int64_t seq) |
virtual bool | rtpCheckIntegrity (const unsigned char *data, int len, const void *authData, u_int32_t ssrc, u_int64_t seq) |
bool | deriveKey (Cipher &cipher, DataBlock &key, unsigned int len, unsigned char label, u_int64_t index=0) |
Friends |
class | RTPReceiver |
class | RTPSender |
class | RTPSession |
Detailed Description
SRTP implementation.
Security and integrity implementation
Constructor & Destructor Documentation
Default constructor, builds an inactive implementation
Constructor that creates an active implementation
- Parameters:
-
suite | Cryptographic suite to use by default |
Constructor that copies the basic crypto lengths
- Parameters:
-
other | Security provider to copy parameters from |
Member Function Documentation
virtual bool create |
( |
String & |
suite, |
|
|
String & |
keyParams, |
|
|
bool |
buildMaster = true |
|
) |
| [virtual] |
Create a set of cryptographic parameters
- Parameters:
-
suite | Reference of returned cryptographic suite description |
keyParams | Reference to returned keying material |
buildMaster | Create random master key and salt if not already set |
- Returns:
- True if security instance is valid and ready
bool deriveKey |
( |
Cipher & |
cipher, |
|
|
DataBlock & |
key, |
|
|
unsigned int |
len, |
|
|
unsigned char |
label, |
|
|
u_int64_t |
index = 0 |
|
) |
| [protected] |
Internal method implementing key derivation
- Parameters:
-
cipher | Cipher used for key derivation |
key | Reference to derived key output |
len | Desired length of the key, should be at most cipher block length |
label | Derived key type |
index | Packet index after being divided by KDR |
- Returns:
- True if success, false if invalid parameters or missing cipher
virtual void init |
( |
| ) |
[protected, virtual] |
Initialize security related variables in the RTP session
Set the owner of this security instance
- Parameters:
-
newOwner | Pointer to new RTPBaseIO owning this security instance |
Get the owner of this security instance
- Returns:
- Pointer to RTPBaseIO or NULL
virtual void rtpAddIntegrity |
( |
const unsigned char * |
data, |
|
|
int |
len, |
|
|
unsigned char * |
authData |
|
) |
| [protected, virtual] |
Method called to add integrity information to the RTP packet
- Parameters:
-
data | Pointer to the RTP packet to protect |
len | Length of RTP data to be encrypted including header and padding |
authData | Address to write the integrity data to |
virtual bool rtpCheckIntegrity |
( |
const unsigned char * |
data, |
|
|
int |
len, |
|
|
const void * |
authData, |
|
|
u_int32_t |
ssrc, |
|
|
u_int64_t |
seq |
|
) |
| [protected, virtual] |
Method called to check the integrity of the RTP packet
- Parameters:
-
data | Pointer to RTP header and data |
len | Length of header, data and padding |
authData | Pointer to authentication data |
ssrc | SSRC of the packet to validate |
seq | Full (48 bit) seqence number of the packet including rollovers |
- Returns:
- True is the packet passed integrity checks
Cipher* rtpCipher |
( |
| ) |
const [inline] |
Get the current RTP cipher if set
- Returns:
- Pointer to current RTP cipher or NULL
virtual bool rtpDecipher |
( |
unsigned char * |
data, |
|
|
int |
len, |
|
|
const void * |
secData, |
|
|
u_int32_t |
ssrc, |
|
|
u_int64_t |
seq |
|
) |
| [protected, virtual] |
Method called to decipher RTP data in-place
- Parameters:
-
data | Pointer to data block to decipher |
len | Length of data including any padding |
secData | Pointer to security data if applicable |
ssrc | SSRC of the packet to decipher |
seq | Full (48 bit) seqence number of the packet including rollovers |
- Returns:
- True is the packet was deciphered correctly or can't tell
virtual void rtpEncipher |
( |
unsigned char * |
data, |
|
|
int |
len |
|
) |
| [protected, virtual] |
Method called to encipher RTP payload data in-place
- Parameters:
-
data | Pointer to data block to encipher |
len | Length of payload data to be encrypted including any padding |
virtual bool setup |
( |
const String & |
suite, |
|
|
const String & |
keyParams, |
|
|
const ObjList * |
paramList = 0 |
|
) |
| [virtual] |
Set up the cryptographic parameters
- Parameters:
-
suite | Descriptor of the encryption and authentication algorithms |
keyParams | Keying material and related parameters |
paramList | Optional session parameters as list of Strings |
- Returns:
- True if the session parameters were applied successfully
virtual bool supported |
( |
RTPSession * |
session = 0 | ) |
const [virtual] |
Check if the systems supports requirements for activating SRTP
- Parameters:
-
session | RTP session to use for cipher checking, NULL to use owner session |
- Returns:
- True if it looks like SRTP can be activated later
The documentation for this class was generated from the following file: