sha_dma.h 651 B

123456789101112131415161718192021222324252627282930313233343536
  1. /*
  2. * Copyright (c) 2019, Remi Pommarel <repk@triplefau.lt>
  3. *
  4. * SPDX-License-Identifier: BSD-3-Clause
  5. */
  6. #ifndef SHA_DMA_H
  7. #define SHA_DMA_H
  8. #define SHA256_HASHSZ 32
  9. #define SHA256_BLOCKSZ 0x40
  10. enum ASD_MODE {
  11. ASM_INVAL,
  12. ASM_SHA256,
  13. ASM_SHA224,
  14. };
  15. struct asd_ctx {
  16. uint8_t digest[SHA256_HASHSZ];
  17. uint8_t block[SHA256_BLOCKSZ];
  18. size_t blocksz;
  19. enum ASD_MODE mode;
  20. uint8_t started;
  21. };
  22. static inline void asd_sha_init(struct asd_ctx *ctx, enum ASD_MODE mode)
  23. {
  24. ctx->started = 0;
  25. ctx->mode = mode;
  26. ctx->blocksz = 0;
  27. }
  28. void asd_sha_update(struct asd_ctx *ctx, void *data, size_t len);
  29. void asd_sha_finalize(struct asd_ctx *ctx);
  30. #endif