wickr-crypto-c

Data Structures
Here are the data structures with brief descriptions:

C wickr_buffer | Represents an array of bytes and the length of the allocation associated with those bytes
C wickr_cipher | Represents a cipher that can be used in the crypto_engine. This meta object holds parameters for the cipher algorithms and maintains an identifier that can be used to look up the desired parameters for an algorithm
C wickr_cipher_key |
C wickr_cipher_result |
C wickr_crypto_engine | Interface to a set of cryptographic operations used throughout the library. Currently the default implementation of this can be found along with documentation in openssl_suite.h and kdf.h
C wickr_ctx | Wickr encryption context for high level management of sending / receiving packets using the Wickr protocol
C wickr_ctx_gen_result | Output of a context generation
C wickr_ctx_packet | Parsed inbound wickr packet that has yet to be decoded by this context
C wickr_decode_result | Packet decoding result
C wickr_dev_info | Device Information used to make a uniquely identifying set of data for each context running the Wickr Protocol
C wickr_digest | Digest function parameters
C wickr_ec_curve | Metadata about curve types to help with key generation, and signatures
C wickr_ec_key | Representation of public and private Elliptic Curve Keypair information as buffers
C wickr_ecdh_cipher_ctx | A cipher context designed to modularize the ECDH_HKDF_AES256 workflow
C wickr_ecdsa_result | Elliptic Curve Digital Signature Algorithm Result
C wickr_encoder_result | Result of a packet encoding operation
C wickr_ephemeral_info | Message destruction control metadata
C wickr_ephemeral_keypair | Represents a key pair used for message key exchanges within the Wickr Messaging Protocol
C wickr_fingerprint | A fingerprint representation of a combination of signature keys / identifiers
C wickr_identity | A signing identity on the Wickr system
C wickr_identity_chain | Represents a root -> node relationship as well as it's signature status
C wickr_kdf_algo | Metadata associated with a particular KDF function
C wickr_kdf_meta | Represents the information the KDF function will need along with it's input to derive a particular output
C wickr_kdf_result | Represents the result of a KDF function execution
C wickr_key_exchange | Public key exchange protected data. After a shared secret is generated using a public key with identifier 'key_id', and run through a KDF, it is used to encrypt data to be protected by the exchange and the ciphertext is stored in 'exchange_ciphertext'
C wickr_key_exchange_set | A collection of key exchanges for a set of recipients. The data protected inside 'exchange_ciphertext' for each recipient is derived by each recipient node using their individualized key exchange. See Wickr white paper 'Prepare Packet Header' section for more information
C wickr_node | Represents a message destination at a point in time
C wickr_packet | An encrypted packet made with the Wickr protocol
C wickr_packet_meta | Control metadata found in the encrypted payload of a packet
C wickr_parse_result | Result from parsing an inbound packet
C wickr_payload | The encrypted body content of a Wickr packet
C wickr_root_keys | Root level crypto keys for signatures, local encryption, and remote encryption
C wickr_storage_keys | Key's used for the client to encrypt data meant for itself, and not for other clients
C wickr_stream_ctx | A context that is used for encrypting or decrypting a sequenced stream of data packets The stream context manages the state of stream operations including key evolution management based on the sequence number of the being encrypted / decrypted. The stream context is assigned a direction, and can only be used for encoding OR decoding of packets, and not both
C wickr_stream_iv | A deterministic random IV generator using a 64 byte secure random seed and HMAC-SHA512
C wickr_stream_key | A data structure representing the stream encoding / decoding key material A stream key holds information about the key material used for cipher operations as well as it's next evolution key and the number of packets this key should be used to encode or decode before evolution takes place
C wickr_transport_callbacks | Callbacks to notify the user of events within the transport
C wickr_transport_ctx | Transport context to manage the state machine of a point to point connection using fundamentals of the Wickr protocol as building blocks
C wickr_transport_data_meta | Metadata specifically for user data packets within a transport
C wickr_transport_handshake | Transport handshake to manage the state of a handshake within the context of a wickr transport context
C wickr_transport_handshake_meta | Metadata specifically for handshake packets within a transport
C wickr_transport_packet | A packet used within the wickr_transport_ctx to package up data and related metadata + authentication in one serializable structure
C wickr_transport_packet_meta | Packet metadata included with all transport packets
C 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