wickr-crypto-c
|
Data Structures | |
struct | wickr_transport_root_key |
A root key for the wickr_transport_ctx that is used to communicate the master secret for the transport communication. The root key can be converted to a set of stream keys based on direction for use in a transport. More... | |
Functions | |
wickr_transport_root_key_t * | wickr_transport_root_key_create_random (const wickr_crypto_engine_t *engine, wickr_cipher_t cipher, uint32_t packets_per_evo_send, uint32_t packets_per_evo_recv) |
wickr_transport_root_key_t * | wickr_transport_root_key_create (wickr_buffer_t *secret, wickr_cipher_t cipher, uint32_t packets_per_evo_send, uint32_t packets_per_evo_recv) |
wickr_transport_root_key_t * | wickr_transport_root_key_copy (const wickr_transport_root_key_t *root_key) |
void | wickr_transport_root_key_destroy (wickr_transport_root_key_t **root_key) |
wickr_stream_key_t * | wickr_transport_root_key_to_stream_key (const wickr_transport_root_key_t *root_key, const wickr_crypto_engine_t *engine, const wickr_buffer_t *salt, const wickr_buffer_t *stream_id, wickr_stream_direction direction) |
wickr_transport_root_key_t* wickr_transport_root_key_copy | ( | const wickr_transport_root_key_t * | root_key | ) |
Copy a transport root key
root_key | the transport root key to copy |
root_key
wickr_transport_root_key_t* wickr_transport_root_key_create | ( | wickr_buffer_t * | secret, |
wickr_cipher_t | cipher, | ||
uint32_t | packets_per_evo_send, | ||
uint32_t | packets_per_evo_recv | ||
) |
Create a root key using a random secret of length cipher.key_key
secret | a secret of length cipher.key_len |
cipher | the cipher to use for generating stream keys |
packets_per_evo_send | the value to set for packets_per_evolution when creating a stream key in the ENCODE direction |
packets_per_evo_recv | the value to set for packets_per_evolution when creating a stream key in the DECODE direction |
secret
or NULL if allocation fails wickr_transport_root_key_t* wickr_transport_root_key_create_random | ( | const wickr_crypto_engine_t * | engine, |
wickr_cipher_t | cipher, | ||
uint32_t | packets_per_evo_send, | ||
uint32_t | packets_per_evo_recv | ||
) |
Create a root key using a random secret of length cipher.key_key
engine | a pointer to a crypto engine that can generate random bytes |
cipher | the cipher to use for generating stream keys |
packets_per_evo_send | the value to set for packets_per_evolution when creating a stream key in the ENCODE direction |
packets_per_evo_recv | the value to set for packets_per_evolution when creating a stream key in the DECODE direction |
void wickr_transport_root_key_destroy | ( | wickr_transport_root_key_t ** | root_key | ) |
Destroy a transport root key
root_key | a pointer to the transport root key to destroy. All properties of *root_key will also be destroyed |
wickr_stream_key_t* wickr_transport_root_key_to_stream_key | ( | const wickr_transport_root_key_t * | root_key, |
const wickr_crypto_engine_t * | engine, | ||
const wickr_buffer_t * | salt, | ||
const wickr_buffer_t * | stream_id, | ||
wickr_stream_direction | direction | ||
) |
Convert a transport root key into a stream key
root_key | the transport root key to convert into a stream key |
engine | a pointer to a crypto engine that supports HKDF functionality |
salt | the salt to use for the HKDF function |
stream_id | a stream id that will differentiate the stream between the ENCODE and DECODE directions |
direction | the direction to set on the resulting stream key |