⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ubscrypt.h

📁 这个linux源代码是很全面的~基本完整了~使用c编译的~由于时间问题我没有亲自测试~但就算用来做参考资料也是非常好的
💻 H
📖 第 1 页 / 共 2 页
字号:
#define PKTCONTEXT_ALIGNMENT 64 /* Boundary to which PacketContexts will be aligned. Must be power of 2 */#if (SYS_CACHELINE_SIZE >= PKTCONTEXT_ALIGNMENT)   #define PKTCONTEXT_ALIGNMENT_PAD (PKTCONTEXT_ALIGNMENT - (sizeof(PacketContextUnaligned_t) & (PKTCONTEXT_ALIGNMENT-1)))#else  #undef PKTCONTEXT_ALIGNMENT_PAD#endif/***********************************************************************//* Hardware (DMA) version of above structure that is cacheline sized   *//* (an integer multiple of SYS_CACHELINE_SIZE bytes in length).        *//* Any changes made to either structure must be mirrored in the other  *//***********************************************************************/typedef struct PacketContext_s {#ifdef UBSEC_582x_CLASS_DEVICE#if (UBS_CRYPTONET_ATTRIBUTE == UBS_LITTLE_ENDIAN)  VOLATILE unsigned short cmd_structure_length;  VOLATILE unsigned short operation_type; #else  VOLATILE unsigned short operation_type;   VOLATILE unsigned short cmd_structure_length;#endif /* UBS_CRYPTONET_ATTRIBUTE conditional */#endif /* 582x conditional */  VOLATILE CryptoContext_t Context;  VOLATILE UBS_UINT32  PhysicalAddress;#if (SYS_CACHELINE_SIZE >= PKTCONTEXT_ALIGNMENT)   /***********************************************************************/  /**** If PacketContextUnaligned_t is cacheline sized, the following ****/  /**** pad array will have a subscript of zero. Under this condition ****/  /**** the following line should be commented out.                   ****/   unsigned char pad[PKTCONTEXT_ALIGNMENT_PAD];                        /***/  /***********************************************************************/#endif} PacketContext_t,*PacketContext_pt;/* Size of command fields. */#define CIPHER_CONTEXT_SIZE (sizeof(CipherContext_t)+4) #define SSLMAC_CONTEXT_SIZE (sizeof(SSL_MACContext_t)+4)#define SSLCRYPTO_CONTEXT_SIZE (sizeof(SSL_CryptoContext_t)+4) #define TLSHMAC_CONTEXT_SIZE (sizeof(TLS_HMACContext_t)+4) #define ARC4_CONTEXT_SIZE (sizeof(ARC4_CryptoContext_t)+4)#define HASH_CONTEXT_SIZE (sizeof(Hash_Context_t)+4)/* * Crypto operation types. *//* #ifdef UBS_LITTLE_ENDIAN */#if (UBS_CPU_ATTRIBUTE == UBS_CRYPTONET_ATTRIBUTE)#define OPERATION_IPSEC      0x0000#define OPERATION_SSL_HMAC   0x0001#define OPERATION_SSL_MAC    0x0001#define OPERATION_TLS_HMAC   0x0002#define OPERATION_SSL_CRYPTO 0x0003#define OPERATION_ARC4       0x0004#define OPERATION_HASH       0x0005#else#define OPERATION_IPSEC      0x0000#define OPERATION_SSL_HMAC   0x0100#define OPERATION_SSL_MAC    0x0100#define OPERATION_TLS_HMAC   0x0200#define OPERATION_SSL_CRYPTO 0x0300#define OPERATION_ARC4       0x0400#define OPERATION_HASH       0x0500#endif#define NULL_PACKET_CONTEXT (PacketContext_pt) 0/*-------------------------------------------------------------------------- * Data Buffer Chain element * *	An element in the linked list of data buffers that makes up a  *	Packet * *	DataAddress				pointer to this buffer's data *	pNext					pointer to the next element *	DataLength				size in bytes of this element *	Reserved				reserved */typedef struct DataBufChain_s	{  VOLATILE UBS_UINT32 	DataAddress;           /* Physical address. */  VOLATILE UBS_UINT32	pNext;  /* Physical address. */#if (UBS_CRYPTONET_ATTRIBUTE == UBS_LITTLE_ENDIAN)  VOLATILE unsigned short  DataLength;  VOLATILE unsigned short  Reserved;#else  VOLATILE unsigned short  Reserved;  VOLATILE unsigned short  DataLength;#endif /* UBS_CRYPTONET_ATTRIBUTE conditional */} DataBufChain_t, *DataBufChain_pt;/* This is the same structure as above but with   a physical address location for efficiency */typedef struct DataBufChainList_s	{  VOLATILE UBS_UINT32 	DataAddress;           /* Physical address. */  VOLATILE UBS_UINT32	pNext;  /* Physical address. */#if (UBS_CRYPTONET_ATTRIBUTE == UBS_LITTLE_ENDIAN)  VOLATILE unsigned short  DataLength;  VOLATILE unsigned short  Reserved;#else  VOLATILE unsigned short  Reserved;  VOLATILE unsigned short  DataLength;#endif /* UBS_CRYPTONET_ATTRIBUTE conditional */  VOLATILE UBS_UINT32 PhysicalAddress;} DataBufChainList_t, *DataBufChainList_pt;#define NULL_DATA_CHAIN ((DataBufChainList_pt) 0)/* * Packet */typedef struct Packet_s {	 VOLATILE UBS_UINT32      PacketContextBuffer;	 VOLATILE DataBufChain_t     InputHead;#if (UBS_CRYPTONET_ATTRIBUTE == UBS_LITTLE_ENDIAN)	 VOLATILE unsigned short     Reserved;	 VOLATILE unsigned short     PacketLength;#else	 VOLATILE unsigned short     PacketLength;	 VOLATILE unsigned short     Reserved;#endif /* UBS_CRYPTONET_ATTRIBUTE conditional */	 VOLATILE DataBufChain_t     OutputHead;	} Packet_t, *Packet_pt;/* * Master Command Record structure * * 	The master command record is the structure that gets passed *	to the chip.   * *	NumberOfPackets	number of packets in this MCR *	Flags			completion status from chip *	PacketArray		array of packet structures */typedef struct CallBackInfo_s {  void(*CompletionCallback)(unsigned long Context,ubsec_Status_t Result);  unsigned long	   		 CommandContext;  }   CallBackInfo_t, *CallBackInfo_pt;#if (UBS_CPU_ATTRIBUTE == UBS_CRYPTONET_ATTRIBUTE)#define MCR_FLAG_COMPLETION    0x0001		/* bit [0] indicates done */#define MCR_INTERRUPT_SUPPRESS 0x8000		/* bit [15] suppresses interrupt for 5821 MCR */#else#define MCR_FLAG_COMPLETION 0xff00		/* bit [8] indicates done */#define MCR_INTERRUPT_SUPPRESS 0x0080		/* bit [7] suppresses interrupt for 5821 MCR */#endif/* MCR_DMA_MEM_OFFSET forces the PacketArray list to start on a 32-byte boundary.  *//* This assumes that each MCR is aligned to at least a 32-byte boundary. That      *//* means that OS_AllocateDMAMemory() must return physical memory aligned to        *//* at least 32-byte boundaries (32, 64, 96 etc.) as defined by SYS_CACHELINE_SIZE. */#if (SYS_CACHELINE_SIZE && !(SYS_CACHELINE_SIZE & 0x1F))   #define MCR_DMA_MEM_OFFSET (sizeof(Packet_t) - 2*sizeof(unsigned short)) #else  #define MCR_DMA_MEM_OFFSET 0#endiftypedef struct MasterCommandUnaligned_s {#if (SYS_CACHELINE_SIZE && !(SYS_CACHELINE_SIZE & 0x1F))   unsigned char dma_pad[MCR_DMA_MEM_OFFSET];#endif#if (UBS_CRYPTONET_ATTRIBUTE == UBS_LITTLE_ENDIAN)  VOLATILE unsigned short	NumberOfPackets;  VOLATILE unsigned short	Flags;#else  VOLATILE unsigned short	Flags;  VOLATILE unsigned short	NumberOfPackets;#endif /* UBS_CRYPTONET_ATTRIBUTE conditional */  VOLATILE Packet_t	PacketArray[MCR_MAXIMUM_PACKETS];	  /*	   * The following fields are not part of the MCR but are present here	   * for easy access. 	   */  OS_MemHandle_t MCRMemHandle; /* Memory handle to use for current MCR */  UBS_UINT32 MCRMemHandleOffset; /* Used with handle for OS_SyncTo calls */  VOLATILE CallBackInfo_t CompletionArray[MCR_MAXIMUM_PACKETS];  VOLATILE PacketContext_t  *ContextList;  VOLATILE KeyContext_t  *KeyContextList[MCR_MAXIMUM_PACKETS];  OS_MemHandle_t  ContextListHandle[MCR_MAXIMUM_PACKETS];#ifdef STATIC_F_LIST  VOLATILE DataBufChainList_t  InputFragmentList[MCR_MAXIMUM_PACKETS*UBSEC_MAX_FRAGMENTS];  VOLATILE DataBufChainList_t  OutputFragmentList[MCR_MAXIMUM_PACKETS*UBSEC_MAX_FRAGMENTS];#else  VOLATILE DataBufChainList_t  *InputFragmentList;  VOLATILE DataBufChainList_t  *OutputFragmentList;  OS_MemHandle_t InputFragmentListHandle;  OS_MemHandle_t OutputFragmentListHandle;#endif  VOLATILE UBS_UINT32 MCRPhysicalAddress;  VOLATILE UBS_UINT32 MCRState;  VOLATILE struct MasterCommand_s *pNextMCR; /* Pointer to next in list. */  UBS_UINT32 Index;} MasterCommandUnaligned_t;#define MCR_ALIGNMENT 32 /* Boundary to which MCRs will be aligned. Must be power of 2 */#if (SYS_CACHELINE_SIZE >= MCR_ALIGNMENT)   #define MCR_ALIGNMENT_PAD (MCR_ALIGNMENT - (sizeof(MasterCommandUnaligned_t) & (MCR_ALIGNMENT-1)))#else  #undef MCR_ALIGNMENT_PAD #endif/***********************************************************************//* Hardware (DMA) version of above structure that is 'alignably' sized *//* (an integer multiple of 32 bytes in length).                        *//* Any changes made to either structure must be mirrored in the other  *//***********************************************************************/typedef struct MasterCommand_s {#if (SYS_CACHELINE_SIZE && !(SYS_CACHELINE_SIZE & 0x3))   unsigned char dma_pad[MCR_DMA_MEM_OFFSET];#endif#if (UBS_CRYPTONET_ATTRIBUTE == UBS_LITTLE_ENDIAN)  VOLATILE unsigned short	NumberOfPackets;  VOLATILE unsigned short	Flags;#else  VOLATILE unsigned short	Flags;  VOLATILE unsigned short	NumberOfPackets;#endif /* UBS_CRYPTONET_ATTRIBUTE conditional */  VOLATILE Packet_t	PacketArray[MCR_MAXIMUM_PACKETS];	  /*	   * The following fields are not part of the MCR but are present here	   * for easy access. 	   */  OS_MemHandle_t MCRMemHandle; /* Memory handle to use for current MCR */  UBS_UINT32 MCRMemHandleOffset; /* Used with handle for OS_SyncTo calls */  VOLATILE CallBackInfo_t CompletionArray[MCR_MAXIMUM_PACKETS];  VOLATILE PacketContext_t  *ContextList;  VOLATILE KeyContext_t  *KeyContextList[MCR_MAXIMUM_PACKETS];  OS_MemHandle_t  ContextListHandle[MCR_MAXIMUM_PACKETS];#ifdef STATIC_F_LIST  VOLATILE DataBufChainList_t  InputFragmentList[MCR_MAXIMUM_PACKETS*UBSEC_MAX_FRAGMENTS];  VOLATILE DataBufChainList_t  OutputFragmentList[MCR_MAXIMUM_PACKETS*UBSEC_MAX_FRAGMENTS];#else  VOLATILE DataBufChainList_t  *InputFragmentList;  VOLATILE DataBufChainList_t  *OutputFragmentList;  OS_MemHandle_t InputFragmentListHandle;  OS_MemHandle_t OutputFragmentListHandle;#endif  VOLATILE UBS_UINT32 MCRPhysicalAddress;  VOLATILE UBS_UINT32 MCRState;  VOLATILE struct MasterCommand_s *pNextMCR; /* Pointer to next in list. */  UBS_UINT32 Index;#if (SYS_CACHELINE_SIZE >= MCR_ALIGNMENT)   /***********************************************************************/  /**** If sizeof(MasterCommandUnaligned_t)%32 is zero, the following ****/  /**** pad array will have a subscript of zero. Under this condition ****/  /**** the following line should be commented out.                   ****/   unsigned char pad[MCR_ALIGNMENT_PAD];                                /**/  /***********************************************************************/#endif} MasterCommand_t, *MasterCommand_pt;#define NULL_MASTER_COMMAND (MasterCommand_pt) 0#define MCR_STATE_FREE   0x00 /* Not in use. */#define MCR_STATE_ACTIVE   0x01 /* Packets in the MCR. */#define MCR_STATE_PUSHED 0x02 /* Pushed onto device. */#define UBSEC_IS_SSL_DEVICE(pDevice) ( (pDevice->DeviceID==BROADCOM_DEVICE_ID_5820) || \(pDevice->DeviceID==BROADCOM_DEVICE_ID_5821) || \(pDevice->DeviceID==BROADCOM_DEVICE_ID_5822) )#endif /*  _UBSCRYPT_H_ */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -