RTPSecure Class Reference

SRTP implementation. More...

#include <yatertp.h>

Inheritance diagram for RTPSecure:
GenObject

List of all members.

Public Member Functions

 RTPSecure ()
 RTPSecure (const String &suite)
 RTPSecure (const RTPSecure &other)
virtual ~RTPSecure ()
RTPBaseIOowner () const
void owner (RTPBaseIO *newOwner)
CipherrtpCipher () 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

RTPSecure (  ) 

Default constructor, builds an inactive implementation

RTPSecure ( const String suite  ) 

Constructor that creates an active implementation

Parameters:
suite Cryptographic suite to use by default
RTPSecure ( const RTPSecure other  ) 

Constructor that copies the basic crypto lengths

Parameters:
other Security provider to copy parameters from
virtual ~RTPSecure (  )  [virtual]

Destructor


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

void owner ( RTPBaseIO newOwner  ) 

Set the owner of this security instance

Parameters:
newOwner Pointer to new RTPBaseIO owning this security instance
RTPBaseIO* owner (  )  const [inline]

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:
Generated on Thu Apr 8 18:19:44 2010 for Yate by  doxygen 1.6.3