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

IxCryptoAcc.h File Reference

Header file for the IXP425 Security component (IxCryptoAcc). More...

Go to the source code of this file.

Data Structures

struct  IxCryptoAccAuthCtx
 Structure storing authentication configuration parameters required to perform security functionality. More...

struct  IxCryptoAccCipherCtx
 Structure storing cipher configuration parameters required to perform security functionality. More...

struct  IxCryptoAccCtx
 Structure storing configuration parameters required to perform security functionality. More...


Defines

#define IX_CRYPTO_ACC_MAX_CIPHER_KEY_LENGTH
 Max length (byte) of cipher key for DES (64 bit), 3DES (192 bit), AES (128, 192 & 256 bit).

#define IX_CRYPTO_ACC_MAX_CIPHER_IV_LENGTH
 Max IV length in bytes.

#define IX_CRYPTO_ACC_MAX_AUTH_KEY_LENGTH
 Max length (byte) of authentication key for SHA1 and MD5.

#define IX_CRYPTO_ACC_MAX_AUTH_IV_LENGTH
 Max length (byte) of initial chaining variable for SHA1 (160 bit) and MD5 (128 bit).

#define IX_CRYPTO_ACC_MAX_QUEUE_DEPTH
 Max queue depth supported by the Queue Manager.

#define IX_CRYPTO_ACC_MAX_ACTIVE_SA_TUNNELS
 Maximum active tunnels supported could be changed by the client based on the application's requirements.

#define IX_CRYPTO_ACC_DES_KEY_64
 DES key length in bytes.

#define IX_CRYPTO_ACC_DES_BLOCK_64
 DES cipher block length in bytes.

#define IX_CRYPTO_ACC_DES_IV_64
 DES initialization vector length in bytes.

#define IX_CRYPTO_ACC_3DES_KEY_192
 3DES key length in bytes

#define IX_CRYPTO_ACC_AES_KEY_128
 AES-128 key length in bytes.

#define IX_CRYPTO_ACC_AES_KEY_192
 AES-192 key length in bytes.

#define IX_CRYPTO_ACC_AES_KEY_256
 AES-256 key length in bytes.

#define IX_CRYPTO_ACC_AES_BLOCK_128
 AES cipher block length in bytes.

#define IX_CRYPTO_ACC_AES_CBC_IV_128
 AES initialization vector length in bytes for CBC mode.

#define IX_CRYPTO_ACC_AES_CTR_IV_128
 AES initialization vector length in bytes for CTR mode.

#define IX_CRYPTO_ACC_CCM_AAD_LEN_384
 48 Bytes of additional authenticated data for CBC-MAC computation

#define IX_CRYPTO_ACC_AES_CCM_IV_512
 CCM Initialization vector has 2 components to it.

#define IX_CRYPTO_ACC_ARC4_KEY_128
 Key length for ARC4 algorithms.

#define IX_CRYPTO_ACC_ARC4_BLOCK_8
 ARC4 algorithm block size.

#define IX_CRYPTO_ACC_SHA1_KEY_160
 SHA1 key length in bytes.

#define IX_CRYPTO_ACC_SHA1_DIGEST_160
 SHA1 message digest length in bytes.

#define IX_CRYPTO_ACC_MD5_KEY_128
 MD5 key length in bytes.

#define IX_CRYPTO_ACC_MD5_DIGEST_128
 MD5 message digest length in bytes.

#define IX_CRYPTO_ACC_CCM_DIGEST_64
 CCM digest length in bytes.

#define IX_CRYPTO_ACC_WEP_CRC_DIGEST_32
 Digest length of WEP ICV in bytes.


Typedefs

typedef void(* IxCryptoAccRegisterCompleteCallback )(UINT32 cryptoCtxId, IX_MBUF *pMbuf, IxCryptoAccStatus status)
 Cryptographic Context registration complete callback notification.

typedef void(* IxCryptoAccHashKeyGenCompleteCallback )(UINT32 hashKeyId, IX_MBUF *pMbufHashKey, IxCryptoAccStatus status)
 Hash key generation complete callback notification.

typedef void(* IxCryptoAccPerformCompleteCallback )(UINT32 cryptoCtxId, IX_MBUF *pSrcMbuf, IX_MBUF *pDestMbuf, IxCryptoAccStatus status)
 Harware accelerator service request complete callback notification.


Enumerations

