libsodium (1.0.19)

(root)/
include/
sodium/
crypto_sign.h
       1  #ifndef crypto_sign_H
       2  #define crypto_sign_H
       3  
       4  /*
       5   * THREAD SAFETY: crypto_sign_keypair() is thread-safe,
       6   * provided that sodium_init() was called before.
       7   *
       8   * Other functions, including crypto_sign_seed_keypair() are always thread-safe.
       9   */
      10  
      11  #include <stddef.h>
      12  
      13  #include "crypto_sign_ed25519.h"
      14  #include "export.h"
      15  
      16  #ifdef __cplusplus
      17  # ifdef __GNUC__
      18  #  pragma GCC diagnostic ignored "-Wlong-long"
      19  # endif
      20  extern "C" {
      21  #endif
      22  
      23  typedef crypto_sign_ed25519ph_state crypto_sign_state;
      24  
      25  SODIUM_EXPORT
      26  size_t  crypto_sign_statebytes(void);
      27  
      28  #define crypto_sign_BYTES crypto_sign_ed25519_BYTES
      29  SODIUM_EXPORT
      30  size_t  crypto_sign_bytes(void);
      31  
      32  #define crypto_sign_SEEDBYTES crypto_sign_ed25519_SEEDBYTES
      33  SODIUM_EXPORT
      34  size_t  crypto_sign_seedbytes(void);
      35  
      36  #define crypto_sign_PUBLICKEYBYTES crypto_sign_ed25519_PUBLICKEYBYTES
      37  SODIUM_EXPORT
      38  size_t  crypto_sign_publickeybytes(void);
      39  
      40  #define crypto_sign_SECRETKEYBYTES crypto_sign_ed25519_SECRETKEYBYTES
      41  SODIUM_EXPORT
      42  size_t  crypto_sign_secretkeybytes(void);
      43  
      44  #define crypto_sign_MESSAGEBYTES_MAX crypto_sign_ed25519_MESSAGEBYTES_MAX
      45  SODIUM_EXPORT
      46  size_t  crypto_sign_messagebytes_max(void);
      47  
      48  #define crypto_sign_PRIMITIVE "ed25519"
      49  SODIUM_EXPORT
      50  const char *crypto_sign_primitive(void);
      51  
      52  SODIUM_EXPORT
      53  int crypto_sign_seed_keypair(unsigned char *pk, unsigned char *sk,
      54                               const unsigned char *seed)
      55              __attribute__ ((nonnull));
      56  
      57  SODIUM_EXPORT
      58  int crypto_sign_keypair(unsigned char *pk, unsigned char *sk)
      59              __attribute__ ((nonnull));
      60  
      61  SODIUM_EXPORT
      62  int crypto_sign(unsigned char *sm, unsigned long long *smlen_p,
      63                  const unsigned char *m, unsigned long long mlen,
      64                  const unsigned char *sk) __attribute__ ((nonnull(1, 5)));
      65  
      66  SODIUM_EXPORT
      67  int crypto_sign_open(unsigned char *m, unsigned long long *mlen_p,
      68                       const unsigned char *sm, unsigned long long smlen,
      69                       const unsigned char *pk)
      70              __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(3, 5)));
      71  
      72  SODIUM_EXPORT
      73  int crypto_sign_detached(unsigned char *sig, unsigned long long *siglen_p,
      74                           const unsigned char *m, unsigned long long mlen,
      75                           const unsigned char *sk) __attribute__ ((nonnull(1, 5)));
      76  
      77  SODIUM_EXPORT
      78  int crypto_sign_verify_detached(const unsigned char *sig,
      79                                  const unsigned char *m,
      80                                  unsigned long long mlen,
      81                                  const unsigned char *pk)
      82              __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(1, 4)));
      83  
      84  SODIUM_EXPORT
      85  int crypto_sign_init(crypto_sign_state *state);
      86  
      87  SODIUM_EXPORT
      88  int crypto_sign_update(crypto_sign_state *state,
      89                         const unsigned char *m, unsigned long long mlen)
      90              __attribute__ ((nonnull(1)));
      91  
      92  SODIUM_EXPORT
      93  int crypto_sign_final_create(crypto_sign_state *state, unsigned char *sig,
      94                               unsigned long long *siglen_p,
      95                               const unsigned char *sk)
      96              __attribute__ ((nonnull(1, 2, 4)));
      97  
      98  SODIUM_EXPORT
      99  int crypto_sign_final_verify(crypto_sign_state *state, const unsigned char *sig,
     100                               const unsigned char *pk)
     101              __attribute__ ((warn_unused_result)) __attribute__ ((nonnull));
     102  
     103  #ifdef __cplusplus
     104  }
     105  #endif
     106  
     107  #endif