Files
2026-07-30 11:19:44 +05:30

171 lines
5.9 KiB
C

/*
******************************************************************************
* INTERPEAK SOURCE FILE
*
* Document no: @(#) $Name: VXWORKS_ITER40_2019102207 $ $RCSfile: sec_dcl_ipfreescale.h,v $ $Revision: 1.4 $
* $Source: /home/interpeak/CVSRoot/ipfreescale/sec4/sec_dcl_ipfreescale.h,v $
* $Author: dhessing $
* $State: Exp $ $Locker: $
*
* INTERPEAK_COPYRIGHT_STRING
******************************************************************************
*/
/*
* Ipfreescale extensions to the Freescale Netcomm SEC/DCL library.
*/
#ifndef __SEC_DCL_IPFREESCALE_H
#define __SEC_DCL_IPFREESCALE_H
#include <sec_dcl.h>
typedef enum e_JobType
{
e_DCL_JOB_RANDNUM,
e_DCL_JOB_MD5_DIGEST,
e_DCL_JOB_SHA1_DIGEST,
e_DCL_JOB_MD5_HMAC,
e_DCL_JOB_SHA1_HMAC,
e_DCL_JOB_DES_CBC_ENCRYPT,
e_DCL_JOB_DES_CBC_DECRYPT,
e_DCL_JOB_DES_ECB_ENCRYPT,
e_DCL_JOB_DES_ECB_DECRYPT,
e_DCL_JOB_TDES_CBC_ENCRYPT,
e_DCL_JOB_TDES_CBC_DECRYPT,
e_DCL_JOB_TDES_ECB_ENCRYPT,
e_DCL_JOB_TDES_ECB_DECRYPT,
e_DCL_JOB_AES_CBC_ENCRYPT,
e_DCL_JOB_AES_CBC_DECRYPT,
e_DCL_JOB_AES_ECB_ENCRYPT,
e_DCL_JOB_AES_ECB_DECRYPT,
e_DCL_JOB_RC4_ENCRYPT,
e_DCL_JOB_MODEXP,
e_DCL_JOB_CCMP_ENCRYPT,
e_DCL_JOB_IPSEC,
e_DCL_JOB_CHKSUM_CRC,
e_DCL_JOB_MOVE_DATA,
e_DCL_JOB_AESCCM_ENCRYPT,
e_DCL_JOB_AESCCM_DECRYPT
}
e_JobType;
typedef enum e_JobDirection
{
e_DCL_JOB_ENC,
e_DCL_JOB_DEC
} e_JobDirection;
/**************************************************************************//**
@Description SEC4 Scatter Gather Table Entry
*//***************************************************************************/
typedef _Packed struct {
uint32_t reserved:28; /* Always 0 */
uint64_t address:36; /* Address to buffer */
uint8_t ext:1; /* Data is another SGT */
uint8_t final:1; /* This entry is last in this SGT */
uint32_t length:30; /* Length of valid data */
uint8_t reserved2; /* Always 0 */
uint8_t bpid; /* Buffer Pool ID */
uint8_t reserved3:3; /* Always 0 */
uint16_t offset:13; /* Offset to valid data */
} _PackedType t_SGTEntry;
/**************************************************************************//**
@Description Job-Descriptor Parameters
*//***************************************************************************/
typedef struct t_JobDescParam
{
t_Handle h_Desc;
uint32_t jobTypeId; /* Job type */
uint8_t *inData; /* Input data */
uint8_t *outData; /* Output data */
uint8_t *keyData; /* Encrypt,Decrypt or Auth key*/
uint8_t *inCtxData; /* Input context data, e.g. IV data */
uint8_t *outCtxData; /* Output context data, e.g. IV data */
uint8_t *modData;
uint8_t *inMICData;
uint8_t *outMICData;
uint8_t *AADData;
uint32_t inDataBytes; /* Number of bytes in inData */
uint32_t outDataBytes; /* Number of bytes in outData */
uint32_t keyDataBytes; /* Number of bytes in keyData */
uint32_t inCtxDataBytes; /* Number of bytes in inCtxData */
uint32_t outCtxDataBytes; /* Number of bytes in outCtxData */
uint32_t modDataBytes; /* Number of bytes in modData */
uint32_t MICDataBytes; /* Number of bytes in MICData */
uint32_t AADDataBytes; /* Number of bytes in AADData */
uint32_t options; /* Operation specific options bitmask */
}
t_JobDescParam;
/**************************************************************************//**
@Description Job-Descriptor Parameters
*//***************************************************************************/
typedef struct t_IpsecJobDescParam
{
t_Handle h_Desc;
e_JobType jobTypeId; /* Job type */
e_JobDirection jobDirection; /* Encrypt/Decrypt */
e_IpsecCryptoAlg cryptoAlg; /* Crypto algorithm */
e_IpsecAuthenAlg authAlg; /* Authentication algorithm */
uint8_t *inData; /* Input data (start of ESP pkt) */
uint8_t *outData; /* Output data (start of ESP pkt) */
uint8_t *cryptoKeyData; /* Crypto key data */
uint8_t *hashKeyData; /* Hash(authentication) key data */
uint8_t *hashInData; /* Input data where hash should be performed */
uint8_t *hashOutData; /* Output data where hash output is stored */
uint8_t *inCtxData; /* Input context data e.g. IV data */
uint8_t *outCtxData; /* Output context data */
uint32_t inDataBytes;
uint32_t outDataBytes;
uint32_t cryptoKeyDataBytes;
uint32_t hashKeyDataBytes;
uint32_t hashInDataBytes;
uint32_t hashOutDataBytes;
uint32_t inCtxDataBytes;
uint32_t outCtxDataBytes;
}
t_IpsecJobDescParam;
/**************************************************************************//**
@Function SEC_DCL_InitIpsecEncapDesc
@Description Creates an IPSEC-Encapsulation Descriptor.
@Param[in] h_SecDcl - SEC DCL object.
@Param[in] p_ShrDescParam - Shared-Descriptor parameters.
@Param[in] p_EncapParam - Encapsulation parameters.
@Return Shared-Descriptor object.
*//***************************************************************************/
t_Handle SEC_DCL_InitIpsecJobDesc(t_Handle h_SecDcl,
t_IpsecJobDescParam *param);
/****************************************************************************//**
@Function InitJobDesc
@Description Creates a Job-Descriptor for random number generation.
@Param[in] h_SecDcl - SEC DCL object.
@Param[in] p_JobDescParam - Job-Descriptor parameters.
@Return Job-Descriptor object.
*//***************************************************************************/
t_Handle SEC_DCL_InitJobDesc(t_Handle h_SecDcl,
t_JobDescParam *param);
void SEC_DCL_DebugPrintDescriptor(t_Desc* jobDescHandle);
#endif /* __SEC_DCL_IPFREESCALE_H */