bZRTP
bZRTP is an opensource implementation of ZRTP keys exchange protocol
Data Fields
bzrtpChannelContext_struct Struct Reference

The zrtp context of a channel. More...

Data Fields

void * clientData
 
uint8_t role
 
bzrtpStateMachine_t stateMachine
 
bzrtpTimer_t timer
 
uint32_t selfSSRC
 
uint8_t isSecure
 
uint8_t isMainChannel
 
uint8_t selfH [4][32]
 
uint8_t peerH [4][32]
 
bzrtpPacket_tselfPackets [PACKET_STORAGE_CAPACITY]
 
bzrtpPacket_tpeerPackets [PACKET_STORAGE_CAPACITY]
 
uint8_tpeerHelloHash
 
uint16_t selfSequenceNumber
 
uint16_t peerSequenceNumber
 
uint8_t hashAlgo
 
uint8_t hashLength
 
uint8_t cipherAlgo
 
uint8_t cipherKeyLength
 
uint8_t authTagAlgo
 
uint8_t keyAgreementAlgo
 
uint16_t keyAgreementLength
 
uint8_t sasAlgo
 
uint8_t sasLength
 
void(* hmacFunction )(const uint8_t *key, size_t keyLength, const uint8_t *input, size_t inputLength, uint8_t hmacLength, uint8_t *output)
 
void(* hashFunction )(const uint8_t *input, size_t inputLength, uint8_t hashLength, uint8_t *output)
 
void(* cipherEncryptionFunction )(const uint8_t *key, const uint8_t *IV, const uint8_t *input, size_t inputLength, uint8_t *output)
 
void(* cipherDecryptionFunction )(const uint8_t *key, const uint8_t *IV, const uint8_t *input, size_t inputLength, uint8_t *output)
 
void(* sasFunction )(uint32_t sas, char *output, int outputSize)
 
uint8_ts0
 
uint8_tKDFContext
 
uint16_t KDFContextLength
 
uint8_tmackeyi
 
uint8_tmackeyr
 
uint8_tzrtpkeyi
 
uint8_tzrtpkeyr
 
bzrtpSrtpSecrets_t srtpSecrets
 
uint8_t initiatorAuxsecretID [8]
 
uint8_t responderAuxsecretID [8]
 
bzrtpPacket_tpingPacket
 

Detailed Description

The zrtp context of a channel.

Field Documentation

uint8_t bzrtpChannelContext_struct::authTagAlgo

srtp authentication tag algorithm agreed on after Hello packet exchange, stored using integer mapping defined in cryptoUtils.h

uint8_t bzrtpChannelContext_struct::cipherAlgo

cipher algorithm agreed on after Hello packet exchange, stored using integer mapping defined in cryptoUtils.h

void(* bzrtpChannelContext_struct::cipherDecryptionFunction) (const uint8_t *key, const uint8_t *IV, const uint8_t *input, size_t inputLength, uint8_t *output)

function pointer to the agreed cipher block function, decryption mode

void(* bzrtpChannelContext_struct::cipherEncryptionFunction) (const uint8_t *key, const uint8_t *IV, const uint8_t *input, size_t inputLength, uint8_t *output)

function pointer to the agreed cipher block function, encryption mode

uint8_t bzrtpChannelContext_struct::cipherKeyLength

the length in bytes of the key needed by the agreed cipher block algo

void* bzrtpChannelContext_struct::clientData

this is a pointer provided by the client which is then resent as a parameter of the callbacks functions. Usefull to store RTP session context for example

uint8_t bzrtpChannelContext_struct::hashAlgo

hash algorithm agreed on after Hello packet exchange, stored using integer mapping defined in cryptoUtils.h

void(* bzrtpChannelContext_struct::hashFunction) (const uint8_t *input, size_t inputLength, uint8_t hashLength, uint8_t *output)

function pointer to the agreed hash function

uint8_t bzrtpChannelContext_struct::hashLength

the length in bytes of a hash generated with the agreed hash algo

void(* bzrtpChannelContext_struct::hmacFunction) (const uint8_t *key, size_t keyLength, const uint8_t *input, size_t inputLength, uint8_t hmacLength, uint8_t *output)

