mirror of
https://github.com/yuzu-emu/mbedtls.git
synced 2024-11-23 06:25:45 +01:00
Algorithm encoding: add flag bit PSA_ALG_AEAD_FROM_BLOCK_FLAG
Make it easy to distinguish generic constructions on top of block ciphers, such as CCM or GCM, from specialized algorithms such as Chacha20-Poly1305.
This commit is contained in:
parent
d22b6c4f89
commit
679693ee49
@ -874,13 +874,34 @@
|
|||||||
*/
|
*/
|
||||||
#define PSA_ALG_CBC_PKCS7 ((psa_algorithm_t)0x04600101)
|
#define PSA_ALG_CBC_PKCS7 ((psa_algorithm_t)0x04600101)
|
||||||
|
|
||||||
|
#define PSA_ALG_AEAD_FROM_BLOCK_FLAG ((psa_algorithm_t)0x00400000)
|
||||||
|
|
||||||
|
/** Whether the specified algorithm is an AEAD mode on a block cipher.
|
||||||
|
*
|
||||||
|
* \param alg An algorithm identifier (value of type #psa_algorithm_t).
|
||||||
|
*
|
||||||
|
* \return 1 if \p alg is an AEAD algorithm which is an AEAD mode based on
|
||||||
|
* a block cipher, 0 otherwise.
|
||||||
|
* This macro may return either 0 or 1 if \p alg is not a supported
|
||||||
|
* algorithm identifier.
|
||||||
|
*/
|
||||||
|
#define PSA_ALG_IS_AEAD_ON_BLOCK_CIPHER(alg) \
|
||||||
|
(((alg) & (PSA_ALG_CATEGORY_MASK | PSA_ALG_AEAD_FROM_BLOCK_FLAG)) == \
|
||||||
|
(PSA_ALG_CATEGORY_AEAD | PSA_ALG_AEAD_FROM_BLOCK_FLAG))
|
||||||
|
|
||||||
/** The CCM authenticated encryption algorithm.
|
/** The CCM authenticated encryption algorithm.
|
||||||
*/
|
*/
|
||||||
#define PSA_ALG_CCM ((psa_algorithm_t)0x06001001)
|
#define PSA_ALG_CCM ((psa_algorithm_t)0x06401001)
|
||||||
|
|
||||||
/** The GCM authenticated encryption algorithm.
|
/** The GCM authenticated encryption algorithm.
|
||||||
*/
|
*/
|
||||||
#define PSA_ALG_GCM ((psa_algorithm_t)0x06001002)
|
#define PSA_ALG_GCM ((psa_algorithm_t)0x06401002)
|
||||||
|
|
||||||
|
/** The Chacha20-Poly1305 AEAD algorithm.
|
||||||
|
*
|
||||||
|
* The ChaCha20_Poly1305 construction is defined in RFC 7539.
|
||||||
|
*/
|
||||||
|
#define PSA_ALG_CHACHA20_POLY1305 ((psa_algorithm_t)0x06001005)
|
||||||
|
|
||||||
/* In the encoding of a AEAD algorithm, the bits corresponding to
|
/* In the encoding of a AEAD algorithm, the bits corresponding to
|
||||||
* PSA_ALG_AEAD_TAG_LENGTH_MASK encode the length of the AEAD tag.
|
* PSA_ALG_AEAD_TAG_LENGTH_MASK encode the length of the AEAD tag.
|
||||||
|
@ -192,11 +192,11 @@ cipher_algorithm:PSA_ALG_XTS:0
|
|||||||
|
|
||||||
AEAD: CCM
|
AEAD: CCM
|
||||||
depends_on:MBEDTLS_CCM_C
|
depends_on:MBEDTLS_CCM_C
|
||||||
aead_algorithm:PSA_ALG_CCM:0:16
|
aead_algorithm:PSA_ALG_CCM:ALG_IS_AEAD_ON_BLOCK_CIPHER:16
|
||||||
|
|
||||||
AEAD: GCM
|
AEAD: GCM
|
||||||
depends_on:MBEDTLS_GCM_C
|
depends_on:MBEDTLS_GCM_C
|
||||||
aead_algorithm:PSA_ALG_GCM:0:16
|
aead_algorithm:PSA_ALG_GCM:ALG_IS_AEAD_ON_BLOCK_CIPHER:16
|
||||||
|
|
||||||
Asymmetric signature: RSA PKCS#1 v1.5 raw
|
Asymmetric signature: RSA PKCS#1 v1.5 raw
|
||||||
depends_on:MBEDTLS_RSA_C:MBEDTLS_PKCS1_V15
|
depends_on:MBEDTLS_RSA_C:MBEDTLS_PKCS1_V15
|
||||||
|
@ -36,6 +36,7 @@
|
|||||||
#define ALG_IS_ECDH ( 1u << 18 )
|
#define ALG_IS_ECDH ( 1u << 18 )
|
||||||
#define ALG_IS_WILDCARD ( 1u << 19 )
|
#define ALG_IS_WILDCARD ( 1u << 19 )
|
||||||
#define ALG_IS_RAW_KEY_AGREEMENT ( 1u << 20 )
|
#define ALG_IS_RAW_KEY_AGREEMENT ( 1u << 20 )
|
||||||
|
#define ALG_IS_AEAD_ON_BLOCK_CIPHER ( 1u << 21 )
|
||||||
|
|
||||||
/* Flags for key type classification macros. There is a flag for every
|
/* Flags for key type classification macros. There is a flag for every
|
||||||
* key type classification macro PSA_KEY_TYPE_IS_xxx except for some that
|
* key type classification macro PSA_KEY_TYPE_IS_xxx except for some that
|
||||||
@ -77,6 +78,7 @@ void algorithm_classification( psa_algorithm_t alg, unsigned flags )
|
|||||||
TEST_CLASSIFICATION_MACRO( ALG_IS_ECDH, alg, flags );
|
TEST_CLASSIFICATION_MACRO( ALG_IS_ECDH, alg, flags );
|
||||||
TEST_CLASSIFICATION_MACRO( ALG_IS_FFDH, alg, flags );
|
TEST_CLASSIFICATION_MACRO( ALG_IS_FFDH, alg, flags );
|
||||||
TEST_CLASSIFICATION_MACRO( ALG_IS_RAW_KEY_AGREEMENT, alg, flags );
|
TEST_CLASSIFICATION_MACRO( ALG_IS_RAW_KEY_AGREEMENT, alg, flags );
|
||||||
|
TEST_CLASSIFICATION_MACRO( ALG_IS_AEAD_ON_BLOCK_CIPHER, alg, flags );
|
||||||
exit: ;
|
exit: ;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user