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