Loading...
Searching...
No Matches
sizes.h
Go to the documentation of this file.
1/*
2 * Copyright (C) 2025 TU Dresden
3 * Copyright (C) 2021 HAW Hamburg
4 *
5 * This file is subject to the terms and conditions of the GNU Lesser
6 * General Public License v2.1. See the file LICENSE in the top level
7 * directory for more details.
8 */
9
10#pragma once
11
23
24#ifdef __cplusplus
25extern "C" {
26#endif
27
28#include "kernel_defines.h"
29#include "psa/hash/algorithm.h"
30
45#define PSA_HASH_LENGTH(alg) \
46 ( \
47 PSA_ALG_HMAC_GET_HASH(alg) == PSA_ALG_MD2 ? 16 : \
48 PSA_ALG_HMAC_GET_HASH(alg) == PSA_ALG_MD4 ? 16 : \
49 PSA_ALG_HMAC_GET_HASH(alg) == PSA_ALG_MD5 ? 16 : \
50 PSA_ALG_HMAC_GET_HASH(alg) == PSA_ALG_RIPEMD160 ? 20 : \
51 PSA_ALG_HMAC_GET_HASH(alg) == PSA_ALG_SHA_1 ? 20 : \
52 PSA_ALG_HMAC_GET_HASH(alg) == PSA_ALG_SHA_224 ? 28 : \
53 PSA_ALG_HMAC_GET_HASH(alg) == PSA_ALG_SHA_256 ? 32 : \
54 PSA_ALG_HMAC_GET_HASH(alg) == PSA_ALG_SHA_384 ? 48 : \
55 PSA_ALG_HMAC_GET_HASH(alg) == PSA_ALG_SHA_512 ? 64 : \
56 PSA_ALG_HMAC_GET_HASH(alg) == PSA_ALG_SHA_512_224 ? 28 : \
57 PSA_ALG_HMAC_GET_HASH(alg) == PSA_ALG_SHA_512_256 ? 32 : \
58 PSA_ALG_HMAC_GET_HASH(alg) == PSA_ALG_SHA3_224 ? 28 : \
59 PSA_ALG_HMAC_GET_HASH(alg) == PSA_ALG_SHA3_256 ? 32 : \
60 PSA_ALG_HMAC_GET_HASH(alg) == PSA_ALG_SHA3_384 ? 48 : \
61 PSA_ALG_HMAC_GET_HASH(alg) == PSA_ALG_SHA3_512 ? 64 : \
62 0)
63
69#define PSA_HASH_MAX_SIZE (64)
70
76#if (IS_USED(MODULE_PSA_HASH_SHA3_256))
77#define PSA_HASH_MAX_BLOCK_SIZE 136
78#elif (IS_USED(MODULE_PSA_HASH_SHA_512) || \
79 IS_USED(MODULE_PSA_HASH_SHA_384) || \
80 IS_USED(MODULE_PSA_HASH_SHA_512_224) || \
81 IS_USED(MODULE_PSA_HASH_SHA_512_256))
82#define PSA_HASH_MAX_BLOCK_SIZE 128
83#elif (IS_USED(MODULE_PSA_HASH_SHA3_384))
84#define PSA_HASH_MAX_BLOCK_SIZE 104
85#elif (IS_USED(MODULE_PSA_HASH_SHA3_512))
86#define PSA_HASH_MAX_BLOCK_SIZE 72
87#elif (IS_USED(MODULE_PSA_HASH_MD5) || \
88 IS_USED(MODULE_PSA_HASH_SHA_1) || \
89 IS_USED(MODULE_PSA_HASH_SHA_224) || \
90 IS_USED(MODULE_PSA_HASH_SHA_256))
91#define PSA_HASH_MAX_BLOCK_SIZE 64
92#else
93#define PSA_HASH_MAX_BLOCK_SIZE 0
94#endif
95
120#define PSA_HASH_SUSPEND_OUTPUT_SIZE(alg) /* specification-defined value */
121
131#define PSA_HASH_SUSPEND_OUTPUT_MAX_SIZE /* implementation-defined value */
132
140#define PSA_HASH_SUSPEND_ALGORITHM_FIELD_LENGTH ((size_t)4)
141
156#define PSA_HASH_SUSPEND_INPUT_LENGTH_FIELD_LENGTH(alg) \
157/* specification-defined value */
158
173#define PSA_HASH_SUSPEND_HASH_STATE_FIELD_LENGTH(alg) \
174/* specification-defined value */
175
192#define PSA_HASH_BLOCK_LENGTH(alg) \
193 ( \
194 PSA_ALG_HMAC_GET_HASH(alg) == PSA_ALG_MD2 ? 16 : \
195 PSA_ALG_HMAC_GET_HASH(alg) == PSA_ALG_MD4 ? 64 : \
196 PSA_ALG_HMAC_GET_HASH(alg) == PSA_ALG_MD5 ? 64 : \
197 PSA_ALG_HMAC_GET_HASH(alg) == PSA_ALG_RIPEMD160 ? 64 : \
198 PSA_ALG_HMAC_GET_HASH(alg) == PSA_ALG_SHA_1 ? 64 : \
199 PSA_ALG_HMAC_GET_HASH(alg) == PSA_ALG_SHA_224 ? 64 : \
200 PSA_ALG_HMAC_GET_HASH(alg) == PSA_ALG_SHA_256 ? 64 : \
201 PSA_ALG_HMAC_GET_HASH(alg) == PSA_ALG_SHA_384 ? 128 : \
202 PSA_ALG_HMAC_GET_HASH(alg) == PSA_ALG_SHA_512 ? 128 : \
203 PSA_ALG_HMAC_GET_HASH(alg) == PSA_ALG_SHA_512_224 ? 128 : \
204 PSA_ALG_HMAC_GET_HASH(alg) == PSA_ALG_SHA_512_256 ? 128 : \
205 PSA_ALG_HMAC_GET_HASH(alg) == PSA_ALG_SHA3_224 ? 144 : \
206 PSA_ALG_HMAC_GET_HASH(alg) == PSA_ALG_SHA3_256 ? 136 : \
207 PSA_ALG_HMAC_GET_HASH(alg) == PSA_ALG_SHA3_384 ? 104 : \
208 PSA_ALG_HMAC_GET_HASH(alg) == PSA_ALG_SHA3_512 ? 72 : \
209 0)
210
211#ifdef __cplusplus
212}
213#endif
214
Hash algorithm definitions for the PSA Crypto API.
Common macros and compiler attributes/pragmas configuration.