23#define ALIRO_P256_SCALAR 32u
24#define ALIRO_P256_POINT 65u
25#define ALIRO_P256_SIG 64u
26#define ALIRO_GCM_TAG 16u
29int aliro_prim_init(
void);
32int aliro_random(uint8_t *out,
size_t len);
35int aliro_aes256_gcm_encrypt(
const uint8_t key[32],
const uint8_t *nonce,
size_t nonce_len,
36 const uint8_t *aad,
size_t aad_len,
const uint8_t *pt,
size_t pt_len,
37 uint8_t *ct, uint8_t *tag,
size_t tag_len);
38int aliro_aes256_gcm_decrypt(
const uint8_t key[32],
const uint8_t *nonce,
size_t nonce_len,
39 const uint8_t *aad,
size_t aad_len,
const uint8_t *ct,
size_t ct_len,
40 const uint8_t *tag,
size_t tag_len, uint8_t *pt);
43int aliro_aes128_ecb_encrypt(
const uint8_t key[16],
const uint8_t in[16], uint8_t out[16]);
46int aliro_ec_p256_keygen(uint8_t priv[ALIRO_P256_SCALAR], uint8_t pub[ALIRO_P256_POINT]);
51int aliro_ec_p256_pub_from_priv(
const uint8_t priv[ALIRO_P256_SCALAR],
52 uint8_t pub[ALIRO_P256_POINT]);
55int aliro_ecdh_p256(
const uint8_t priv[ALIRO_P256_SCALAR],
const uint8_t peer_pub[ALIRO_P256_POINT],
56 uint8_t shared_x[ALIRO_P256_SCALAR]);
59int aliro_ecdsa_p256_sign(
const uint8_t priv[ALIRO_P256_SCALAR],
const uint8_t *msg,
size_t msg_len,
60 uint8_t sig[ALIRO_P256_SIG]);
62int aliro_ecdsa_p256_sign_hash(
const uint8_t priv[ALIRO_P256_SCALAR],
const uint8_t hash[32],
63 uint8_t sig[ALIRO_P256_SIG]);
64int aliro_ecdsa_p256_verify(
const uint8_t pub[ALIRO_P256_POINT],
const uint8_t *msg,
size_t msg_len,
65 const uint8_t sig[ALIRO_P256_SIG]);