enum  IxCryptoAccCfg {
  IX_CRYPTO_ACC_CFG_WEP_XSCALE_ACC_EN,
  IX_CRYPTO_ACC_CFG_CRYPTO_NPE_ACC_EN,
  IX_CRYPTO_ACC_CFG_WEP_NPE_ACC_EN,
  IX_CRYPTO_ACC_CFG_CRYPTO_WEP_NPE_ACC_EN,
  IX_CRYPTO_ACC_CFG_TYPE
}
 Possible configuration definitions. More...

enum  IxCryptoAccOperation {
  IX_CRYPTO_ACC_OP_ENCRYPT,
  IX_CRYPTO_ACC_OP_DECRYPT,
  IX_CRYPTO_ACC_OP_AUTH_CALC,
  IX_CRYPTO_ACC_OP_AUTH_CHECK,
  IX_CRYPTO_ACC_OP_ENCRYPT_AUTH,
  IX_CRYPTO_ACC_OP_AUTH_DECRYPT,
  IX_CRYPTO_ACC_OP_TYPE_OF_OPERATION
}
 Cryptographic Operation Definitions. More...

enum  IxCryptoAccCipherAlgo {
  IX_CRYPTO_ACC_CIPHER_NULL,
  IX_CRYPTO_ACC_CIPHER_DES,
  IX_CRYPTO_ACC_CIPHER_3DES,
  IX_CRYPTO_ACC_CIPHER_AES,
  IX_CRYPTO_ACC_CIPHER_ARC4,
  IX_CRYPTO_ACC_CIPHER_ALGO_TYPE
}
 Cipher Algorithm Definitions. More...

enum  IxCryptoAccCipherMode {
  IX_CRYPTO_ACC_MODE_NULL,
  IX_CRYPTO_ACC_MODE_ECB,
  IX_CRYPTO_ACC_MODE_CBC,
  IX_CRYPTO_ACC_MODE_CTR,
  IX_CRYPTO_ACC_MODE_CCM,
  IX_CRYPTO_ACC_MODE_TYPE
}
 Cipher Mode Definitions. More...

enum  IxCryptoAccAuthAlgo {
  IX_CRYPTO_ACC_AUTH_NULL,
  IX_CRYPTO_ACC_AUTH_SHA1,
  IX_CRYPTO_ACC_AUTH_MD5,
  IX_CRYPTO_ACC_AUTH_CBC_MAC,
  IX_CRYPTO_ACC_AUTH_WEP_CRC,
  IX_CRYPTO_ACC_AUTH_TYPE
}
 Authentication Algorithm Definitions. More...

enum  IxCryptoAccStatus {
  IX_CRYPTO_ACC_STATUS_SUCCESS,
  IX_CRYPTO_ACC_STATUS_FAIL,
  IX_CRYPTO_ACC_STATUS_WAIT,
  IX_CRYPTO_ACC_STATUS_RETRY,
  IX_CRYPTO_ACC_STATUS_QUEUE_FULL,
  IX_CRYPTO_ACC_STATUS_OPERATION_NOT_SUPPORTED,
  IX_CRYPTO_ACC_STATUS_CIPHER_ALGO_NOT_SUPPORTED,
  IX_CRYPTO_ACC_STATUS_CIPHER_MODE_NOT_SUPPORTED,
  IX_CRYPTO_ACC_STATUS_CIPHER_INVALID_KEY_LEN,
  IX_CRYPTO_ACC_STATUS_CIPHER_INVALID_IV_LEN,
  IX_CRYPTO_ACC_STATUS_CIPHER_INVALID_BLOCK_LEN,
  IX_CRYPTO_ACC_STATUS_AUTH_ALGO_NOT_SUPPORTED,
  IX_CRYPTO_ACC_STATUS_AUTH_INVALID_DIGEST_LEN,
  IX_CRYPTO_ACC_STATUS_AUTH_INVALID_KEY_LEN,
  IX_CRYPTO_ACC_STATUS_AUTH_FAIL,
  IX_CRYPTO_ACC_STATUS_CRYPTO_CTX_NOT_VALID,
  IX_CRYPTO_ACC_STATUS_EXCEED_MAX_TUNNELS,
  IX_CRYPTO_ACC_STATUS_AUTH_INVALID_AAD_LEN
}
 Status Definitions. More...


Functions

PUBLIC IxCryptoAccStatus ixCryptoAccConfig (IxCryptoAccCfg cryptoCfg)
 Selects which interfaces need to be initialized when crypto-access init is called.

PUBLIC IxCryptoAccStatus ixCryptoAccInit (void)
 Initialise the Security Access component.

