#include <mcuxClExample_Session_Helper.h>
#include <mcuxClCore_Examples.h>
#include <mcuxClExample_ELS_Helper.h>
#define OUT_BUFFER_SIZE (MCUXCLRANDOMMODES_RESEED_INTERVAL_PTG3 * 2u)
static const uint32_t entropyInputInit[MCUXCLEXAMPLE_CEILING(MCUXCLRANDOMMODES_TESTMODE_CTR_DRBG_AES256_INIT_ENTROPY_SIZE, sizeof(uint32_t))] =
{
0x2848b943u, 0x9db0857au, 0x24947dbfu, 0xdf5d061bu,
0x3810b90bu, 0xb0c41bdfu, 0xd1ec5f6au, 0x067b147au,
0xcbc57229u, 0xf2862a00u, 0x781140fdu, 0xabfadd8du,
0x42d44243u, 0xd09d2fb3u, 0x0cbaf6a9u, 0x4d318e71u,
0xa5cd8cc0u, 0x00e52e1du
};
static const uint32_t entropyInputReseed[MCUXCLEXAMPLE_CEILING(MCUXCLRANDOMMODES_TESTMODE_CTR_DRBG_AES256_RESEED_ENTROPY_SIZE, sizeof(uint32_t))] =
{
0x8553d279u, 0x177481a3u, 0xfb7ca01du, 0x848b24fdu,
0x4fc41239u, 0x5c28a84du, 0xe51096cau, 0xefdfd0e6u,
0x5d06582eu, 0x7f11b69eu, 0x0cdd1c59u, 0xa27fe549u,
0x3743696bu, 0x0031870au
};
static const uint32_t entropyInputGenerate[MCUXCLEXAMPLE_CEILING(MCUXCLRANDOMMODES_TESTMODE_CTR_DRBG_AES256_RESEED_ENTROPY_SIZE * 2u, sizeof(uint32_t))] =
{
0xbd98f427u, 0x22de991bu, 0xfb8d02abu, 0xde9141a9u,
0x3b1e32e1u, 0x224c0a9eu, 0x8e41648du, 0x53384037u,
0xd79dd5fau, 0x596b6c68u, 0x76661e1eu, 0x6a51e100u,
0x10f264b1u, 0x1dfef494u,
0xb63075a8u, 0x6aea5058u, 0xd4003ac9u, 0x7576baa3u,
0x801cc5c6u, 0xab22d6a4u, 0xd3dcd613u, 0x05be284du,
0xf22f7fd6u, 0xcd00b43bu, 0xc5adfb33u, 0xf7c67ce0u,
0xcf497dedu, 0x00007ed7u
};
static const uint32_t refOutput[OUT_BUFFER_SIZE / sizeof(uint32_t)] =
{
0xae9f48d6u, 0xe65ac43eu, 0x297df3eau, 0xfcfad27du,
0x1903fe18u, 0xac2906a0u, 0xb8d6aadau, 0xd0d7a8a0u,
0xd30a8957u, 0xcc7620a4u, 0xcc37d610u, 0x2aa97088u,
0x193ac3f7u, 0xa7b78d8du, 0xe6278b5cu, 0xe1ba7253u
};
{
{
return MCUXCLEXAMPLE_STATUS_ERROR;
}
MCUXCLEXAMPLE_ALLOCATE_AND_INITIALIZE_SESSION(session, MCUXCLRANDOMMODES_MAX_CPU_WA_BUFFER_SIZE, 0u);
uint32_t testModeDescBytes[(MCUXCLRANDOMMODES_TESTMODE_DESCRIPTOR_SIZE + sizeof(uint32_t) - 1U)/sizeof(uint32_t)];
pTestModeDesc,
mcuxClRandomModes_Mode_CtrDrbg_AES256_PTG3,
entropyInputInit
));
{
return MCUXCLEXAMPLE_STATUS_ERROR;
}
uint32_t context[MCUXCLRANDOMMODES_CTR_DRBG_AES256_CONTEXT_SIZE_IN_WORDS] = {0};
session,
pTestModeDesc
));
{
return MCUXCLEXAMPLE_STATUS_ERROR;
}
{
return MCUXCLEXAMPLE_STATUS_ERROR;
}
{
return MCUXCLEXAMPLE_STATUS_ERROR;
}
{
return MCUXCLEXAMPLE_STATUS_ERROR;
}
uint8_t outBuffer[OUT_BUFFER_SIZE] = {0u};
session,
outBuffer,
OUT_BUFFER_SIZE
));
{
return MCUXCLEXAMPLE_STATUS_ERROR;
}
bool outputIsExpected = mcuxClCore_assertEqual((const uint8_t *) outBuffer, (const uint8_t*) refOutput, OUT_BUFFER_SIZE);
if(!outputIsExpected)
{
return MCUXCLEXAMPLE_STATUS_ERROR;
}
{
return MCUXCLEXAMPLE_STATUS_ERROR;
}
if(!mcuxClExample_Session_Clean(session))
{
return MCUXCLEXAMPLE_STATUS_ERROR;
}
if(!mcuxClExample_Els_Disable())
{
return MCUXCLEXAMPLE_STATUS_ERROR;
}
return MCUXCLEXAMPLE_STATUS_OK;
}