Merge pull request #5139 from mprse/key_der_ecc
PSA: implement key derivation for ECC keys
This commit is contained in:
commit
c11bffe989
7 changed files with 555 additions and 18 deletions
3
ChangeLog.d/psa_crypto_key_derivation_for_ECC_keys.txt
Normal file
3
ChangeLog.d/psa_crypto_key_derivation_for_ECC_keys.txt
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
Features
|
||||||
|
* Add support for psa crypto key derivation for elliptic curve
|
||||||
|
keys. Fixes #3260.
|
|
@ -553,6 +553,9 @@
|
||||||
((type) & PSA_KEY_TYPE_ECC_CURVE_MASK) : \
|
((type) & PSA_KEY_TYPE_ECC_CURVE_MASK) : \
|
||||||
0))
|
0))
|
||||||
|
|
||||||
|
/** Check if the curve of given family is Weierstrass elliptic curve. */
|
||||||
|
#define PSA_ECC_FAMILY_IS_WEIERSTRASS(family) ((family & 0xc0) == 0)
|
||||||
|
|
||||||
/** SEC Koblitz curves over prime fields.
|
/** SEC Koblitz curves over prime fields.
|
||||||
*
|
*
|
||||||
* This family comprises the following curves:
|
* This family comprises the following curves:
|
||||||
|
|
|
@ -785,6 +785,9 @@ static void mpi_bigendian_to_host( mbedtls_mpi_uint * const p, size_t limbs )
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Import X from unsigned binary data, little endian
|
* Import X from unsigned binary data, little endian
|
||||||
|
*
|
||||||
|
* This function is guaranteed to return an MPI with exactly the necessary
|
||||||
|
* number of limbs (in particular, it does not skip 0s in the input).
|
||||||
*/
|
*/
|
||||||
int mbedtls_mpi_read_binary_le( mbedtls_mpi *X,
|
int mbedtls_mpi_read_binary_le( mbedtls_mpi *X,
|
||||||
const unsigned char *buf, size_t buflen )
|
const unsigned char *buf, size_t buflen )
|
||||||
|
@ -811,6 +814,9 @@ cleanup:
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Import X from unsigned binary data, big endian
|
* Import X from unsigned binary data, big endian
|
||||||
|
*
|
||||||
|
* This function is guaranteed to return an MPI with exactly the necessary
|
||||||
|
* number of limbs (in particular, it does not skip 0s in the input).
|
||||||
*/
|
*/
|
||||||
int mbedtls_mpi_read_binary( mbedtls_mpi *X, const unsigned char *buf, size_t buflen )
|
int mbedtls_mpi_read_binary( mbedtls_mpi *X, const unsigned char *buf, size_t buflen )
|
||||||
{
|
{
|
||||||
|
|
|
@ -27,6 +27,7 @@
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include "psa/crypto.h"
|
#include "psa/crypto.h"
|
||||||
|
#include "psa/crypto_values.h"
|
||||||
|
|
||||||
#include "psa_crypto_cipher.h"
|
#include "psa_crypto_cipher.h"
|
||||||
#include "psa_crypto_core.h"
|
#include "psa_crypto_core.h"
|
||||||
|
@ -4680,6 +4681,204 @@ static void psa_des_set_key_parity( uint8_t *data, size_t data_size )
|
||||||
}
|
}
|
||||||
#endif /* MBEDTLS_PSA_BUILTIN_KEY_TYPE_DES */
|
#endif /* MBEDTLS_PSA_BUILTIN_KEY_TYPE_DES */
|
||||||
|
|
||||||
|
/*
|
||||||
|
* ECC keys on a Weierstrass elliptic curve require the generation
|
||||||
|
* of a private key which is an integer
|
||||||
|
* in the range [1, N - 1], where N is the boundary of the private key domain:
|
||||||
|
* N is the prime p for Diffie-Hellman, or the order of the
|
||||||
|
* curve’s base point for ECC.
|
||||||
|
*
|
||||||
|
* Let m be the bit size of N, such that 2^m > N >= 2^(m-1).
|
||||||
|
* This function generates the private key using the following process:
|
||||||
|
*
|
||||||
|
* 1. Draw a byte string of length ceiling(m/8) bytes.
|
||||||
|
* 2. If m is not a multiple of 8, set the most significant
|
||||||
|
* (8 * ceiling(m/8) - m) bits of the first byte in the string to zero.
|
||||||
|
* 3. Convert the string to integer k by decoding it as a big-endian byte string.
|
||||||
|
* 4. If k > N - 2, discard the result and return to step 1.
|
||||||
|
* 5. Output k + 1 as the private key.
|
||||||
|
*
|
||||||
|
* This method allows compliance to NIST standards, specifically the methods titled
|
||||||
|
* Key-Pair Generation by Testing Candidates in the following publications:
|
||||||
|
* - NIST Special Publication 800-56A: Recommendation for Pair-Wise Key-Establishment
|
||||||
|
* Schemes Using Discrete Logarithm Cryptography [SP800-56A] §5.6.1.1.4 for
|
||||||
|
* Diffie-Hellman keys.
|
||||||
|
*
|
||||||
|
* - [SP800-56A] §5.6.1.2.2 or FIPS Publication 186-4: Digital Signature
|
||||||
|
* Standard (DSS) [FIPS186-4] §B.4.2 for elliptic curve keys.
|
||||||
|
*
|
||||||
|
* Note: Function allocates memory for *data buffer, so given *data should be
|
||||||
|
* always NULL.
|
||||||
|
*/
|
||||||
|
#if defined(MBEDTLS_PSA_BUILTIN_KEY_TYPE_ECC_KEY_PAIR) || \
|
||||||
|
defined(MBEDTLS_PSA_BUILTIN_KEY_TYPE_ECC_PUBLIC_KEY) || \
|
||||||
|
defined(MBEDTLS_PSA_BUILTIN_ALG_ECDSA) || \
|
||||||
|
defined(MBEDTLS_PSA_BUILTIN_ALG_DETERMINISTIC_ECDSA) || \
|
||||||
|
defined(MBEDTLS_PSA_BUILTIN_ALG_ECDH)
|
||||||
|
static psa_status_t psa_generate_derived_ecc_key_weierstrass_helper(
|
||||||
|
psa_key_slot_t *slot,
|
||||||
|
size_t bits,
|
||||||
|
psa_key_derivation_operation_t *operation,
|
||||||
|
uint8_t **data
|
||||||
|
)
|
||||||
|
{
|
||||||
|
unsigned key_out_of_range = 1;
|
||||||
|
mbedtls_mpi k;
|
||||||
|
mbedtls_mpi diff_N_2;
|
||||||
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
|
psa_status_t status = PSA_ERROR_CORRUPTION_DETECTED;
|
||||||
|
|
||||||
|
mbedtls_mpi_init( &k );
|
||||||
|
mbedtls_mpi_init( &diff_N_2 );
|
||||||
|
|
||||||
|
psa_ecc_family_t curve = PSA_KEY_TYPE_ECC_GET_FAMILY(
|
||||||
|
slot->attr.type );
|
||||||
|
mbedtls_ecp_group_id grp_id =
|
||||||
|
mbedtls_ecc_group_of_psa( curve, bits, 0 );
|
||||||
|
|
||||||
|
if( grp_id == MBEDTLS_ECP_DP_NONE )
|
||||||
|
{
|
||||||
|
ret = MBEDTLS_ERR_ASN1_INVALID_DATA;
|
||||||
|
goto cleanup;
|
||||||
|
}
|
||||||
|
|
||||||
|
mbedtls_ecp_group ecp_group;
|
||||||
|
mbedtls_ecp_group_init( &ecp_group );
|
||||||
|
|
||||||
|
MBEDTLS_MPI_CHK( mbedtls_ecp_group_load( &ecp_group, grp_id ) );
|
||||||
|
|
||||||
|
/* N is the boundary of the private key domain (ecp_group.N). */
|
||||||
|
/* Let m be the bit size of N. */
|
||||||
|
size_t m = ecp_group.nbits;
|
||||||
|
|
||||||
|
size_t m_bytes = PSA_BITS_TO_BYTES( m );
|
||||||
|
|
||||||
|
/* Calculate N - 2 - it will be needed later. */
|
||||||
|
MBEDTLS_MPI_CHK( mbedtls_mpi_sub_int( &diff_N_2, &ecp_group.N, 2 ) );
|
||||||
|
|
||||||
|
/* Note: This function is always called with *data == NULL and it
|
||||||
|
* allocates memory for the data buffer. */
|
||||||
|
*data = mbedtls_calloc( 1, m_bytes );
|
||||||
|
if( *data == NULL )
|
||||||
|
{
|
||||||
|
ret = MBEDTLS_ERR_ASN1_ALLOC_FAILED;
|
||||||
|
goto cleanup;
|
||||||
|
}
|
||||||
|
|
||||||
|
while( key_out_of_range )
|
||||||
|
{
|
||||||
|
/* 1. Draw a byte string of length ceiling(m/8) bytes. */
|
||||||
|
if( ( status = psa_key_derivation_output_bytes( operation, *data, m_bytes ) ) != 0 )
|
||||||
|
goto cleanup;
|
||||||
|
|
||||||
|
/* 2. If m is not a multiple of 8 */
|
||||||
|
if( m % 8 != 0 )
|
||||||
|
{
|
||||||
|
/* Set the most significant
|
||||||
|
* (8 * ceiling(m/8) - m) bits of the first byte in
|
||||||
|
* the string to zero.
|
||||||
|
*/
|
||||||
|
uint8_t clear_bit_mask = ( 1 << ( m % 8 ) ) - 1;
|
||||||
|
(*data)[0] &= clear_bit_mask;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 3. Convert the string to integer k by decoding it as a
|
||||||
|
* big-endian byte string.
|
||||||
|
*/
|
||||||
|
MBEDTLS_MPI_CHK( mbedtls_mpi_read_binary( &k, *data, m_bytes ) );
|
||||||
|
|
||||||
|
/* 4. If k > N - 2, discard the result and return to step 1.
|
||||||
|
* Result of comparison is returned. When it indicates error
|
||||||
|
* then this fuction is called again.
|
||||||
|
*/
|
||||||
|
MBEDTLS_MPI_CHK( mbedtls_mpi_lt_mpi_ct( &diff_N_2, &k, &key_out_of_range ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 5. Output k + 1 as the private key. */
|
||||||
|
MBEDTLS_MPI_CHK( mbedtls_mpi_add_int( &k, &k, 1 ) );
|
||||||
|
MBEDTLS_MPI_CHK( mbedtls_mpi_write_binary( &k, *data, m_bytes ) );
|
||||||
|
cleanup:
|
||||||
|
if( ret != 0 )
|
||||||
|
status = mbedtls_to_psa_error( ret );
|
||||||
|
if( status != PSA_SUCCESS ) {
|
||||||
|
mbedtls_free( *data );
|
||||||
|
*data = NULL;
|
||||||
|
}
|
||||||
|
mbedtls_mpi_free( &k );
|
||||||
|
mbedtls_mpi_free( &diff_N_2 );
|
||||||
|
return( status );
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ECC keys on a Montgomery elliptic curve draws a byte string whose length
|
||||||
|
* is determined by the curve, and sets the mandatory bits accordingly. That is:
|
||||||
|
*
|
||||||
|
* - Curve25519 (PSA_ECC_FAMILY_MONTGOMERY, 255 bits):
|
||||||
|
* draw a 32-byte string and process it as specified in
|
||||||
|
* Elliptic Curves for Security [RFC7748] §5.
|
||||||
|
*
|
||||||
|
* - Curve448 (PSA_ECC_FAMILY_MONTGOMERY, 448 bits):
|
||||||
|
* draw a 56-byte string and process it as specified in [RFC7748] §5.
|
||||||
|
*
|
||||||
|
* Note: Function allocates memory for *data buffer, so given *data should be
|
||||||
|
* always NULL.
|
||||||
|
*/
|
||||||
|
|
||||||
|
static psa_status_t psa_generate_derived_ecc_key_montgomery_helper(
|
||||||
|
size_t bits,
|
||||||
|
psa_key_derivation_operation_t *operation,
|
||||||
|
uint8_t **data
|
||||||
|
)
|
||||||
|
{
|
||||||
|
size_t output_length;
|
||||||
|
psa_status_t status = PSA_ERROR_CORRUPTION_DETECTED;
|
||||||
|
|
||||||
|
switch( bits )
|
||||||
|
{
|
||||||
|
case 255:
|
||||||
|
output_length = 32;
|
||||||
|
break;
|
||||||
|
case 448:
|
||||||
|
output_length = 56;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
return( PSA_ERROR_INVALID_ARGUMENT );
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
*data = mbedtls_calloc( 1, output_length );
|
||||||
|
|
||||||
|
if( *data == NULL )
|
||||||
|
return( PSA_ERROR_INSUFFICIENT_MEMORY );
|
||||||
|
|
||||||
|
status = psa_key_derivation_output_bytes( operation, *data, output_length );
|
||||||
|
|
||||||
|
if( status != PSA_SUCCESS )
|
||||||
|
return status;
|
||||||
|
|
||||||
|
switch( bits )
|
||||||
|
{
|
||||||
|
case 255:
|
||||||
|
(*data)[0] &= 248;
|
||||||
|
(*data)[31] &= 127;
|
||||||
|
(*data)[31] |= 64;
|
||||||
|
break;
|
||||||
|
case 448:
|
||||||
|
(*data)[0] &= 252;
|
||||||
|
(*data)[55] |= 128;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
return( PSA_ERROR_CORRUPTION_DETECTED );
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
return status;
|
||||||
|
}
|
||||||
|
#endif /* defined(MBEDTLS_PSA_BUILTIN_KEY_TYPE_ECC_KEY_PAIR) ||
|
||||||
|
defined(MBEDTLS_PSA_BUILTIN_KEY_TYPE_ECC_PUBLIC_KEY) ||
|
||||||
|
defined(MBEDTLS_PSA_BUILTIN_ALG_ECDSA) ||
|
||||||
|
defined(MBEDTLS_PSA_BUILTIN_ALG_DETERMINISTIC_ECDSA) ||
|
||||||
|
defined(MBEDTLS_PSA_BUILTIN_ALG_ECDH) */
|
||||||
|
|
||||||
static psa_status_t psa_generate_derived_key_internal(
|
static psa_status_t psa_generate_derived_key_internal(
|
||||||
psa_key_slot_t *slot,
|
psa_key_slot_t *slot,
|
||||||
size_t bits,
|
size_t bits,
|
||||||
|
@ -4688,23 +4887,57 @@ static psa_status_t psa_generate_derived_key_internal(
|
||||||
uint8_t *data = NULL;
|
uint8_t *data = NULL;
|
||||||
size_t bytes = PSA_BITS_TO_BYTES( bits );
|
size_t bytes = PSA_BITS_TO_BYTES( bits );
|
||||||
size_t storage_size = bytes;
|
size_t storage_size = bytes;
|
||||||
psa_status_t status;
|
psa_status_t status = PSA_ERROR_CORRUPTION_DETECTED;
|
||||||
|
|
||||||
if( ! key_type_is_raw_bytes( slot->attr.type ) )
|
if( PSA_KEY_TYPE_IS_PUBLIC_KEY( slot->attr.type ) )
|
||||||
return( PSA_ERROR_INVALID_ARGUMENT );
|
return( PSA_ERROR_INVALID_ARGUMENT );
|
||||||
if( bits % 8 != 0 )
|
|
||||||
return( PSA_ERROR_INVALID_ARGUMENT );
|
|
||||||
data = mbedtls_calloc( 1, bytes );
|
|
||||||
if( data == NULL )
|
|
||||||
return( PSA_ERROR_INSUFFICIENT_MEMORY );
|
|
||||||
|
|
||||||
status = psa_key_derivation_output_bytes( operation, data, bytes );
|
#if defined(MBEDTLS_PSA_BUILTIN_KEY_TYPE_ECC_KEY_PAIR) || \
|
||||||
if( status != PSA_SUCCESS )
|
defined(MBEDTLS_PSA_BUILTIN_KEY_TYPE_ECC_PUBLIC_KEY) || \
|
||||||
goto exit;
|
defined(MBEDTLS_PSA_BUILTIN_ALG_ECDSA) || \
|
||||||
|
defined(MBEDTLS_PSA_BUILTIN_ALG_DETERMINISTIC_ECDSA) || \
|
||||||
|
defined(MBEDTLS_PSA_BUILTIN_ALG_ECDH)
|
||||||
|
if( PSA_KEY_TYPE_IS_ECC( slot->attr.type ) )
|
||||||
|
{
|
||||||
|
psa_ecc_family_t curve = PSA_KEY_TYPE_ECC_GET_FAMILY( slot->attr.type );
|
||||||
|
if( PSA_ECC_FAMILY_IS_WEIERSTRASS( curve ) )
|
||||||
|
{
|
||||||
|
/* Weierstrass elliptic curve */
|
||||||
|
status = psa_generate_derived_ecc_key_weierstrass_helper( slot, bits, operation, &data );
|
||||||
|
if( status != PSA_SUCCESS )
|
||||||
|
goto exit;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
/* Montgomery elliptic curve */
|
||||||
|
status = psa_generate_derived_ecc_key_montgomery_helper( bits, operation, &data );
|
||||||
|
if( status != PSA_SUCCESS )
|
||||||
|
goto exit;
|
||||||
|
}
|
||||||
|
} else
|
||||||
|
#endif /* defined(MBEDTLS_PSA_BUILTIN_KEY_TYPE_ECC_KEY_PAIR) ||
|
||||||
|
defined(MBEDTLS_PSA_BUILTIN_KEY_TYPE_ECC_PUBLIC_KEY) ||
|
||||||
|
defined(MBEDTLS_PSA_BUILTIN_ALG_ECDSA) ||
|
||||||
|
defined(MBEDTLS_PSA_BUILTIN_ALG_DETERMINISTIC_ECDSA) ||
|
||||||
|
defined(MBEDTLS_PSA_BUILTIN_ALG_ECDH) */
|
||||||
|
if( key_type_is_raw_bytes( slot->attr.type ) )
|
||||||
|
{
|
||||||
|
if( bits % 8 != 0 )
|
||||||
|
return( PSA_ERROR_INVALID_ARGUMENT );
|
||||||
|
data = mbedtls_calloc( 1, bytes );
|
||||||
|
if( data == NULL )
|
||||||
|
return( PSA_ERROR_INSUFFICIENT_MEMORY );
|
||||||
|
|
||||||
|
status = psa_key_derivation_output_bytes( operation, data, bytes );
|
||||||
|
if( status != PSA_SUCCESS )
|
||||||
|
goto exit;
|
||||||
#if defined(MBEDTLS_PSA_BUILTIN_KEY_TYPE_DES)
|
#if defined(MBEDTLS_PSA_BUILTIN_KEY_TYPE_DES)
|
||||||
if( slot->attr.type == PSA_KEY_TYPE_DES )
|
if( slot->attr.type == PSA_KEY_TYPE_DES )
|
||||||
psa_des_set_key_parity( data, bytes );
|
psa_des_set_key_parity( data, bytes );
|
||||||
#endif /* MBEDTLS_PSA_BUILTIN_KEY_TYPE_DES */
|
#endif /* defined(MBEDTLS_PSA_BUILTIN_KEY_TYPE_DES) */
|
||||||
|
}
|
||||||
|
else
|
||||||
|
return( PSA_ERROR_NOT_SUPPORTED );
|
||||||
|
|
||||||
slot->attr.bits = (psa_key_bits_t) bits;
|
slot->attr.bits = (psa_key_bits_t) bits;
|
||||||
psa_key_attributes_t attributes = {
|
psa_key_attributes_t attributes = {
|
||||||
|
|
|
@ -47,7 +47,7 @@ EXPECTED_FAILURES = {
|
||||||
#
|
#
|
||||||
# Web URL: https://github.com/bensze01/psa-arch-tests/tree/fixes-for-mbedtls-3
|
# Web URL: https://github.com/bensze01/psa-arch-tests/tree/fixes-for-mbedtls-3
|
||||||
PSA_ARCH_TESTS_REPO = 'https://github.com/bensze01/psa-arch-tests.git'
|
PSA_ARCH_TESTS_REPO = 'https://github.com/bensze01/psa-arch-tests.git'
|
||||||
PSA_ARCH_TESTS_REF = 'fix-pr-5272'
|
PSA_ARCH_TESTS_REF = 'fix-pr-5139-3'
|
||||||
|
|
||||||
#pylint: disable=too-many-branches,too-many-statements
|
#pylint: disable=too-many-branches,too-many-statements
|
||||||
def main():
|
def main():
|
||||||
|
|
|
@ -5285,6 +5285,14 @@ PSA key derivation: TLS 1.2 PRF SHA-256, exercise HKDF-SHA-256
|
||||||
depends_on:PSA_WANT_ALG_HKDF:PSA_WANT_ALG_SHA_256:PSA_WANT_ALG_TLS12_PRF
|
depends_on:PSA_WANT_ALG_HKDF:PSA_WANT_ALG_SHA_256:PSA_WANT_ALG_TLS12_PRF
|
||||||
derive_key_exercise:PSA_ALG_TLS12_PRF(PSA_ALG_SHA_256):"0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b":"000102030405060708090a0b0c":"f0f1f2f3f4f5f6f7f8f9":PSA_KEY_TYPE_DERIVE:400:PSA_KEY_USAGE_DERIVE:PSA_ALG_HKDF(PSA_ALG_SHA_256)
|
derive_key_exercise:PSA_ALG_TLS12_PRF(PSA_ALG_SHA_256):"0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b":"000102030405060708090a0b0c":"f0f1f2f3f4f5f6f7f8f9":PSA_KEY_TYPE_DERIVE:400:PSA_KEY_USAGE_DERIVE:PSA_ALG_HKDF(PSA_ALG_SHA_256)
|
||||||
|
|
||||||
|
PSA key derivation: HKDF-SHA-256 -> ECC secp256r1, exercise ECDSA
|
||||||
|
depends_on:PSA_WANT_ALG_ECDSA:PSA_WANT_ALG_HKDF:PSA_WANT_ALG_SHA_256:PSA_WANT_KEY_TYPE_ECC_KEY_PAIR:PSA_WANT_ECC_SECP_R1_256
|
||||||
|
derive_key_exercise:PSA_ALG_HKDF(PSA_ALG_SHA_256):"0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b":"000102030405060708090a0b0c":"f0f1f2f3f4f5f6f7f8f9":PSA_KEY_TYPE_ECC_KEY_PAIR(PSA_ECC_FAMILY_SECP_R1):256:PSA_KEY_USAGE_EXPORT | PSA_KEY_USAGE_SIGN_HASH | PSA_KEY_USAGE_VERIFY_HASH:PSA_ALG_ECDSA_ANY
|
||||||
|
|
||||||
|
PSA key derivation: HKDF-SHA-256 -> ECC curve25519, exercise ECDH
|
||||||
|
depends_on:PSA_WANT_ALG_ECDH:PSA_WANT_ALG_HKDF:PSA_WANT_ALG_SHA_256:PSA_WANT_KEY_TYPE_ECC_KEY_PAIR:PSA_WANT_ECC_MONTGOMERY_255
|
||||||
|
derive_key_exercise:PSA_ALG_HKDF(PSA_ALG_SHA_256):"0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b":"000102030405060708090a0b0c":"f0f1f2f3f4f5f6f7f8f9":PSA_KEY_TYPE_ECC_KEY_PAIR(PSA_ECC_FAMILY_MONTGOMERY):255:PSA_KEY_USAGE_EXPORT | PSA_KEY_USAGE_DERIVE:PSA_ALG_ECDH
|
||||||
|
|
||||||
PSA key derivation: HKDF SHA-256, derive key export, 16+32
|
PSA key derivation: HKDF SHA-256, derive key export, 16+32
|
||||||
depends_on:PSA_WANT_ALG_HKDF:PSA_WANT_ALG_SHA_256
|
depends_on:PSA_WANT_ALG_HKDF:PSA_WANT_ALG_SHA_256
|
||||||
derive_key_export:PSA_ALG_HKDF(PSA_ALG_SHA_256):"0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b":"000102030405060708090a0b0c":"f0f1f2f3f4f5f6f7f8f9":16:32
|
derive_key_export:PSA_ALG_HKDF(PSA_ALG_SHA_256):"0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b":"000102030405060708090a0b0c":"f0f1f2f3f4f5f6f7f8f9":16:32
|
||||||
|
@ -5301,23 +5309,248 @@ PSA key derivation: TLS 1.2 PRF SHA-256, derive key export, 1+41
|
||||||
depends_on:PSA_WANT_ALG_SHA_256:PSA_WANT_ALG_TLS12_PRF
|
depends_on:PSA_WANT_ALG_SHA_256:PSA_WANT_ALG_TLS12_PRF
|
||||||
derive_key_export:PSA_ALG_TLS12_PRF(PSA_ALG_SHA_256):"0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b":"000102030405060708090a0b0c":"f0f1f2f3f4f5f6f7f8f9":1:41
|
derive_key_export:PSA_ALG_TLS12_PRF(PSA_ALG_SHA_256):"0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b":"000102030405060708090a0b0c":"f0f1f2f3f4f5f6f7f8f9":1:41
|
||||||
|
|
||||||
|
PSA key derivation: HKDF-SHA-256 -> AES-128
|
||||||
|
depends_on:PSA_WANT_ALG_HKDF:PSA_WANT_ALG_SHA_256:PSA_WANT_KEY_TYPE_AES
|
||||||
|
derive_key_type:PSA_ALG_HKDF(PSA_ALG_SHA_256):"0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b":"000102030405060708090a0b0c":"f0f1f2f3f4f5f6f7f8f9":PSA_KEY_TYPE_AES:128:"3cb25f25faacd57a90434f64d0362f2a"
|
||||||
|
|
||||||
|
PSA key derivation: HKDF-SHA-256 -> AES-256
|
||||||
|
depends_on:PSA_WANT_ALG_HKDF:PSA_WANT_ALG_SHA_256:PSA_WANT_KEY_TYPE_AES
|
||||||
|
derive_key_type:PSA_ALG_HKDF(PSA_ALG_SHA_256):"0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b":"000102030405060708090a0b0c":"f0f1f2f3f4f5f6f7f8f9":PSA_KEY_TYPE_AES:256:"3cb25f25faacd57a90434f64d0362f2a2d2d0a90cf1a5a4c5db02d56ecc4c5bf"
|
||||||
|
|
||||||
|
PSA key derivation: HKDF-SHA-256 -> ECC secp256r1
|
||||||
|
depends_on:PSA_WANT_ALG_HKDF:PSA_WANT_ALG_SHA_256:PSA_WANT_KEY_TYPE_ECC_KEY_PAIR:PSA_WANT_ECC_SECP_R1_256
|
||||||
|
derive_key_type:PSA_ALG_HKDF(PSA_ALG_SHA_256):"0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b":"000102030405060708090a0b0c":"f0f1f2f3f4f5f6f7f8f9":PSA_KEY_TYPE_ECC_KEY_PAIR(PSA_ECC_FAMILY_SECP_R1):256:"3cb25f25faacd57a90434f64d0362f2a2d2d0a90cf1a5a4c5db02d56ecc4c5c0"
|
||||||
|
|
||||||
|
PSA key derivation: HKDF-SHA-256 -> ECC secp256r1 (1 redraw)
|
||||||
|
depends_on:PSA_WANT_ALG_HKDF:PSA_WANT_ALG_SHA_256:PSA_WANT_KEY_TYPE_ECC_KEY_PAIR:PSA_WANT_ECC_SECP_R1_256
|
||||||
|
derive_key_type:PSA_ALG_HKDF(PSA_ALG_SHA_256):"4869212049276d20612074657374206b65792120486f772061726520796f753f":"":"e1ab5d0000000000":PSA_KEY_TYPE_ECC_KEY_PAIR(PSA_ECC_FAMILY_SECP_R1):256:"46a5850b60ba10b0fd8e0feb8790e2819d46ea26fede564ff6dea94ef1945660"
|
||||||
|
|
||||||
|
PSA key derivation: HKDF-SHA-256 -> raw (same input as secp256r1+redraw)
|
||||||
|
depends_on:PSA_WANT_ALG_HKDF:PSA_WANT_ALG_SHA_256
|
||||||
|
derive_key_type:PSA_ALG_HKDF(PSA_ALG_SHA_256):"4869212049276d20612074657374206b65792120486f772061726520796f753f":"":"e1ab5d0000000000":PSA_KEY_TYPE_RAW_DATA:256:"ffffffff55f60cea989fe02543c81b28aff09b5b51fdc43f91fe5c2511b0b9d9"
|
||||||
|
|
||||||
|
PSA key derivation: HKDF-SHA-256 -> ECC secp384r1
|
||||||
|
depends_on:PSA_WANT_ALG_HKDF:PSA_WANT_ALG_SHA_256:PSA_WANT_KEY_TYPE_ECC_KEY_PAIR:PSA_WANT_ECC_SECP_R1_384
|
||||||
|
derive_key_type:PSA_ALG_HKDF(PSA_ALG_SHA_256):"0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b":"000102030405060708090a0b0c":"f0f1f2f3f4f5f6f7f8f9":PSA_KEY_TYPE_ECC_KEY_PAIR(PSA_ECC_FAMILY_SECP_R1):384:"3cb25f25faacd57a90434f64d0362f2a2d2d0a90cf1a5a4c5db02d56ecc4c5bf34007208d5b887185865b4b0a85a993c"
|
||||||
|
|
||||||
|
# For secp521r1, the leading byte of the representation of the private key can
|
||||||
|
# be either 0 or 1. Have one test case where it's 0 and one where it's 1.
|
||||||
|
PSA key derivation: HKDF-SHA-256 -> ECC secp521r1 #0
|
||||||
|
depends_on:PSA_WANT_ALG_HKDF:PSA_WANT_ALG_SHA_256:PSA_WANT_KEY_TYPE_ECC_KEY_PAIR:PSA_WANT_ECC_SECP_R1_521
|
||||||
|
derive_key_type:PSA_ALG_HKDF(PSA_ALG_SHA_256):"0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b":"000102030405060708090a0b0c":"f0f1f2f3f4f5f6f7f8f9":PSA_KEY_TYPE_ECC_KEY_PAIR(PSA_ECC_FAMILY_SECP_R1):521:"00b25f25faacd57a90434f64d0362f2a2d2d0a90cf1a5a4c5db02d56ecc4c5bf34007208d5b887185865b4b0a85a993b89b9b65683d60f0106d28fff039d0b6f3409"
|
||||||
|
|
||||||
|
PSA key derivation: HKDF-SHA-256 -> ECC secp521r1 #1
|
||||||
|
depends_on:PSA_WANT_ALG_HKDF:PSA_WANT_ALG_SHA_256:PSA_WANT_KEY_TYPE_ECC_KEY_PAIR:PSA_WANT_ECC_SECP_R1_521
|
||||||
|
derive_key_type:PSA_ALG_HKDF(PSA_ALG_SHA_256):"0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b":"000102030405060708090a0b0c":"f0f1f2f3f4f5f6f7f8fa":PSA_KEY_TYPE_ECC_KEY_PAIR(PSA_ECC_FAMILY_SECP_R1):521:"01122f37d10965c8455ecbd2bc73d5da5347d0ce772e54305d528295a64ffb7c567f5042e2d7e5803b407c08d1e110adcefc35564035d706582f723a2f76a32260da"
|
||||||
|
|
||||||
|
# For Curve25519, test a few different outputs to exercise masking (last byte of input_2 variation).
|
||||||
|
PSA key derivation: HKDF-SHA-256 -> ECC curve25519 #1
|
||||||
|
depends_on:PSA_WANT_ALG_HKDF:PSA_WANT_ALG_SHA_256:PSA_WANT_KEY_TYPE_ECC_KEY_PAIR:PSA_WANT_ECC_MONTGOMERY_255
|
||||||
|
derive_key_type:PSA_ALG_HKDF(PSA_ALG_SHA_256):"0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b":"000102030405060708090a0b0c":"f0f1f2f3f4f5f6f7f8f9":PSA_KEY_TYPE_ECC_KEY_PAIR(PSA_ECC_FAMILY_MONTGOMERY):255:"38b25f25faacd57a90434f64d0362f2a2d2d0a90cf1a5a4c5db02d56ecc4c57f"
|
||||||
|
|
||||||
|
PSA key derivation: HKDF-SHA-256 -> ECC curve25519 #2
|
||||||
|
depends_on:PSA_WANT_ALG_HKDF:PSA_WANT_ALG_SHA_256:PSA_WANT_KEY_TYPE_ECC_KEY_PAIR:PSA_WANT_ECC_MONTGOMERY_255
|
||||||
|
derive_key_type:PSA_ALG_HKDF(PSA_ALG_SHA_256):"0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b":"000102030405060708090a0b0c":"f0f1f2f3f4f5f6f7f8fa":PSA_KEY_TYPE_ECC_KEY_PAIR(PSA_ECC_FAMILY_MONTGOMERY):255:"b8122f37d10965c8455ecbd2bc73d5da5347d0ce772e54305d528295a64ffb7c"
|
||||||
|
|
||||||
|
PSA key derivation: HKDF-SHA-256 -> ECC curve25519 #3
|
||||||
|
depends_on:PSA_WANT_ALG_HKDF:PSA_WANT_ALG_SHA_256:PSA_WANT_KEY_TYPE_ECC_KEY_PAIR:PSA_WANT_ECC_MONTGOMERY_255
|
||||||
|
derive_key_type:PSA_ALG_HKDF(PSA_ALG_SHA_256):"0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b":"000102030405060708090a0b0c":"f0f1f2f3f4f5f6f7f8fb":PSA_KEY_TYPE_ECC_KEY_PAIR(PSA_ECC_FAMILY_MONTGOMERY):255:"e029d8a4f83cfad631f18dca6aa995f3fa69dd6488a39e8d92fe8de6ca88694f"
|
||||||
|
|
||||||
|
PSA key derivation: HKDF-SHA-256 -> ECC curve25519 #4
|
||||||
|
depends_on:PSA_WANT_ALG_HKDF:PSA_WANT_ALG_SHA_256:PSA_WANT_KEY_TYPE_ECC_KEY_PAIR:PSA_WANT_ECC_MONTGOMERY_255
|
||||||
|
derive_key_type:PSA_ALG_HKDF(PSA_ALG_SHA_256):"0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b":"000102030405060708090a0b0c":"f0f1f2f3f4f5f6f7f8fc":PSA_KEY_TYPE_ECC_KEY_PAIR(PSA_ECC_FAMILY_MONTGOMERY):255:"90958ef02dae8c97921a6e59eaa79f5445f76d0f4ab16cd97feba5e6586c264d"
|
||||||
|
|
||||||
|
PSA key derivation: HKDF-SHA-256 -> ECC curve25519 #5
|
||||||
|
depends_on:PSA_WANT_ALG_HKDF:PSA_WANT_ALG_SHA_256:PSA_WANT_KEY_TYPE_ECC_KEY_PAIR:PSA_WANT_ECC_MONTGOMERY_255
|
||||||
|
derive_key_type:PSA_ALG_HKDF(PSA_ALG_SHA_256):"0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b":"000102030405060708090a0b0c":"f0f1f2f3f4f5f6f7f8fd":PSA_KEY_TYPE_ECC_KEY_PAIR(PSA_ECC_FAMILY_MONTGOMERY):255:"c099f692a89df2e9008aebe07012b5e128c9cfc1243bd32b7043ab21912d985d"
|
||||||
|
|
||||||
|
PSA key derivation: HKDF-SHA-256 -> ECC curve25519 #6
|
||||||
|
depends_on:PSA_WANT_ALG_HKDF:PSA_WANT_ALG_SHA_256:PSA_WANT_KEY_TYPE_ECC_KEY_PAIR:PSA_WANT_ECC_MONTGOMERY_255
|
||||||
|
derive_key_type:PSA_ALG_HKDF(PSA_ALG_SHA_256):"0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b":"000102030405060708090a0b0c":"f0f1f2f3f4f5f6f7f8fe":PSA_KEY_TYPE_ECC_KEY_PAIR(PSA_ECC_FAMILY_MONTGOMERY):255:"d8929e4677193ca3b8b1035d93711ba917edac23c47fd45a403997361ec1475b"
|
||||||
|
|
||||||
|
PSA key derivation: HKDF-SHA-256 -> ECC curve25519 #7
|
||||||
|
depends_on:PSA_WANT_ALG_HKDF:PSA_WANT_ALG_SHA_256:PSA_WANT_KEY_TYPE_ECC_KEY_PAIR:PSA_WANT_ECC_MONTGOMERY_255
|
||||||
|
derive_key_type:PSA_ALG_HKDF(PSA_ALG_SHA_256):"0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b":"000102030405060708090a0b0c":"f0f1f2f3f4f5f6f7f8ff":PSA_KEY_TYPE_ECC_KEY_PAIR(PSA_ECC_FAMILY_MONTGOMERY):255:"c89d06c33cec5b3d08221a7228050e6919150a43592ae710162c97c0a2855b65"
|
||||||
|
|
||||||
|
# For Curve448, test a few different outputs to exercise masking (last byte of input_2 variation).
|
||||||
|
PSA key derivation: HKDF-SHA-256 -> ECC curve448 #1
|
||||||
|
depends_on:PSA_WANT_ALG_HKDF:PSA_WANT_ALG_SHA_256:PSA_WANT_KEY_TYPE_ECC_KEY_PAIR:PSA_WANT_ECC_MONTGOMERY_448
|
||||||
|
derive_key_type:PSA_ALG_HKDF(PSA_ALG_SHA_256):"0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b":"000102030405060708090a0b0c":"f0f1f2f3f4f5f6f7f8f9":PSA_KEY_TYPE_ECC_KEY_PAIR(PSA_ECC_FAMILY_MONTGOMERY):448:"3cb25f25faacd57a90434f64d0362f2a2d2d0a90cf1a5a4c5db02d56ecc4c5bf34007208d5b887185865b4b0a85a993b89b9b65683d60f81"
|
||||||
|
|
||||||
|
PSA key derivation: HKDF-SHA-256 -> ECC curve448 #2
|
||||||
|
depends_on:PSA_WANT_ALG_HKDF:PSA_WANT_ALG_SHA_256:PSA_WANT_KEY_TYPE_ECC_KEY_PAIR:PSA_WANT_ECC_MONTGOMERY_448
|
||||||
|
derive_key_type:PSA_ALG_HKDF(PSA_ALG_SHA_256):"0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b":"000102030405060708090a0b0c":"f0f1f2f3f4f5f6f7f8fa":PSA_KEY_TYPE_ECC_KEY_PAIR(PSA_ECC_FAMILY_MONTGOMERY):448:"bc122f37d10965c8455ecbd2bc73d5da5347d0ce772e54305d528295a64ffb7c567f5042e2d7e5803b407c08d1e110adcefc35564035d786"
|
||||||
|
|
||||||
|
PSA key derivation: HKDF-SHA-256 -> ECC curve448 #3
|
||||||
|
depends_on:PSA_WANT_ALG_HKDF:PSA_WANT_ALG_SHA_256:PSA_WANT_KEY_TYPE_ECC_KEY_PAIR:PSA_WANT_ECC_MONTGOMERY_448
|
||||||
|
derive_key_type:PSA_ALG_HKDF(PSA_ALG_SHA_256):"0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b":"000102030405060708090a0b0c":"f0f1f2f3f4f5f6f7f8fb":PSA_KEY_TYPE_ECC_KEY_PAIR(PSA_ECC_FAMILY_MONTGOMERY):448:"e429d8a4f83cfad631f18dca6aa995f3fa69dd6488a39e8d92fe8de6ca88694fedcdc273f4cefcb73478e8cbcc344c5d713b5eb26e89a9dd"
|
||||||
|
|
||||||
|
PSA key derivation: HKDF-SHA-256 -> ECC curve448 #4
|
||||||
|
depends_on:PSA_WANT_ALG_HKDF:PSA_WANT_ALG_SHA_256:PSA_WANT_KEY_TYPE_ECC_KEY_PAIR:PSA_WANT_ECC_MONTGOMERY_448
|
||||||
|
derive_key_type:PSA_ALG_HKDF(PSA_ALG_SHA_256):"0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b":"000102030405060708090a0b0c":"f0f1f2f3f4f5f6f7f8fc":PSA_KEY_TYPE_ECC_KEY_PAIR(PSA_ECC_FAMILY_MONTGOMERY):448:"90958ef02dae8c97921a6e59eaa79f5445f76d0f4ab16cd97feba5e6586c264dc114d7391112c6083b48ccc60d63c47642f5693898fe498c"
|
||||||
|
|
||||||
|
PSA key derivation: HKDF-SHA-256 -> ECC curve448 #5
|
||||||
|
depends_on:PSA_WANT_ALG_HKDF:PSA_WANT_ALG_SHA_256:PSA_WANT_KEY_TYPE_ECC_KEY_PAIR:PSA_WANT_ECC_MONTGOMERY_448
|
||||||
|
derive_key_type:PSA_ALG_HKDF(PSA_ALG_SHA_256):"0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b":"000102030405060708090a0b0c":"f0f1f2f3f4f5f6f7f8fd":PSA_KEY_TYPE_ECC_KEY_PAIR(PSA_ECC_FAMILY_MONTGOMERY):448:"c099f692a89df2e9008aebe07012b5e128c9cfc1243bd32b7043ab21912d98dd4f73c807b5cc60cbf3364e606ecaeccd3ce44ac46595959d"
|
||||||
|
|
||||||
|
PSA key derivation: HKDF-SHA-256 -> ECC curve448 #6
|
||||||
|
depends_on:PSA_WANT_ALG_HKDF:PSA_WANT_ALG_SHA_256:PSA_WANT_KEY_TYPE_ECC_KEY_PAIR:PSA_WANT_ECC_MONTGOMERY_448
|
||||||
|
derive_key_type:PSA_ALG_HKDF(PSA_ALG_SHA_256):"0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b":"000102030405060708090a0b0c":"f0f1f2f3f4f5f6f7f8fe":PSA_KEY_TYPE_ECC_KEY_PAIR(PSA_ECC_FAMILY_MONTGOMERY):448:"d8929e4677193ca3b8b1035d93711ba917edac23c47fd45a403997361ec1479b4eccf10bc9d1fa1a2e96b5c965a0045295516ab00665fc9b"
|
||||||
|
|
||||||
|
PSA key derivation: HKDF-SHA-256 -> ECC curve448 #7
|
||||||
|
depends_on:PSA_WANT_ALG_HKDF:PSA_WANT_ALG_SHA_256:PSA_WANT_KEY_TYPE_ECC_KEY_PAIR:PSA_WANT_ECC_MONTGOMERY_448
|
||||||
|
derive_key_type:PSA_ALG_HKDF(PSA_ALG_SHA_256):"0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b":"000102030405060708090a0b0c":"f0f1f2f3f4f5f6f7f8ff":PSA_KEY_TYPE_ECC_KEY_PAIR(PSA_ECC_FAMILY_MONTGOMERY):448:"cc9d06c33cec5b3d08221a7228050e6919150a43592ae710162c97c0a2855b25c373305784895a1c48ca511ee42fc50c3f67d419569007ea"
|
||||||
|
|
||||||
PSA key derivation: invalid type (0)
|
PSA key derivation: invalid type (0)
|
||||||
depends_on:PSA_WANT_ALG_HKDF:PSA_WANT_ALG_SHA_256
|
depends_on:PSA_WANT_ALG_HKDF:PSA_WANT_ALG_SHA_256
|
||||||
derive_key:PSA_ALG_HKDF(PSA_ALG_SHA_256):"0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b":"000102030405060708090a0b0c":"f0f1f2f3f4f5f6f7f8f9":PSA_KEY_TYPE_NONE:128:PSA_ERROR_INVALID_ARGUMENT:0
|
derive_key:PSA_ALG_HKDF(PSA_ALG_SHA_256):"0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b":"000102030405060708090a0b0c":"f0f1f2f3f4f5f6f7f8f9":PSA_KEY_TYPE_NONE:128:PSA_ERROR_NOT_SUPPORTED:0
|
||||||
|
|
||||||
PSA key derivation: invalid type (PSA_KEY_TYPE_CATEGORY_MASK)
|
PSA key derivation: invalid type (PSA_KEY_TYPE_CATEGORY_MASK)
|
||||||
depends_on:PSA_WANT_ALG_HKDF:PSA_WANT_ALG_SHA_256
|
depends_on:PSA_WANT_ALG_HKDF:PSA_WANT_ALG_SHA_256
|
||||||
derive_key:PSA_ALG_HKDF(PSA_ALG_SHA_256):"0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b":"000102030405060708090a0b0c":"f0f1f2f3f4f5f6f7f8f9":PSA_KEY_TYPE_CATEGORY_MASK:128:PSA_ERROR_INVALID_ARGUMENT:0
|
derive_key:PSA_ALG_HKDF(PSA_ALG_SHA_256):"0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b":"000102030405060708090a0b0c":"f0f1f2f3f4f5f6f7f8f9":PSA_KEY_TYPE_CATEGORY_MASK:128:PSA_ERROR_NOT_SUPPORTED:0
|
||||||
|
|
||||||
PSA key derivation: invalid length (0)
|
PSA key derivation: invalid type (PSA_KEY_TYPE_RSA_PUBLIC_KEY)
|
||||||
|
depends_on:PSA_WANT_ALG_HKDF:PSA_WANT_ALG_SHA_256
|
||||||
|
derive_key:PSA_ALG_HKDF(PSA_ALG_SHA_256):"0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b":"000102030405060708090a0b0c":"f0f1f2f3f4f5f6f7f8f9":PSA_KEY_TYPE_RSA_PUBLIC_KEY:128:PSA_ERROR_INVALID_ARGUMENT:0
|
||||||
|
|
||||||
|
PSA key derivation: invalid type (PSA_KEY_TYPE_RSA_KEY_PAIR)
|
||||||
|
depends_on:PSA_WANT_ALG_HKDF:PSA_WANT_ALG_SHA_256
|
||||||
|
derive_key:PSA_ALG_HKDF(PSA_ALG_SHA_256):"0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b":"000102030405060708090a0b0c":"f0f1f2f3f4f5f6f7f8f9":PSA_KEY_TYPE_RSA_KEY_PAIR:128:PSA_ERROR_NOT_SUPPORTED:0
|
||||||
|
|
||||||
|
PSA key derivation: invalid type (PSA_KEY_TYPE_ECC_PUBLIC_KEY)
|
||||||
|
depends_on:PSA_WANT_ALG_HKDF:PSA_WANT_ALG_SHA_256
|
||||||
|
derive_key:PSA_ALG_HKDF(PSA_ALG_SHA_256):"0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b":"000102030405060708090a0b0c":"f0f1f2f3f4f5f6f7f8ff":PSA_KEY_TYPE_ECC_PUBLIC_KEY(PSA_ECC_FAMILY_MONTGOMERY):448:PSA_ERROR_INVALID_ARGUMENT:0
|
||||||
|
|
||||||
|
PSA key derivation: invalid length PSA_KEY_TYPE_RAW_DATA (0)
|
||||||
depends_on:PSA_WANT_ALG_HKDF:PSA_WANT_ALG_SHA_256
|
depends_on:PSA_WANT_ALG_HKDF:PSA_WANT_ALG_SHA_256
|
||||||
# The spec allows either INVALID_ARGUMENT or NOT_SUPPORTED
|
# The spec allows either INVALID_ARGUMENT or NOT_SUPPORTED
|
||||||
derive_key:PSA_ALG_HKDF(PSA_ALG_SHA_256):"0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b":"000102030405060708090a0b0c":"f0f1f2f3f4f5f6f7f8f9":PSA_KEY_TYPE_RAW_DATA:0:PSA_ERROR_INVALID_ARGUMENT:0
|
derive_key:PSA_ALG_HKDF(PSA_ALG_SHA_256):"0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b":"000102030405060708090a0b0c":"f0f1f2f3f4f5f6f7f8f9":PSA_KEY_TYPE_RAW_DATA:0:PSA_ERROR_INVALID_ARGUMENT:0
|
||||||
|
|
||||||
PSA key derivation: invalid length (7 bits)
|
PSA key derivation: invalid length PSA_KEY_TYPE_RAW_DATA (7 bits)
|
||||||
depends_on:PSA_WANT_ALG_HKDF:PSA_WANT_ALG_SHA_256
|
depends_on:PSA_WANT_ALG_HKDF:PSA_WANT_ALG_SHA_256
|
||||||
derive_key:PSA_ALG_HKDF(PSA_ALG_SHA_256):"0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b":"000102030405060708090a0b0c":"f0f1f2f3f4f5f6f7f8f9":PSA_KEY_TYPE_RAW_DATA:7:PSA_ERROR_INVALID_ARGUMENT:0
|
derive_key:PSA_ALG_HKDF(PSA_ALG_SHA_256):"0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b":"000102030405060708090a0b0c":"f0f1f2f3f4f5f6f7f8f9":PSA_KEY_TYPE_RAW_DATA:7:PSA_ERROR_INVALID_ARGUMENT:0
|
||||||
|
|
||||||
|
PSA key derivation: bits=0 invalid for ECC SECP_R1
|
||||||
|
depends_on:PSA_WANT_ALG_HKDF:PSA_WANT_ALG_SHA_256
|
||||||
|
# The spec allows either INVALID_ARGUMENT or NOT_SUPPORTED
|
||||||
|
derive_key:PSA_ALG_HKDF(PSA_ALG_SHA_256):"0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b":"000102030405060708090a0b0c":"f0f1f2f3f4f5f6f7f8f9":PSA_KEY_TYPE_ECC_KEY_PAIR(PSA_ECC_FAMILY_SECP_R1):0:PSA_ERROR_INVALID_ARGUMENT:0
|
||||||
|
|
||||||
|
PSA key derivation: bits=7 invalid for ECC SECP_R1 (ECC enabled)
|
||||||
|
depends_on:PSA_WANT_ALG_HKDF:PSA_WANT_ALG_SHA_256:PSA_WANT_KEY_TYPE_ECC_KEY_PAIR
|
||||||
|
# The spec allows either INVALID_ARGUMENT or NOT_SUPPORTED
|
||||||
|
derive_key:PSA_ALG_HKDF(PSA_ALG_SHA_256):"0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b":"000102030405060708090a0b0c":"f0f1f2f3f4f5f6f7f8f9":PSA_KEY_TYPE_ECC_KEY_PAIR(PSA_ECC_FAMILY_SECP_R1):7:PSA_ERROR_INVALID_ARGUMENT:0
|
||||||
|
|
||||||
|
PSA key derivation: bits=7 invalid for ECC SECP_R1 (ECC disabled)
|
||||||
|
depends_on:PSA_WANT_ALG_HKDF:PSA_WANT_ALG_SHA_256:!PSA_WANT_KEY_TYPE_ECC_KEY_PAIR
|
||||||
|
# The spec allows either INVALID_ARGUMENT or NOT_SUPPORTED
|
||||||
|
derive_key:PSA_ALG_HKDF(PSA_ALG_SHA_256):"0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b":"000102030405060708090a0b0c":"f0f1f2f3f4f5f6f7f8f9":PSA_KEY_TYPE_ECC_KEY_PAIR(PSA_ECC_FAMILY_SECP_R1):7:PSA_ERROR_NOT_SUPPORTED:0
|
||||||
|
|
||||||
|
PSA key derivation: bits=0 invalid for ECC SECP_K1
|
||||||
|
depends_on:PSA_WANT_ALG_HKDF:PSA_WANT_ALG_SHA_256
|
||||||
|
# The spec allows either INVALID_ARGUMENT or NOT_SUPPORTED
|
||||||
|
derive_key:PSA_ALG_HKDF(PSA_ALG_SHA_256):"0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b":"000102030405060708090a0b0c":"f0f1f2f3f4f5f6f7f8f9":PSA_KEY_TYPE_ECC_KEY_PAIR(PSA_ECC_FAMILY_SECP_K1):0:PSA_ERROR_INVALID_ARGUMENT:0
|
||||||
|
|
||||||
|
PSA key derivation: bits=7 invalid for ECC SECP_K1 (ECC enabled)
|
||||||
|
depends_on:PSA_WANT_ALG_HKDF:PSA_WANT_ALG_SHA_256:PSA_WANT_KEY_TYPE_ECC_KEY_PAIR
|
||||||
|
# The spec allows either INVALID_ARGUMENT or NOT_SUPPORTED
|
||||||
|
derive_key:PSA_ALG_HKDF(PSA_ALG_SHA_256):"0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b":"000102030405060708090a0b0c":"f0f1f2f3f4f5f6f7f8f9":PSA_KEY_TYPE_ECC_KEY_PAIR(PSA_ECC_FAMILY_SECP_K1):7:PSA_ERROR_INVALID_ARGUMENT:0
|
||||||
|
|
||||||
|
PSA key derivation: bits=7 invalid for ECC SECP_K1 (ECC disabled)
|
||||||
|
depends_on:PSA_WANT_ALG_HKDF:PSA_WANT_ALG_SHA_256:!PSA_WANT_KEY_TYPE_ECC_KEY_PAIR
|
||||||
|
# The spec allows either INVALID_ARGUMENT or NOT_SUPPORTED
|
||||||
|
derive_key:PSA_ALG_HKDF(PSA_ALG_SHA_256):"0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b":"000102030405060708090a0b0c":"f0f1f2f3f4f5f6f7f8f9":PSA_KEY_TYPE_ECC_KEY_PAIR(PSA_ECC_FAMILY_SECP_K1):7:PSA_ERROR_NOT_SUPPORTED:0
|
||||||
|
|
||||||
|
PSA key derivation: bits=0 invalid for ECC SECP_R2
|
||||||
|
depends_on:PSA_WANT_ALG_HKDF:PSA_WANT_ALG_SHA_256
|
||||||
|
# The spec allows either INVALID_ARGUMENT or NOT_SUPPORTED
|
||||||
|
derive_key:PSA_ALG_HKDF(PSA_ALG_SHA_256):"0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b":"000102030405060708090a0b0c":"f0f1f2f3f4f5f6f7f8f9":PSA_KEY_TYPE_ECC_KEY_PAIR(PSA_ECC_FAMILY_SECP_R2):0:PSA_ERROR_INVALID_ARGUMENT:0
|
||||||
|
|
||||||
|
PSA key derivation: bits=7 invalid for ECC SECP_R2 (ECC enabled)
|
||||||
|
depends_on:PSA_WANT_ALG_HKDF:PSA_WANT_ALG_SHA_256:PSA_WANT_KEY_TYPE_ECC_KEY_PAIR
|
||||||
|
# The spec allows either INVALID_ARGUMENT or NOT_SUPPORTED
|
||||||
|
derive_key:PSA_ALG_HKDF(PSA_ALG_SHA_256):"0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b":"000102030405060708090a0b0c":"f0f1f2f3f4f5f6f7f8f9":PSA_KEY_TYPE_ECC_KEY_PAIR(PSA_ECC_FAMILY_SECP_R2):7:PSA_ERROR_INVALID_ARGUMENT:0
|
||||||
|
|
||||||
|
PSA key derivation: bits=7 invalid for ECC SECP_R2 (ECC disabled)
|
||||||
|
depends_on:PSA_WANT_ALG_HKDF:PSA_WANT_ALG_SHA_256:!PSA_WANT_KEY_TYPE_ECC_KEY_PAIR
|
||||||
|
# The spec allows either INVALID_ARGUMENT or NOT_SUPPORTED
|
||||||
|
derive_key:PSA_ALG_HKDF(PSA_ALG_SHA_256):"0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b":"000102030405060708090a0b0c":"f0f1f2f3f4f5f6f7f8f9":PSA_KEY_TYPE_ECC_KEY_PAIR(PSA_ECC_FAMILY_SECP_R2):7:PSA_ERROR_NOT_SUPPORTED:0
|
||||||
|
|
||||||
|
PSA key derivation: bits=0 invalid for ECC SECT_K1
|
||||||
|
depends_on:PSA_WANT_ALG_HKDF:PSA_WANT_ALG_SHA_256
|
||||||
|
# The spec allows either INVALID_ARGUMENT or NOT_SUPPORTED
|
||||||
|
derive_key:PSA_ALG_HKDF(PSA_ALG_SHA_256):"0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b":"000102030405060708090a0b0c":"f0f1f2f3f4f5f6f7f8f9":PSA_KEY_TYPE_ECC_KEY_PAIR(PSA_ECC_FAMILY_SECT_K1):0:PSA_ERROR_INVALID_ARGUMENT:0
|
||||||
|
|
||||||
|
PSA key derivation: bits=7 invalid for ECC SECT_K1 (ECC enabled)
|
||||||
|
depends_on:PSA_WANT_ALG_HKDF:PSA_WANT_ALG_SHA_256:PSA_WANT_KEY_TYPE_ECC_KEY_PAIR
|
||||||
|
# The spec allows either INVALID_ARGUMENT or NOT_SUPPORTED
|
||||||
|
derive_key:PSA_ALG_HKDF(PSA_ALG_SHA_256):"0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b":"000102030405060708090a0b0c":"f0f1f2f3f4f5f6f7f8f9":PSA_KEY_TYPE_ECC_KEY_PAIR(PSA_ECC_FAMILY_SECT_K1):7:PSA_ERROR_INVALID_ARGUMENT:0
|
||||||
|
|
||||||
|
PSA key derivation: bits=7 invalid for ECC SECT_K1 (ECC disabled)
|
||||||
|
depends_on:PSA_WANT_ALG_HKDF:PSA_WANT_ALG_SHA_256:!PSA_WANT_KEY_TYPE_ECC_KEY_PAIR
|
||||||
|
# The spec allows either INVALID_ARGUMENT or NOT_SUPPORTED
|
||||||
|
derive_key:PSA_ALG_HKDF(PSA_ALG_SHA_256):"0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b":"000102030405060708090a0b0c":"f0f1f2f3f4f5f6f7f8f9":PSA_KEY_TYPE_ECC_KEY_PAIR(PSA_ECC_FAMILY_SECT_K1):7:PSA_ERROR_NOT_SUPPORTED:0
|
||||||
|
|
||||||
|
PSA key derivation: bits=0 invalid for ECC SECT_R1
|
||||||
|
depends_on:PSA_WANT_ALG_HKDF:PSA_WANT_ALG_SHA_256
|
||||||
|
# The spec allows either INVALID_ARGUMENT or NOT_SUPPORTED
|
||||||
|
derive_key:PSA_ALG_HKDF(PSA_ALG_SHA_256):"0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b":"000102030405060708090a0b0c":"f0f1f2f3f4f5f6f7f8f9":PSA_KEY_TYPE_ECC_KEY_PAIR(PSA_ECC_FAMILY_SECT_R1):0:PSA_ERROR_INVALID_ARGUMENT:0
|
||||||
|
|
||||||
|
PSA key derivation: bits=7 invalid for ECC SECT_R1 (ECC enabled)
|
||||||
|
depends_on:PSA_WANT_ALG_HKDF:PSA_WANT_ALG_SHA_256:PSA_WANT_KEY_TYPE_ECC_KEY_PAIR
|
||||||
|
# The spec allows either INVALID_ARGUMENT or NOT_SUPPORTED
|
||||||
|
derive_key:PSA_ALG_HKDF(PSA_ALG_SHA_256):"0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b":"000102030405060708090a0b0c":"f0f1f2f3f4f5f6f7f8f9":PSA_KEY_TYPE_ECC_KEY_PAIR(PSA_ECC_FAMILY_SECT_R1):7:PSA_ERROR_INVALID_ARGUMENT:0
|
||||||
|
|
||||||
|
PSA key derivation: bits=7 invalid for ECC SECT_R1 (ECC disabled)
|
||||||
|
depends_on:PSA_WANT_ALG_HKDF:PSA_WANT_ALG_SHA_256:!PSA_WANT_KEY_TYPE_ECC_KEY_PAIR
|
||||||
|
# The spec allows either INVALID_ARGUMENT or NOT_SUPPORTED
|
||||||
|
derive_key:PSA_ALG_HKDF(PSA_ALG_SHA_256):"0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b":"000102030405060708090a0b0c":"f0f1f2f3f4f5f6f7f8f9":PSA_KEY_TYPE_ECC_KEY_PAIR(PSA_ECC_FAMILY_SECT_R1):7:PSA_ERROR_NOT_SUPPORTED:0
|
||||||
|
|
||||||
|
PSA key derivation: bits=0 invalid for ECC SECT_R2
|
||||||
|
depends_on:PSA_WANT_ALG_HKDF:PSA_WANT_ALG_SHA_256
|
||||||
|
# The spec allows either INVALID_ARGUMENT or NOT_SUPPORTED
|
||||||
|
derive_key:PSA_ALG_HKDF(PSA_ALG_SHA_256):"0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b":"000102030405060708090a0b0c":"f0f1f2f3f4f5f6f7f8f9":PSA_KEY_TYPE_ECC_KEY_PAIR(PSA_ECC_FAMILY_SECT_R2):0:PSA_ERROR_INVALID_ARGUMENT:0
|
||||||
|
|
||||||
|
PSA key derivation: bits=7 invalid for ECC SECT_R2 (ECC enabled)
|
||||||
|
depends_on:PSA_WANT_ALG_HKDF:PSA_WANT_ALG_SHA_256:PSA_WANT_KEY_TYPE_ECC_KEY_PAIR
|
||||||
|
# The spec allows either INVALID_ARGUMENT or NOT_SUPPORTED
|
||||||
|
derive_key:PSA_ALG_HKDF(PSA_ALG_SHA_256):"0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b":"000102030405060708090a0b0c":"f0f1f2f3f4f5f6f7f8f9":PSA_KEY_TYPE_ECC_KEY_PAIR(PSA_ECC_FAMILY_SECT_R2):7:PSA_ERROR_INVALID_ARGUMENT:0
|
||||||
|
|
||||||
|
PSA key derivation: bits=7 invalid for ECC SECT_R2 (ECC disabled)
|
||||||
|
depends_on:PSA_WANT_ALG_HKDF:PSA_WANT_ALG_SHA_256:!PSA_WANT_KEY_TYPE_ECC_KEY_PAIR
|
||||||
|
# The spec allows either INVALID_ARGUMENT or NOT_SUPPORTED
|
||||||
|
derive_key:PSA_ALG_HKDF(PSA_ALG_SHA_256):"0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b":"000102030405060708090a0b0c":"f0f1f2f3f4f5f6f7f8f9":PSA_KEY_TYPE_ECC_KEY_PAIR(PSA_ECC_FAMILY_SECT_R2):7:PSA_ERROR_NOT_SUPPORTED:0
|
||||||
|
|
||||||
|
PSA key derivation: bits=0 invalid for ECC BRAINPOOL_P_R1
|
||||||
|
depends_on:PSA_WANT_ALG_HKDF:PSA_WANT_ALG_SHA_256
|
||||||
|
# The spec allows either INVALID_ARGUMENT or NOT_SUPPORTED
|
||||||
|
derive_key:PSA_ALG_HKDF(PSA_ALG_SHA_256):"0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b":"000102030405060708090a0b0c":"f0f1f2f3f4f5f6f7f8f9":PSA_KEY_TYPE_ECC_KEY_PAIR(PSA_ECC_FAMILY_BRAINPOOL_P_R1):0:PSA_ERROR_INVALID_ARGUMENT:0
|
||||||
|
|
||||||
|
PSA key derivation: bits=7 invalid for ECC BRAINPOOL_P_R1 (ECC enabled)
|
||||||
|
depends_on:PSA_WANT_ALG_HKDF:PSA_WANT_ALG_SHA_256:PSA_WANT_KEY_TYPE_ECC_KEY_PAIR
|
||||||
|
# The spec allows either INVALID_ARGUMENT or NOT_SUPPORTED
|
||||||
|
derive_key:PSA_ALG_HKDF(PSA_ALG_SHA_256):"0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b":"000102030405060708090a0b0c":"f0f1f2f3f4f5f6f7f8f9":PSA_KEY_TYPE_ECC_KEY_PAIR(PSA_ECC_FAMILY_BRAINPOOL_P_R1):7:PSA_ERROR_INVALID_ARGUMENT:0
|
||||||
|
|
||||||
|
PSA key derivation: bits=7 invalid for ECC BRAINPOOL_P_R1 (ECC disabled)
|
||||||
|
depends_on:PSA_WANT_ALG_HKDF:PSA_WANT_ALG_SHA_256:!PSA_WANT_KEY_TYPE_ECC_KEY_PAIR
|
||||||
|
# The spec allows either INVALID_ARGUMENT or NOT_SUPPORTED
|
||||||
|
derive_key:PSA_ALG_HKDF(PSA_ALG_SHA_256):"0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b":"000102030405060708090a0b0c":"f0f1f2f3f4f5f6f7f8f9":PSA_KEY_TYPE_ECC_KEY_PAIR(PSA_ECC_FAMILY_BRAINPOOL_P_R1):7:PSA_ERROR_NOT_SUPPORTED:0
|
||||||
|
|
||||||
|
PSA key derivation: bits=0 invalid for ECC MONTGOMERY
|
||||||
|
depends_on:PSA_WANT_ALG_HKDF:PSA_WANT_ALG_SHA_256
|
||||||
|
# The spec allows either INVALID_ARGUMENT or NOT_SUPPORTED
|
||||||
|
derive_key:PSA_ALG_HKDF(PSA_ALG_SHA_256):"0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b":"000102030405060708090a0b0c":"f0f1f2f3f4f5f6f7f8f9":PSA_KEY_TYPE_ECC_KEY_PAIR(PSA_ECC_FAMILY_MONTGOMERY):0:PSA_ERROR_INVALID_ARGUMENT:0
|
||||||
|
|
||||||
|
PSA key derivation: bits=7 invalid for ECC MONTGOMERY (ECC enabled)
|
||||||
|
depends_on:PSA_WANT_ALG_HKDF:PSA_WANT_ALG_SHA_256:PSA_WANT_KEY_TYPE_ECC_KEY_PAIR
|
||||||
|
# The spec allows either INVALID_ARGUMENT or NOT_SUPPORTED
|
||||||
|
derive_key:PSA_ALG_HKDF(PSA_ALG_SHA_256):"0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b":"000102030405060708090a0b0c":"f0f1f2f3f4f5f6f7f8f9":PSA_KEY_TYPE_ECC_KEY_PAIR(PSA_ECC_FAMILY_MONTGOMERY):7:PSA_ERROR_INVALID_ARGUMENT:0
|
||||||
|
|
||||||
|
PSA key derivation: bits=7 invalid for ECC MONTGOMERY (ECC disabled)
|
||||||
|
depends_on:PSA_WANT_ALG_HKDF:PSA_WANT_ALG_SHA_256:!PSA_WANT_KEY_TYPE_ECC_KEY_PAIR
|
||||||
|
# The spec allows either INVALID_ARGUMENT or NOT_SUPPORTED
|
||||||
|
derive_key:PSA_ALG_HKDF(PSA_ALG_SHA_256):"0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b":"000102030405060708090a0b0c":"f0f1f2f3f4f5f6f7f8f9":PSA_KEY_TYPE_ECC_KEY_PAIR(PSA_ECC_FAMILY_MONTGOMERY):7:PSA_ERROR_NOT_SUPPORTED:0
|
||||||
|
|
||||||
|
|
||||||
PSA key derivation: raw data, 8 bits
|
PSA key derivation: raw data, 8 bits
|
||||||
depends_on:PSA_WANT_ALG_HKDF:PSA_WANT_ALG_SHA_256
|
depends_on:PSA_WANT_ALG_HKDF:PSA_WANT_ALG_SHA_256
|
||||||
derive_key:PSA_ALG_HKDF(PSA_ALG_SHA_256):"0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b":"000102030405060708090a0b0c":"f0f1f2f3f4f5f6f7f8f9":PSA_KEY_TYPE_RAW_DATA:8:PSA_SUCCESS:0
|
derive_key:PSA_ALG_HKDF(PSA_ALG_SHA_256):"0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b":"000102030405060708090a0b0c":"f0f1f2f3f4f5f6f7f8f9":PSA_KEY_TYPE_RAW_DATA:8:PSA_SUCCESS:0
|
||||||
|
|
|
@ -7232,6 +7232,65 @@ exit:
|
||||||
}
|
}
|
||||||
/* END_CASE */
|
/* END_CASE */
|
||||||
|
|
||||||
|
/* BEGIN_CASE */
|
||||||
|
void derive_key_type( int alg_arg,
|
||||||
|
data_t *key_data,
|
||||||
|
data_t *input1,
|
||||||
|
data_t *input2,
|
||||||
|
int key_type_arg, int bits_arg,
|
||||||
|
data_t *expected_export )
|
||||||
|
{
|
||||||
|
mbedtls_svc_key_id_t base_key = MBEDTLS_SVC_KEY_ID_INIT;
|
||||||
|
mbedtls_svc_key_id_t derived_key = MBEDTLS_SVC_KEY_ID_INIT;
|
||||||
|
const psa_algorithm_t alg = alg_arg;
|
||||||
|
const psa_key_type_t key_type = key_type_arg;
|
||||||
|
const size_t bits = bits_arg;
|
||||||
|
psa_key_derivation_operation_t operation = PSA_KEY_DERIVATION_OPERATION_INIT;
|
||||||
|
const size_t export_buffer_size =
|
||||||
|
PSA_EXPORT_KEY_OUTPUT_SIZE( key_type, bits );
|
||||||
|
uint8_t *export_buffer = NULL;
|
||||||
|
psa_key_attributes_t base_attributes = PSA_KEY_ATTRIBUTES_INIT;
|
||||||
|
psa_key_attributes_t derived_attributes = PSA_KEY_ATTRIBUTES_INIT;
|
||||||
|
size_t export_length;
|
||||||
|
|
||||||
|
ASSERT_ALLOC( export_buffer, export_buffer_size );
|
||||||
|
PSA_ASSERT( psa_crypto_init( ) );
|
||||||
|
|
||||||
|
psa_set_key_usage_flags( &base_attributes, PSA_KEY_USAGE_DERIVE );
|
||||||
|
psa_set_key_algorithm( &base_attributes, alg );
|
||||||
|
psa_set_key_type( &base_attributes, PSA_KEY_TYPE_DERIVE );
|
||||||
|
PSA_ASSERT( psa_import_key( &base_attributes, key_data->x, key_data->len,
|
||||||
|
&base_key ) );
|
||||||
|
|
||||||
|
if( mbedtls_test_psa_setup_key_derivation_wrap(
|
||||||
|
&operation, base_key, alg,
|
||||||
|
input1->x, input1->len,
|
||||||
|
input2->x, input2->len,
|
||||||
|
PSA_KEY_DERIVATION_UNLIMITED_CAPACITY ) == 0 )
|
||||||
|
goto exit;
|
||||||
|
|
||||||
|
psa_set_key_usage_flags( &derived_attributes, PSA_KEY_USAGE_EXPORT );
|
||||||
|
psa_set_key_algorithm( &derived_attributes, 0 );
|
||||||
|
psa_set_key_type( &derived_attributes, key_type );
|
||||||
|
psa_set_key_bits( &derived_attributes, bits );
|
||||||
|
PSA_ASSERT( psa_key_derivation_output_key( &derived_attributes, &operation,
|
||||||
|
&derived_key ) );
|
||||||
|
|
||||||
|
PSA_ASSERT( psa_export_key( derived_key,
|
||||||
|
export_buffer, export_buffer_size,
|
||||||
|
&export_length ) );
|
||||||
|
ASSERT_COMPARE( export_buffer, export_length,
|
||||||
|
expected_export->x, expected_export->len );
|
||||||
|
|
||||||
|
exit:
|
||||||
|
mbedtls_free( export_buffer );
|
||||||
|
psa_key_derivation_abort( &operation );
|
||||||
|
psa_destroy_key( base_key );
|
||||||
|
psa_destroy_key( derived_key );
|
||||||
|
PSA_DONE( );
|
||||||
|
}
|
||||||
|
/* END_CASE */
|
||||||
|
|
||||||
/* BEGIN_CASE */
|
/* BEGIN_CASE */
|
||||||
void derive_key( int alg_arg,
|
void derive_key( int alg_arg,
|
||||||
data_t *key_data, data_t *input1, data_t *input2,
|
data_t *key_data, data_t *input1, data_t *input2,
|
||||||
|
|
Loading…
Reference in a new issue