blake2b.h 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. #ifndef __BLAKE2B_H__
  2. #define __BLAKE2B_H__
  3. #include <stdint.h>
  4. #include <stddef.h>
  5. enum blake2b_constant
  6. {
  7. BLAKE2B_BLOCKBYTES = 128,
  8. BLAKE2B_OUTBYTES = 64,
  9. BLAKE2B_KEYBYTES = 64,
  10. BLAKE2B_SALTBYTES = 16,
  11. BLAKE2B_PERSONALBYTES = 16
  12. };
  13. typedef struct __blake2b_state
  14. {
  15. uint64_t h[8];
  16. uint64_t t[2];
  17. uint64_t f[2];
  18. uint8_t buf[BLAKE2B_BLOCKBYTES];
  19. size_t buflen;
  20. size_t outlen;
  21. uint8_t last_node;
  22. } blake2b_state;
  23. #define BLAKE2B_CTX blake2b_state
  24. #define BLAKE2B_BLOCK_LENGTH BLAKE2B_BLOCKBYTES
  25. #define BLAKE2B_DIGEST_LENGTH BLAKE2B_OUTBYTES
  26. #define BLAKE2B_KEY_LENGTH BLAKE2B_KEYBYTES
  27. int blake2b_Init(blake2b_state *S, size_t outlen);
  28. int blake2b_InitKey(blake2b_state *S, size_t outlen, const void *key, size_t keylen);
  29. int blake2b_InitPersonal(blake2b_state *S, size_t outlen, const void *personal, size_t personal_len);
  30. int blake2b_Update(blake2b_state *S, const void *pin, size_t inlen);
  31. int blake2b_Final(blake2b_state *S, void *out, size_t outlen);
  32. int blake2b(const uint8_t *msg, uint32_t msg_len, void *out, size_t outlen);
  33. int blake2b_Key(const uint8_t *msg, uint32_t msg_len, const void *key, size_t keylen, void *out, size_t outlen);
  34. #endif