155714Skris/* 255714Skris * This header declares the necessary definitions for using the 355714Skris * exponentiation acceleration capabilities, and rnd number generation of the 455714Skris * AEP card. 555714Skris */ 655714Skris 755714Skris/* 8280304Sjkim * 955714Skris * Some AEP defines 1055714Skris * 1155714Skris */ 1255714Skris 1355714Skris/* 1455714Skris * Successful return value 15280304Sjkim */ 1655714Skris#define AEP_R_OK 0x00000000 1755714Skris 1855714Skris/* 1955714Skris * Miscelleanous unsuccessful return value 2055714Skris */ 2155714Skris#define AEP_R_GENERAL_ERROR 0x10000001 22280304Sjkim 2355714Skris/* 2455714Skris * Insufficient host memory 2555714Skris */ 2655714Skris#define AEP_R_HOST_MEMORY 0x10000002 2755714Skris 2855714Skris#define AEP_R_FUNCTION_FAILED 0x10000006 2955714Skris 3055714Skris/* 3155714Skris * Invalid arguments in function call 3255714Skris */ 3355714Skris#define AEP_R_ARGUMENTS_BAD 0x10020000 3455714Skris 3555714Skris#define AEP_R_NO_TARGET_RESOURCES 0x10030000 3655714Skris 37280304Sjkim/* 3855714Skris * Error occuring on socket operation 3955714Skris */ 40280304Sjkim#define AEP_R_SOCKERROR 0x10000010 4155714Skris 4255714Skris/* 4355714Skris * Socket has been closed from the other end 4455714Skris */ 4555714Skris#define AEP_R_SOCKEOF 0x10000011 4655714Skris 4755714Skris/* 4855714Skris * Invalid handles 4955714Skris */ 5055714Skris#define AEP_R_CONNECTION_HANDLE_INVALID 0x100000B3 5155714Skris 52280304Sjkim#define AEP_R_TRANSACTION_HANDLE_INVALID 0x10040000 5355714Skris 5455714Skris/* 5555714Skris * Transaction has not yet returned from accelerator 5655714Skris */ 5755714Skris#define AEP_R_TRANSACTION_NOT_READY 0x00010000 5855714Skris 59280304Sjkim/* 60280304Sjkim * There is already a thread waiting on this transaction 6155714Skris */ 6255714Skris#define AEP_R_TRANSACTION_CLAIMED 0x10050000 6355714Skris 6455714Skris/* 6555714Skris * The transaction timed out 6655714Skris */ 67280304Sjkim#define AEP_R_TIMED_OUT 0x10060000 6855714Skris 6955714Skris#define AEP_R_FXN_NOT_IMPLEMENTED 0x10070000 7055714Skris 71280304Sjkim#define AEP_R_TARGET_ERROR 0x10080000 7255714Skris 7355714Skris/* 7455714Skris * Error in the AEP daemon process 75280304Sjkim */ 7655714Skris#define AEP_R_DAEMON_ERROR 0x10090000 7755714Skris 7855714Skris/* 79280304Sjkim * Invalid ctx id 8055714Skris */ 8155714Skris#define AEP_R_INVALID_CTX_ID 0x10009000 8255714Skris 83280304Sjkim#define AEP_R_NO_KEY_MANAGER 0x1000a000 8455714Skris 8555714Skris/* 8655714Skris * Error obtaining a mutex 8755714Skris */ 8855714Skris#define AEP_R_MUTEX_BAD 0x000001A0 8955714Skris 9055714Skris/* 9155714Skris * Fxn call before AEP_Initialise ot after AEP_Finialise 9255714Skris */ 9355714Skris#define AEP_R_AEPAPI_NOT_INITIALIZED 0x10000190 94280304Sjkim 95280304Sjkim/* 9655714Skris * AEP_Initialise has already been called 9755714Skris */ 98280304Sjkim#define AEP_R_AEPAPI_ALREADY_INITIALIZED 0x10000191 99280304Sjkim 10055714Skris/* 10155714Skris * Maximum number of connections to daemon reached 10255714Skris */ 10355714Skris#define AEP_R_NO_MORE_CONNECTION_HNDLS 0x10000200 10455714Skris 10555714Skris/* 10655714Skris * 10755714Skris * Some AEP Type definitions 10855714Skris * 109280304Sjkim */ 110280304Sjkim 111280304Sjkim/* an unsigned 8-bit value */ 112280304Sjkimtypedef unsigned char AEP_U8; 113280304Sjkim 114280304Sjkim/* an unsigned 8-bit character */ 115280304Sjkimtypedef char AEP_CHAR; 116280304Sjkim 117280304Sjkim/* a BYTE-sized Boolean flag */ 118280304Sjkimtypedef AEP_U8 AEP_BBOOL; 119280304Sjkim 12055714Skris/* 12155714Skris * Unsigned value, at least 16 bits long 12255714Skris */ 12355714Skristypedef unsigned short AEP_U16; 12455714Skris 125280304Sjkim/* an unsigned value, at least 32 bits long */ 12655714Skris#ifdef SIXTY_FOUR_BIT_LONG 127280304Sjkimtypedef unsigned int AEP_U32; 12855714Skris#else 12955714Skristypedef unsigned long AEP_U32; 130280304Sjkim#endif 131 132#ifdef SIXTY_FOUR_BIT_LONG 133typedef unsigned long AEP_U64; 134#else 135typedef struct { 136 unsigned long l1, l2; 137} AEP_U64; 138#endif 139 140/* at least 32 bits; each bit is a Boolean flag */ 141typedef AEP_U32 AEP_FLAGS; 142 143typedef AEP_U8 *AEP_U8_PTR; 144typedef AEP_CHAR *AEP_CHAR_PTR; 145typedef AEP_U32 *AEP_U32_PTR; 146typedef AEP_U64 *AEP_U64_PTR; 147typedef void *AEP_VOID_PTR; 148 149/* Pointer to a AEP_VOID_PTR-- i.e., pointer to pointer to void */ 150typedef AEP_VOID_PTR *AEP_VOID_PTR_PTR; 151 152/* 153 * Used to identify an AEP connection handle 154 */ 155typedef AEP_U32 AEP_CONNECTION_HNDL; 156 157/* 158 * Pointer to an AEP connection handle 159 */ 160typedef AEP_CONNECTION_HNDL *AEP_CONNECTION_HNDL_PTR; 161 162/* 163 * Used by an application (in conjunction with the apps process id) to 164 * identify an individual transaction 165 */ 166typedef AEP_U32 AEP_TRANSACTION_ID; 167 168/* 169 * Pointer to an applications transaction identifier 170 */ 171typedef AEP_TRANSACTION_ID *AEP_TRANSACTION_ID_PTR; 172 173/* 174 * Return value type 175 */ 176typedef AEP_U32 AEP_RV; 177 178#define MAX_PROCESS_CONNECTIONS 256 179 180#define RAND_BLK_SIZE 1024 181 182typedef enum { 183 NotConnected = 0, 184 Connected = 1, 185 InUse = 2 186} AEP_CONNECTION_STATE; 187 188typedef struct AEP_CONNECTION_ENTRY { 189 AEP_CONNECTION_STATE conn_state; 190 AEP_CONNECTION_HNDL conn_hndl; 191} AEP_CONNECTION_ENTRY; 192 193typedef AEP_RV t_AEP_OpenConnection(AEP_CONNECTION_HNDL_PTR phConnection); 194typedef AEP_RV t_AEP_CloseConnection(AEP_CONNECTION_HNDL hConnection); 195 196typedef AEP_RV t_AEP_ModExp(AEP_CONNECTION_HNDL hConnection, 197 AEP_VOID_PTR pA, AEP_VOID_PTR pP, 198 AEP_VOID_PTR pN, 199 AEP_VOID_PTR pResult, 200 AEP_TRANSACTION_ID *pidTransID); 201 202typedef AEP_RV t_AEP_ModExpCrt(AEP_CONNECTION_HNDL hConnection, 203 AEP_VOID_PTR pA, AEP_VOID_PTR pP, 204 AEP_VOID_PTR pQ, 205 AEP_VOID_PTR pDmp1, AEP_VOID_PTR pDmq1, 206 AEP_VOID_PTR pIqmp, 207 AEP_VOID_PTR pResult, 208 AEP_TRANSACTION_ID *pidTransID); 209 210#ifdef AEPRAND 211typedef AEP_RV t_AEP_GenRandom(AEP_CONNECTION_HNDL hConnection, 212 AEP_U32 Len, 213 AEP_U32 Type, 214 AEP_VOID_PTR pResult, 215 AEP_TRANSACTION_ID *pidTransID); 216#endif 217 218typedef AEP_RV t_AEP_Initialize(AEP_VOID_PTR pInitArgs); 219typedef AEP_RV t_AEP_Finalize(void); 220typedef AEP_RV t_AEP_SetBNCallBacks(AEP_RV (*GetBigNumSizeFunc) 221 (AEP_VOID_PTR ArbBigNum, 222 AEP_U32 *BigNumSize), 223 AEP_RV (*MakeAEPBigNumFunc) (AEP_VOID_PTR 224 ArbBigNum, 225 AEP_U32 226 BigNumSize, 227 unsigned char 228 *AEP_BigNum), 229 AEP_RV (*ConverAEPBigNumFunc) (void 230 *ArbBigNum, 231 AEP_U32 232 BigNumSize, 233 unsigned 234 char 235 *AEP_BigNum)); 236