function pointer to the agreed hmacFunction

uint8_t bzrtpChannelContext_struct::initiatorAuxsecretID[8]

initiator auxiliary secret Hash

uint8_t bzrtpChannelContext_struct::isMainChannel

this flag is set for the firt channel only, allow to distinguish channel to be secured using DHM or multiStream

uint8_t bzrtpChannelContext_struct::isSecure

This flag is set to 1 when the ZRTP negociation ends and SRTP secrets are generated and confirmed for this channel

uint8_t* bzrtpChannelContext_struct::KDFContext

defined in rfc section 4.4

uint16_t bzrtpChannelContext_struct::KDFContextLength

length of the KDF context, is 24 + output length of the selected hash algo

uint8_t bzrtpChannelContext_struct::keyAgreementAlgo

key agreement algorithm agreed on after Hello packet exchange, stored using integer mapping defined in cryptoUtils.h

uint16_t bzrtpChannelContext_struct::keyAgreementLength

the length in byte of the secret generated by the agreed key exchange algo

uint8_t* bzrtpChannelContext_struct::mackeyi

the initiator mackey as defined in rfc section 4.5.3 - have a length of hashLength

uint8_t* bzrtpChannelContext_struct::mackeyr

the responder mackey as defined in rfc section 4.5.3 - have a length of hashLength

uint8_t bzrtpChannelContext_struct::peerH[4][32]

Store peer 256 bits Hash images H0-H3 used to check messages authenticity

uint8_t* bzrtpChannelContext_struct::peerHelloHash

peer hello hash - SHA256 of peer Hello packet, given through signaling, shall be a 32 bytes buffer

bzrtpPacket_t* bzrtpChannelContext_struct::peerPackets[PACKET_STORAGE_CAPACITY]

Hello, Commit and DHPart packet received from peer

uint16_t bzrtpChannelContext_struct::peerSequenceNumber

Sequence number of the last valid received packet

bzrtpPacket_t* bzrtpChannelContext_struct::pingPacket

Temporary stores a ping packet when received to be used to create the pingACK response

uint8_t bzrtpChannelContext_struct::responderAuxsecretID[8]

responder auxiliary secret Hash

uint8_t bzrtpChannelContext_struct::role

can be INITIATOR or RESPONDER, is set to INITIATOR at creation, may switch to responder later

uint8_t* bzrtpChannelContext_struct::s0

the s0 as describred rfc section 4.4 - have a length of hashLength

uint8_t bzrtpChannelContext_struct::sasAlgo

sas rendering algorithm agreed on after Hello packet exchange, stored using integer mapping defined in cryptoUtils.h

void(* bzrtpChannelContext_struct::sasFunction) (uint32_t sas, char *output, int outputSize)

function pointer to the agreed sas rendering function

uint8_t bzrtpChannelContext_struct::sasLength

length of the SAS depends on the algorithm agreed

uint8_t bzrtpChannelContext_struct::selfH[4][32]

Store self 256 bits Hash images H0-H3 used to generate messages MAC

bzrtpPacket_t* bzrtpChannelContext_struct::selfPackets[PACKET_STORAGE_CAPACITY]

Hello, Commit and DHPart packet locally generated

uint16_t bzrtpChannelContext_struct::selfSequenceNumber

Sequence number of the next packet to be sent

uint32_t bzrtpChannelContext_struct::selfSSRC

A context is identified by his own SSRC and the peer one

bzrtpSrtpSecrets_t bzrtpChannelContext_struct::srtpSecrets

the secrets keys and salt needed by SRTP

bzrtpStateMachine_t bzrtpChannelContext_struct::stateMachine

The state machine function, holds the current state of the channel: points to the current state function

bzrtpTimer_t bzrtpChannelContext_struct::timer

a timer used to manage packets retransmission

uint8_t* bzrtpChannelContext_struct::zrtpkeyi

the initiator mackey as defined in rfc section 4.5.3 - have a length of cipherKeyLength

uint8_t* bzrtpChannelContext_struct::zrtpkeyr

the responder mackey as defined in rfc section 4.5.3 - have a length of cipherKeyLength


The documentation for this struct was generated from the following file: