Loading...
Searching...
No Matches
sizes.h
Go to the documentation of this file.
1/*
2 * SPDX-FileCopyrightText: 2025 TU Dresden
3 * SPDX-FileCopyrightText: 2021 HAW Hamburg
4 * SPDX-License-Identifier: LGPL-2.1-only
5 */
6
7#pragma once
8
20
21#ifdef __cplusplus
22extern "C" {
23#endif
24
25#include "kernel_defines.h"
26#include "psa/hash/algorithm.h"
27
42#define PSA_HASH_LENGTH(alg) \
43 ( \
44 PSA_ALG_HMAC_GET_HASH(alg) == PSA_ALG_MD2 ? 16 : \
45 PSA_ALG_HMAC_GET_HASH(alg) == PSA_ALG_MD4 ? 16 : \
46 PSA_ALG_HMAC_GET_HASH(alg) == PSA_ALG_MD5 ? 16 : \
47 PSA_ALG_HMAC_GET_HASH(alg) == PSA_ALG_RIPEMD160 ? 20 : \
48 PSA_ALG_HMAC_GET_HASH(alg) == PSA_ALG_SHA_1 ? 20 : \
49 PSA_ALG_HMAC_GET_HASH(alg) == PSA_ALG_SHA_224 ? 28 : \
50 PSA_ALG_HMAC_GET_HASH(alg) == PSA_ALG_SHA_256 ? 32 : \
51 PSA_ALG_HMAC_GET_HASH(alg) == PSA_ALG_SHA_384 ? 48 : \
52 PSA_ALG_HMAC_GET_HASH(alg) == PSA_ALG_SHA_512 ? 64 : \
53 PSA_ALG_HMAC_GET_HASH(alg) == PSA_ALG_SHA_512_224 ? 28 : \
54 PSA_ALG_HMAC_GET_HASH(alg) == PSA_ALG_SHA_512_256 ? 32 : \
55 PSA_ALG_HMAC_GET_HASH(alg) == PSA_ALG_SHA3_224 ? 28 : \
56 PSA_ALG_HMAC_GET_HASH(alg) == PSA_ALG_SHA3_256 ? 32 : \
57 PSA_ALG_HMAC_GET_HASH(alg) == PSA_ALG_SHA3_384 ? 48 : \
58 PSA_ALG_HMAC_GET_HASH(alg) == PSA_ALG_SHA3_512 ? 64 : \
59 0)
60
66#define PSA_HASH_MAX_SIZE (64)
67
73#if (IS_USED(MODULE_PSA_HASH_SHA3_256))
74#define PSA_HASH_MAX_BLOCK_SIZE 136
75#elif (IS_USED(MODULE_PSA_HASH_SHA_512) || \
76 IS_USED(MODULE_PSA_HASH_SHA_384) || \
77 IS_USED(MODULE_PSA_HASH_SHA_512_224) || \
78 IS_USED(MODULE_PSA_HASH_SHA_512_256))
79#define PSA_HASH_MAX_BLOCK_SIZE 128
80#elif (IS_USED(MODULE_PSA_HASH_SHA3_384))
81#define PSA_HASH_MAX_BLOCK_SIZE 104
82#elif (IS_USED(MODULE_PSA_HASH_SHA3_512))
83#define PSA_HASH_MAX_BLOCK_SIZE 72
84#elif (IS_USED(MODULE_PSA_HASH_MD5) || \
85 IS_USED(MODULE_PSA_HASH_SHA_1) || \
86 IS_USED(MODULE_PSA_HASH_SHA_224) || \
87 IS_USED(MODULE_PSA_HASH_SHA_256))
88#define PSA_HASH_MAX_BLOCK_SIZE 64
89#else
90#define PSA_HASH_MAX_BLOCK_SIZE 0
91#endif
92
117#define PSA_HASH_SUSPEND_OUTPUT_SIZE(alg) /* specification-defined value */
118
128#define PSA_HASH_SUSPEND_OUTPUT_MAX_SIZE /* implementation-defined value */
129
137#define PSA_HASH_SUSPEND_ALGORITHM_FIELD_LENGTH ((size_t)4)
138
153#define PSA_HASH_SUSPEND_INPUT_LENGTH_FIELD_LENGTH(alg) \
154/* specification-defined value */
155
170#define PSA_HASH_SUSPEND_HASH_STATE_FIELD_LENGTH(alg) \
171/* specification-defined value */
172
189#define PSA_HASH_BLOCK_LENGTH(alg) \
190 ( \
191 PSA_ALG_HMAC_GET_HASH(alg) == PSA_ALG_MD2 ? 16 : \
192 PSA_ALG_HMAC_GET_HASH(alg) == PSA_ALG_MD4 ? 64 : \
193 PSA_ALG_HMAC_GET_HASH(alg) == PSA_ALG_MD5 ? 64 : \
194 PSA_ALG_HMAC_GET_HASH(alg) == PSA_ALG_RIPEMD160 ? 64 : \
195 PSA_ALG_HMAC_GET_HASH(alg) == PSA_ALG_SHA_1 ? 64 : \
196 PSA_ALG_HMAC_GET_HASH(alg) == PSA_ALG_SHA_224 ? 64 : \
197 PSA_ALG_HMAC_GET_HASH(alg) == PSA_ALG_SHA_256 ? 64 : \
198 PSA_ALG_HMAC_GET_HASH(alg) == PSA_ALG_SHA_384 ? 128 : \
199 PSA_ALG_HMAC_GET_HASH(alg) == PSA_ALG_SHA_512 ? 128 : \
200 PSA_ALG_HMAC_GET_HASH(alg) == PSA_ALG_SHA_512_224 ? 128 : \
201 PSA_ALG_HMAC_GET_HASH(alg) == PSA_ALG_SHA_512_256 ? 128 : \
202 PSA_ALG_HMAC_GET_HASH(alg) == PSA_ALG_SHA3_224 ? 144 : \
203 PSA_ALG_HMAC_GET_HASH(alg) == PSA_ALG_SHA3_256 ? 136 : \
204 PSA_ALG_HMAC_GET_HASH(alg) == PSA_ALG_SHA3_384 ? 104 : \
205 PSA_ALG_HMAC_GET_HASH(alg) == PSA_ALG_SHA3_512 ? 72 : \
206 0)
207
208#ifdef __cplusplus
209}
210#endif
211
Hash algorithm definitions for the PSA Crypto API.
Common macros and compiler attributes/pragmas configuration.