Extract the block size from the key type encoding

This commit is contained in:
Gilles Peskine 2019-12-02 17:44:12 +01:00
parent 7bfcfac164
commit 2eea95cb5d

View File

@ -580,6 +580,8 @@
*/ */
#define PSA_DH_GROUP_VENDOR_MAX ((psa_dh_group_t) 0x01fd) #define PSA_DH_GROUP_VENDOR_MAX ((psa_dh_group_t) 0x01fd)
#define PSA_GET_KEY_TYPE_BLOCK_SIZE_EXPONENT(type) \
(((type) >> 24) & 7)
/** The block size of a block cipher. /** The block size of a block cipher.
* *
* \param type A cipher key type (value of type #psa_key_type_t). * \param type A cipher key type (value of type #psa_key_type_t).
@ -599,13 +601,9 @@
* \warning This macro may evaluate its argument multiple times. * \warning This macro may evaluate its argument multiple times.
*/ */
#define PSA_BLOCK_CIPHER_BLOCK_SIZE(type) \ #define PSA_BLOCK_CIPHER_BLOCK_SIZE(type) \
( \ (((type) & PSA_KEY_TYPE_CATEGORY_MASK) == PSA_KEY_TYPE_CATEGORY_SYMMETRIC ? \
(type) == PSA_KEY_TYPE_AES ? 16 : \ 1u << PSA_GET_KEY_TYPE_BLOCK_SIZE_EXPONENT(type) : \
(type) == PSA_KEY_TYPE_DES ? 8 : \ 0u)
(type) == PSA_KEY_TYPE_CAMELLIA ? 16 : \
(type) == PSA_KEY_TYPE_ARC4 ? 1 : \
(type) == PSA_KEY_TYPE_CHACHA20 ? 1 : \
0)
/** Vendor-defined algorithm flag. /** Vendor-defined algorithm flag.
* *