gnunet-android

GNUnet for Android
Log | Files | Refs | README

crypto_hash_sha512.h (1494B)


      1 #ifndef crypto_hash_sha512_H
      2 #define crypto_hash_sha512_H
      3 
      4 /*
      5  * WARNING: Unless you absolutely need to use SHA512 for interoperability,
      6  * purposes, you might want to consider crypto_generichash() instead.
      7  * Unlike SHA512, crypto_generichash() is not vulnerable to length
      8  * extension attacks.
      9  */
     10 
     11 #include <stddef.h>
     12 #include <stdint.h>
     13 #include <stdlib.h>
     14 
     15 #include "export.h"
     16 
     17 #ifdef __cplusplus
     18 # ifdef __GNUC__
     19 #  pragma GCC diagnostic ignored "-Wlong-long"
     20 # endif
     21 extern "C" {
     22 #endif
     23 
     24 typedef struct crypto_hash_sha512_state {
     25     uint64_t state[8];
     26     uint64_t count[2];
     27     uint8_t  buf[128];
     28 } crypto_hash_sha512_state;
     29 
     30 SODIUM_EXPORT
     31 size_t crypto_hash_sha512_statebytes(void);
     32 
     33 #define crypto_hash_sha512_BYTES 64U
     34 SODIUM_EXPORT
     35 size_t crypto_hash_sha512_bytes(void);
     36 
     37 SODIUM_EXPORT
     38 int crypto_hash_sha512(unsigned char *out, const unsigned char *in,
     39                        unsigned long long inlen) __attribute__ ((nonnull(1)));
     40 
     41 SODIUM_EXPORT
     42 int crypto_hash_sha512_init(crypto_hash_sha512_state *state)
     43             __attribute__ ((nonnull));
     44 
     45 SODIUM_EXPORT
     46 int crypto_hash_sha512_update(crypto_hash_sha512_state *state,
     47                               const unsigned char *in,
     48                               unsigned long long inlen)
     49             __attribute__ ((nonnull(1)));
     50 
     51 SODIUM_EXPORT
     52 int crypto_hash_sha512_final(crypto_hash_sha512_state *state,
     53                              unsigned char *out)
     54             __attribute__ ((nonnull));
     55 
     56 #ifdef __cplusplus
     57 }
     58 #endif
     59 
     60 #endif