From 45c29ce4c0d17947b16dcfcef7cc51f20e287fce Mon Sep 17 00:00:00 2001 From: Gilles Peskine Date: Tue, 3 Dec 2019 17:56:11 +0100 Subject: [PATCH] Move size-specific curve/group constants to crypto_compat.h --- include/psa/crypto_compat.h | 40 ++++++ include/psa/crypto_values.h | 49 ------- .../test_suite_psa_crypto_metadata.data | 136 ------------------ .../test_suite_psa_crypto_metadata.function | 20 --- 4 files changed, 40 insertions(+), 205 deletions(-) diff --git a/include/psa/crypto_compat.h b/include/psa/crypto_compat.h index dc11da389f..fb2c15028e 100644 --- a/include/psa/crypto_compat.h +++ b/include/psa/crypto_compat.h @@ -102,6 +102,46 @@ typedef MBEDTLS_PSA_DEPRECATED psa_key_usage_t mbedtls_deprecated_psa_key_usage_ #endif /* MBEDTLS_DEPRECATED_REMOVED */ +/* + * Size-specific elliptic curve and Diffie-Hellman group names + */ +#define PSA_ECC_CURVE_SECP160K1 ((psa_ecc_curve_t) 0x1600a0) +#define PSA_ECC_CURVE_SECP192K1 ((psa_ecc_curve_t) 0x1600c0) +#define PSA_ECC_CURVE_SECP224K1 ((psa_ecc_curve_t) 0x1600e0) +#define PSA_ECC_CURVE_SECP256K1 ((psa_ecc_curve_t) 0x160100) +#define PSA_ECC_CURVE_SECP160R1 ((psa_ecc_curve_t) 0x1200a0) +#define PSA_ECC_CURVE_SECP192R1 ((psa_ecc_curve_t) 0x1200c0) +#define PSA_ECC_CURVE_SECP224R1 ((psa_ecc_curve_t) 0x1200e0) +#define PSA_ECC_CURVE_SECP256R1 ((psa_ecc_curve_t) 0x120100) +#define PSA_ECC_CURVE_SECP384R1 ((psa_ecc_curve_t) 0x120180) +#define PSA_ECC_CURVE_SECP521R1 ((psa_ecc_curve_t) 0x120209) +#define PSA_ECC_CURVE_SECP160R2 ((psa_ecc_curve_t) 0x1a00a0) +#define PSA_ECC_CURVE_SECT163K1 ((psa_ecc_curve_t) 0x2600a3) +#define PSA_ECC_CURVE_SECT233K1 ((psa_ecc_curve_t) 0x2600e9) +#define PSA_ECC_CURVE_SECT239K1 ((psa_ecc_curve_t) 0x2600ef) +#define PSA_ECC_CURVE_SECT283K1 ((psa_ecc_curve_t) 0x26011b) +#define PSA_ECC_CURVE_SECT409K1 ((psa_ecc_curve_t) 0x260199) +#define PSA_ECC_CURVE_SECT571K1 ((psa_ecc_curve_t) 0x26023b) +#define PSA_ECC_CURVE_SECT163R1 ((psa_ecc_curve_t) 0x2200a3) +#define PSA_ECC_CURVE_SECT193R1 ((psa_ecc_curve_t) 0x2200c1) +#define PSA_ECC_CURVE_SECT233R1 ((psa_ecc_curve_t) 0x2200e9) +#define PSA_ECC_CURVE_SECT283R1 ((psa_ecc_curve_t) 0x22011b) +#define PSA_ECC_CURVE_SECT409R1 ((psa_ecc_curve_t) 0x220199) +#define PSA_ECC_CURVE_SECT571R1 ((psa_ecc_curve_t) 0x22023b) +#define PSA_ECC_CURVE_SECT163R2 ((psa_ecc_curve_t) 0x2a00a3) +#define PSA_ECC_CURVE_SECT193R2 ((psa_ecc_curve_t) 0x2a00c1) +#define PSA_ECC_CURVE_BRAINPOOL_P256R1 ((psa_ecc_curve_t) 0x300100) +#define PSA_ECC_CURVE_BRAINPOOL_P384R1 ((psa_ecc_curve_t) 0x300180) +#define PSA_ECC_CURVE_BRAINPOOL_P512R1 ((psa_ecc_curve_t) 0x300200) +#define PSA_ECC_CURVE_CURVE25519 ((psa_ecc_curve_t) 0x0200ff) +#define PSA_ECC_CURVE_CURVE448 ((psa_ecc_curve_t) 0x0201c0) + +#define PSA_DH_GROUP_FFDHE2048 ((psa_dh_group_t) 0x020800) +#define PSA_DH_GROUP_FFDHE3072 ((psa_dh_group_t) 0x020c00) +#define PSA_DH_GROUP_FFDHE4096 ((psa_dh_group_t) 0x021000) +#define PSA_DH_GROUP_FFDHE6144 ((psa_dh_group_t) 0x021800) +#define PSA_DH_GROUP_FFDHE8192 ((psa_dh_group_t) 0x022000) + #ifdef __cplusplus } #endif diff --git a/include/psa/crypto_values.h b/include/psa/crypto_values.h index 93b7d2cdcc..39e1e3824a 100644 --- a/include/psa/crypto_values.h +++ b/include/psa/crypto_values.h @@ -531,49 +531,6 @@ */ #define PSA_ECC_CURVE_MONTGOMERY ((psa_ecc_curve_t) 0x400000) -#define PSA_ECC_CURVE_SECP160K1 ((psa_ecc_curve_t) 0x1600a0) -#define PSA_ECC_CURVE_SECP192K1 ((psa_ecc_curve_t) 0x1600c0) -#define PSA_ECC_CURVE_SECP224K1 ((psa_ecc_curve_t) 0x1600e0) -#define PSA_ECC_CURVE_SECP256K1 ((psa_ecc_curve_t) 0x160100) -#define PSA_ECC_CURVE_SECP160R1 ((psa_ecc_curve_t) 0x1200a0) -#define PSA_ECC_CURVE_SECP192R1 ((psa_ecc_curve_t) 0x1200c0) -#define PSA_ECC_CURVE_SECP224R1 ((psa_ecc_curve_t) 0x1200e0) -#define PSA_ECC_CURVE_SECP256R1 ((psa_ecc_curve_t) 0x120100) -#define PSA_ECC_CURVE_SECP384R1 ((psa_ecc_curve_t) 0x120180) -#define PSA_ECC_CURVE_SECP521R1 ((psa_ecc_curve_t) 0x120209) -#define PSA_ECC_CURVE_SECP160R2 ((psa_ecc_curve_t) 0x1a00a0) -#define PSA_ECC_CURVE_SECT163K1 ((psa_ecc_curve_t) 0x2600a3) -#define PSA_ECC_CURVE_SECT233K1 ((psa_ecc_curve_t) 0x2600e9) -#define PSA_ECC_CURVE_SECT239K1 ((psa_ecc_curve_t) 0x2600ef) -#define PSA_ECC_CURVE_SECT283K1 ((psa_ecc_curve_t) 0x26011b) -#define PSA_ECC_CURVE_SECT409K1 ((psa_ecc_curve_t) 0x260199) -#define PSA_ECC_CURVE_SECT571K1 ((psa_ecc_curve_t) 0x26023b) -#define PSA_ECC_CURVE_SECT163R1 ((psa_ecc_curve_t) 0x2200a3) -#define PSA_ECC_CURVE_SECT193R1 ((psa_ecc_curve_t) 0x2200c1) -#define PSA_ECC_CURVE_SECT233R1 ((psa_ecc_curve_t) 0x2200e9) -#define PSA_ECC_CURVE_SECT283R1 ((psa_ecc_curve_t) 0x22011b) -#define PSA_ECC_CURVE_SECT409R1 ((psa_ecc_curve_t) 0x220199) -#define PSA_ECC_CURVE_SECT571R1 ((psa_ecc_curve_t) 0x22023b) -#define PSA_ECC_CURVE_SECT163R2 ((psa_ecc_curve_t) 0x2a00a3) -#define PSA_ECC_CURVE_SECT193R2 ((psa_ecc_curve_t) 0x2a00c1) -#define PSA_ECC_CURVE_BRAINPOOL_P256R1 ((psa_ecc_curve_t) 0x300100) -#define PSA_ECC_CURVE_BRAINPOOL_P384R1 ((psa_ecc_curve_t) 0x300180) -#define PSA_ECC_CURVE_BRAINPOOL_P512R1 ((psa_ecc_curve_t) 0x300200) -/** Curve25519. - * - * This is the curve defined in Bernstein et al., - * _Curve25519: new Diffie-Hellman speed records_, LNCS 3958, 2006. - * The algorithm #PSA_ALG_ECDH performs X25519 when used with this curve. - */ -#define PSA_ECC_CURVE_CURVE25519 ((psa_ecc_curve_t) 0x0200ff) -/** Curve448 - * - * This is the curve defined in Hamburg, - * _Ed448-Goldilocks, a new elliptic curve_, NIST ECC Workshop, 2015. - * The algorithm #PSA_ALG_ECDH performs X448 when used with this curve. - */ -#define PSA_ECC_CURVE_CURVE448 ((psa_ecc_curve_t) 0x0201c0) - #define PSA_KEY_TYPE_DH_PUBLIC_KEY_BASE ((psa_key_type_t)0x62000000) #define PSA_KEY_TYPE_DH_KEY_PAIR_BASE ((psa_key_type_t)0x72000000) #define PSA_KEY_TYPE_DH_GROUP_MASK ((psa_key_type_t)0x00ffffff) @@ -619,12 +576,6 @@ */ #define PSA_DH_GROUP_RFC7919 ((psa_dh_group_t) 0x020000) -#define PSA_DH_GROUP_FFDHE2048 ((psa_dh_group_t) 0x020800) -#define PSA_DH_GROUP_FFDHE3072 ((psa_dh_group_t) 0x020c00) -#define PSA_DH_GROUP_FFDHE4096 ((psa_dh_group_t) 0x021000) -#define PSA_DH_GROUP_FFDHE6144 ((psa_dh_group_t) 0x021800) -#define PSA_DH_GROUP_FFDHE8192 ((psa_dh_group_t) 0x022000) - #define PSA_GET_KEY_TYPE_BLOCK_SIZE_EXPONENT(type) \ (((type) >> 24) & 7) /** The block size of a block cipher. diff --git a/tests/suites/test_suite_psa_crypto_metadata.data b/tests/suites/test_suite_psa_crypto_metadata.data index 8c6340aaed..b771e58233 100644 --- a/tests/suites/test_suite_psa_crypto_metadata.data +++ b/tests/suites/test_suite_psa_crypto_metadata.data @@ -375,141 +375,5 @@ ecc_key_family:PSA_ECC_CURVE_BRAINPOOL_P_R1 ECC key family: Montgomery (Curve25519, Curve448) ecc_key_family:PSA_ECC_CURVE_MONTGOMERY -ECC key types: sect163k1 -depends_on:MBEDTLS_ECP_DP_SECT163K1_ENABLED -ecc_key_types:PSA_ECC_CURVE_SECT163K1:163 - -ECC key types: sect163r1 -depends_on:MBEDTLS_ECP_DP_SECT163R1_ENABLED -ecc_key_types:PSA_ECC_CURVE_SECT163R1:163 - -ECC key types: sect163r2 -depends_on:MBEDTLS_ECP_DP_SECT163R2_ENABLED -ecc_key_types:PSA_ECC_CURVE_SECT163R2:163 - -ECC key types: sect193r1 -depends_on:MBEDTLS_ECP_DP_SECT193R1_ENABLED -ecc_key_types:PSA_ECC_CURVE_SECT193R1:193 - -ECC key types: sect193r2 -depends_on:MBEDTLS_ECP_DP_SECT193R2_ENABLED -ecc_key_types:PSA_ECC_CURVE_SECT193R2:193 - -ECC key types: sect233k1 -depends_on:MBEDTLS_ECP_DP_SECT233K1_ENABLED -ecc_key_types:PSA_ECC_CURVE_SECT233K1:233 - -ECC key types: sect233r1 -depends_on:MBEDTLS_ECP_DP_SECT233R1_ENABLED -ecc_key_types:PSA_ECC_CURVE_SECT233R1:233 - -ECC key types: sect239k1 -depends_on:MBEDTLS_ECP_DP_SECT239K1_ENABLED -ecc_key_types:PSA_ECC_CURVE_SECT239K1:239 - -ECC key types: sect283k1 -depends_on:MBEDTLS_ECP_DP_SECT283K1_ENABLED -ecc_key_types:PSA_ECC_CURVE_SECT283K1:283 - -ECC key types: sect283r1 -depends_on:MBEDTLS_ECP_DP_SECT283R1_ENABLED -ecc_key_types:PSA_ECC_CURVE_SECT283R1:283 - -ECC key types: sect409k1 -depends_on:MBEDTLS_ECP_DP_SECT409K1_ENABLED -ecc_key_types:PSA_ECC_CURVE_SECT409K1:409 - -ECC key types: sect409r1 -depends_on:MBEDTLS_ECP_DP_SECT409R1_ENABLED -ecc_key_types:PSA_ECC_CURVE_SECT409R1:409 - -ECC key types: sect571k1 -depends_on:MBEDTLS_ECP_DP_SECT571K1_ENABLED -ecc_key_types:PSA_ECC_CURVE_SECT571K1:571 - -ECC key types: sect571r1 -depends_on:MBEDTLS_ECP_DP_SECT571R1_ENABLED -ecc_key_types:PSA_ECC_CURVE_SECT571R1:571 - -ECC key types: secp160k1 -depends_on:MBEDTLS_ECP_DP_SECP160K1_ENABLED -ecc_key_types:PSA_ECC_CURVE_SECP160K1:160 - -ECC key types: secp160r1 -depends_on:MBEDTLS_ECP_DP_SECP160R1_ENABLED -ecc_key_types:PSA_ECC_CURVE_SECP160R1:160 - -ECC key types: secp160r2 -depends_on:MBEDTLS_ECP_DP_SECP160R2_ENABLED -ecc_key_types:PSA_ECC_CURVE_SECP160R2:160 - -ECC key types: secp192k1 -depends_on:MBEDTLS_ECP_DP_SECP192K1_ENABLED -ecc_key_types:PSA_ECC_CURVE_SECP192K1:192 - -ECC key types: secp192r1 -depends_on:MBEDTLS_ECP_DP_SECP192R1_ENABLED -ecc_key_types:PSA_ECC_CURVE_SECP192R1:192 - -ECC key types: secp224k1 -depends_on:MBEDTLS_ECP_DP_SECP224K1_ENABLED -ecc_key_types:PSA_ECC_CURVE_SECP224K1:224 - -ECC key types: secp224r1 -depends_on:MBEDTLS_ECP_DP_SECP224R1_ENABLED -ecc_key_types:PSA_ECC_CURVE_SECP224R1:224 - -ECC key types: secp256k1 -depends_on:MBEDTLS_ECP_DP_SECP256K1_ENABLED -ecc_key_types:PSA_ECC_CURVE_SECP256K1:256 - -ECC key types: secp256r1 -depends_on:MBEDTLS_ECP_DP_SECP256R1_ENABLED -ecc_key_types:PSA_ECC_CURVE_SECP256R1:256 - -ECC key types: secp384r1 -depends_on:MBEDTLS_ECP_DP_SECP384R1_ENABLED -ecc_key_types:PSA_ECC_CURVE_SECP384R1:384 - -ECC key types: secp521r1 -depends_on:MBEDTLS_ECP_DP_SECP521R1_ENABLED -ecc_key_types:PSA_ECC_CURVE_SECP521R1:521 - -ECC key types: Brainpool P256R1 -depends_on:MBEDTLS_ECP_DP_BP256R1_ENABLED -ecc_key_types:PSA_ECC_CURVE_BRAINPOOL_P256R1:256 - -ECC key types: Brainpool P384R1 -depends_on:MBEDTLS_ECP_DP_BP384R1_ENABLED -ecc_key_types:PSA_ECC_CURVE_BRAINPOOL_P384R1:384 - -ECC key types: Brainpool P512R1 -depends_on:MBEDTLS_ECP_DP_BP512R1_ENABLED -ecc_key_types:PSA_ECC_CURVE_BRAINPOOL_P512R1:512 - -ECC key types: Curve25519 -depends_on:MBEDTLS_ECP_DP_CURVE25519_ENABLED -ecc_key_types:PSA_ECC_CURVE_CURVE25519:255 - -ECC key types: Curve448 -depends_on:MBEDTLS_ECP_DP_CURVE448_ENABLED -ecc_key_types:PSA_ECC_CURVE_CURVE448:448 - DH group family: RFC 7919 dh_key_family:PSA_DH_GROUP_RFC7919 - -DH group types: FFDHE2048 -dh_key_types:PSA_DH_GROUP_FFDHE2048:2048 - -DH group types: FFDHE3072 -dh_key_types:PSA_DH_GROUP_FFDHE3072:2048 - -DH group types: FFDHE4096 -dh_key_types:PSA_DH_GROUP_FFDHE4096:2048 - -DH group types: FFDHE6144 -dh_key_types:PSA_DH_GROUP_FFDHE6144:2048 - -DH group types: FFDHE8192 -dh_key_types:PSA_DH_GROUP_FFDHE8192:2048 - diff --git a/tests/suites/test_suite_psa_crypto_metadata.function b/tests/suites/test_suite_psa_crypto_metadata.function index 01a1de766f..880105860c 100644 --- a/tests/suites/test_suite_psa_crypto_metadata.function +++ b/tests/suites/test_suite_psa_crypto_metadata.function @@ -491,16 +491,6 @@ void ecc_key_family( int curve_arg ) } /* END_CASE */ -/* BEGIN_CASE */ -void ecc_key_types( int curve_arg, int curve_bits_arg ) -{ - size_t curve_bits = curve_bits_arg; - test_ecc_key_family( curve_arg ); - - TEST_ASSERT( curve_bits <= PSA_VENDOR_ECC_MAX_CURVE_BITS ); -} -/* END_CASE */ - /* BEGIN_CASE depends_on:MBEDTLS_DHM_C */ void dh_key_family( int group_arg ) { @@ -515,13 +505,3 @@ void dh_key_family( int group_arg ) TEST_EQUAL( PSA_KEY_TYPE_GET_GROUP( pair_type ), group ); } /* END_CASE */ - -/* BEGIN_CASE depends_on:MBEDTLS_DHM_C */ -void dh_key_types( int group_arg, int group_bits_arg ) -{ - test_dh_key_family( group_arg ); - /* We have nothing to validate about the group size yet. */ - (void) group_bits_arg; - goto exit; -} -/* END_CASE */