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