23#define ZRTP_MAX_CHANNEL_NUMBER 64
25#define MAX_AUX_SECRET_LENGTH 64
27#define PACKET_STORAGE_CAPACITY 5
30#define HELLO_MESSAGE_STORE_ID 0
31#define COMMIT_MESSAGE_STORE_ID 1
32#define DHPART_MESSAGE_STORE_ID 2
33#define CONFIRM_MESSAGE_STORE_ID 3
34#define GOCLEAR_MESSAGE_STORE_ID 4
43#ifdef ZIDCACHE_ENABLED
49#include <bctoolbox/crypto.h>
50#include <bctoolbox/port.h>
56#include "bctoolbox/logging.h"
59#define snprintf _snprintf
63#define BZRTP_TIMER_ON 1
64#define BZRTP_TIMER_OFF 2
67#define HELLO_BASE_RETRANSMISSION_STEP 50
68#define HELLO_CAP_RETRANSMISSION_STEP 200
69#define HELLO_MAX_RETRANSMISSION_NUMBER 20
71#define NON_HELLO_BASE_RETRANSMISSION_STEP 150
72#define NON_HELLO_CAP_RETRANSMISSION_STEP 1200
73#define NON_HELLO_MAX_RETRANSMISSION_NUMBER 10
75#define CLEARACK_BASE_RETRANSMISSION_STEP 5000
76#define CLEARACK_MAX_RETRANSMISSION_NUMBER 20
80#define BZRTP_MINIMUM_MTU 600
82#define BZRTP_DEFAULT_MTU 1452
89#define ZRTP_CLIENT_IDENTIFIERv1_0a "LINPHONE-ZRTPCPP"
90#define ZRTP_CLIENT_IDENTIFIERv1_0b "BZRTP"
92#define ZRTP_CLIENT_IDENTIFIERv1_1 "BZRTPv1.1"
94#define ZRTP_CLIENT_IDENTIFIER ZRTP_CLIENT_IDENTIFIERv1_1
116#define RETAINED_SECRET_LENGTH 32
170#ifdef GOCLEAR_ENABLED
245#ifdef GOCLEAR_ENABLED
270#ifdef ZIDCACHE_ENABLED
int(* bzrtpStateMachine_t)(bzrtpEvent_t)
the state function pointer definition
Definition stateMachine.h:57
unsigned short uint16_t
Definition stdint.h:79
unsigned int uint32_t
Definition stdint.h:80
unsigned char uint8_t
Definition stdint.h:78
unsigned __int64 uint64_t
Definition stdint.h:90
All the callback functions provided by the client needed by the ZRTP engine.
Definition bzrtp.h:175
The zrtp context of a channel.
Definition typedef.h:157
void(* sasFunction)(uint32_t sas, char *output, int outputSize)
Definition typedef.h:206
fragmentReassembly_t incomingFragmentedPacket
Definition typedef.h:224
bzrtpPacket_t * peerPackets[PACKET_STORAGE_CAPACITY]
Definition typedef.h:181
uint8_t role
Definition typedef.h:161
uint8_t isMainChannel
Definition typedef.h:169
uint32_t selfSSRC
Definition typedef.h:165
uint8_t * zrtpkeyr
Definition typedef.h:215
bzrtpTimer_t timer
Definition typedef.h:163
uint8_t cipherKeyLength
Definition typedef.h:195
uint8_t authTagAlgo
Definition typedef.h:196
uint8_t hashLength
Definition typedef.h:193
uint8_t * KDFContext
Definition typedef.h:210
uint8_t * s0
Definition typedef.h:209
uint8_t * zrtpkeyi
Definition typedef.h:214
uint8_t cipherAlgo
Definition typedef.h:194
void(* hmacFunction)(const uint8_t *key, size_t keyLength, const uint8_t *input, size_t inputLength, uint8_t hmacLength, uint8_t *output)
Definition typedef.h:202
bzrtpSrtpSecrets_t srtpSecrets
Definition typedef.h:216
uint8_t hashAlgo
Definition typedef.h:192
bzrtpPacket_t * pingPacket
Definition typedef.h:227
bzrtpPacket_t * selfPackets[PACKET_STORAGE_CAPACITY]
Definition typedef.h:180
uint8_t sasAlgo
Definition typedef.h:198
uint16_t peerSequenceNumber
Definition typedef.h:189
uint16_t KDFContextLength
Definition typedef.h:211
uint8_t responderAuxsecretID[8]
Definition typedef.h:220
void * clientData
Definition typedef.h:159
void(* hashFunction)(const uint8_t *input, size_t inputLength, uint8_t hashLength, uint8_t *output)
Definition typedef.h:203
uint8_t peerH[4][32]
Definition typedef.h:177
uint8_t keyAgreementAlgo
Definition typedef.h:197
bzrtpStateMachine_t stateMachine
Definition typedef.h:162
uint8_t sasLength
Definition typedef.h:199
uint16_t selfMessageSequenceNumber
Definition typedef.h:188
uint8_t * mackeyi
Definition typedef.h:212
uint16_t selfSequenceNumber
Definition typedef.h:187
void(* cipherDecryptionFunction)(const uint8_t *key, const uint8_t *IV, const uint8_t *input, size_t inputLength, uint8_t *output)
Definition typedef.h:205
uint8_t initiatorAuxsecretID[8]
Definition typedef.h:219
uint8_t selfH[4][32]
Definition typedef.h:176
uint8_t isSecure
Definition typedef.h:168
uint8_t * mackeyr
Definition typedef.h:213
uint8_t * peerHelloHash
Definition typedef.h:184
void(* cipherEncryptionFunction)(const uint8_t *key, const uint8_t *IV, const uint8_t *input, size_t inputLength, uint8_t *output)
Definition typedef.h:204
structure of the ZRTP engine context Store current state, timers, HMAC and encryption keys
Definition typedef.h:235
void * zidCache
Definition typedef.h:273
uint8_t keyAgreementAlgo
Definition typedef.h:239
uint8_t isSecure
Definition typedef.h:243
uint8_t sc
Definition typedef.h:266
uint8_t supportedAuthTag[7]
Definition typedef.h:263
uint8_t ac
Definition typedef.h:262
size_t mtu
Definition typedef.h:301
uint8_t supportedCipher[7]
Definition typedef.h:261
uint8_t exportedKeyLength
Definition typedef.h:297
uint8_t cc
Definition typedef.h:260
uint32_t peerBzrtpVersion
Definition typedef.h:281
uint8_t ZRTPSessContext[24]
Definition typedef.h:298
uint8_t supportedHash[7]
Definition typedef.h:259
size_t transientAuxSecretLength
Definition typedef.h:291
cachedSecrets_t cachedSecret
Definition typedef.h:282
bctbx_mutex_t * zidCacheMutex
Definition typedef.h:275
uint8_t kc
Definition typedef.h:264
uint8_t peerZID[12]
Definition typedef.h:280
int zuid
Definition typedef.h:276
uint8_t peerPVS
Definition typedef.h:286
uint8_t isInitialised
Definition typedef.h:242
uint8_t cacheMismatchFlag
Definition typedef.h:285
uint8_t peerSupportMultiChannel
Definition typedef.h:244
uint8_t supportedKeyAgreement[7]
Definition typedef.h:265
cachedSecretsHash_t initiatorCachedSecretHash
Definition typedef.h:283
char * peerURI
Definition typedef.h:279
uint8_t hc
Definition typedef.h:258
uint8_t supportedSas[7]
Definition typedef.h:267
uint8_t * ZRTPSess
Definition typedef.h:294
bzrtpChannelContext_t * channelContext[ZRTP_MAX_CHANNEL_NUMBER]
Definition typedef.h:255
uint8_t * exportedKey
Definition typedef.h:296
uint64_t timeReference
Definition typedef.h:249
bctbx_rng_context_t * RNGContext
Definition typedef.h:237
uint8_t ZRTPSessLength
Definition typedef.h:295
uint8_t selfZID[12]
Definition typedef.h:278
cachedSecretsHash_t responderCachedSecretHash
Definition typedef.h:284
bzrtpCallbacks_t zrtpCallbacks
Definition typedef.h:252
char * selfURI
Definition typedef.h:277
void * keyAgreementContext
Definition typedef.h:238
uint8_t * transientAuxSecret
Definition typedef.h:290
Store all zrtpPacket informations according to type a specific structure type is mapped to the void *...
Definition packetParser.h:134
Timer structure : The timer mechanism receives a tick giving a current time in ms a timer object will...
Definition typedef.h:108
uint8_t status
Definition typedef.h:109
int timerStep
Definition typedef.h:112
uint8_t firingCount
Definition typedef.h:111
uint64_t firingTime
Definition typedef.h:110
A set of cached secrets retrieved from the cache as defined.
Definition typedef.h:120
uint8_t * auxsecret
Definition typedef.h:125
uint8_t rs2Length
Definition typedef.h:124
uint8_t rs1Length
Definition typedef.h:122
uint8_t * rs2
Definition typedef.h:123
uint8_t * rs1
Definition typedef.h:121
size_t pbxsecretLength
Definition typedef.h:128
size_t auxsecretLength
Definition typedef.h:126
uint8_t previouslyVerifiedSas
Definition typedef.h:129
uint8_t * pbxsecret
Definition typedef.h:127
The hash of cached secret truncated to the 64 leftmost bits aux secret ID is not part of it because c...
Definition typedef.h:136
uint8_t pbxsecretID[8]
Definition typedef.h:139
uint8_t rs2ID[8]
Definition typedef.h:138
uint8_t rs1ID[8]
Definition typedef.h:137
uint16_t length
Definition typedef.h:144
uint16_t offset
Definition typedef.h:143
uint16_t messageId
Definition typedef.h:148
uint16_t messageLength
Definition typedef.h:149
bctbx_list_t * fragments
Definition typedef.h:151
uint8_t * packetString
Definition typedef.h:150
struct bzrtpTimer_struct bzrtpTimer_t
Timer structure : The timer mechanism receives a tick giving a current time in ms a timer object will...
const char * pgpWordsOdd[]
Definition pgpwords.c:284
struct cachedSecretsHash_struct cachedSecretsHash_t
The hash of cached secret truncated to the 64 leftmost bits aux secret ID is not part of it because c...
#define ZRTP_MAX_CHANNEL_NUMBER
Definition typedef.h:23
struct fragmentReassembly_struct fragmentReassembly_t
#define PACKET_STORAGE_CAPACITY
Definition typedef.h:27
struct cachedSecrets_struct cachedSecrets_t
A set of cached secrets retrieved from the cache as defined.
struct fragmentInfo_struct fragmentInfo_t
const char * pgpWordsEven[]
Definition pgpwords.c:24