#include <mcuxClExample_Session_Helper.h>
#include <mcuxClCore_Examples.h>
#include <mcuxClExample_ELS_Helper.h>
#define CEILING(x,y) (((x) + (y) - 1U) / (y))
#define OUT_BUFFER_SIZE (MCUXCLRANDOMMODES_RESEED_INTERVAL_PTG3 * 2u)
static const uint32_t entropyInputInit[CEILING(MCUXCLRANDOMMODES_TESTMODE_CTR_DRBG_AES256_INIT_ENTROPY_SIZE, sizeof(uint32_t))] =
{
0xd871e6c9u, 0x45a82e7du, 0x26ef0940u, 0x80cb91b8u, 0x2e211226u, 0xd6416349u, 0x1b227780u, 0x14ef2f2eu,
0xfdc37262u, 0x2db280b8u, 0x4808837au, 0xb6d5680bu, 0x54a9ec86u, 0x699cfaa2u, 0xdb9134d9u, 0xa3bcd0c9u,
0x7e62a5dau, 0x00e08521u
};
static const uint32_t entropyInputGenerate[CEILING(MCUXCLRANDOMMODES_TESTMODE_CTR_DRBG_AES256_RESEED_ENTROPY_SIZE * 2u, sizeof(uint32_t))] =
{
0xe19793c3u, 0x336d3bedu, 0x32ea9ac4u, 0x56c2b89fu, 0xe90cd270u, 0x0146b0a4u, 0xb19a334au, 0x805f2e78u,
0x1ae376eau, 0x46683dedu, 0x186c9b7bu, 0x682e6ea8u, 0x836d643du, 0x1f7356a2u,
0xc437f850u, 0x8238cd74u, 0x9812eb32u, 0x9859fc43u, 0x528daf05u, 0x3c4c0016u, 0x18c5bb22u, 0xd0703bf9u,
0xa5fd78e5u, 0x888a413au, 0xc818c52eu, 0xee4058ebu, 0xe62274e3u, 0x0000fe64u
};
static const uint8_t refOutput[OUT_BUFFER_SIZE] =
{
0x68u, 0xEDu, 0x61u, 0x34u, 0x2Fu, 0x1Cu, 0x39u, 0x9Eu,
0xA0u, 0xC9u, 0x1Bu, 0x79u, 0x17u, 0x6Fu, 0x35u, 0x09u,
0xA1u, 0xD1u, 0x45u, 0xD5u, 0xEFu, 0xD5u, 0x83u, 0xD1u,
0xCCu, 0x01u, 0x30u, 0x13u, 0xEFu, 0xFAu, 0x1Au, 0x19u,
0x22u, 0xD5u, 0xA3u, 0x49u, 0x85u, 0x70u, 0xA7u, 0xE5u,
0xA9u, 0x32u, 0x4Bu, 0xA5u, 0x90u, 0x9Fu, 0x99u, 0x53u,
0x4Du, 0x38u, 0x35u, 0xC9u, 0xF8u, 0xCFu, 0x61u, 0xC3u,
0xF1u, 0x67u, 0xFDu, 0x8Bu, 0xC3u, 0x13u, 0x1Du, 0x02u
};
{
{
return MCUXCLEXAMPLE_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_ERROR;
}
uint32_t context[MCUXCLRANDOMMODES_CTR_DRBG_AES256_CONTEXT_SIZE_IN_WORDS] = {0};
session,
pTestModeDesc
));
{
return MCUXCLEXAMPLE_ERROR;
}
{
return MCUXCLEXAMPLE_ERROR;
}
uint8_t outBuffer[OUT_BUFFER_SIZE] = {0u};
session,
outBuffer,
OUT_BUFFER_SIZE
));
{
return MCUXCLEXAMPLE_ERROR;
}
bool outputIsExpected = mcuxClCore_assertEqual((const uint8_t *) outBuffer, (const uint8_t*) refOutput, OUT_BUFFER_SIZE);
if(!outputIsExpected)
{
return MCUXCLEXAMPLE_ERROR;
}
{
return MCUXCLEXAMPLE_ERROR;
}
if(!mcuxClExample_Session_Clean(session))
{
return MCUXCLEXAMPLE_ERROR;
}
if(!mcuxClExample_Els_Disable())
{
return MCUXCLEXAMPLE_ERROR;
}
return MCUXCLEXAMPLE_OK;
}