PUBLIC IxCryptoAccStatus ixCryptoAccCtxRegister (IxCryptoAccCtx *pAccCtx, IX_MBUF *pMbufPrimaryChainVar, IX_MBUF *pMbufSecondaryChainVar, IxCryptoAccRegisterCompleteCallback registerCallbackFn, IxCryptoAccPerformCompleteCallback performCallbackFn, UINT32 *pCryptoCtxId)
 Crypto context registration. Cryptographic Context ID (cryptoCtxId) for the registered crypto context obtained from this registration request will be used in perform service requests.

PUBLIC IxCryptoAccStatus ixCryptoAccCtxUnregister (UINT32 cryptoCtxId)
 Unregister the crypto context from Cryptographic Context Database.

PUBLIC IxCryptoAccStatus ixCryptoAccAuthCryptPerform (UINT32 cryptoCtxId, IX_MBUF *pSrcMbuf, IX_MBUF *pDestMbuf, UINT16 authStartOffset, UINT16 authDataLen, UINT16 cryptStartOffset, UINT16 cryptDataLen, UINT16 icvOffset, UINT8 *pIV)
 Perform Authentication and Decryption/Encryption functionalities.

PUBLIC IxCryptoAccStatus ixCryptoAccNpeWepPerform (UINT32 cryptoCtxId, IX_MBUF *pSrcMbuf, IX_MBUF *pDestMbuf, UINT16 startOffset, UINT16 dataLen, UINT16 icvOffset, UINT8 *pKey)
 Function to invoke ARC4 and WEP ICV computations on NPE.

PUBLIC IxCryptoAccStatus ixCryptoAccXScaleWepPerform (UINT32 cryptoCtxId, IX_MBUF *pSrcMbuf, IX_MBUF *pDestMbuf, UINT16 startOffset, UINT16 dataLen, UINT16 icvOffset, UINT8 *pKey)
 Function to support ARC4 and WEP ICV computations on XScale.

PUBLIC IxCryptoAccStatus ixCryptoAccCtxCipherKeyUpdate (UINT32 cryptoCtxId, UINT8 *pCipherKey)
 Change keys for the specified registered context.

PUBLIC void ixCryptoAccShow (void)
 API for printing statistics and status.

PUBLIC void ixCryptoAccShowWithId (UINT32 cryptoCtxId)
 API for printing statistic and status.

PUBLIC IxCryptoAccStatus ixCryptoAccCryptoServiceStop (void)
 Function to stop the crypto services.

PUBLIC IxCryptoAccStatus ixCryptoAccHashKeyGenerate (IxCryptoAccAuthAlgo hashAlgo, IX_MBUF *pMbufHashKey, IxCryptoAccHashKeyGenCompleteCallback hashKeyCallbackFn, UINT16 hashKeyStartOffset, UINT16 hashKeyLen, UINT16 hashKeyDestOffset, UINT32 *pHashKeyId)
 This function is used to generate authentication key needed in HMAC authentication if the authentication key is greater than 64 bytes. New authentication key of L bytes size will be generated in this function (L = 20 for SHA1, L = 16 for MD5). Please refer to RFC2104 for more details on the key size. The authentication key is padded (extended) so that its length (in bits) is congruent to 448, modulo 512 (please refer to RFC1321). This function has been extended to become a generic hashing function other than above mentioned functionality. It could be used to hash any key size or data that are greater than 0 and less than 65399 bytes.


Detailed Description

Header file for the IXP425 Security component (IxCryptoAcc).

Date:
2-OCT-2002

Version:
Revision
1.24
-- Intel Copyright Notice --
Copyright 2002-2003 Intel Corporation All Rights Reserved.
The source code contained or described herein and all documents related to the source code ("Material") are owned by Intel Corporation or its suppliers or licensors. Title to the Material remains with Intel Corporation or its suppliers and licensors.
The Material is protected by worldwide copyright and trade secret laws and treaty provisions. No part of the Material may be used, copied, reproduced, modified, published, uploaded, posted, transmitted, distributed, or disclosed in any way except in accordance with the applicable license agreement .
No license under any patent, copyright, trade secret or other intellectual property right is granted to or conferred upon you by disclosure or delivery of the Materials, either expressly, by implication, inducement, estoppel, except in accordance with the applicable license agreement.
Unless otherwise agreed by Intel in writing, you may not remove or alter this notice or any other notice embedded in Materials by Intel or Intel's suppliers or licensors in any way.
For further details, please see the file README.TXT distributed with this software.
-- End Intel Copyright Notice --

Definition in file IxCryptoAcc.h.

Automatically generated from sources. © Intel Corp. 2003