/* ****************************************************************************** * 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 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 */