Home | History | Annotate | Line # | Download | only in sodium
      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