crypto_generichash.c 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. #include "crypto_generichash.h"
  2. #include "randombytes.h"
  3. size_t
  4. crypto_generichash_bytes_min(void)
  5. {
  6. return crypto_generichash_BYTES_MIN;
  7. }
  8. size_t
  9. crypto_generichash_bytes_max(void)
  10. {
  11. return crypto_generichash_BYTES_MAX;
  12. }
  13. size_t
  14. crypto_generichash_bytes(void)
  15. {
  16. return crypto_generichash_BYTES;
  17. }
  18. size_t
  19. crypto_generichash_keybytes_min(void)
  20. {
  21. return crypto_generichash_KEYBYTES_MIN;
  22. }
  23. size_t
  24. crypto_generichash_keybytes_max(void)
  25. {
  26. return crypto_generichash_KEYBYTES_MAX;
  27. }
  28. size_t
  29. crypto_generichash_keybytes(void)
  30. {
  31. return crypto_generichash_KEYBYTES;
  32. }
  33. const char *
  34. crypto_generichash_primitive(void)
  35. {
  36. return crypto_generichash_PRIMITIVE;
  37. }
  38. size_t
  39. crypto_generichash_statebytes(void)
  40. {
  41. return (sizeof(crypto_generichash_state) + (size_t) 63U) & ~(size_t) 63U;
  42. }
  43. int
  44. crypto_generichash(unsigned char *out, size_t outlen, const unsigned char *in,
  45. unsigned long long inlen, const unsigned char *key,
  46. size_t keylen)
  47. {
  48. return crypto_generichash_blake2b(out, outlen, in, inlen, key, keylen);
  49. }
  50. int
  51. crypto_generichash_init(crypto_generichash_state *state,
  52. const unsigned char *key,
  53. const size_t keylen, const size_t outlen)
  54. {
  55. return crypto_generichash_blake2b_init
  56. ((crypto_generichash_blake2b_state *) state, key, keylen, outlen);
  57. }
  58. int
  59. crypto_generichash_update(crypto_generichash_state *state,
  60. const unsigned char *in,
  61. unsigned long long inlen)
  62. {
  63. return crypto_generichash_blake2b_update
  64. ((crypto_generichash_blake2b_state *) state, in, inlen);
  65. }
  66. int
  67. crypto_generichash_final(crypto_generichash_state *state,
  68. unsigned char *out, const size_t outlen)
  69. {
  70. return crypto_generichash_blake2b_final
  71. ((crypto_generichash_blake2b_state *) state, out, outlen);
  72. }
  73. void
  74. crypto_generichash_keygen(unsigned char k[crypto_generichash_KEYBYTES])
  75. {
  76. randombytes_buf(k, crypto_generichash_KEYBYTES);
  77. }