49 typedef enum { KDF_ID_SCRYPT_17 = 1, KDF_ID_SCRYPT_18, KDF_ID_SCRYPT_19, KDF_ID_SCRYPT_20, KDF_ID_BCRYPT_15, KDF_ID_HKDF_SHA256, KDF_ID_HKDF_SHA384, KDF_ID_HKDF_SHA512 } wickr_kdf_id;
92 #define SCRYPT_2_17_COST 1116161 93 #define SCRYPT_2_18_COST 1181697 94 #define SCRYPT_2_19_COST 1247233 95 #define SCRYPT_2_20_COST 1312769 98 #define SCRYPT_OUTPUT_SIZE 32 100 #define SCRYPT_SALT_SIZE 16 101 #define BCRYPT_15_COST 15 102 #define BCRYPT_HASH_SIZE 64 105 #define BCRYPT_SALT_SIZE 22 109 static const wickr_kdf_algo_t KDF_SCRYPT_2_18 = { KDF_SCRYPT, KDF_ID_SCRYPT_18, SCRYPT_SALT_SIZE, SCRYPT_OUTPUT_SIZE, SCRYPT_2_18_COST };
110 static const wickr_kdf_algo_t KDF_SCRYPT_2_19 = { KDF_SCRYPT, KDF_ID_SCRYPT_19, SCRYPT_SALT_SIZE, SCRYPT_OUTPUT_SIZE, SCRYPT_2_19_COST };
111 static const wickr_kdf_algo_t KDF_SCRYPT_2_20 = { KDF_SCRYPT, KDF_ID_SCRYPT_20, SCRYPT_SALT_SIZE, SCRYPT_OUTPUT_SIZE, SCRYPT_2_20_COST };
114 static const wickr_kdf_algo_t KDF_BCRYPT_15 = { KDF_BCRYPT, KDF_ID_BCRYPT_15, BCRYPT_SALT_SIZE, BCRYPT_HASH_SIZE, BCRYPT_15_COST };
117 static const wickr_kdf_algo_t KDF_HKDF_SHA256 = { KDF_HMAC_SHA2, KDF_ID_HKDF_SHA256, SHA256_DIGEST_SIZE, SHA256_DIGEST_SIZE, 0 };
118 static const wickr_kdf_algo_t KDF_HKDF_SHA384 = { KDF_HMAC_SHA2, KDF_ID_HKDF_SHA384, SHA384_DIGEST_SIZE, SHA384_DIGEST_SIZE, 0 };
119 static const wickr_kdf_algo_t KDF_HKDF_SHA512 = { KDF_HMAC_SHA2, KDF_ID_HKDF_SHA512, SHA512_DIGEST_SIZE, SHA512_DIGEST_SIZE, 0 };
wickr_kdf_meta_t * meta
Definition: kdf.h:156
uint8_t salt_size
Definition: kdf.h:74
wickr_kdf_result_t * wickr_kdf_result_create(wickr_kdf_meta_t *meta, wickr_buffer_t *hash)
wickr_kdf_result_t * wickr_perform_kdf_meta(const wickr_kdf_meta_t *existing_meta, const wickr_buffer_t *passphrase)
wickr_kdf_algo_id
Definition: kdf.h:47
Represents an array of bytes and the length of the allocation associated with those bytes.
Definition: buffer.h:51
uint32_t cost
Definition: kdf.h:76
Represents the result of a KDF function execution.
Definition: kdf.h:155
wickr_kdf_meta_t * wickr_kdf_meta_create(wickr_kdf_algo_t algo, wickr_buffer_t *salt, wickr_buffer_t *info)
void wickr_kdf_result_destroy(wickr_kdf_result_t **result)
Metadata associated with a particular KDF function.
Definition: kdf.h:71
#define SCRYPT_2_17_COST
Definition: kdf.h:92
const wickr_kdf_algo_t * wickr_hkdf_algo_for_digest(wickr_digest_t digest)
wickr_kdf_result_t * wickr_perform_kdf(wickr_kdf_algo_t algo, const wickr_buffer_t *passphrase)
uint8_t output_size
Definition: kdf.h:75
wickr_kdf_meta_t * wickr_kdf_meta_create_with_buffer(const wickr_buffer_t *buffer)
wickr_kdf_id kdf_id
Definition: kdf.h:73
wickr_kdf_algo_id algo_id
Definition: kdf.h:72
wickr_kdf_result_t * wickr_kdf_result_copy(const wickr_kdf_result_t *source)
void wickr_kdf_meta_destroy(wickr_kdf_meta_t **meta)
wickr_kdf_meta_t * wickr_kdf_meta_copy(const wickr_kdf_meta_t *source)
Digest function parameters.
Definition: digest.h:54
wickr_buffer_t * hash
Definition: kdf.h:157
wickr_buffer_t * wickr_kdf_meta_serialize(const wickr_kdf_meta_t *meta)
uint8_t wickr_kdf_meta_size_with_buffer(const wickr_buffer_t *buffer)