blob: 9873f87b479de7830ac58ff20298236d7276e4f5 [file] [log] [blame]
/*
*
* Copyright 2019-2020 NXP
* SPDX-License-Identifier: Apache-2.0
*/
#include <stdio.h>
#include <sm_types.h>
#if defined(SSS_USE_FTR_FILE)
#include "fsl_sss_ftr.h"
#else
#include "fsl_sss_ftr_default.h"
#endif
#if SSS_HAVE_SE05X && SSSFTR_SE05X_ECC
#include "se05x_ecc_curves.h"
#include "se05x_APDU.h"
#include "se05x_ecc_curves_values.h"
#ifndef ARRAY_SIZE
#define ARRAY_SIZE(array) (sizeof(array) / (sizeof(array[0])))
#endif
#define PROCESS_ECC_CURVE(NAME) \
smStatus_t Se05x_API_CreateCurve_##NAME(Se05xSession_t *pSession, uint32_t obj_id) \
{ \
smStatus_t status; \
const uint8_t ecc_prime[] = {EC_PARAM_##NAME##_prime}; \
const uint8_t ecc_a[] = {EC_PARAM_##NAME##_a}; \
const uint8_t ecc_b[] = {EC_PARAM_##NAME##_b}; \
const uint8_t ecc_G[] = {0x04, EC_PARAM_##NAME##_x, EC_PARAM_##NAME##_y}; \
const uint8_t ecc_ordern[] = {EC_PARAM_##NAME##_order}; \
\
status = Se05x_API_CreateECCurve(pSession, obj_id); \
if (status != SM_OK) { \
return status; \
} \
\
status = Se05x_API_SetECCurveParam(pSession, obj_id, kSE05x_ECCurveParam_PARAM_A, ecc_a, ARRAY_SIZE(ecc_a)); \
if (status != SM_OK) { \
return status; \
} \
\
status = Se05x_API_SetECCurveParam(pSession, obj_id, kSE05x_ECCurveParam_PARAM_B, ecc_b, ARRAY_SIZE(ecc_b)); \
if (status != SM_OK) { \
return status; \
} \
\
status = Se05x_API_SetECCurveParam(pSession, obj_id, kSE05x_ECCurveParam_PARAM_G, ecc_G, ARRAY_SIZE(ecc_G)); \
if (status != SM_OK) { \
return status; \
} \
\
status = Se05x_API_SetECCurveParam( \
pSession, obj_id, kSE05x_ECCurveParam_PARAM_N, ecc_ordern, ARRAY_SIZE(ecc_ordern)); \
if (status != SM_OK) { \
return status; \
} \
\
status = Se05x_API_SetECCurveParam( \
pSession, obj_id, kSE05x_ECCurveParam_PARAM_PRIME, ecc_prime, ARRAY_SIZE(ecc_prime)); \
return status; \
}
#include "se05x_ecc_curves_inc.h"
#endif