wickr-crypto-c
Data Structures
Here are the data structures with brief descriptions:
 Cwickr_bufferRepresents an array of bytes and the length of the allocation associated with those bytes
 Cwickr_cipherRepresents 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
 Cwickr_cipher_key
 Cwickr_cipher_result
 Cwickr_crypto_engineInterface 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
 Cwickr_ctxWickr encryption context for high level management of sending / receiving packets using the Wickr protocol
 Cwickr_ctx_gen_resultOutput of a context generation
 Cwickr_ctx_packetParsed inbound wickr packet that has yet to be decoded by this context
 Cwickr_decode_resultPacket decoding result
 Cwickr_dev_infoDevice Information used to make a uniquely identifying set of data for each context running the Wickr Protocol
 Cwickr_digestDigest function parameters
 Cwickr_ec_curveMetadata about curve types to help with key generation, and signatures
 Cwickr_ec_keyRepresentation of public and private Elliptic Curve Keypair information as buffers
 Cwickr_ecdh_cipher_ctxA cipher context designed to modularize the ECDH_HKDF_AES256 workflow
 Cwickr_ecdsa_resultElliptic Curve Digital Signature Algorithm Result
 Cwickr_encoder_resultResult of a packet encoding operation
 Cwickr_ephemeral_infoMessage destruction control metadata
 Cwickr_ephemeral_keypairRepresents a key pair used for message key exchanges within the Wickr Messaging Protocol
 Cwickr_fingerprintA fingerprint representation of a combination of signature keys / identifiers
 Cwickr_identityA signing identity on the Wickr system
 Cwickr_identity_chainRepresents a root -> node relationship as well as it's signature status
 Cwickr_kdf_algoMetadata associated with a particular KDF function
 Cwickr_kdf_metaRepresents the information the KDF function will need along with it's input to derive a particular output
 Cwickr_kdf_resultRepresents the result of a KDF function execution
 Cwickr_key_exchangePublic 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'
 Cwickr_key_exchange_setA 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
 Cwickr_nodeRepresents a message destination at a point in time
 Cwickr_packetAn encrypted packet made with the Wickr protocol
 Cwickr_packet_metaControl metadata found in the encrypted payload of a packet
 Cwickr_parse_resultResult from parsing an inbound packet
 Cwickr_payloadThe encrypted body content of a Wickr packet
 Cwickr_root_keysRoot level crypto keys for signatures, local encryption, and remote encryption
 Cwickr_storage_keysKey's used for the client to encrypt data meant for itself, and not for other clients
 Cwickr_stream_ctxA 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
 Cwickr_stream_ivA deterministic random IV generator using a 64 byte secure random seed and HMAC-SHA512
 Cwickr_stream_keyA 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
 Cwickr_transport_callbacksCallbacks to notify the user of events within the transport
 Cwickr_transport_ctxTransport context to manage the state machine of a point to point connection using fundamentals of the Wickr protocol as building blocks
 Cwickr_transport_data_metaMetadata specifically for user data packets within a transport
 Cwickr_transport_handshakeTransport handshake to manage the state of a handshake within the context of a wickr transport context
 Cwickr_transport_handshake_metaMetadata specifically for handshake packets within a transport
 Cwickr_transport_packetA packet used within the wickr_transport_ctx to package up data and related metadata + authentication in one serializable structure
 Cwickr_transport_packet_metaPacket metadata included with all transport packets
 Cwickr_transport_root_keyA 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