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 
24 #ifdef __cplusplus
25 extern "C" {
26 #endif
27 
28 #include "kernel_defines.h"
29 #include "psa/algorithm.h"
30 #include "psa/cipher/sizes.h"
31 #include "psa/hash/algorithm.h"
32 #include "psa/hash/sizes.h"
33 #include "psa/mac/algorithm.h"
34 
57 #define PSA_MAC_LENGTH(key_type, key_bits, alg) \
58  ((PSA_ALG_IS_HMAC(alg)) ? PSA_HASH_LENGTH(PSA_ALG_HMAC_GET_HASH(alg)) : \
59  PSA_ALG_IS_BLOCK_CIPHER_MAC(alg) ? PSA_BLOCK_CIPHER_BLOCK_LENGTH(key_type) : \
60  ((void)(key_type), (void)(key_bits), 0))
61 
72 #if (IS_USED(MODULE_PSA_MAC_HMAC_SHA_512) || \
73  IS_USED(MODULE_PSA_MAC_HMAC_SHA3_512))
74 #define PSA_MAC_MAX_SIZE (PSA_HASH_LENGTH(PSA_ALG_SHA3_512)) /* 64 */
75 #elif (IS_USED(MODULE_PSA_MAC_HMAC_SHA_384) || \
76  IS_USED(MODULE_PSA_MAC_HMAC_SHA3_384))
77 #define PSA_MAC_MAX_SIZE (PSA_HASH_LENGTH(PSA_ALG_SHA3_384)) /* 48 */
78 #elif (IS_USED(MODULE_PSA_MAC_HMAC_SHA_256) || \
79  IS_USED(MODULE_PSA_MAC_HMAC_SHA_512_256) || \
80  IS_USED(MODULE_PSA_MAC_HMAC_SHA3_256))
81 #define PSA_MAC_MAX_SIZE (PSA_HASH_LENGTH(PSA_ALG_SHA3_256)) /* 32 */
82 #elif (IS_USED(MODULE_PSA_MAC_HMAC_SHA_224) || \
83  IS_USED(MODULE_PSA_MAC_HMAC_SHA_512_224) || \
84  IS_USED(MODULE_PSA_MAC_HMAC_SHA3_224))
85 #define PSA_MAC_MAX_SIZE (PSA_HASH_LENGTH(PSA_ALG_SHA3_224)) /* 28 */
86 #elif (IS_USED(MODULE_PSA_MAC_HMAC_RIPEMD160) || \
87  IS_USED(MODULE_PSA_MAC_HMAC_SHA_1))
88 #define PSA_MAC_MAX_SIZE (PSA_HASH_LENGTH(PSA_ALG_SHA_1)) /* 20 */
89 #elif (IS_USED(MODULE_PSA_MAC_HMAC_MD2) || \
90  IS_USED(MODULE_PSA_MAC_HMAC_MD4) || \
91  IS_USED(MODULE_PSA_MAC_HMAC_MD5))
92 #define PSA_MAC_MAX_SIZE (PSA_HASH_LENGTH(PSA_ALG_MD5)) /* 16 */
93 #else
94 #define PSA_MAC_MAX_SIZE 0
95 #endif
96 
97 #ifdef __cplusplus
98 }
99 #endif
100 
Algorithm definitions for the PSA Crypto API.
Cipher size definitions for the PSA Crypto API.
Hash algorithm definitions for the PSA Crypto API.
Hash size definitions for the PSA Crypto API.
Common macros and compiler attributes/pragmas configuration.
MAC algorithm definitions for the PSA Crypto API.