bZRTP
bZRTP is an opensource implementation of ZRTP keys exchange protocol
Loading...
Searching...
No Matches
Data Fields
bzrtpChannelContext_struct Struct Reference

The zrtp context of a channel. More...

#include <typedef.h>

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 selfMessageSequenceNumber
 
uint16_t peerSequenceNumber
 
uint8_t hashAlgo
 
uint8_t hashLength
 
uint8_t cipherAlgo
 
uint8_t cipherKeyLength
 
uint8_t authTagAlgo
 
uint8_t keyAgreementAlgo
 
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]
 
fragmentReassembly_t incomingFragmentedPacket
 
bzrtpPacket_tpingPacket
 

Detailed Description

The zrtp context of a channel.

Field Documentation

◆ authTagAlgo

uint8_t bzrtpChannelContext_struct::authTagAlgo

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

◆ cipherAlgo

uint8_t bzrtpChannelContext_struct::cipherAlgo

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

◆ cipherDecryptionFunction

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

◆ cipherEncryptionFunction

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

◆ cipherKeyLength

uint8_t bzrtpChannelContext_struct::cipherKeyLength

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

◆ clientData

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

◆ hashAlgo

uint8_t bzrtpChannelContext_struct::hashAlgo

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

◆ hashFunction

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

function pointer to the agreed hash function

◆ hashLength

uint8_t bzrtpChannelContext_struct::hashLength

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

◆ hmacFunction

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

◆ incomingFragmentedPacket

fragmentReassembly_t bzrtpChannelContext_struct::incomingFragmentedPacket

◆ initiatorAuxsecretID

uint8_t bzrtpChannelContext_struct::initiatorAuxsecretID[8]

initiator auxiliary secret Hash

◆ isMainChannel

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

◆ isSecure

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

◆ KDFContext

uint8_t* bzrtpChannelContext_struct::KDFContext

defined in rfc section 4.4

◆ KDFContextLength

uint16_t bzrtpChannelContext_struct::KDFContextLength

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

◆ keyAgreementAlgo

uint8_t bzrtpChannelContext_struct::keyAgreementAlgo

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

◆ mackeyi

uint8_t* bzrtpChannelContext_struct::mackeyi

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

◆ mackeyr

uint8_t* bzrtpChannelContext_struct::mackeyr

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

◆ peerH

uint8_t bzrtpChannelContext_struct::peerH[4][32]

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

◆ peerHelloHash

uint8_t* bzrtpChannelContext_struct::peerHelloHash

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

◆ peerPackets

bzrtpPacket_t* bzrtpChannelContext_struct::peerPackets[PACKET_STORAGE_CAPACITY]

Hello, Commit and DHPart packet received from peer

◆ peerSequenceNumber

uint16_t bzrtpChannelContext_struct::peerSequenceNumber

Sequence number of the last valid received packet

◆ pingPacket

bzrtpPacket_t* bzrtpChannelContext_struct::pingPacket

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

◆ responderAuxsecretID

uint8_t bzrtpChannelContext_struct::responderAuxsecretID[8]

responder auxiliary secret Hash

◆ role

uint8_t bzrtpChannelContext_struct::role

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

◆ s0

uint8_t* bzrtpChannelContext_struct::s0

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

◆ sasAlgo

uint8_t bzrtpChannelContext_struct::sasAlgo

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

◆ sasFunction

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

function pointer to the agreed sas rendering function

◆ sasLength

uint8_t bzrtpChannelContext_struct::sasLength

length of the SAS depends on the algorithm agreed

◆ selfH

uint8_t bzrtpChannelContext_struct::selfH[4][32]

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

◆ selfMessageSequenceNumber

uint16_t bzrtpChannelContext_struct::selfMessageSequenceNumber

is used as messageId for fragmented packets, is incremented on new message creation, not packet sending

◆ selfPackets

bzrtpPacket_t* bzrtpChannelContext_struct::selfPackets[PACKET_STORAGE_CAPACITY]

Hello, Commit and DHPart packet locally generated

◆ selfSequenceNumber

uint16_t bzrtpChannelContext_struct::selfSequenceNumber

Sequence number of the next packet to be sent

◆ selfSSRC

uint32_t bzrtpChannelContext_struct::selfSSRC

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

◆ srtpSecrets

bzrtpSrtpSecrets_t bzrtpChannelContext_struct::srtpSecrets

the secrets keys and salt needed by SRTP

◆ stateMachine

bzrtpStateMachine_t bzrtpChannelContext_struct::stateMachine

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

◆ timer

bzrtpTimer_t bzrtpChannelContext_struct::timer

a timer used to manage packets retransmission

◆ zrtpkeyi

uint8_t* bzrtpChannelContext_struct::zrtpkeyi

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

◆ zrtpkeyr

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: