/* * Copyright (c) 2019, Remi Pommarel * * SPDX-License-Identifier: BSD-3-Clause */ #ifndef SHA_DMA_H #define SHA_DMA_H #define SHA256_HASHSZ 32 #define SHA256_BLOCKSZ 0x40 enum ASD_MODE { ASM_INVAL, ASM_SHA256, ASM_SHA224, }; struct asd_ctx { uint8_t digest[SHA256_HASHSZ]; uint8_t block[SHA256_BLOCKSZ]; size_t blocksz; enum ASD_MODE mode; uint8_t started; }; static inline void asd_sha_init(struct asd_ctx *ctx, enum ASD_MODE mode) { ctx->started = 0; ctx->mode = mode; ctx->blocksz = 0; } void asd_sha_update(struct asd_ctx *ctx, void *data, size_t len); void asd_sha_finalize(struct asd_ctx *ctx); #endif