#include "common.h"
#include <mcuxClToolchain.h>
#include <stdbool.h>
#include <mcuxClCore_Examples.h>
#define LIFETIME_INTERNAL PSA_KEY_LIFETIME_FROM_PERSISTENCE_AND_LOCATION(PSA_KEY_LIFETIME_VOLATILE, PSA_KEY_LOCATION_EXTERNAL_STORAGE)
#define LIFETIME_EXTERNAL PSA_KEY_LIFETIME_FROM_PERSISTENCE_AND_LOCATION(PSA_KEY_LIFETIME_VOLATILE, PSA_KEY_LOCATION_LOCAL_STORAGE)
bool mcuxClPsaDriver_keygen_export_public_key_secpr1_example(void)
{
{
return MCUXCLEXAMPLE_STATUS_ERROR;
}
{
return MCUXCLEXAMPLE_STATUS_ERROR;
}
psa_key_attributes_t keygenAttr = {
.core = {
.type = PSA_KEY_TYPE_ECC_KEY_PAIR(PSA_ECC_FAMILY_SECP_R1),
.lifetime = LIFETIME_EXTERNAL,
.id = 0U,
.policy = {
.usage = PSA_ALG_NONE,
.alg = PSA_ALG_ECDSA_ANY,
.alg2 = PSA_ALG_NONE},
.flags = 0U},
.domain_parameters = NULL,
.domain_parameters_size = 0U};
size_t key_buffer_length = 0U;
psa_status_t status = psa_driver_wrapper_generate_key(
&keygenAttr,
key_buffer, key_buffer_size, &key_buffer_length);
if(status != PSA_SUCCESS)
{
return MCUXCLEXAMPLE_STATUS_ERROR;
}
{
return MCUXCLEXAMPLE_STATUS_ERROR;
}
psa_key_attributes_t exportAttr = {
.core = {
.type = PSA_KEY_TYPE_ECC_KEY_PAIR(PSA_ECC_FAMILY_SECP_R1),
.lifetime = LIFETIME_EXTERNAL,
.id = 0U,
.policy = {
.usage = PSA_KEY_USAGE_EXPORT,
.alg = PSA_ALG_ECDSA_ANY,
.alg2 = PSA_ALG_NONE},
.flags = 0U},
.domain_parameters = NULL,
.domain_parameters_size = 0U
};
uint8_t data[PSA_EXPORT_PUBLIC_KEY_OUTPUT_SIZE(PSA_KEY_TYPE_ECC_PUBLIC_KEY(PSA_ECC_FAMILY_SECP_R1),
MCUXCLKEY_SIZE_256 * 8u)] = {0U};
size_t data_size = PSA_EXPORT_PUBLIC_KEY_OUTPUT_SIZE(PSA_KEY_TYPE_ECC_PUBLIC_KEY(PSA_ECC_FAMILY_SECP_R1),
MCUXCLKEY_SIZE_256 * 8u);
size_t data_length = 0U;
status = psa_driver_wrapper_export_public_key(
&exportAttr,
data, data_size, &data_length);
if(status != PSA_SUCCESS)
{
return MCUXCLEXAMPLE_STATUS_ERROR;
}
if(data_length != data_size)
{
return MCUXCLEXAMPLE_STATUS_ERROR;
}
{
return MCUXCLEXAMPLE_STATUS_ERROR;
}
{
return MCUXCLEXAMPLE_STATUS_ERROR;
}
return MCUXCLEXAMPLE_STATUS_OK;
}