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 "
psa/sizes.h
"
29
#include "
type.h
"
30
38
#if (IS_USED(MODULE_PSA_MAC_HMAC_SHA_256))
39
#define CONFIG_PSA_MAX_KEY_SIZE 64
40
#elif (IS_USED(MODULE_PSA_ASYMMETRIC_ECC_P256R1) || \
41
IS_USED(MODULE_PSA_ASYMMETRIC_ECC_ED25519) || \
42
IS_USED(MODULE_PSA_CIPHER_AES_256_CBC) || \
43
IS_USED(MODULE_PSA_AEAD_AES_256_CCM) || \
44
IS_USED(MODULE_PSA_SECURE_ELEMENT_ATECCX08A_ECC_P256) || \
45
IS_USED(MODULE_PSA_CIPHER_CHACHA20))
46
#define CONFIG_PSA_MAX_KEY_SIZE 32
47
#elif (IS_USED(MODULE_PSA_CIPHER_AES_192_CBC) || \
48
IS_USED(MODULE_PSA_AEAD_AES_192_CCM) || \
49
IS_USED(MODULE_PSA_ASYMMETRIC_ECC_P192R1))
50
#define CONFIG_PSA_MAX_KEY_SIZE 24
51
#elif (IS_USED(MODULE_PSA_CIPHER_AES_128_CBC)) || \
52
(IS_USED(MODULE_PSA_AEAD_AES_128_CCM)) || \
53
(IS_USED(MODULE_PSA_CIPHER_AES_128_ECB))
54
#define CONFIG_PSA_MAX_KEY_SIZE 16
55
#else
56
#define CONFIG_PSA_MAX_KEY_SIZE 0
57
#endif
58
69
#define PSA_KEY_EXPORT_ECC_KEY_MAX_SIZE(key_type, key_bits) \
70
(size_t)\
71
(PSA_KEY_TYPE_ECC_GET_FAMILY(key_type) == PSA_ECC_FAMILY_TWISTED_EDWARDS ? 32 : \
72
(PSA_KEY_TYPE_ECC_GET_FAMILY(key_type) == PSA_ECC_FAMILY_SECP_R1 ? \
73
PSA_BITS_TO_BYTES(key_bits) : \
74
0))
75
112
#define PSA_EXPORT_KEY_OUTPUT_SIZE(key_type, key_bits) \
113
(PSA_KEY_TYPE_IS_PUBLIC_KEY(key_type) ? \
114
PSA_EXPORT_PUBLIC_KEY_OUTPUT_SIZE(key_type, key_bits) : \
115
(PSA_KEY_TYPE_IS_ECC(key_type) ? \
116
PSA_KEY_EXPORT_ECC_KEY_MAX_SIZE(key_type, key_bits) : \
117
0))
118
125
#define PSA_ECC_KEY_SIZE_IS_VALID(type, bits) \
126
(PSA_KEY_TYPE_ECC_GET_FAMILY(type) == PSA_ECC_FAMILY_TWISTED_EDWARDS ? \
127
(bits == 255) : \
128
(PSA_KEY_TYPE_ECC_GET_FAMILY(type) == PSA_ECC_FAMILY_SECP_R1 ? \
129
(bits == 128 || \
130
bits == 192 || \
131
bits == 224 || \
132
bits == 256 || \
133
bits == 384) : \
134
0))
135
139
#define PSA_MAX_PRIV_KEY_SIZE (PSA_BYTES_TO_BITS(CONFIG_PSA_MAX_KEY_SIZE))
140
150
#if (IS_USED(MODULE_PSA_ASYMMETRIC_ECC_P256R1) || \
151
IS_USED(MODULE_PSA_SECURE_ELEMENT_ATECCX08A_ECC_P256))
152
#define PSA_EXPORT_KEY_PAIR_MAX_SIZE \
153
(PSA_EXPORT_KEY_OUTPUT_SIZE(PSA_ECC_FAMILY_SECT_R1, 256))
154
#elif (IS_USED(MODULE_PSA_ASYMMETRIC_ECC_ED25519))
155
#define PSA_EXPORT_KEY_PAIR_MAX_SIZE \
156
(PSA_EXPORT_KEY_OUTPUT_SIZE(PSA_ECC_FAMILY_TWISTED_EDWARDS, 255))
157
#elif (IS_USED(MODULE_PSA_ASYMMETRIC_ECC_P192R1))
158
#define PSA_EXPORT_KEY_PAIR_MAX_SIZE \
159
(PSA_EXPORT_KEY_OUTPUT_SIZE(PSA_ECC_FAMILY_SECT_R1, 192))
160
#else
161
#define PSA_EXPORT_KEY_PAIR_MAX_SIZE 0
162
#endif
163
176
#define PSA_KEY_EXPORT_ECC_PUBLIC_KEY_MAX_SIZE(key_type, key_bits) \
177
(PSA_KEY_TYPE_ECC_GET_FAMILY(key_type) == PSA_ECC_FAMILY_TWISTED_EDWARDS ? 32 : \
178
((size_t)(2 * PSA_BITS_TO_BYTES(key_bits) + 1)))
179
220
#define PSA_EXPORT_PUBLIC_KEY_OUTPUT_SIZE(key_type, key_bits) \
221
(PSA_KEY_TYPE_IS_ECC(key_type) ? PSA_KEY_EXPORT_ECC_PUBLIC_KEY_MAX_SIZE(key_type, key_bits) : \
222
0)
223
234
#if (IS_USED(MODULE_PSA_ASYMMETRIC_ECC_P256R1) || \
235
IS_USED(MODULE_PSA_SECURE_ELEMENT_ATECCX08A_ECC_P256))
236
#define PSA_EXPORT_PUBLIC_KEY_MAX_SIZE \
237
(PSA_KEY_EXPORT_ECC_PUBLIC_KEY_MAX_SIZE(PSA_ECC_FAMILY_SECT_R1, 256))
238
#elif (IS_USED(MODULE_PSA_ASYMMETRIC_ECC_P192R1))
239
#define PSA_EXPORT_PUBLIC_KEY_MAX_SIZE \
240
(PSA_KEY_EXPORT_ECC_PUBLIC_KEY_MAX_SIZE(PSA_ECC_FAMILY_SECT_R1, 192))
241
#elif (IS_USED(MODULE_PSA_ASYMMETRIC_ECC_ED25519))
242
#define PSA_EXPORT_PUBLIC_KEY_MAX_SIZE \
243
(PSA_KEY_EXPORT_ECC_PUBLIC_KEY_MAX_SIZE(PSA_ECC_FAMILY_TWISTED_EDWARDS, 255))
244
#else
245
#define PSA_EXPORT_PUBLIC_KEY_MAX_SIZE 0
246
#endif
247
253
#define PSA_MAX_PRIV_KEY_BUFFER_SIZE (PSA_BITS_TO_BYTES(PSA_MAX_PRIV_KEY_SIZE))
254
258
#define PSA_MAX_ASYMMETRIC_KEYPAIR_SIZE (PSA_BITS_TO_BYTES(PSA_MAX_PRIV_KEY_SIZE) + \
259
PSA_EXPORT_PUBLIC_KEY_MAX_SIZE)
260
264
#if IS_USED(MODULE_PSA_ASYMMETRIC)
265
#define PSA_MAX_KEY_DATA_SIZE (PSA_EXPORT_PUBLIC_KEY_MAX_SIZE)
266
#else
267
#define PSA_MAX_KEY_DATA_SIZE (CONFIG_PSA_MAX_KEY_SIZE)
268
#endif
269
273
#define PSA_MAX_UNSTRUCTURED_KEY_SIZE (CONFIG_PSA_MAX_KEY_SIZE)
274
275
#ifdef __cplusplus
276
}
277
#endif
278
type.h
Key type definitions for the PSA Crypto API.
sizes.h
Size definitions for the PSA Crypto API.
Generated on Fri Jul 4 2025 11:20:35 by
1.13.2