mirror of
https://github.com/Mbed-TLS/mbedtls.git
synced 2025-03-02 16:13:27 +00:00
mbedtls_pk_get_psa_attributes: support MBEDTLS_PK_OPAQUE
Signed-off-by: Gilles Peskine <Gilles.Peskine@arm.com>
This commit is contained in:
parent
94e3a873ce
commit
758d8c7631
52
library/pk.c
52
library/pk.c
@ -514,6 +514,58 @@ int mbedtls_pk_get_psa_attributes(const mbedtls_pk_context *pk,
|
|||||||
return MBEDTLS_ERR_PK_FEATURE_UNAVAILABLE;
|
return MBEDTLS_ERR_PK_FEATURE_UNAVAILABLE;
|
||||||
#endif /* MBEDTLS_PK_RSA_ALT_SUPPORT */
|
#endif /* MBEDTLS_PK_RSA_ALT_SUPPORT */
|
||||||
|
|
||||||
|
#if defined(MBEDTLS_USE_PSA_CRYPTO)
|
||||||
|
case MBEDTLS_PK_OPAQUE:
|
||||||
|
{
|
||||||
|
psa_key_attributes_t old_attributes = PSA_KEY_ATTRIBUTES_INIT;
|
||||||
|
psa_status_t status = PSA_ERROR_CORRUPTION_DETECTED;
|
||||||
|
status = psa_get_key_attributes(pk->priv_id, &old_attributes);
|
||||||
|
if (status != PSA_SUCCESS) {
|
||||||
|
return MBEDTLS_ERR_PK_BAD_INPUT_DATA;
|
||||||
|
}
|
||||||
|
psa_key_type_t old_type = psa_get_key_type(&old_attributes);
|
||||||
|
switch (usage) {
|
||||||
|
case PSA_KEY_USAGE_SIGN_MESSAGE:
|
||||||
|
case PSA_KEY_USAGE_SIGN_HASH:
|
||||||
|
case PSA_KEY_USAGE_VERIFY_MESSAGE:
|
||||||
|
case PSA_KEY_USAGE_VERIFY_HASH:
|
||||||
|
if (!(PSA_KEY_TYPE_IS_ECC_KEY_PAIR(old_type) ||
|
||||||
|
old_type == PSA_KEY_TYPE_RSA_KEY_PAIR)) {
|
||||||
|
return MBEDTLS_ERR_PK_TYPE_MISMATCH;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case PSA_KEY_USAGE_DECRYPT:
|
||||||
|
case PSA_KEY_USAGE_ENCRYPT:
|
||||||
|
if (old_type != PSA_KEY_TYPE_RSA_KEY_PAIR) {
|
||||||
|
return MBEDTLS_ERR_PK_TYPE_MISMATCH;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case PSA_KEY_USAGE_DERIVE:
|
||||||
|
if (!(PSA_KEY_TYPE_IS_ECC_KEY_PAIR(old_type))) {
|
||||||
|
return MBEDTLS_ERR_PK_TYPE_MISMATCH;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
return MBEDTLS_ERR_PK_TYPE_MISMATCH;
|
||||||
|
}
|
||||||
|
psa_key_type_t new_type = old_type;
|
||||||
|
/* Opaque keys are always key pairs, so we don't need a check
|
||||||
|
* on the input if the required usage is private. We just need
|
||||||
|
* to adjust the type correctly if the required usage is public. */
|
||||||
|
if (usage == PSA_KEY_USAGE_VERIFY_MESSAGE ||
|
||||||
|
usage == PSA_KEY_USAGE_VERIFY_HASH ||
|
||||||
|
usage == PSA_KEY_USAGE_ENCRYPT) {
|
||||||
|
new_type = PSA_KEY_TYPE_PUBLIC_KEY_OF_KEY_PAIR(new_type);
|
||||||
|
}
|
||||||
|
more_usage = psa_get_key_usage_flags(&old_attributes);
|
||||||
|
psa_set_key_type(attributes, new_type);
|
||||||
|
psa_set_key_bits(attributes, psa_get_key_bits(&old_attributes));
|
||||||
|
psa_set_key_algorithm(attributes, psa_get_key_algorithm(&old_attributes));
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
#endif /* MBEDTLS_USE_PSA_CRYPTO */
|
||||||
|
|
||||||
default:
|
default:
|
||||||
return MBEDTLS_ERR_PK_BAD_INPUT_DATA;
|
return MBEDTLS_ERR_PK_BAD_INPUT_DATA;
|
||||||
}
|
}
|
||||||
|
@ -987,3 +987,117 @@ pk_get_psa_attributes_fail:MBEDTLS_PK_ECKEY_DH:0:PSA_KEY_USAGE_VERIFY_MESSAGE:MB
|
|||||||
PSA attributes for pk: ECKEY_DH public VERIFY_HASH (bad)
|
PSA attributes for pk: ECKEY_DH public VERIFY_HASH (bad)
|
||||||
depends_on:MBEDTLS_PK_HAVE_ECC_KEYS
|
depends_on:MBEDTLS_PK_HAVE_ECC_KEYS
|
||||||
pk_get_psa_attributes_fail:MBEDTLS_PK_ECKEY_DH:0:PSA_KEY_USAGE_VERIFY_HASH:MBEDTLS_ERR_PK_TYPE_MISMATCH
|
pk_get_psa_attributes_fail:MBEDTLS_PK_ECKEY_DH:0:PSA_KEY_USAGE_VERIFY_HASH:MBEDTLS_ERR_PK_TYPE_MISMATCH
|
||||||
|
|
||||||
|
PSA attributes for pk: opaque RSA pair, 0 & SIGN_MESSAGE
|
||||||
|
depends_on:PSA_WANT_KEY_TYPE_RSA_KEY_PAIR_GENERATE
|
||||||
|
pk_get_psa_attributes_opaque:PSA_KEY_TYPE_RSA_KEY_PAIR:MBEDTLS_RSA_GEN_KEY_MIN_BITS:0:PSA_ALG_RSA_PKCS1V15_SIGN_RAW:PSA_KEY_USAGE_SIGN_MESSAGE:0:1:0
|
||||||
|
|
||||||
|
PSA attributes for pk: opaque RSA pair, SIGN_MESSAGE & SIGN_MESSAGE
|
||||||
|
depends_on:PSA_WANT_KEY_TYPE_RSA_KEY_PAIR_GENERATE
|
||||||
|
pk_get_psa_attributes_opaque:PSA_KEY_TYPE_RSA_KEY_PAIR:MBEDTLS_RSA_GEN_KEY_MIN_BITS:PSA_KEY_USAGE_SIGN_MESSAGE:PSA_ALG_RSA_PKCS1V15_SIGN_RAW:PSA_KEY_USAGE_SIGN_MESSAGE:0:1:PSA_KEY_USAGE_SIGN_MESSAGE
|
||||||
|
|
||||||
|
PSA attributes for pk: opaque RSA pair, SIGN|VERIFY & SIGN_MESSAGE
|
||||||
|
depends_on:PSA_WANT_KEY_TYPE_RSA_KEY_PAIR_GENERATE
|
||||||
|
pk_get_psa_attributes_opaque:PSA_KEY_TYPE_RSA_KEY_PAIR:MBEDTLS_RSA_GEN_KEY_MIN_BITS:PSA_KEY_USAGE_SIGN_MESSAGE | PSA_KEY_USAGE_VERIFY_MESSAGE:PSA_ALG_RSA_PKCS1V15_SIGN_RAW:PSA_KEY_USAGE_SIGN_MESSAGE:0:1:PSA_KEY_USAGE_SIGN_MESSAGE | PSA_KEY_USAGE_VERIFY_MESSAGE
|
||||||
|
|
||||||
|
PSA attributes for pk: opaque RSA pair, SIGN|DECRYPT & SIGN_MESSAGE
|
||||||
|
depends_on:PSA_WANT_KEY_TYPE_RSA_KEY_PAIR_GENERATE
|
||||||
|
pk_get_psa_attributes_opaque:PSA_KEY_TYPE_RSA_KEY_PAIR:MBEDTLS_RSA_GEN_KEY_MIN_BITS:PSA_KEY_USAGE_SIGN_MESSAGE | PSA_KEY_USAGE_DECRYPT:PSA_ALG_RSA_PKCS1V15_SIGN_RAW:PSA_KEY_USAGE_SIGN_MESSAGE:0:1:PSA_KEY_USAGE_SIGN_MESSAGE | PSA_KEY_USAGE_DECRYPT
|
||||||
|
|
||||||
|
PSA attributes for pk: opaque RSA pair, SIGN|... & SIGN_MESSAGE
|
||||||
|
depends_on:PSA_WANT_KEY_TYPE_RSA_KEY_PAIR_GENERATE
|
||||||
|
pk_get_psa_attributes_opaque:PSA_KEY_TYPE_RSA_KEY_PAIR:MBEDTLS_RSA_GEN_KEY_MIN_BITS:PSA_KEY_USAGE_SIGN_MESSAGE | PSA_KEY_USAGE_VERIFY_MESSAGE | PSA_KEY_USAGE_EXPORT | PSA_KEY_USAGE_COPY | PSA_KEY_USAGE_DECRYPT | PSA_KEY_USAGE_ENCRYPT:PSA_ALG_RSA_PKCS1V15_SIGN_RAW:PSA_KEY_USAGE_SIGN_MESSAGE:0:1:PSA_KEY_USAGE_SIGN_MESSAGE | PSA_KEY_USAGE_VERIFY_MESSAGE | PSA_KEY_USAGE_EXPORT | PSA_KEY_USAGE_COPY | PSA_KEY_USAGE_DECRYPT | PSA_KEY_USAGE_ENCRYPT
|
||||||
|
|
||||||
|
# For a PK_OPAQUE key, mbedtls_pk_get_psa_attributes() ignores the input
|
||||||
|
# key's algorithm policy. Just this time, test with a few different algorithms.
|
||||||
|
PSA attributes for pk: opaque RSA pair, 0 & SIGN_HASH [0]
|
||||||
|
depends_on:PSA_WANT_KEY_TYPE_RSA_KEY_PAIR_GENERATE
|
||||||
|
pk_get_psa_attributes_opaque:PSA_KEY_TYPE_RSA_KEY_PAIR:MBEDTLS_RSA_GEN_KEY_MIN_BITS:0:PSA_ALG_NONE:PSA_KEY_USAGE_SIGN_HASH:0:1:0
|
||||||
|
|
||||||
|
PSA attributes for pk: opaque RSA pair, 0 & SIGN_HASH [raw]
|
||||||
|
depends_on:PSA_WANT_KEY_TYPE_RSA_KEY_PAIR_GENERATE
|
||||||
|
pk_get_psa_attributes_opaque:PSA_KEY_TYPE_RSA_KEY_PAIR:MBEDTLS_RSA_GEN_KEY_MIN_BITS:0:PSA_ALG_RSA_PKCS1V15_SIGN_RAW:PSA_KEY_USAGE_SIGN_HASH:0:1:0
|
||||||
|
|
||||||
|
PSA attributes for pk: opaque RSA pair, 0 & SIGN_HASH [v15]
|
||||||
|
depends_on:PSA_WANT_KEY_TYPE_RSA_KEY_PAIR_GENERATE
|
||||||
|
pk_get_psa_attributes_opaque:PSA_KEY_TYPE_RSA_KEY_PAIR:MBEDTLS_RSA_GEN_KEY_MIN_BITS:0:PSA_ALG_RSA_PKCS1V15_SIGN_RAW:PSA_KEY_USAGE_SIGN_HASH:0:1:0
|
||||||
|
|
||||||
|
PSA attributes for pk: opaque RSA pair, 0 & SIGN_HASH [PSS]
|
||||||
|
depends_on:PSA_WANT_KEY_TYPE_RSA_KEY_PAIR_GENERATE
|
||||||
|
pk_get_psa_attributes_opaque:PSA_KEY_TYPE_RSA_KEY_PAIR:MBEDTLS_RSA_GEN_KEY_MIN_BITS:0:PSA_ALG_RSA_PSS_ANY_SALT(PSA_ALG_SHA_256):PSA_KEY_USAGE_SIGN_HASH:0:1:0
|
||||||
|
|
||||||
|
PSA attributes for pk: opaque RSA pair, DECRYPT & DECRYPT
|
||||||
|
depends_on:PSA_WANT_KEY_TYPE_RSA_KEY_PAIR_GENERATE
|
||||||
|
pk_get_psa_attributes_opaque:PSA_KEY_TYPE_RSA_KEY_PAIR:MBEDTLS_RSA_GEN_KEY_MIN_BITS:PSA_KEY_USAGE_DECRYPT:PSA_ALG_RSA_PKCS1V15_CRYPT:PSA_KEY_USAGE_DECRYPT:0:1:PSA_KEY_USAGE_DECRYPT
|
||||||
|
|
||||||
|
PSA attributes for pk: opaque RSA pair, DECRYPT|... & DECRYPT
|
||||||
|
depends_on:PSA_WANT_KEY_TYPE_RSA_KEY_PAIR_GENERATE
|
||||||
|
pk_get_psa_attributes_opaque:PSA_KEY_TYPE_RSA_KEY_PAIR:MBEDTLS_RSA_GEN_KEY_MIN_BITS:PSA_KEY_USAGE_SIGN_MESSAGE | PSA_KEY_USAGE_VERIFY_MESSAGE | PSA_KEY_USAGE_EXPORT | PSA_KEY_USAGE_COPY | PSA_KEY_USAGE_DECRYPT | PSA_KEY_USAGE_ENCRYPT:PSA_ALG_RSA_PKCS1V15_CRYPT:PSA_KEY_USAGE_DECRYPT:0:1:PSA_KEY_USAGE_SIGN_MESSAGE | PSA_KEY_USAGE_VERIFY_MESSAGE | PSA_KEY_USAGE_EXPORT | PSA_KEY_USAGE_COPY | PSA_KEY_USAGE_DECRYPT | PSA_KEY_USAGE_ENCRYPT
|
||||||
|
|
||||||
|
PSA attributes for pk: opaque RSA pair, ... & DERIVE (bad)
|
||||||
|
depends_on:PSA_WANT_KEY_TYPE_RSA_KEY_PAIR_GENERATE
|
||||||
|
pk_get_psa_attributes_opaque:PSA_KEY_TYPE_RSA_KEY_PAIR:MBEDTLS_RSA_GEN_KEY_MIN_BITS:PSA_KEY_USAGE_SIGN_MESSAGE | PSA_KEY_USAGE_VERIFY_MESSAGE | PSA_KEY_USAGE_EXPORT | PSA_KEY_USAGE_COPY | PSA_KEY_USAGE_DECRYPT | PSA_KEY_USAGE_ENCRYPT:PSA_ALG_RSA_PKCS1V15_CRYPT:PSA_KEY_USAGE_DERIVE:MBEDTLS_ERR_PK_TYPE_MISMATCH:1:0
|
||||||
|
|
||||||
|
PSA attributes for pk: opaque RSA pair, ... & EXPORT (bad)
|
||||||
|
depends_on:PSA_WANT_KEY_TYPE_RSA_KEY_PAIR_GENERATE
|
||||||
|
pk_get_psa_attributes_opaque:PSA_KEY_TYPE_RSA_KEY_PAIR:MBEDTLS_RSA_GEN_KEY_MIN_BITS:PSA_KEY_USAGE_SIGN_MESSAGE | PSA_KEY_USAGE_VERIFY_MESSAGE | PSA_KEY_USAGE_EXPORT | PSA_KEY_USAGE_COPY | PSA_KEY_USAGE_DECRYPT | PSA_KEY_USAGE_ENCRYPT:PSA_ALG_RSA_PKCS1V15_CRYPT:PSA_KEY_USAGE_EXPORT:MBEDTLS_ERR_PK_TYPE_MISMATCH:1:0
|
||||||
|
|
||||||
|
PSA attributes for pk: opaque RSA pair->public, 0 & VERIFY_MESSAGE
|
||||||
|
depends_on:PSA_WANT_KEY_TYPE_RSA_KEY_PAIR_GENERATE
|
||||||
|
pk_get_psa_attributes_opaque:PSA_KEY_TYPE_RSA_KEY_PAIR:MBEDTLS_RSA_GEN_KEY_MIN_BITS:0:PSA_ALG_RSA_PKCS1V15_SIGN_RAW:PSA_KEY_USAGE_VERIFY_MESSAGE:0:0:0
|
||||||
|
|
||||||
|
PSA attributes for pk: opaque RSA pair->public, 0 & VERIFY_HASH
|
||||||
|
depends_on:PSA_WANT_KEY_TYPE_RSA_KEY_PAIR_GENERATE
|
||||||
|
pk_get_psa_attributes_opaque:PSA_KEY_TYPE_RSA_KEY_PAIR:MBEDTLS_RSA_GEN_KEY_MIN_BITS:0:PSA_ALG_RSA_PKCS1V15_SIGN_RAW:PSA_KEY_USAGE_VERIFY_HASH:0:0:0
|
||||||
|
|
||||||
|
PSA attributes for pk: opaque RSA pair->public, 0 & ENCRYPT
|
||||||
|
depends_on:PSA_WANT_KEY_TYPE_RSA_KEY_PAIR_GENERATE
|
||||||
|
pk_get_psa_attributes_opaque:PSA_KEY_TYPE_RSA_KEY_PAIR:MBEDTLS_RSA_GEN_KEY_MIN_BITS:0:PSA_ALG_RSA_PKCS1V15_CRYPT:PSA_KEY_USAGE_ENCRYPT:0:0:0
|
||||||
|
|
||||||
|
PSA attributes for pk: opaque ECC pair, 0 & SIGN_MESSAGE
|
||||||
|
depends_on:PSA_WANT_KEY_TYPE_ECC_KEY_PAIR_GENERATE:PSA_WANT_ECC_FAMILY_SECP_R1_256
|
||||||
|
pk_get_psa_attributes_opaque:PSA_KEY_TYPE_ECC_KEY_PAIR(PSA_ECC_FAMILY_SECP_R1):256:0:PSA_ALG_ECDSA_ANY:PSA_KEY_USAGE_SIGN_MESSAGE:0:1:0
|
||||||
|
|
||||||
|
PSA attributes for pk: opaque ECC pair, SIGN_MESSAGE & SIGN_MESSAGE
|
||||||
|
depends_on:PSA_WANT_KEY_TYPE_ECC_KEY_PAIR_GENERATE:PSA_WANT_ECC_FAMILY_SECP_R1_256
|
||||||
|
pk_get_psa_attributes_opaque:PSA_KEY_TYPE_ECC_KEY_PAIR(PSA_ECC_FAMILY_SECP_R1):256:PSA_KEY_USAGE_SIGN_MESSAGE:PSA_ALG_ECDSA_ANY:PSA_KEY_USAGE_SIGN_MESSAGE:0:1:PSA_KEY_USAGE_SIGN_MESSAGE
|
||||||
|
|
||||||
|
PSA attributes for pk: opaque ECC pair, SIGN|VERIFY & SIGN_MESSAGE
|
||||||
|
depends_on:PSA_WANT_KEY_TYPE_ECC_KEY_PAIR_GENERATE:PSA_WANT_ECC_FAMILY_SECP_R1_256
|
||||||
|
pk_get_psa_attributes_opaque:PSA_KEY_TYPE_ECC_KEY_PAIR(PSA_ECC_FAMILY_SECP_R1):256:PSA_KEY_USAGE_SIGN_MESSAGE | PSA_KEY_USAGE_VERIFY_MESSAGE:PSA_ALG_ECDSA_ANY:PSA_KEY_USAGE_SIGN_MESSAGE:0:1:PSA_KEY_USAGE_SIGN_MESSAGE | PSA_KEY_USAGE_VERIFY_MESSAGE
|
||||||
|
|
||||||
|
PSA attributes for pk: opaque ECC pair, SIGN|DECRYPT & SIGN_MESSAGE
|
||||||
|
depends_on:PSA_WANT_KEY_TYPE_ECC_KEY_PAIR_GENERATE:PSA_WANT_ECC_FAMILY_SECP_R1_256
|
||||||
|
pk_get_psa_attributes_opaque:PSA_KEY_TYPE_ECC_KEY_PAIR(PSA_ECC_FAMILY_SECP_R1):256:PSA_KEY_USAGE_SIGN_MESSAGE | PSA_KEY_USAGE_DECRYPT:PSA_ALG_ECDSA_ANY:PSA_KEY_USAGE_SIGN_MESSAGE:0:1:PSA_KEY_USAGE_SIGN_MESSAGE | PSA_KEY_USAGE_DECRYPT
|
||||||
|
|
||||||
|
PSA attributes for pk: opaque ECC pair, SIGN|... & SIGN_MESSAGE
|
||||||
|
depends_on:PSA_WANT_KEY_TYPE_ECC_KEY_PAIR_GENERATE:PSA_WANT_ECC_FAMILY_SECP_R1_256
|
||||||
|
pk_get_psa_attributes_opaque:PSA_KEY_TYPE_ECC_KEY_PAIR(PSA_ECC_FAMILY_SECP_R1):256:PSA_KEY_USAGE_SIGN_MESSAGE | PSA_KEY_USAGE_VERIFY_MESSAGE | PSA_KEY_USAGE_EXPORT | PSA_KEY_USAGE_COPY | PSA_KEY_USAGE_DECRYPT | PSA_KEY_USAGE_ENCRYPT:PSA_ALG_ECDSA_ANY:PSA_KEY_USAGE_SIGN_MESSAGE:0:1:PSA_KEY_USAGE_SIGN_MESSAGE | PSA_KEY_USAGE_VERIFY_MESSAGE | PSA_KEY_USAGE_EXPORT | PSA_KEY_USAGE_COPY | PSA_KEY_USAGE_DECRYPT | PSA_KEY_USAGE_ENCRYPT
|
||||||
|
|
||||||
|
PSA attributes for pk: opaque ECC pair, 0 & SIGN_HASH
|
||||||
|
depends_on:PSA_WANT_KEY_TYPE_ECC_KEY_PAIR_GENERATE:PSA_WANT_ECC_FAMILY_SECP_R1_256
|
||||||
|
pk_get_psa_attributes_opaque:PSA_KEY_TYPE_ECC_KEY_PAIR(PSA_ECC_FAMILY_SECP_R1):256:0:PSA_ALG_ECDSA_ANY:PSA_KEY_USAGE_SIGN_HASH:0:1:0
|
||||||
|
|
||||||
|
PSA attributes for pk: opaque ECC pair, ... & DERIVE
|
||||||
|
depends_on:PSA_WANT_KEY_TYPE_ECC_KEY_PAIR_GENERATE:PSA_WANT_ECC_FAMILY_SECP_R1_256
|
||||||
|
pk_get_psa_attributes_opaque:PSA_KEY_TYPE_ECC_KEY_PAIR(PSA_ECC_FAMILY_SECP_R1):256:PSA_KEY_USAGE_SIGN_MESSAGE | PSA_KEY_USAGE_VERIFY_MESSAGE | PSA_KEY_USAGE_EXPORT | PSA_KEY_USAGE_COPY | PSA_KEY_USAGE_DECRYPT | PSA_KEY_USAGE_ENCRYPT | PSA_KEY_USAGE_DERIVE:PSA_ALG_ECDH:PSA_KEY_USAGE_DERIVE:0:1:PSA_KEY_USAGE_SIGN_MESSAGE | PSA_KEY_USAGE_VERIFY_MESSAGE | PSA_KEY_USAGE_EXPORT | PSA_KEY_USAGE_COPY | PSA_KEY_USAGE_DECRYPT | PSA_KEY_USAGE_ENCRYPT | PSA_KEY_USAGE_DERIVE
|
||||||
|
|
||||||
|
PSA attributes for pk: opaque ECC pair, ... & DECRYPT (bad)
|
||||||
|
depends_on:PSA_WANT_KEY_TYPE_ECC_KEY_PAIR_GENERATE:PSA_WANT_ECC_FAMILY_SECP_R1_256
|
||||||
|
pk_get_psa_attributes_opaque:PSA_KEY_TYPE_ECC_KEY_PAIR(PSA_ECC_FAMILY_SECP_R1):256:PSA_KEY_USAGE_SIGN_MESSAGE | PSA_KEY_USAGE_VERIFY_MESSAGE | PSA_KEY_USAGE_EXPORT | PSA_KEY_USAGE_COPY | PSA_KEY_USAGE_DECRYPT | PSA_KEY_USAGE_ENCRYPT | PSA_KEY_USAGE_DERIVE:PSA_ALG_ECDH:PSA_KEY_USAGE_DECRYPT:MBEDTLS_ERR_PK_TYPE_MISMATCH:1:0
|
||||||
|
|
||||||
|
PSA attributes for pk: opaque ECC pair, ... & EXPORT (bad)
|
||||||
|
depends_on:PSA_WANT_KEY_TYPE_ECC_KEY_PAIR_GENERATE:PSA_WANT_ECC_FAMILY_SECP_R1_256
|
||||||
|
pk_get_psa_attributes_opaque:PSA_KEY_TYPE_ECC_KEY_PAIR(PSA_ECC_FAMILY_SECP_R1):256:PSA_KEY_USAGE_SIGN_MESSAGE | PSA_KEY_USAGE_VERIFY_MESSAGE | PSA_KEY_USAGE_EXPORT | PSA_KEY_USAGE_COPY | PSA_KEY_USAGE_DECRYPT | PSA_KEY_USAGE_ENCRYPT:PSA_ALG_ECDH:PSA_KEY_USAGE_EXPORT:MBEDTLS_ERR_PK_TYPE_MISMATCH:1:0
|
||||||
|
|
||||||
|
PSA attributes for pk: opaque ECC pair->public, 0 & VERIFY_MESSAGE
|
||||||
|
depends_on:PSA_WANT_KEY_TYPE_ECC_KEY_PAIR_GENERATE:PSA_WANT_ECC_FAMILY_SECP_R1_256
|
||||||
|
pk_get_psa_attributes_opaque:PSA_KEY_TYPE_ECC_KEY_PAIR(PSA_ECC_FAMILY_SECP_R1):256:0:PSA_ALG_ECDSA_ANY:PSA_KEY_USAGE_VERIFY_MESSAGE:0:0:0
|
||||||
|
|
||||||
|
PSA attributes for pk: opaque ECC pair->public, 0 & VERIFY_HASH
|
||||||
|
depends_on:PSA_WANT_KEY_TYPE_ECC_KEY_PAIR_GENERATE:PSA_WANT_ECC_FAMILY_SECP_R1_256
|
||||||
|
pk_get_psa_attributes_opaque:PSA_KEY_TYPE_ECC_KEY_PAIR(PSA_ECC_FAMILY_SECP_R1):256:0:PSA_ALG_ECDSA_ANY:PSA_KEY_USAGE_VERIFY_HASH:0:0:0
|
||||||
|
|
||||||
|
PSA attributes for pk: opaque ECC pair->public, 0 & ENCRYPT (bad)
|
||||||
|
depends_on:PSA_WANT_KEY_TYPE_ECC_KEY_PAIR_GENERATE:PSA_WANT_ECC_FAMILY_SECP_R1_256
|
||||||
|
pk_get_psa_attributes_opaque:PSA_KEY_TYPE_ECC_KEY_PAIR(PSA_ECC_FAMILY_SECP_R1):256:0:PSA_ALG_ECDSA_ANY:PSA_KEY_USAGE_ENCRYPT:MBEDTLS_ERR_PK_TYPE_MISMATCH:0:0
|
||||||
|
@ -1808,3 +1808,57 @@ exit:
|
|||||||
MD_OR_USE_PSA_DONE();
|
MD_OR_USE_PSA_DONE();
|
||||||
}
|
}
|
||||||
/* END_CASE */
|
/* END_CASE */
|
||||||
|
|
||||||
|
/* BEGIN_CASE depends_on:MBEDTLS_USE_PSA_CRYPTO */
|
||||||
|
void pk_get_psa_attributes_opaque(int o_type_arg, int o_bits_arg,
|
||||||
|
int o_usage_arg, int o_alg_arg,
|
||||||
|
int usage_arg,
|
||||||
|
int expected_ret,
|
||||||
|
int to_pair, int expected_usage_arg)
|
||||||
|
{
|
||||||
|
mbedtls_pk_context pk;
|
||||||
|
mbedtls_pk_init(&pk);
|
||||||
|
psa_key_attributes_t attributes = PSA_KEY_ATTRIBUTES_INIT;
|
||||||
|
mbedtls_svc_key_id_t key_id = MBEDTLS_SVC_KEY_ID_INIT;
|
||||||
|
psa_key_type_t o_type = o_type_arg;
|
||||||
|
size_t bits = o_bits_arg;
|
||||||
|
psa_key_usage_t o_usage = o_usage_arg;
|
||||||
|
psa_algorithm_t alg = o_alg_arg;
|
||||||
|
psa_key_usage_t usage = usage_arg;
|
||||||
|
psa_key_usage_t expected_usage = expected_usage_arg;
|
||||||
|
|
||||||
|
USE_PSA_INIT();
|
||||||
|
|
||||||
|
psa_set_key_type(&attributes, o_type);
|
||||||
|
psa_set_key_bits(&attributes, bits);
|
||||||
|
psa_set_key_usage_flags(&attributes, o_usage);
|
||||||
|
psa_set_key_algorithm(&attributes, alg);
|
||||||
|
psa_set_key_enrollment_algorithm(&attributes, 42);
|
||||||
|
//TODO: test with persistent key
|
||||||
|
PSA_ASSERT(psa_generate_key(&attributes, &key_id));
|
||||||
|
TEST_EQUAL(mbedtls_pk_setup_opaque(&pk, key_id), 0);
|
||||||
|
|
||||||
|
psa_key_type_t expected_psa_type =
|
||||||
|
to_pair ? o_type : PSA_KEY_TYPE_PUBLIC_KEY_OF_KEY_PAIR(o_type);
|
||||||
|
|
||||||
|
TEST_EQUAL(mbedtls_pk_get_psa_attributes(&pk, usage, &attributes),
|
||||||
|
expected_ret);
|
||||||
|
|
||||||
|
if (expected_ret == 0) {
|
||||||
|
TEST_EQUAL(psa_get_key_lifetime(&attributes), PSA_KEY_LIFETIME_VOLATILE);
|
||||||
|
TEST_ASSERT(mbedtls_svc_key_id_equal(psa_get_key_id(&attributes),
|
||||||
|
MBEDTLS_SVC_KEY_ID_INIT));
|
||||||
|
TEST_EQUAL(psa_get_key_type(&attributes), expected_psa_type);
|
||||||
|
TEST_EQUAL(psa_get_key_bits(&attributes), bits);
|
||||||
|
TEST_EQUAL(psa_get_key_usage_flags(&attributes), expected_usage);
|
||||||
|
TEST_EQUAL(psa_get_key_algorithm(&attributes), alg);
|
||||||
|
TEST_EQUAL(psa_get_key_enrollment_algorithm(&attributes), PSA_ALG_NONE);
|
||||||
|
}
|
||||||
|
|
||||||
|
exit:
|
||||||
|
mbedtls_pk_free(&pk);
|
||||||
|
psa_destroy_key(key_id);
|
||||||
|
psa_reset_key_attributes(&attributes);
|
||||||
|
USE_PSA_DONE();
|
||||||
|
}
|
||||||
|
/* END_CASE */
|
||||||
|
Loading…
x
Reference in New Issue
Block a user