xref: /openbsd-src/usr.bin/ssh/crypto_api.h (revision 9dc26a4e156f418b27590ceb0a20161d8f506073)
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