Toggle navigation
Documentation
The friendly Operating System for the Internet of Things
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
25
extern
"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
algorithm.h
Hash algorithm definitions for the PSA Crypto API.
kernel_defines.h
Common macros and compiler attributes/pragmas configuration.
Generated on Thu Jul 3 2025 17:41:21 by
1.13.2