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

structure of the ZRTP engine context Store current state, timers, HMAC and encryption keys More...

Data Fields

bctbx_rng_context_t * RNGContext
 
void * keyAgreementContext
 
uint8_t keyAgreementAlgo
 
uint8_t isInitialised
 
uint8_t isSecure
 
uint8_t peerSupportMultiChannel
 
uint64_t timeReference
 
bzrtpCallbacks_t zrtpCallbacks
 
bzrtpChannelContext_tchannelContext [ZRTP_MAX_CHANNEL_NUMBER]
 
uint8_t hc
 
uint8_t supportedHash [7]
 
uint8_t cc
 
uint8_t supportedCipher [7]
 
uint8_t ac
 
uint8_t supportedAuthTag [7]
 
uint8_t kc
 
uint8_t supportedKeyAgreement [7]
 
uint8_t sc
 
uint8_t supportedSas [7]
 
void * zidCache
 
bctbx_mutex_t * zidCacheMutex
 
int zuid
 
char * selfURI
 
uint8_t selfZID [12]
 
char * peerURI
 
uint8_t peerZID [12]
 
uint32_t peerBzrtpVersion
 
cachedSecrets_t cachedSecret
 
cachedSecretsHash_t initiatorCachedSecretHash
 
cachedSecretsHash_t responderCachedSecretHash
 
uint8_t cacheMismatchFlag
 
uint8_t peerPVS
 
uint8_ttransientAuxSecret
 
size_t transientAuxSecretLength
 
uint8_tZRTPSess
 
uint8_t ZRTPSessLength
 
uint8_texportedKey
 
uint8_t exportedKeyLength
 

Detailed Description

structure of the ZRTP engine context Store current state, timers, HMAC and encryption keys

Field Documentation

uint8_t bzrtpContext_struct::ac

auth tag count - set to 0 mean we support only HMAC-SHA1-32 (4 bits)

cachedSecrets_t bzrtpContext_struct::cachedSecret

the local cached secrets

uint8_t bzrtpContext_struct::cacheMismatchFlag

Flag set in case of cache mismatch(detected in DHM mode when DH part packet arrives)

uint8_t bzrtpContext_struct::cc

cipher count - set to 0 means we support only AES128-CFB128 (4 bits)

bzrtpChannelContext_t* bzrtpContext_struct::channelContext[ZRTP_MAX_CHANNEL_NUMBER]

All the context data needed for a channel are stored in a dedicated structure

uint8_t* bzrtpContext_struct::exportedKey

computed as in rfc section 4.5.2 only if needed

uint8_t bzrtpContext_struct::exportedKeyLength

length of previous buffer, shall be channel[0]->hashLength

uint8_t bzrtpContext_struct::hc

hash count -zrtpPacket set to 0 means we support only HMAC-SHA256 (4 bits)

cachedSecretsHash_t bzrtpContext_struct::initiatorCachedSecretHash

The hash of cached secret from initiator side, computed as described in rfc section 4.3.1

uint8_t bzrtpContext_struct::isInitialised

this flag is set once the context was initialised : self ZID retrieved from cache or generated, used to unlock the creation of addtional channels

uint8_t bzrtpContext_struct::isSecure

this flag is set to 1 after the first channel have completed the ZRTP protocol exchange(i.e. when the responder have sent the conf2ACK message), must be set in order to start an additional channel

uint8_t bzrtpContext_struct::kc

key agreement count - set to 0 means we support only Diffie-Hellman-Merkle 3072 (4 bits)

uint8_t bzrtpContext_struct::keyAgreementAlgo

key agreement algorithm agreed on the first channel, the one performing key exchange, stored using integer mapping defined in cryptoUtils.h,

void* bzrtpContext_struct::keyAgreementContext

context for the key agreement operations. Only one key agreement computation may be done during a call, so this belongs to the general context and not the channel one

uint32_t bzrtpContext_struct::peerBzrtpVersion

The Bzrtp library version used by peer, retrieved from the peer Hello packet Client identifier and used for backward compatibility in exported key computation

uint8_t bzrtpContext_struct::peerPVS

used to store value of PVS flag sent by peer in the confirm packet on first channel only, then used to compute the PVS value sent to the application

uint8_t bzrtpContext_struct::peerSupportMultiChannel

this flag is set to 1 when the first valid HELLO packet from peer arrives if it support Multichannel ZRTP

char* bzrtpContext_struct::peerURI

a null terminated string storing the peer user URI

uint8_t bzrtpContext_struct::peerZID[12]

The ZRTP Identifier of the peer ZRTP end point - given by the Hello packet

cachedSecretsHash_t bzrtpContext_struct::responderCachedSecretHash

The hash of cached secret from responder side, computed as described in rfc section 4.3.1

bctbx_rng_context_t* bzrtpContext_struct::RNGContext

context for random number generation

uint8_t bzrtpContext_struct::sc

sas count - set to 0 means we support only base32 (4 bits)

char* bzrtpContext_struct::selfURI

a null terminated string storing the local user URI

uint8_t bzrtpContext_struct::selfZID[12]

The ZRTP Identifier of this ZRTP end point - a random if running cache less

uint8_t bzrtpContext_struct::supportedAuthTag[7]

list of supported SRTP authentication tag algorithms mapped to uint8_t

uint8_t bzrtpContext_struct::supportedCipher[7]

list of supported cipher algorithms mapped to uint8_t

uint8_t bzrtpContext_struct::supportedHash[7]

list of supported hash algorithms mapped to uint8_t

uint8_t bzrtpContext_struct::supportedKeyAgreement[7]

list of supported key agreement algorithms mapped to uint8_t

uint8_t bzrtpContext_struct::supportedSas[7]

list of supported Sas representations mapped to uint8_t

uint64_t bzrtpContext_struct::timeReference

in ms. This field will set at each channel State Machine start and updated at each tick after creation of the context, it is used to set the firing time of a channel timer

uint8_t* bzrtpContext_struct::transientAuxSecret

an auxiliary secret not stored in cache, provided after context creation and before the main channel is started

size_t bzrtpContext_struct::transientAuxSecretLength

size of the previous buffer

void* bzrtpContext_struct::zidCache

an empty pointer always set to NULL when cache is disabled

bctbx_mutex_t* bzrtpContext_struct::zidCacheMutex

lock access to the cache if provided

bzrtpCallbacks_t bzrtpContext_struct::zrtpCallbacks

structure holding all the pointers to callbacks functions needed by the ZRTP engine. Functions are set by client using the bzrtp_setCallback function

uint8_t* bzrtpContext_struct::ZRTPSess

ZRTP session key as described in rfc section 4.5.2

uint8_t bzrtpContext_struct::ZRTPSessLength

length of ZRTP session key depends on agreed hash algorithm

int bzrtpContext_struct::zuid

internal id used to address zid cache SIP/ZID pair binding


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