libsodium (1.0.19)

(root)/
include/
sodium/
crypto_generichash.h
       1  #ifndef crypto_generichash_H
       2  #define crypto_generichash_H
       3  
       4  #include <stddef.h>
       5  
       6  #include "crypto_generichash_blake2b.h"
       7  #include "export.h"
       8  
       9  #ifdef __cplusplus
      10  # ifdef __GNUC__
      11  #  pragma GCC diagnostic ignored "-Wlong-long"
      12  # endif
      13  extern "C" {
      14  #endif
      15  
      16  #define crypto_generichash_BYTES_MIN crypto_generichash_blake2b_BYTES_MIN
      17  SODIUM_EXPORT
      18  size_t  crypto_generichash_bytes_min(void);
      19  
      20  #define crypto_generichash_BYTES_MAX crypto_generichash_blake2b_BYTES_MAX
      21  SODIUM_EXPORT
      22  size_t  crypto_generichash_bytes_max(void);
      23  
      24  #define crypto_generichash_BYTES crypto_generichash_blake2b_BYTES
      25  SODIUM_EXPORT
      26  size_t  crypto_generichash_bytes(void);
      27  
      28  #define crypto_generichash_KEYBYTES_MIN crypto_generichash_blake2b_KEYBYTES_MIN
      29  SODIUM_EXPORT
      30  size_t  crypto_generichash_keybytes_min(void);
      31  
      32  #define crypto_generichash_KEYBYTES_MAX crypto_generichash_blake2b_KEYBYTES_MAX
      33  SODIUM_EXPORT
      34  size_t  crypto_generichash_keybytes_max(void);
      35  
      36  #define crypto_generichash_KEYBYTES crypto_generichash_blake2b_KEYBYTES
      37  SODIUM_EXPORT
      38  size_t  crypto_generichash_keybytes(void);
      39  
      40  #define crypto_generichash_PRIMITIVE "blake2b"
      41  SODIUM_EXPORT
      42  const char *crypto_generichash_primitive(void);
      43  
      44  /*
      45   * Important when writing bindings for other programming languages:
      46   * the state address should be 64-bytes aligned.
      47   */
      48  typedef crypto_generichash_blake2b_state crypto_generichash_state;
      49  
      50  SODIUM_EXPORT
      51  size_t  crypto_generichash_statebytes(void);
      52  
      53  SODIUM_EXPORT
      54  int crypto_generichash(unsigned char *out, size_t outlen,
      55                         const unsigned char *in, unsigned long long inlen,
      56                         const unsigned char *key, size_t keylen)
      57              __attribute__ ((nonnull(1)));
      58  
      59  SODIUM_EXPORT
      60  int crypto_generichash_init(crypto_generichash_state *state,
      61                              const unsigned char *key,
      62                              const size_t keylen, const size_t outlen)
      63              __attribute__ ((nonnull(1)));
      64  
      65  SODIUM_EXPORT
      66  int crypto_generichash_update(crypto_generichash_state *state,
      67                                const unsigned char *in,
      68                                unsigned long long inlen)
      69              __attribute__ ((nonnull(1)));
      70  
      71  SODIUM_EXPORT
      72  int crypto_generichash_final(crypto_generichash_state *state,
      73                               unsigned char *out, const size_t outlen)
      74              __attribute__ ((nonnull));
      75  
      76  SODIUM_EXPORT
      77  void crypto_generichash_keygen(unsigned char k[crypto_generichash_KEYBYTES])
      78              __attribute__ ((nonnull));
      79  
      80  #ifdef __cplusplus
      81  }
      82  #endif
      83  
      84  #endif