ed25519-hash-custom.h 953 B

123456789101112131415161718192021222324252627282930313233
  1. /*
  2. a custom hash must have a 512bit digest and implement:
  3. struct ed25519_hash_context;
  4. void ed25519_hash_init(ed25519_hash_context *ctx);
  5. void ed25519_hash_update(ed25519_hash_context *ctx, const uint8_t *in, size_t inlen);
  6. void ed25519_hash_final(ed25519_hash_context *ctx, uint8_t *hash);
  7. void ed25519_hash(uint8_t *hash, const uint8_t *in, size_t inlen);
  8. */
  9. #include <sodium/crypto_hash_sha512.h>
  10. typedef crypto_hash_sha512_state ed25519_hash_context;
  11. static inline void ed25519_hash_init(ed25519_hash_context *ctx)
  12. {
  13. crypto_hash_sha512_init(ctx);
  14. }
  15. static inline void ed25519_hash_update(ed25519_hash_context *ctx, const uint8_t *in, size_t inlen)
  16. {
  17. crypto_hash_sha512_update(ctx,in,inlen);
  18. }
  19. static inline void ed25519_hash_final(ed25519_hash_context *ctx, uint8_t *hash)
  20. {
  21. crypto_hash_sha512_final(ctx,hash);
  22. }
  23. static inline void ed25519_hash(uint8_t *hash, const uint8_t *in, size_t inlen)
  24. {
  25. crypto_hash_sha512(hash,in,inlen);
  26. }