blob: be6f9751af1bca7a6bb7a881e57e64ce8b62b402 [file] [log] [blame]
/* Copyright 2019 NXP
* SPDX-License-Identifier: Apache-2.0
*/
#include <ex_sss_boot.h>
#include <fsl_sss_se05x_apis.h>
#include <nxLog_App.h>
#include <se05x_APDU.h>
#include <se05x_const.h>
#include <se05x_ecc_curves.h>
#include <se05x_ecc_curves_values.h>
#include <se05x_tlv.h>
#include <stdio.h>
#include <string.h>
#include "certificate.h"
static ex_sss_boot_ctx_t gex_sss_gen_cert;
#define EX_SSS_BOOT_PCONTEXT (&gex_sss_gen_cert)
#define EX_SSS_BOOT_DO_ERASE 1
#define EX_SSS_BOOT_EXPOSE_ARGC_ARGV 0
#include <ex_sss_main_inc.h>
#define ECC_KEY_BIT_LEN 256
sss_status_t ex_sss_entry(ex_sss_boot_ctx_t *pCtx)
{
sss_status_t status = kStatus_SSS_Fail;
uint32_t keyId = CERTIFICATE_KEY_ID;
size_t keyBitLen = ECC_KEY_BIT_LEN;
size_t keyLen = keyBitLen * 8;
sss_key_part_t keyPart = kSSS_KeyPart_Pair;
sss_cipher_type_t cipherType = kSSS_CipherType_EC_NIST_P;
sss_object_t obj = {0};
status = sss_key_object_init(&obj, &pCtx->ks);
if (status != kStatus_SSS_Success) {
LOG_E("sss_key_object_init Failed!!!");
return status;
}
status = sss_key_object_allocate_handle(&obj, keyId, keyPart, cipherType, keyLen, kKeyObject_Mode_Persistent);
if (status != kStatus_SSS_Success) {
LOG_E("Object allocate handle failed");
return status;
}
status = sss_key_store_generate_key(&pCtx->ks, &obj, keyBitLen, NULL);
if (status != kStatus_SSS_Success)
LOG_E("Failed to inject key");
else
LOG_I("Success");
return status;
}