blob: 15f5dc1150e1846449c8116069866c21b13c5d68 [file] [log] [blame]
/* Copyright 2019,2020 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 "ex_se05x_WiFiKDF.h"
#define WIFI_PASSWRD "some-wifi-password"
static ex_sss_boot_ctx_t gex_sss_wifi_kdf;
#define EX_SSS_BOOT_PCONTEXT (&gex_sss_wifi_kdf)
#define EX_SSS_BOOT_DO_ERASE 1
#define EX_SSS_BOOT_EXPOSE_ARGC_ARGV 0
#include <ex_sss_main_inc.h>
sss_status_t ex_sss_entry(ex_sss_boot_ctx_t *pCtx)
{
sss_status_t sss_status = kStatus_SSS_Fail;
smStatus_t status;
sss_se05x_session_t *pSession = (sss_se05x_session_t *)&pCtx->session;
SE05x_Result_t pExists = 0;
const uint8_t wifi_password[] = WIFI_PASSWRD;
status = Se05x_API_CheckObjectExists(&pSession->s_ctx, WIFI_OBJ_ID, &pExists);
if (status == SM_OK && pExists == kSE05x_Result_SUCCESS) {
status = Se05x_API_DeleteSecureObject(&pSession->s_ctx, WIFI_OBJ_ID);
if (status != SM_OK) {
LOG_W("Error, could not delete object. ");
goto cleanup;
}
}
LOG_I("Injecting wifi_password='%s'", wifi_password);
status = Se05x_API_WriteSymmKey(&pSession->s_ctx,
NULL,
SE05x_MaxAttemps_UNLIMITED,
WIFI_OBJ_ID,
SE05x_KeyID_KEK_NONE,
wifi_password,
sizeof(wifi_password) - 1,
kSE05x_INS_NA,
kSE05x_SymmKeyType_HMAC);
if (status != SM_OK) {
LOG_E("Se05x_API_WriteSymmKey Failed");
goto cleanup;
}
sss_status = kStatus_SSS_Success;
cleanup:
return sss_status;
}