int crypto_verify32(const uint8_t a[32], const uint8_t b[32]);
int crypto_verify64(const uint8_t a[64], const uint8_t b[64]);
+
// Erase sensitive data
// --------------------
-
-// Please erase all copies
void crypto_wipe(void *secret, size_t size);
const uint8_t *key, uint32_t key_size,
const uint8_t *ad, uint32_t ad_size);
+
// Key exchange (X-25519)
// ----------------------
const uint8_t their_public_key [32]);
-
// Signatures (EdDSA with curve25519 + BLAKE2b)
// --------------------------------------------
void crypto_eddsa_key_pair(uint8_t secret_key[64],
const uint8_t public_key[32],
const uint8_t *message, size_t message_size);
+
////////////////////////////
/// Low level primitives ///
////////////////////////////
const uint8_t nonce[12],
uint32_t ctr);
+
// Poly 1305
// ---------
const uint8_t private_key[32],
const uint8_t curve_point[32]);
+
// EdDSA building blocks
// ---------------------
void crypto_eddsa_trim_scalar(uint8_t out[32], const uint8_t in[32]);
const uint8_t h_ram[32],
const uint8_t s[32]);
+
// EdDSA to X25519
// ---------------
void crypto_from_eddsa_private(uint8_t x25519[32], const uint8_t eddsa[32]);
void crypto_hidden_key_pair(uint8_t hidden[32], uint8_t secret_key[32],
uint8_t seed[32]);
-
#ifdef __cplusplus
}
#endif