Files
NxpNfcRdLib/.svn/pristine/a3/a3400965d2b75c8e988ea5cb12575bbbc41ab0e3.svn-base
2024-07-08 21:03:06 +08:00

197 lines
7.4 KiB
Plaintext

/*----------------------------------------------------------------------------*/
/* Copyright 2009 - 2020, 2022 NXP */
/* */
/* NXP Confidential. This software is owned or controlled by NXP and may only */
/* be used strictly in accordance with the applicable license terms. */
/* By expressly accepting such terms or by downloading, installing, */
/* activating and/or otherwise using the software, you are agreeing that you */
/* have read, and that you agree to comply with and are bound by, such */
/* license terms. If you do not agree to be bound by the applicable license */
/* terms, then you may not retain, install, activate or otherwise use the */
/* software. */
/*----------------------------------------------------------------------------*/
/** \file
* Generic Random Number Component of the Reader Library Framework.
* $Author: Rajendran Kumar (nxp99556) $
* $Revision: 6656 $ (v07.10.00)
* $Date: 2022-06-16 20:27:12 +0530 (Thu, 16 Jun 2022) $
*
* History:
* CHu: Generated 19. May 2009
*
*/
#include <phCryptoRng.h>
#include <ph_RefDefs.h>
#ifdef NXPBUILD__PH_CRYPTORNG_SW
#include "Sw/phCryptoRng_Sw.h"
#endif /* NXPBUILD__PH_CRYPTORNG_SW */
#ifdef NXPBUILD__PH_CRYPTORNG
phStatus_t phCryptoRng_Seed(void * pDataParams, uint8_t * pSeed, uint8_t bSeedLength)
{
phStatus_t PH_MEMLOC_REM status;
PH_LOG_HELPER_ALLOCATE_TEXT(bFunctionName, "phCryptoRng_Seed");
PH_LOG_HELPER_ALLOCATE_PARAMNAME(pSeed);
PH_LOG_HELPER_ALLOCATE_PARAMNAME(bSeedLength);
PH_LOG_HELPER_ALLOCATE_PARAMNAME(status);
/* Validate the parameters. */
PH_ASSERT_NULL_DATA_PARAM(pDataParams, PH_COMP_CRYPTORNG);
if(0U != bSeedLength) PH_ASSERT_NULL_PARAM(pSeed, PH_COMP_CRYPTORNG);
/* Log the information. */
PH_LOG_HELPER_ADDSTRING(PH_LOG_LOGTYPE_INFO, bFunctionName);
PH_LOG_HELPER_ADDPARAM_BUFFER(PH_LOG_LOGTYPE_DEBUG, PH_LOG_VAR(pSeed), pSeed, bSeedLength);
PH_LOG_HELPER_ADDPARAM_UINT8(PH_LOG_LOGTYPE_DEBUG, PH_LOG_VAR(bSeedLength), &bSeedLength);
PH_LOG_HELPER_EXECUTE(PH_LOG_OPTION_CATEGORY_ENTER);
/* Component Code Validation */
if(PH_GET_COMPCODE(pDataParams) != PH_COMP_CRYPTORNG)
{
status = PH_ADD_COMPCODE_FIXED(PH_ERR_INVALID_DATA_PARAMS, PH_COMP_CRYPTORNG);
PH_LOG_HELPER_ADDSTRING(PH_LOG_LOGTYPE_INFO, bFunctionName);
PH_LOG_HELPER_ADDPARAM_UINT16(PH_LOG_LOGTYPE_INFO, PH_LOG_VAR(status), &status);
PH_LOG_HELPER_EXECUTE(PH_LOG_OPTION_CATEGORY_LEAVE);
return status;
}
/* Perform operation on active layer. */
switch(PH_GET_COMPID(pDataParams))
{
#ifdef NXPBUILD__PH_CRYPTORNG_SW
case PH_CRYPTORNG_SW_ID:
status = phCryptoRng_Sw_Seed((phCryptoRng_Sw_DataParams_t *) pDataParams, pSeed, bSeedLength);
break;
#endif /* NXPBUILD__PH_CRYPTORNG_SW */
default:
status = PH_ADD_COMPCODE_FIXED(PH_ERR_INVALID_DATA_PARAMS, PH_COMP_CRYPTORNG);
break;
}
PH_LOG_HELPER_ADDSTRING(PH_LOG_LOGTYPE_INFO, bFunctionName);
PH_LOG_HELPER_ADDPARAM_UINT16(PH_LOG_LOGTYPE_INFO, PH_LOG_VAR(status), &status);
PH_LOG_HELPER_EXECUTE(PH_LOG_OPTION_CATEGORY_LEAVE);
return status;
}
phStatus_t phCryptoRng_Rnd(void * pDataParams, uint16_t wNoOfRndBytes, uint8_t * pRnd)
{
phStatus_t PH_MEMLOC_REM status;
PH_LOG_HELPER_ALLOCATE_TEXT(bFunctionName, "phCryptoRng_Rnd");
PH_LOG_HELPER_ALLOCATE_PARAMNAME(wNoOfRndBytes);
PH_LOG_HELPER_ALLOCATE_PARAMNAME(pRnd);
PH_LOG_HELPER_ALLOCATE_PARAMNAME(status);
/* Validate the parameters. */
PH_ASSERT_NULL_DATA_PARAM(pDataParams, PH_COMP_CRYPTORNG);
PH_ASSERT_NULL_PARAM(pRnd, PH_COMP_CRYPTORNG);
/* Log the information. */
PH_LOG_HELPER_ADDSTRING(PH_LOG_LOGTYPE_INFO, bFunctionName);
PH_LOG_HELPER_ADDPARAM_UINT16(PH_LOG_LOGTYPE_DEBUG, PH_LOG_VAR(wNoOfRndBytes), &wNoOfRndBytes);
PH_LOG_HELPER_EXECUTE(PH_LOG_OPTION_CATEGORY_ENTER);
/* Component Code Validation */
if(PH_GET_COMPCODE(pDataParams) != PH_COMP_CRYPTORNG)
{
status = PH_ADD_COMPCODE_FIXED(PH_ERR_INVALID_DATA_PARAMS, PH_COMP_CRYPTORNG);
PH_LOG_HELPER_ADDSTRING(PH_LOG_LOGTYPE_INFO, bFunctionName);
PH_LOG_HELPER_ADDPARAM_UINT16(PH_LOG_LOGTYPE_INFO, PH_LOG_VAR(status), &status);
PH_LOG_HELPER_EXECUTE(PH_LOG_OPTION_CATEGORY_LEAVE);
return status;
}
/* Perform operation on active layer. */
switch(PH_GET_COMPID(pDataParams))
{
#ifdef NXPBUILD__PH_CRYPTORNG_SW
case PH_CRYPTORNG_SW_ID:
status = phCryptoRng_Sw_Rnd((phCryptoRng_Sw_DataParams_t *) pDataParams, wNoOfRndBytes, pRnd);
break;
#endif /* NXPBUILD__PH_CRYPTORNG_SW */
default:
status = PH_ADD_COMPCODE_FIXED(PH_ERR_INVALID_DATA_PARAMS, PH_COMP_CRYPTORNG);
break;
}
PH_LOG_HELPER_ADDSTRING(PH_LOG_LOGTYPE_INFO, bFunctionName);
#ifdef NXPBUILD__PH_LOG
if((status & PH_ERR_MASK) == PH_ERR_SUCCESS)
{
PH_LOG_HELPER_ADDPARAM_BUFFER(PH_LOG_LOGTYPE_DEBUG, PH_LOG_VAR(pRnd), pRnd, wNoOfRndBytes);
}
#endif
PH_LOG_HELPER_ADDPARAM_UINT16(PH_LOG_LOGTYPE_INFO, PH_LOG_VAR(status), &status);
PH_LOG_HELPER_EXECUTE(PH_LOG_OPTION_CATEGORY_LEAVE);
return status;
}
phStatus_t phCryptoRng_GetLastStatus(void * pDataParams, uint16_t wStatusMsgLen, int8_t * pStatusMsg, int32_t * pStatusCode)
{
phStatus_t PH_MEMLOC_REM wStatus = 0;
PH_LOG_HELPER_ALLOCATE_TEXT(bFunctionName, "phCryptoRng_GetLastStatus");
PH_LOG_HELPER_ALLOCATE_PARAMNAME(wStatusMsgLen);
PH_LOG_HELPER_ALLOCATE_PARAMNAME(pStatusMsg);
PH_LOG_HELPER_ALLOCATE_PARAMNAME(pStatusCode);
PH_LOG_HELPER_ALLOCATE_PARAMNAME(wStatus);
/* Validate the parameters. */
PH_ASSERT_NULL_DATA_PARAM(pDataParams, PH_COMP_CRYPTORNG);
PH_ASSERT_NULL_PARAM(pStatusMsg, PH_COMP_CRYPTORNG);
PH_ASSERT_NULL_PARAM(pStatusCode, PH_COMP_CRYPTORNG);
/* Log the information. */
PH_LOG_HELPER_ADDSTRING(PH_LOG_LOGTYPE_INFO, bFunctionName);
PH_LOG_HELPER_ADDPARAM_UINT16(PH_LOG_LOGTYPE_DEBUG, PH_LOG_VAR(wStatusMsgLen), &wStatusMsgLen);
PH_LOG_HELPER_EXECUTE(PH_LOG_OPTION_CATEGORY_ENTER);
/* Component Code Validation */
if(PH_GET_COMPCODE(pDataParams) != PH_COMP_CRYPTORNG)
{
wStatus = PH_ADD_COMPCODE_FIXED(PH_ERR_INVALID_DATA_PARAMS, PH_COMP_CRYPTORNG);
PH_LOG_HELPER_ADDSTRING(PH_LOG_LOGTYPE_INFO, bFunctionName);
PH_LOG_HELPER_ADDPARAM_UINT16(PH_LOG_LOGTYPE_INFO, PH_LOG_VAR(wStatus), &wStatus);
PH_LOG_HELPER_EXECUTE(PH_LOG_OPTION_CATEGORY_LEAVE);
return wStatus;
}
/* Perform operation on active layer. */
switch(PH_GET_COMPID(pDataParams))
{
default:
wStatus = PH_ADD_COMPCODE_FIXED(PH_ERR_INVALID_DATA_PARAMS, PH_COMP_CRYPTORNG);
break;
}
PH_LOG_HELPER_ADDSTRING(PH_LOG_LOGTYPE_INFO, bFunctionName);
#ifdef NXPBUILD__PH_LOG
if((wStatus & PH_ERR_MASK) == PH_ERR_SUCCESS)
{
PH_LOG_HELPER_ADDPARAM_BUFFER(PH_LOG_LOGTYPE_DEBUG, PH_LOG_VAR(pStatusMsg), pStatusMsg, wStatusMsgLen);
PH_LOG_HELPER_ADDPARAM_INT32(PH_LOG_LOGTYPE_DEBUG, PH_LOG_VAR(pStatusCode), pStatusCode);
}
#endif
PH_LOG_HELPER_ADDPARAM_UINT16(PH_LOG_LOGTYPE_INFO, PH_LOG_VAR(wStatus), &wStatus);
PH_LOG_HELPER_EXECUTE(PH_LOG_OPTION_CATEGORY_LEAVE);
return wStatus;
}
#endif /* NXPBUILD__PH_CRYPTORNG */