ubskey.h

来自「这个linux源代码是很全面的~基本完整了~使用c编译的~由于时间问题我没有亲自」· C头文件 代码 · 共 297 行

H
297
字号
/* * Broadcom Cryptonet Driver software is distributed as is, without any warranty * of any kind, either express or implied as further specified in the GNU Public * License. This software may be used and distributed according to the terms of * the GNU Public License. * * Cryptonet is a registered trademark of Broadcom Corporation. *//****************************************************************************** * * Copyright 2000 * Broadcom Corporation * 16215 Alton Parkway * PO Box 57013 * Irvine CA 92619-7013 * *****************************************************************************//*  * Broadcom Corporation uBSec SDK  *//* * ubskey.h: ubsec key specific context definitions. * * The BCM5805 was previously called the uB5601 * This file was previously ubs5805.h * This file contains all the structure definitions for the key functions * of the 58xx chip family *//* * Revision History: * * 09/21/2000 SOR Created from PW-5805.h * 04/03/2001 RJT Added support for CryptoNet device big-endian mode * 04/24/2001 DPA Allow for unnormalize of D-H random number (x) output for BCM5805 * 07/16/2001 RJT Added support for BCM5821 * 10/09/2001 SRM 64 bit port. */#ifndef _UBSKEY_H_#define _UBSKEY_H_/* Context Buffer Operation type */#if (UBS_CPU_ATTRIBUTE == UBS_CRYPTONET_ATTRIBUTE)#define OPERATION_DH_PUBLIC    	0x0001#define OPERATION_DH_SHARED    	0x0002#define OPERATION_RSA_PUBLIC   	0x0003#define OPERATION_RSA_PRIVATE  	0x0004#define OPERATION_DSA_SIGN   	0x0005#define OPERATION_DSA_VERIFY  	0x0006#define OPERATION_RNG_DIRECT   	0x0041#define OPERATION_RNG_SHA1     	0x0042#define OPERATION_MOD_ADD   	0x0043#define OPERATION_MOD_SUB     	0x0044#define OPERATION_MOD_MULT   	0x0045#define OPERATION_MOD_REDUCT   	0x0046#define OPERATION_MOD_EXPON   	0x0047#define OPERATION_MOD_DBLEXP  	0x0049#else#define OPERATION_DH_PUBLIC    	0x0100#define OPERATION_DH_SHARED    	0x0200#define OPERATION_RSA_PUBLIC   	0x0300#define OPERATION_RSA_PRIVATE  	0x0400#define OPERATION_DSA_SIGN   	0x0500#define OPERATION_DSA_VERIFY  	0x0600#define OPERATION_RNG_DIRECT   	0x4100#define OPERATION_RNG_SHA1     	0x4200#define OPERATION_MOD_ADD   	0x4300#define OPERATION_MOD_SUB     	0x4400#define OPERATION_MOD_MULT   	0x4500#define OPERATION_MOD_REDUCT   	0x4600#define OPERATION_MOD_EXPON   	0x4700#define OPERATION_MOD_DBLEXP  	0x4900#endif#define NULL_KEY_CONTEXT (KeyContext_pt) 0/* Context buffer *//* Different algorithms have different context command buffers */#ifdef UBSEC_582x_CLASS_DEVICE#define MAX_KEY_LENGTH_BITS 2048#else#define MAX_KEY_LENGTH_BITS 1024#endif#define MAX_KEY_LENGTH_BYTES (MAX_KEY_LENGTH_BITS/8)#define MAX_KEY_LENGTH_WORDS (MAX_KEY_LENGTH_BITS/32)/* These lengths are defined as longs. */#define MAX_MODULUS_LENGTH      MAX_KEY_LENGTH_WORDS 	#define MAX_GENERATOR_LENGTH   	MAX_KEY_LENGTH_WORDS#define MAX_EXPON_LENGTH        MAX_KEY_LENGTH_WORDS#define MAX_DP_LENGTH           MAX_KEY_LENGTH_WORDS#define MAX_DQ_LENGTH           MAX_KEY_LENGTH_WORDS#define MAX_PRIME_LENGTH        MAX_KEY_LENGTH_WORDS#define MAX_PRINV_LENGTH        MAX_KEY_LENGTH_WORDS#define MAX_PRIME_LENGTH        MAX_KEY_LENGTH_WORDS#define MAX_PRI_KEY_LENGTH      MAX_KEY_LENGTH_WORDS#define MAX_PUB_KEY_LENGTH      MAX_KEY_LENGTH_WORDS#define DH_STATIC_SEND_CONTEXT_SIZE (6*sizeof(unsigned short))/*Diffie-Hellman Send*/typedef struct DH_Send_CtxCmdBuf_struct {#if (UBS_CRYPTONET_ATTRIBUTE == UBS_LITTLE_ENDIAN)  VOLATILE unsigned short rng_enable;	       /* Private key x RNG or SW  */   VOLATILE unsigned short private_key_length;  /* Priv key x len in bits   */  VOLATILE unsigned short generator_length;    /* Generator g len in bits  */  VOLATILE unsigned short modulus_length;      /* Modulus N Len in bits    */#else  VOLATILE unsigned short private_key_length;  /* Priv key x len in bits   */  VOLATILE unsigned short rng_enable;	       /* Private key x RNG or SW  */   VOLATILE unsigned short modulus_length;      /* Modulus N Len in bits    */  VOLATILE unsigned short generator_length;    /* Generator g len in bits  */#endif /* UBS_CRYPTONET_ATTRIBUTE conditional */  VOLATILE UBS_UINT32 Ng[MAX_MODULUS_LENGTH+MAX_GENERATOR_LENGTH];			 /* Private key is stored in the data buffer */	} DH_Send_CtxCmdBuf_t, *DH_Send_CtxCmdBuf_pt;#define DH_STATIC_REC_CONTEXT_SIZE (4*sizeof(unsigned short))/*Diffie-Hellman Receive*/typedef struct DH_REC_CtxCmdBuf_struct {#if (UBS_CRYPTONET_ATTRIBUTE == UBS_LITTLE_ENDIAN)  VOLATILE unsigned short private_key_length;  /* Private key length in bits */  VOLATILE unsigned short modulus_length;      /* Modulus N Length in bits   */#else  VOLATILE unsigned short modulus_length;      /* Modulus N Length in bits   */  VOLATILE unsigned short private_key_length;  /* Private key length in bits */#endif /* UBS_CRYPTONET_ATTRIBUTE conditional */  VOLATILE UBS_UINT32 N[MAX_MODULUS_LENGTH];  /* Modulus N  */} DH_REC_CtxCmdBuf_t, *DH_REC_CtxCmdBuf_pt;/*Public Key RSA*/#define RSA_STATIC_PUBLIC_CONTEXT_SIZE (4*sizeof(unsigned short))typedef struct Pub_RSA_CtxCmdBuf_struct {#if (UBS_CRYPTONET_ATTRIBUTE == UBS_LITTLE_ENDIAN)  VOLATILE unsigned short exponent_length;   /* Exponent E length in bits */  VOLATILE unsigned short modulus_length;    /* Modulus N Length in bits  */#else  VOLATILE unsigned short modulus_length;    /* Modulus N Length in bits  */  VOLATILE unsigned short exponent_length;   /* Exponent E length in bits */#endif /* UBS_CRYPTONET_ATTRIBUTE conditional */  VOLATILE UBS_UINT32 Ng[2*MAX_MODULUS_LENGTH]; /* Modulus N and g fields */} Pub_RSA_CtxCmdBuf_t, *Pub_RSA_CtxCmdBuf_pt;/*Public Key RSA*/#define RSA_STATIC_PRIVATE_CONTEXT_SIZE  (4*sizeof(unsigned short))  typedef struct Pri_RSA_CtxCmdBuf_struct {#if (UBS_CRYPTONET_ATTRIBUTE == UBS_LITTLE_ENDIAN)  VOLATILE unsigned short q_length; 	         /* Prime q length in bits */  VOLATILE unsigned short p_length; 		 /* Prime p Length in bits */#else  VOLATILE unsigned short p_length; 		 /* Prime p Length in bits */  VOLATILE unsigned short q_length; 	         /* Prime q length in bits */#endif /* UBS_CRYPTONET_ATTRIBUTE conditional */  VOLATILE UBS_UINT32 CtxParams[MAX_PRIME_LENGTH+MAX_PRIME_LENGTH+MAX_DP_LENGTH+MAX_DQ_LENGTH+MAX_PRINV_LENGTH];} Pri_RSA_CtxCmdBuf_t, *Pri_RSA_CtxCmdBuf_pt;/*DSA signing */#define DSA_STATIC_SIGN_CONTEXT_SIZE  (6*sizeof(unsigned short))typedef struct DSA_Sign_CtxCmdBuf_struct {#if (UBS_CRYPTONET_ATTRIBUTE == UBS_LITTLE_ENDIAN)  VOLATILE unsigned short sha1_enable;	 /* hash performed by SHA1 or by SW */  VOLATILE unsigned short Reserved;	 /*                                 */  VOLATILE unsigned short rng_enable;	 /* Private key x by RNG or SW      */   VOLATILE unsigned short p_length; 	 /* Modulus p length in bits        */#else  VOLATILE unsigned short Reserved;	 /*                                 */  VOLATILE unsigned short sha1_enable;	 /* hash performed by SHA1 or by SW */  VOLATILE unsigned short p_length; 	 /* Modulus p length in bits        */  VOLATILE unsigned short rng_enable;	 /* Private key x by RNG or SW      */ #endif /* UBS_CRYPTONET_ATTRIBUTE conditional */  VOLATILE UBS_UINT32 CtxParams[4*MAX_MODULUS_LENGTH]; /* q,p,g,x */} DSA_Sign_CtxCmdBuf_t, *DSA_Sign_CtxCmdBuf_pt;/*DSA Verification */#define DSA_STATIC_VERIFY_CONTEXT_SIZE  (6*sizeof(unsigned short))typedef struct DSA_Verify_CtxCmdBuf_struct {#if (UBS_CRYPTONET_ATTRIBUTE == UBS_LITTLE_ENDIAN)  VOLATILE unsigned short sha1_enable;	 /* hash performed by SHA1 or by SW */  VOLATILE unsigned short Reserved;	 /*                                 */  VOLATILE unsigned short Reserved2;     /* not used                        */  VOLATILE unsigned short p_length; 	 /* Modulus p length in bits        */#else  VOLATILE unsigned short Reserved;	 /*                                 */  VOLATILE unsigned short sha1_enable;	 /* hash performed by SHA1 or by SW */  VOLATILE unsigned short p_length; 	 /* Modulus p length in bits        */  VOLATILE unsigned short Reserved2;     /* not used                        */#endif /* UBS_CRYPTONET_ATTRIBUTE conditional */  VOLATILE UBS_UINT32 CtxParams[4*MAX_MODULUS_LENGTH]; /* q,p,g,y */} DSA_Verify_CtxCmdBuf_t, *DSA_Verify_CtxCmdBuf_pt;/* RNG Bypass */#define RNG_STATIC_CONTEXT_SIZE 64typedef struct RNG_CtxCmdBuf_struct {  UBS_UINT32 none;} RNG_CtxCmdBuf_t, *RNG_CtxCmdBuf_pt;/* Generic math context buffer */#define MATH_STATIC_CONTEXT_SIZE  (4*sizeof(unsigned short))typedef struct Math_CtxCmdBuf_struct {#if (UBS_CRYPTONET_ATTRIBUTE == UBS_LITTLE_ENDIAN)  VOLATILE unsigned short exponent_length; /* Exponent (N-2) length in bits */                                           /* 0 when not present            */  VOLATILE unsigned short modulus_length;  /* Modulus N Length in bits 	    */#else  VOLATILE unsigned short modulus_length;  /* Modulus N Length in bits 	    */  VOLATILE unsigned short exponent_length; /* Exponent (N-2) length in bits */                                           /* 0 when not present            */#endif /* UBS_CRYPTONET_ATTRIBUTE conditional */  VOLATILE UBS_UINT32 NE[2*MAX_MODULUS_LENGTH];  /* Modulus N, N2 (dblmodexp only) */} Math_CtxCmdBuf_t, *Math_CtxCmdBuf_pt;typedef union CtxCmdBuf_u {	DH_Send_CtxCmdBuf_t		DH_Send_CtxCmdBuf;	DH_REC_CtxCmdBuf_t		DH_REC_CtxCmdBuf;	Pub_RSA_CtxCmdBuf_t		Pub_RSA_CtxCmdBuf;	Pri_RSA_CtxCmdBuf_t		Pri_RSA_CtxCmdBuf;	DSA_Sign_CtxCmdBuf_t		DSA_Sign_CtxCmdBuf;	DSA_Verify_CtxCmdBuf_t		DSA_Verify_CtxCmdBuf;        RNG_CtxCmdBuf_t		        RNG_CtxCmdBuf;	Math_CtxCmdBuf_t		Math_CtxCmdBuf;    } CtxCmdBuf_t, *CtxCmdBuf_pt ; typedef struct KeyContextUnaligned_s {#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 */  VOLATILE CtxCmdBuf_t  CtxCmdBuf;  VOLATILE UBS_UINT32  	  PhysicalAddress;  /* The following fields are used as redirection when     renormailization is required after a key operation. */  void(*UserCallback)(unsigned long Context,ubsec_Status_t Result);  unsigned long	UserContext;  long NormBits;  ubsec_LongKey_pt ResultKey[2];  ubsec_LongKey_pt ResultRNG;} KeyContextUnaligned_t;#define KEYCONTEXT_ALIGNMENT 64 /* Boundary to which KeyContexts will be aligned. Must be power of 2 */#if (SYS_CACHELINE_SIZE >= KEYCONTEXT_ALIGNMENT)   #define KEYCONTEXT_ALIGNMENT_PAD (KEYCONTEXT_ALIGNMENT - (sizeof(KeyContextUnaligned_t) & (KEYCONTEXT_ALIGNMENT-1)))#else  #undef KEYCONTEXT_ALIGNMENT_PAD#endif/***********************************************************************//* Hardware (DMA) version of above structure that is 'alignably' sized *//* (an integer multiple of KEYCONTEXT_ALIGNMENT bytes in length).      *//* Any changes made to either structure must be mirrored in the other  *//***********************************************************************/typedef struct KeyContext_s {#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 */  VOLATILE CtxCmdBuf_t  CtxCmdBuf;  VOLATILE UBS_UINT32  	  PhysicalAddress;  /* The following fields are used as redirection when     renormailization is required after a key operation. */  void(*UserCallback)(unsigned long Context,ubsec_Status_t Result);  unsigned long	UserContext;  long NormBits;  ubsec_LongKey_pt ResultKey[2];  ubsec_LongKey_pt ResultRNG;#if (SYS_CACHELINE_SIZE >= KEYCONTEXT_ALIGNMENT)   /***********************************************************************/  /**** If KeyContextUnaligned_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[KEYCONTEXT_ALIGNMENT_PAD];                        /***/  /***********************************************************************/#endif} KeyContext_t, *KeyContext_pt;#define NULL_KEY_CONTEXT (KeyContext_pt) 0#define UBSEC_IS_KEY_DEVICE(pDevice) ((UBSEC_IS_CRYPTO_DEVICEID(pDevice->DeviceID))==0) #endif /* _UBSKEY_H_ */

⌨️ 快捷键说明

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