1 #ifndef crypto_sign_ed25519_H 2 #define crypto_sign_ed25519_H 3 4 #include <stddef.h> 5 #include "crypto_hash_sha512.h" 6 #include "export.h" 7 8 #ifdef __cplusplus 9 # ifdef __GNUC__ 10 # pragma GCC diagnostic ignored "-Wlong-long" 11 # endif 12 extern "C" { 13 #endif 14 15 typedef struct crypto_sign_ed25519ph_state { 16 crypto_hash_sha512_state hs; 17 } crypto_sign_ed25519ph_state; 18 19 SODIUM_EXPORT 20 size_t crypto_sign_ed25519ph_statebytes(void); 21 22 #define crypto_sign_ed25519_BYTES 64U 23 SODIUM_EXPORT 24 size_t crypto_sign_ed25519_bytes(void); 25 26 #define crypto_sign_ed25519_SEEDBYTES 32U 27 SODIUM_EXPORT 28 size_t crypto_sign_ed25519_seedbytes(void); 29 30 #define crypto_sign_ed25519_PUBLICKEYBYTES 32U 31 SODIUM_EXPORT 32 size_t crypto_sign_ed25519_publickeybytes(void); 33 34 #define crypto_sign_ed25519_SECRETKEYBYTES (32U + 32U) 35 SODIUM_EXPORT 36 size_t crypto_sign_ed25519_secretkeybytes(void); 37 38 #define crypto_sign_ed25519_MESSAGEBYTES_MAX (SODIUM_SIZE_MAX - crypto_sign_ed25519_BYTES) 39 SODIUM_EXPORT 40 size_t crypto_sign_ed25519_messagebytes_max(void); 41 42 SODIUM_EXPORT 43 int crypto_sign_ed25519(unsigned char *sm, unsigned long long *smlen_p, 44 const unsigned char *m, unsigned long long mlen, 45 const unsigned char *sk); 46 47 SODIUM_EXPORT 48 int crypto_sign_ed25519_open(unsigned char *m, unsigned long long *mlen_p, 49 const unsigned char *sm, unsigned long long smlen, 50 const unsigned char *pk) 51 __attribute__ ((warn_unused_result)); 52 53 SODIUM_EXPORT 54 int crypto_sign_ed25519_detached(unsigned char *sig, 55 unsigned long long *siglen_p, 56 const unsigned char *m, 57 unsigned long long mlen, 58 const unsigned char *sk); 59 60 SODIUM_EXPORT 61 int crypto_sign_ed25519_verify_detached(const unsigned char *sig, 62 const unsigned char *m, 63 unsigned long long mlen, 64 const unsigned char *pk) 65 __attribute__ ((warn_unused_result)); 66 67 SODIUM_EXPORT 68 int crypto_sign_ed25519_keypair(unsigned char *pk, unsigned char *sk); 69 70 SODIUM_EXPORT 71 int crypto_sign_ed25519_seed_keypair(unsigned char *pk, unsigned char *sk, 72 const unsigned char *seed); 73 74 SODIUM_EXPORT 75 int crypto_sign_ed25519_pk_to_curve25519(unsigned char *curve25519_pk, 76 const unsigned char *ed25519_pk) 77 __attribute__ ((warn_unused_result)); 78 79 SODIUM_EXPORT 80 int crypto_sign_ed25519_sk_to_curve25519(unsigned char *curve25519_sk, 81 const unsigned char *ed25519_sk); 82 83 SODIUM_EXPORT 84 int crypto_sign_ed25519_sk_to_seed(unsigned char *seed, 85 const unsigned char *sk); 86 87 SODIUM_EXPORT 88 int crypto_sign_ed25519_sk_to_pk(unsigned char *pk, const unsigned char *sk); 89 90 SODIUM_EXPORT 91 int crypto_sign_ed25519ph_init(crypto_sign_ed25519ph_state *state); 92 93 SODIUM_EXPORT 94 int crypto_sign_ed25519ph_update(crypto_sign_ed25519ph_state *state, 95 const unsigned char *m, 96 unsigned long long mlen); 97 98 SODIUM_EXPORT 99 int crypto_sign_ed25519ph_final_create(crypto_sign_ed25519ph_state *state, 100 unsigned char *sig, 101 unsigned long long *siglen_p, 102 const unsigned char *sk); 103 104 SODIUM_EXPORT 105 int crypto_sign_ed25519ph_final_verify(crypto_sign_ed25519ph_state *state, 106 unsigned char *sig, 107 const unsigned char *pk) 108 __attribute__ ((warn_unused_result)); 109 110 #ifdef __cplusplus 111 } 112 #endif 113 114 #endif 115