sha_dma.h 651 Bytes
Newer Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
/*
 * Copyright (c) 2019, Remi Pommarel <repk@triplefau.lt>
 *
 * 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