bZRTP
bZRTP is an opensource implementation of ZRTP keys exchange protocol
|
structure of the ZRTP engine context Store current state, timers, HMAC and encryption keys More...
#include <typedef.h>
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_t * | channelContext [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_t * | transientAuxSecret |
size_t | transientAuxSecretLength |
uint8_t * | ZRTPSess |
uint8_t | ZRTPSessLength |
uint8_t * | exportedKey |
uint8_t | exportedKeyLength |
uint8_t | ZRTPSessContext [24] |
size_t | mtu |
structure of the ZRTP engine context Store current state, timers, HMAC and encryption keys
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
size_t bzrtpContext_struct::mtu |
Maximum size in bytes of a ZRTP packet generated locally, has a low limit of BZRTP_MINIMUM_MTU
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::ZRTPSessContext[24] |
computed at the same time as the commit - useful only when a GoClear is sent - described in rfc section 4.7.2.1 -> (ZIDi||ZIDr)
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