1*9dc26a4eSdjm /* $OpenBSD: crypto_api.h,v 1.9 2024/09/02 12:13:56 djm Exp $ */ 28ffbcf6dSmarkus 35e544fa5Smarkus /* 45e544fa5Smarkus * Assembled from generated headers and source files by Markus Friedl. 55e544fa5Smarkus * Placed in the public domain. 65e544fa5Smarkus */ 78ffbcf6dSmarkus 88ffbcf6dSmarkus #ifndef crypto_api_h 98ffbcf6dSmarkus #define crypto_api_h 108ffbcf6dSmarkus 118ffbcf6dSmarkus #include <stdint.h> 128ffbcf6dSmarkus #include <stdlib.h> 138ffbcf6dSmarkus 14b869f5f7Sdjm typedef int8_t crypto_int8; 15b869f5f7Sdjm typedef uint8_t crypto_uint8; 16b869f5f7Sdjm typedef int16_t crypto_int16; 17b869f5f7Sdjm typedef uint16_t crypto_uint16; 188ffbcf6dSmarkus typedef int32_t crypto_int32; 198ffbcf6dSmarkus typedef uint32_t crypto_uint32; 202b637b8eSdtucker typedef int64_t crypto_int64; 212b637b8eSdtucker typedef uint64_t crypto_uint64; 228ffbcf6dSmarkus 238ffbcf6dSmarkus #define randombytes(buf, buf_len) arc4random_buf((buf), (buf_len)) 24b869f5f7Sdjm #define small_random32() arc4random() 258ffbcf6dSmarkus 268ffbcf6dSmarkus #define crypto_hash_sha512_BYTES 64U 278ffbcf6dSmarkus 288ffbcf6dSmarkus int crypto_hash_sha512(unsigned char *, const unsigned char *, 298ffbcf6dSmarkus unsigned long long); 308ffbcf6dSmarkus 318ffbcf6dSmarkus #define crypto_sign_ed25519_SECRETKEYBYTES 64U 328ffbcf6dSmarkus #define crypto_sign_ed25519_PUBLICKEYBYTES 32U 338ffbcf6dSmarkus #define crypto_sign_ed25519_BYTES 64U 348ffbcf6dSmarkus 358ffbcf6dSmarkus int crypto_sign_ed25519(unsigned char *, unsigned long long *, 368ffbcf6dSmarkus const unsigned char *, unsigned long long, const unsigned char *); 378ffbcf6dSmarkus int crypto_sign_ed25519_open(unsigned char *, unsigned long long *, 388ffbcf6dSmarkus const unsigned char *, unsigned long long, const unsigned char *); 398ffbcf6dSmarkus int crypto_sign_ed25519_keypair(unsigned char *, unsigned char *); 408ffbcf6dSmarkus 413e284e19Sdjm #define crypto_kem_sntrup761_PUBLICKEYBYTES 1158 423e284e19Sdjm #define crypto_kem_sntrup761_SECRETKEYBYTES 1763 433e284e19Sdjm #define crypto_kem_sntrup761_CIPHERTEXTBYTES 1039 443e284e19Sdjm #define crypto_kem_sntrup761_BYTES 32 45b869f5f7Sdjm 463e284e19Sdjm int crypto_kem_sntrup761_enc(unsigned char *cstr, unsigned char *k, 47b869f5f7Sdjm const unsigned char *pk); 483e284e19Sdjm int crypto_kem_sntrup761_dec(unsigned char *k, 49b869f5f7Sdjm const unsigned char *cstr, const unsigned char *sk); 503e284e19Sdjm int crypto_kem_sntrup761_keypair(unsigned char *pk, unsigned char *sk); 51b869f5f7Sdjm 52*9dc26a4eSdjm #define crypto_kem_mlkem768_PUBLICKEYBYTES 1184 53*9dc26a4eSdjm #define crypto_kem_mlkem768_SECRETKEYBYTES 2400 54*9dc26a4eSdjm #define crypto_kem_mlkem768_CIPHERTEXTBYTES 1088 55*9dc26a4eSdjm #define crypto_kem_mlkem768_BYTES 32 56*9dc26a4eSdjm 578ffbcf6dSmarkus #endif /* crypto_api_h */ 58