Main Page   Modules   Alphabetical List   Data Structures   File List   Data Fields   Globals  

IxCryptoAcc.h

Go to the documentation of this file.
00001 
00058 #ifndef IXCRYPTOACC_H
00059 #define IXCRYPTOACC_H
00060 
00061 /*
00062  * Put the user defined include files required
00063  */
00064 
00065 #include "IxOsBuffMgt.h"
00066 #include "IxTypes.h"
00067 
00068 
00069 
00070 /*
00071  * #defines and macros used in this file.
00072  */
00073 
00074 #define IX_CRYPTO_ACC_MAX_CIPHER_KEY_LENGTH 32  
00080 #define IX_CRYPTO_ACC_MAX_CIPHER_IV_LENGTH 16   
00083 #define IX_CRYPTO_ACC_MAX_AUTH_KEY_LENGTH 64    
00099 #define IX_CRYPTO_ACC_MAX_AUTH_IV_LENGTH 20     
00105 #define  IX_CRYPTO_ACC_MAX_QUEUE_DEPTH 64       
00109 #define  IX_CRYPTO_ACC_MAX_ACTIVE_SA_TUNNELS 1000  
00126 /*
00127  * Constants value for DES algorithm in unit bytes
00128  */
00129 
00130 #define IX_CRYPTO_ACC_DES_KEY_64     8  
00133 #define IX_CRYPTO_ACC_DES_BLOCK_64   8  
00136 #define IX_CRYPTO_ACC_DES_IV_64      8  
00140 #define IX_CRYPTO_ACC_3DES_KEY_192   24 
00144 /*
00145  * Constants value for AES algorithm in unit bytes
00146  */
00147 
00148 #define IX_CRYPTO_ACC_AES_KEY_128    16 
00151 #define IX_CRYPTO_ACC_AES_KEY_192    24 
00154 #define IX_CRYPTO_ACC_AES_KEY_256    32 
00157 #define IX_CRYPTO_ACC_AES_BLOCK_128  16 
00160 #define IX_CRYPTO_ACC_AES_CBC_IV_128 16 
00164 #define IX_CRYPTO_ACC_AES_CTR_IV_128 16  
00169 #define IX_CRYPTO_ACC_CCM_AAD_LEN_384   48 
00170 
00177 #define IX_CRYPTO_ACC_AES_CCM_IV_512    \
00178                   (IX_CRYPTO_ACC_AES_CTR_IV_128 + IX_CRYPTO_ACC_CCM_AAD_LEN_384)
00179 
00187 /*
00188  * Constants value for ARC4 algorithm in unit bytes
00189  */
00190 
00191 #define IX_CRYPTO_ACC_ARC4_KEY_128 16    
00194 #define IX_CRYPTO_ACC_ARC4_BLOCK_8    1  
00198 /*
00199  * Constants value for SHA1 algorithm in unit bytes
00200  */
00201 
00202 #define IX_CRYPTO_ACC_SHA1_KEY_160    20    
00205 #define IX_CRYPTO_ACC_SHA1_DIGEST_160 20    
00211 /*
00212  * Constants value for MD5 algorithm in unit bytes
00213  */
00214 
00215 #define IX_CRYPTO_ACC_MD5_KEY_128     16    
00218 #define IX_CRYPTO_ACC_MD5_DIGEST_128  16    
00223 /*
00224  * Constants value for CBC MAC algorithm in unit bytes
00225  */
00226 #define IX_CRYPTO_ACC_CCM_DIGEST_64   8     
00234 /*
00235  * Constants value for WEP CRC/IV algorithm in unit bytes
00236  */
00237 
00238 #define IX_CRYPTO_ACC_WEP_CRC_DIGEST_32 4  
00242 /*
00243  * Typedefs whose scope is limited to this file.
00244  */
00245 
00246 
00255 typedef enum
00256 {
00257     IX_CRYPTO_ACC_CFG_WEP_XSCALE_ACC_EN,  
00262     IX_CRYPTO_ACC_CFG_CRYPTO_NPE_ACC_EN,  
00269     IX_CRYPTO_ACC_CFG_WEP_NPE_ACC_EN,     
00273     IX_CRYPTO_ACC_CFG_CRYPTO_WEP_NPE_ACC_EN,
00278     IX_CRYPTO_ACC_CFG_TYPE               
00282 } IxCryptoAccCfg;
00283 
00284 
00285 
00292 typedef enum 
00293 {
00294     IX_CRYPTO_ACC_OP_ENCRYPT = 0,       
00295     IX_CRYPTO_ACC_OP_DECRYPT,           
00296     IX_CRYPTO_ACC_OP_AUTH_CALC,         
00300     IX_CRYPTO_ACC_OP_AUTH_CHECK,        
00304     IX_CRYPTO_ACC_OP_ENCRYPT_AUTH,      
00309     IX_CRYPTO_ACC_OP_AUTH_DECRYPT,      
00313     IX_CRYPTO_ACC_OP_TYPE_OF_OPERATION  
00317 } IxCryptoAccOperation;
00318 
00319 
00320 
00328 typedef enum
00329 {
00330     IX_CRYPTO_ACC_CIPHER_NULL = 0,    
00331     IX_CRYPTO_ACC_CIPHER_DES,         
00332     IX_CRYPTO_ACC_CIPHER_3DES,        
00333     IX_CRYPTO_ACC_CIPHER_AES,         
00334     IX_CRYPTO_ACC_CIPHER_ARC4,        
00335     IX_CRYPTO_ACC_CIPHER_ALGO_TYPE    
00339 } IxCryptoAccCipherAlgo;
00340 
00341 
00342 
00350 typedef enum
00351 {
00352     IX_CRYPTO_ACC_MODE_NULL = 0,    
00353     IX_CRYPTO_ACC_MODE_ECB,         
00354     IX_CRYPTO_ACC_MODE_CBC,         
00355     IX_CRYPTO_ACC_MODE_CTR,         
00359     IX_CRYPTO_ACC_MODE_CCM,         
00362     IX_CRYPTO_ACC_MODE_TYPE         
00366 } IxCryptoAccCipherMode;
00367 
00368 
00369 
00378 typedef enum
00379 {
00380     IX_CRYPTO_ACC_AUTH_NULL = 0,    
00381     IX_CRYPTO_ACC_AUTH_SHA1,        
00382     IX_CRYPTO_ACC_AUTH_MD5,         
00383     IX_CRYPTO_ACC_AUTH_CBC_MAC,     
00386     IX_CRYPTO_ACC_AUTH_WEP_CRC,     
00387     IX_CRYPTO_ACC_AUTH_TYPE         
00391 } IxCryptoAccAuthAlgo;
00392 
00393 
00394 
00402 typedef enum
00403 {
00404     IX_CRYPTO_ACC_STATUS_SUCCESS = IX_SUCCESS,      
00405     IX_CRYPTO_ACC_STATUS_FAIL = IX_FAIL,            
00406     IX_CRYPTO_ACC_STATUS_WAIT,                      
00407     IX_CRYPTO_ACC_STATUS_RETRY,                     
00408     IX_CRYPTO_ACC_STATUS_QUEUE_FULL,                
00409     IX_CRYPTO_ACC_STATUS_OPERATION_NOT_SUPPORTED,   
00410     IX_CRYPTO_ACC_STATUS_CIPHER_ALGO_NOT_SUPPORTED, 
00413     IX_CRYPTO_ACC_STATUS_CIPHER_MODE_NOT_SUPPORTED, 
00417     IX_CRYPTO_ACC_STATUS_CIPHER_INVALID_KEY_LEN,    
00421     IX_CRYPTO_ACC_STATUS_CIPHER_INVALID_IV_LEN,     
00424     IX_CRYPTO_ACC_STATUS_CIPHER_INVALID_BLOCK_LEN,  
00428     IX_CRYPTO_ACC_STATUS_AUTH_ALGO_NOT_SUPPORTED,   
00432     IX_CRYPTO_ACC_STATUS_AUTH_INVALID_DIGEST_LEN,   
00436     IX_CRYPTO_ACC_STATUS_AUTH_INVALID_KEY_LEN,      
00440     IX_CRYPTO_ACC_STATUS_AUTH_FAIL,                 
00444     IX_CRYPTO_ACC_STATUS_CRYPTO_CTX_NOT_VALID,      
00448     IX_CRYPTO_ACC_STATUS_EXCEED_MAX_TUNNELS ,       
00453     IX_CRYPTO_ACC_STATUS_AUTH_INVALID_AAD_LEN       
00457 } IxCryptoAccStatus;
00458 
00459 
00460 
00471 typedef struct
00472 {
00473     IxCryptoAccCipherAlgo cipherAlgo; 
00476     IxCryptoAccCipherMode cipherMode; 
00477     UINT32 cipherKeyLen;  
00478     union 
00479     {
00480         UINT8 cipherKey[IX_CRYPTO_ACC_MAX_CIPHER_KEY_LENGTH]; 
00483         UINT8 desKey[IX_CRYPTO_ACC_DES_KEY_64];         
00484         UINT8 tripleDesKey[IX_CRYPTO_ACC_3DES_KEY_192]; 
00485         UINT8 aesKey128[IX_CRYPTO_ACC_AES_KEY_128];     
00486         UINT8 aesKey192[IX_CRYPTO_ACC_AES_KEY_192];     
00487         UINT8 aesKey256[IX_CRYPTO_ACC_AES_KEY_256];     
00488     } key;                          
00491     UINT32 cipherBlockLen;          
00496     UINT32 cipherInitialVectorLen;  
00497 } IxCryptoAccCipherCtx;
00498 
00499 
00500 
00508 typedef struct
00509 {
00510     IxCryptoAccAuthAlgo authAlgo; 
00513     UINT32 authDigestLen; 
00514     UINT32 authKeyLen;    
00515     UINT32 aadLen;        
00522     union   
00523     {
00524         UINT8 authKey[IX_CRYPTO_ACC_MAX_AUTH_KEY_LENGTH]; 
00527         UINT8 sha1Key[IX_CRYPTO_ACC_MAX_AUTH_KEY_LENGTH]; 
00528         UINT8 md5Key[IX_CRYPTO_ACC_MAX_AUTH_KEY_LENGTH];  
00529     } key; 
00530 } IxCryptoAccAuthCtx;   
00531 
00532 
00533 
00542 typedef struct
00543 {
00544     IxCryptoAccOperation operation;     
00545     IxCryptoAccCipherCtx cipherCtx;     
00546     IxCryptoAccAuthCtx authCtx;         
00547     BOOL useDifferentSrcAndDestMbufs;   
00559 } IxCryptoAccCtx;
00560 
00561 
00562 
00598 typedef void (*IxCryptoAccRegisterCompleteCallback)(
00599     UINT32 cryptoCtxId,
00600     IX_MBUF *pMbuf, 
00601     IxCryptoAccStatus status);
00602 
00603 
00629 typedef void (*IxCryptoAccHashKeyGenCompleteCallback)(
00630     UINT32 hashKeyId,
00631     IX_MBUF *pMbufHashKey, 
00632     IxCryptoAccStatus status);
00633  
00634  
00669 typedef void (*IxCryptoAccPerformCompleteCallback)( 
00670     UINT32 cryptoCtxId,
00671     IX_MBUF *pSrcMbuf, 
00672     IX_MBUF *pDestMbuf,
00673     IxCryptoAccStatus status); 
00674 
00675 
00703 PUBLIC IxCryptoAccStatus
00704 ixCryptoAccConfig (IxCryptoAccCfg cryptoCfg);
00705 
00706 
00732 PUBLIC IxCryptoAccStatus
00733 ixCryptoAccInit (void);
00734 
00735 
00863 PUBLIC IxCryptoAccStatus 
00864 ixCryptoAccCtxRegister (
00865     IxCryptoAccCtx *pAccCtx,
00866     IX_MBUF *pMbufPrimaryChainVar,
00867     IX_MBUF *pMbufSecondaryChainVar,
00868     IxCryptoAccRegisterCompleteCallback registerCallbackFn,
00869     IxCryptoAccPerformCompleteCallback performCallbackFn,
00870     UINT32 *pCryptoCtxId);
00871 
00872 
00873 
00909 PUBLIC IxCryptoAccStatus
00910 ixCryptoAccCtxUnregister (UINT32 cryptoCtxId);
00911 
00912 
00913 
01035 PUBLIC IxCryptoAccStatus
01036 ixCryptoAccAuthCryptPerform (
01037     UINT32 cryptoCtxId,
01038     IX_MBUF *pSrcMbuf,
01039     IX_MBUF *pDestMbuf,
01040     UINT16 authStartOffset,
01041     UINT16 authDataLen,    
01042     UINT16 cryptStartOffset,   
01043     UINT16 cryptDataLen,
01044     UINT16 icvOffset,
01045     UINT8  *pIV);
01046 
01047                  
01119 PUBLIC IxCryptoAccStatus
01120 ixCryptoAccNpeWepPerform (UINT32   cryptoCtxId,
01121     IX_MBUF *pSrcMbuf,
01122     IX_MBUF *pDestMbuf,
01123     UINT16   startOffset,   
01124     UINT16   dataLen,
01125     UINT16   icvOffset,
01126     UINT8   *pKey);
01127                  
01128                  
01207 PUBLIC IxCryptoAccStatus
01208 ixCryptoAccXScaleWepPerform (
01209     UINT32   cryptoCtxId,
01210     IX_MBUF *pSrcMbuf,
01211     IX_MBUF *pDestMbuf,
01212     UINT16   startOffset,   
01213     UINT16   dataLen,
01214     UINT16   icvOffset,
01215     UINT8   *pKey);
01216 
01217 
01262 PUBLIC IxCryptoAccStatus 
01263 ixCryptoAccCtxCipherKeyUpdate (
01264     UINT32 cryptoCtxId,
01265     UINT8 *pCipherKey);
01266 
01267 
01287 PUBLIC void
01288 ixCryptoAccShow (void);
01289 
01290 
01291 
01312 PUBLIC void
01313 ixCryptoAccShowWithId (UINT32 cryptoCtxId); 
01314 
01338 PUBLIC IxCryptoAccStatus
01339 ixCryptoAccCryptoServiceStop (void);
01340 
01341 
01414 PUBLIC IxCryptoAccStatus
01415 ixCryptoAccHashKeyGenerate (
01416     IxCryptoAccAuthAlgo hashAlgo,
01417     IX_MBUF *pMbufHashKey,
01418     IxCryptoAccHashKeyGenCompleteCallback hashKeyCallbackFn,
01419     UINT16 hashKeyStartOffset,
01420     UINT16 hashKeyLen,
01421     UINT16 hashKeyDestOffset,
01422     UINT32 *pHashKeyId);
01423 
01424              
01425 #endif /* ndef IXCRYPTOACC_H */
01426 
Automatically generated from sources. © Intel Corp. 2003