class RTPSecure

SRTP implementation. More...

Full nameTelEngine::RTPSecure
Definition#include <libs/yrtp/yatertp.h>
InheritsTelEngine::GenObject [public ]
List of all Methods
Annotated List
Files
Globals
Hierarchy
Index

Public Methods

Protected Methods


Detailed Description

Security and integrity implementation

 RTPSecure ()

RTPSecure

Default constructor, builds an inactive implementation

 RTPSecure (const String& suite)

RTPSecure

Constructor that creates an active implementation

Parameters:
suiteCryptographic suite to use by default

 RTPSecure (const RTPSecure& other)

RTPSecure

Constructor that copies the basic crypto lengths

Parameters:
otherSecurity provider to copy parameters from

 ~RTPSecure ()

~RTPSecure

[virtual]

Destructor

inline RTPBaseIO*  owner ()

owner

[const]

Get the owner of this security instance

Returns: Pointer to RTPBaseIO or NULL

void  owner (RTPBaseIO* newOwner)

owner

Set the owner of this security instance

Parameters:
newOwnerPointer to new RTPBaseIO owning this security instance

inline Cipher*  rtpCipher ()

rtpCipher

[const]

Get the current RTP cipher if set

Returns: Pointer to current RTP cipher or NULL

bool  supported (RTPSession* session = 0)

supported

[const virtual]

Check if the systems supports requirements for activating SRTP

Parameters:
sessionRTP session to use for cipher checking, NULL to use owner session

Returns: True if it looks like SRTP can be activated later

bool  setup (const String& suite, const String& keyParams, const ObjList* paramList = 0)

setup

[virtual]

Set up the cryptographic parameters

Parameters:
suiteDescriptor of the encryption and authentication algorithms
keyParamsKeying material and related parameters
paramListOptional session parameters as list of Strings

Returns: True if the session parameters were applied successfully

bool  create (String& suite, String& keyParams, bool buildMaster = true)

create

[virtual]

Create a set of cryptographic parameters

Parameters:
suiteReference of returned cryptographic suite description
keyParamsReference to returned keying material
buildMasterCreate random master key and salt if not already set

Returns: True if security instance is valid and ready

void  init ()

init

[protected virtual]

Initialize security related variables in the RTP session

void  rtpEncipher (unsigned char* data, int len)

rtpEncipher

[protected virtual]

Method called to encipher RTP payload data in-place

Parameters:
dataPointer to data block to encipher
lenLength of payload data to be encrypted including any padding

void  rtpAddIntegrity (const unsigned char* data, int len, unsigned char* authData)

rtpAddIntegrity

[protected virtual]

Method called to add integrity information to the RTP packet

Parameters:
dataPointer to the RTP packet to protect
lenLength of RTP data to be encrypted including header and padding
authDataAddress to write the integrity data to

bool  rtpDecipher (unsigned char* data, int len, const void* secData, u_int32_t ssrc, u_int64_t seq)

rtpDecipher

[protected virtual]

Method called to decipher RTP data in-place

Parameters:
dataPointer to data block to decipher
lenLength of data including any padding
secDataPointer to security data if applicable
ssrcSSRC of the packet to decipher
seqFull (48 bit) seqence number of the packet including rollovers

Returns: True is the packet was deciphered correctly or can't tell

bool  rtpCheckIntegrity (const unsigned char* data, int len, const void* authData, u_int32_t ssrc, u_int64_t seq)

rtpCheckIntegrity

[protected virtual]

Method called to check the integrity of the RTP packet

Parameters:
dataPointer to RTP header and data
lenLength of header, data and padding
authDataPointer to authentication data
ssrcSSRC of the packet to validate
seqFull (48 bit) seqence number of the packet including rollovers

Returns: True is the packet passed integrity checks

bool  deriveKey (Cipher& cipher, DataBlock& key, unsigned int len, unsigned char label, u_int64_t index = 0)

deriveKey

[protected]

Internal method implementing key derivation

Parameters:
cipherCipher used for key derivation
keyReference to derived key output
lenDesired length of the key, should be at most cipher block length
labelDerived key type
indexPacket index after being divided by KDR

Returns: True if success, false if invalid parameters or missing cipher


Generated by: paulc on bussard on Wed Oct 21 01:57:30 2009, using kdoc 2.0a54.