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

📄 ica_openssl_api.h

📁 开源的ssl算法openssl,版本0.9.8H
💻 H
字号:
#ifndef __ICA_OPENSSL_API_H__#define __ICA_OPENSSL_API_H__/** ** abstract data types for API **/#define ICA_ADAPTER_HANDLE int#if defined(linux) || defined (_AIX)#define ICA_CALL #endif#if defined(WIN32) || defined(_WIN32)#define ICA_CALL  __stdcall#endif/*------------------------------------------------* | RSA defines and typedefs                       | *------------------------------------------------*/ /* * All data elements of the RSA key are in big-endian format * Modulus-Exponent form of key * */ #define MAX_EXP_SIZE 256 #define MAX_MODULUS_SIZE 256 #define MAX_MODEXP_SIZE  (MAX_EXP_SIZE + MAX_MODULUS_SIZE) #define MAX_OPERAND_SIZE  MAX_EXP_SIZE typedef unsigned char ICA_KEY_RSA_MODEXPO_REC[MAX_MODEXP_SIZE]; /* * All data elements of the RSA key are in big-endian format * Chinese Remainder Thereom(CRT) form of key * Used only for Decrypt, the encrypt form is typically Modulus-Exponent * */ #define MAX_BP_SIZE 136 #define MAX_BQ_SIZE 128 #define MAX_NP_SIZE 136 #define MAX_NQ_SIZE 128 #define MAX_QINV_SIZE 136 #define MAX_RSACRT_SIZE (MAX_BP_SIZE+MAX_BQ_SIZE+MAX_NP_SIZE+MAX_NQ_SIZE+MAX_QINV_SIZE)#define RSA_GEN_OPERAND_MAX   256 /* bytes */typedef unsigned char ICA_KEY_RSA_CRT_REC[MAX_RSACRT_SIZE];/*------------------------------------------------* | RSA key token types                            | *------------------------------------------------*/#define  RSA_PUBLIC_MODULUS_EXPONENT        3#define  RSA_PKCS_PRIVATE_CHINESE_REMAINDER 6#define KEYTYPE_MODEXPO         1#define KEYTYPE_PKCSCRT         2/*------------------------------------------------* | RSA Key Token format                           | *------------------------------------------------*//* * NOTE:  All the fields in the ICA_KEY_RSA_MODEXPO structure *        (lengths, offsets, exponents, modulus, etc.) are *        stored in big-endian format */typedef struct _ICA_KEY_RSA_MODEXPO{   unsigned int  keyType;             /* RSA key type.               */    unsigned int  keyLength;           /* Total length of the token.  */    unsigned int  modulusBitLength;    /* Modulus n bit length.       */                                       /* -- Start of the data length.*/    unsigned int  nLength;             /* Modulus n = p * q           */    unsigned int  expLength;           /* exponent (public or private)*/                                       /*   e = 1/d * mod(p-1)(q-1)   */                                       /* -- Start of the data offsets*/    unsigned int  nOffset;             /* Modulus n .                 */    unsigned int  expOffset;           /* exponent (public or private)*/    unsigned char reserved[112];       /* reserved area               */                                       /* -- Start of the variable -- */                                       /* -- length token data.    -- */    ICA_KEY_RSA_MODEXPO_REC keyRecord;} ICA_KEY_RSA_MODEXPO;#define SZ_HEADER_MODEXPO (sizeof(ICA_KEY_RSA_MODEXPO) - sizeof(ICA_KEY_RSA_MODEXPO_REC))/* * NOTE:  All the fields in the ICA_KEY_RSA_CRT structure *        (lengths, offsets, exponents, modulus, etc.) are *        stored in big-endian format */typedef struct _ICA_KEY_RSA_CRT{   unsigned int  keyType;             /* RSA key type.               */    unsigned int  keyLength;           /* Total length of the token.  */    unsigned int  modulusBitLength;    /* Modulus n bit length.       */                                       /* -- Start of the data length.*/#if _AIX    unsigned int  nLength;             /* Modulus n = p * q           */#endif    unsigned int  pLength;             /* Prime number p .            */    unsigned int  qLength;             /* Prime number q .            */    unsigned int  dpLength;            /* dp = d * mod(p-1) .         */    unsigned int  dqLength;            /* dq = d * mod(q-1) .         */    unsigned int  qInvLength;          /* PKCS: qInv = Ap/q           */                                       /* -- Start of the data offsets*/#if _AIX    unsigned int  nOffset;             /* Modulus n .                 */#endif    unsigned int  pOffset;             /* Prime number p .            */    unsigned int  qOffset;             /* Prime number q .            */    unsigned int  dpOffset;            /* dp .                        */    unsigned int  dqOffset;            /* dq .                        */    unsigned int  qInvOffset;          /* qInv for PKCS               */#if _AIX    unsigned char reserved[80];        /* reserved area               */#else    unsigned char reserved[88];        /* reserved area               */#endif                                       /* -- Start of the variable -- */                                       /* -- length token data.    -- */    ICA_KEY_RSA_CRT_REC keyRecord;} ICA_KEY_RSA_CRT;#define SZ_HEADER_CRT (sizeof(ICA_KEY_RSA_CRT) - sizeof(ICA_KEY_RSA_CRT_REC))unsigned inticaOpenAdapter( unsigned int        adapterId,	        ICA_ADAPTER_HANDLE *pAdapterHandle );unsigned inticaCloseAdapter( ICA_ADAPTER_HANDLE adapterHandle );unsigned inticaRsaModExpo( ICA_ADAPTER_HANDLE    hAdapterHandle,	       unsigned int          inputDataLength,	       unsigned char        *pInputData,	       ICA_KEY_RSA_MODEXPO  *pKeyModExpo,	       unsigned int         *pOutputDataLength,	       unsigned char        *pOutputData );unsigned inticaRsaCrt( ICA_ADAPTER_HANDLE     hAdapterHandle,	   unsigned int           inputDataLength,	   unsigned char         *pInputData,	   ICA_KEY_RSA_CRT       *pKeyCrt,	   unsigned int          *pOutputDataLength,	   unsigned char         *pOutputData );unsigned inticaRandomNumberGenerate( ICA_ADAPTER_HANDLE  hAdapterHandle,			 unsigned int        outputDataLength,			 unsigned char      *pOutputData );/* Specific macros and definitions to not have IFDEF;s all over the   main code */#if (_AIX)static const char *IBMCA_LIBNAME = "/lib/libica.a(shr.o)";#elif (WIN32)static const char *IBMCA_LIBNAME = "cryptica";#elsestatic const char *IBMCA_LIBNAME = "ica";#endif#if (WIN32)/* The ICA_KEY_RSA_MODEXPO & ICA_KEY_RSA_CRT lengths and offsets must be in big-endian format.*/#define CORRECT_ENDIANNESS(b) (  \                             (((unsigned long) (b) & 0x000000ff) << 24) |  \                             (((unsigned long) (b) & 0x0000ff00) <<  8) |  \                             (((unsigned long) (b) & 0x00ff0000) >>  8) |  \                             (((unsigned long) (b) & 0xff000000) >> 24)    \                             )#define CRT_KEY_TYPE   RSA_PKCS_PRIVATE_CHINESE_REMAINDER#define ME_KEY_TYPE    RSA_PUBLIC_MODULUS_EXPONENT#else#define CORRECT_ENDIANNESS(b) (b)#define CRT_KEY_TYPE       KEYTYPE_PKCSCRT#define ME_KEY_TYPE        KEYTYPE_MODEXPO#endif#endif   /* __ICA_OPENSSL_API_H__ */

⌨️ 快捷键说明

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