2175 lines
48 KiB
C
2175 lines
48 KiB
C
/* ipfreescale.h - implementation of hardware cryptographic support for Freescale SEC 2 processor
|
|
*
|
|
*/
|
|
/*
|
|
******************************************************************************
|
|
* INTERPEAK API HEADER FILE
|
|
*
|
|
* Document no: @(#) $Name: VXWORKS_ITER40_2019102207 $ $RCSfile: ipfreescale.h,v $ $Revision: 1.23.28.1 $
|
|
* $Source: /home/interpeak/CVSRoot/ipfreescale/include/ipfreescale.h,v $
|
|
* $Author: svc-cmnet $ $Date: 2013-03-13 07:45:24 $
|
|
* $State: Exp $ $Locker: $
|
|
*
|
|
* INTERPEAK_COPYRIGHT_STRING
|
|
* Design and implementation by Markus Carlstedt <markus@interpeak.se>
|
|
******************************************************************************
|
|
*/
|
|
#ifndef IPFREESCALE_H
|
|
#define IPFREESCALE_H
|
|
|
|
/*
|
|
****************************************************************************
|
|
* 1 DESCRIPTION
|
|
****************************************************************************
|
|
*/
|
|
/*
|
|
* DESCRIPTION
|
|
* This library provides an implementation of a cryptographic engine for the
|
|
* Freescale SEC 2 and SEC 4 processor,
|
|
* for use with Wind River Cryptography Libraries.
|
|
*/
|
|
/*
|
|
****************************************************************************
|
|
* 2 CONFIGURATION
|
|
****************************************************************************
|
|
*/
|
|
|
|
#include "ipfreescale_config.h"
|
|
|
|
/*
|
|
****************************************************************************
|
|
* 3 INCLUDE FILES
|
|
****************************************************************************
|
|
*/
|
|
|
|
#include <ipcom_type.h>
|
|
#include <ipcom_cstyle.h>
|
|
#include <iphwcrypto.h>
|
|
|
|
#if defined (IPFREESCALE_SEC4) && defined (IPCOM_USE_FORWARDER_IPSEC)
|
|
#include <ipcom_forwarder.h>
|
|
#endif
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
/*
|
|
****************************************************************************
|
|
* 4 DEFINES
|
|
****************************************************************************
|
|
*/
|
|
|
|
/* Some functions take options to further control its operation */
|
|
/* General options */
|
|
#define IPFREESCALE_OPT_NONE (0) /* No options, use default behaviour */
|
|
#define IPFREESCALE_OPT_INPUTDATA_IS_SGT (1 << 0) /* Input data is a scatter gather table
|
|
* Associated length is length of actual data */
|
|
#define IPFREESCALE_OPT_INPUTDATA_IS_HW_SGT (1 << 1) /* Input data is a HW specific scatter gather table
|
|
* Associated length is length of actual data */
|
|
#define IPFREESCALE_OPT_OUTPUTDATA_IS_SGT (1 << 2) /* Output data is a scatter gather table
|
|
* Associated length is length of actual data */
|
|
#define IPFREESCALE_OPT_OUTPUTDATA_IS_HW_SGT (1 << 3) /* Output data is a HW specific scatter gather table
|
|
* Associated length is length of actual data */
|
|
|
|
/* CRC checksum generation options */
|
|
#define IPFREESCALE_OPT_CRC_IEEE802 (1 << 16) /* Do bit and byte swapping and
|
|
complement according to IEEE 802 */
|
|
#define IPFREESCALE_OPT_CRC_IETF3385 (1 << 17) /* Do bit and byte swapping and
|
|
complement according to IETF 3385 */
|
|
#define IPFREESCALE_OPT_CRC_DIS (1 << 18) /* Don't swap input data bits */
|
|
#define IPFREESCALE_OPT_CRC_DOS (1 << 19) /* Don't swap output data bits */
|
|
#define IPFREESCALE_OPT_CRC_DOC (1 << 20) /* Don't complement output data */
|
|
/* AES CCM options */
|
|
#define IPFREESCALE_OPT_AESCCM_ICV (1 << 16) /* Do integrity check verification during decrypt */
|
|
|
|
/* CRC checksum generation defines */
|
|
#define IPFREESCALE_CRC32_POLY_IEEE802 (0x04c11db7) /* Polynomial according to IEEE 802 */
|
|
#define IPFREESCALE_CRC32_POLY_IETF3385 (0x1EDC6F41) /* Polynomial according to IETF 3385 */
|
|
#define IPFREESCALE_CRC_INCTX_DFLT (0xFFFFFFFF)
|
|
|
|
|
|
/*
|
|
*===========================================================================
|
|
* IPFREESCALE_RELEASE
|
|
*===========================================================================
|
|
* IPFREESCALE release version.
|
|
*/
|
|
#define IPFREESCALE_RELEASE 60600
|
|
|
|
|
|
/*
|
|
****************************************************************************
|
|
* 5 TYPES
|
|
****************************************************************************
|
|
*/
|
|
|
|
/*
|
|
* A scatter gather table is an array of Ipfreescale_sgt_entry. It may be used
|
|
* for some funtions to provide scattered input data.
|
|
* The last entry must have the final field set.
|
|
* */
|
|
IP_PUBLIC typedef struct
|
|
{
|
|
void *addr; /* Address of buffer holding the data */
|
|
Ip_u16 offset; /* Offset in bytes to valid data */
|
|
Ip_u16 length; /* Length of valid data in bytes */
|
|
Ip_bool final; /* IP_TRUE if this is the last entry in the table */
|
|
} Ipfreescale_sgt_entry;
|
|
|
|
/*
|
|
****************************************************************************
|
|
* 6 FUNCTIONS
|
|
****************************************************************************
|
|
*/
|
|
|
|
/*******************************************************************************
|
|
*
|
|
* ipfreescale_async_done_cbf_register - Register async job done call back routine
|
|
*
|
|
* This routine registers the call back routine for successfull completed non-IPsec
|
|
* asynchronous jobs. It must be called before submitting an asynchronous job.
|
|
* The call back routine need o have a (void *) handle as input parameter to
|
|
* identify the completed job.
|
|
*
|
|
* Parameters:
|
|
* \is
|
|
* \i <cbf>
|
|
* Pointer to call back function.
|
|
* \ie
|
|
*
|
|
* RETURNS: 1 = ok
|
|
*
|
|
* ERRNO
|
|
* \&N/A
|
|
*
|
|
*/
|
|
IP_PUBLIC int ipfreescale_async_done_cbf_register
|
|
(
|
|
void (*cbf)(void *)
|
|
);
|
|
|
|
/*******************************************************************************
|
|
*
|
|
* ipfreescale_async_error_cbf_register - Register async job error call back routine
|
|
*
|
|
* This routine registers the call back routine for completed non-IPsec asynchronous
|
|
* jobs with errors. It must be called before submitting an asynchronous job.
|
|
* The call back routine need o have a (void *) handle to identify the completed job
|
|
* and an (int) status as input parameters.
|
|
*
|
|
* Parameters:
|
|
* \is
|
|
* \i <cbf>
|
|
* Pointer to call back function.
|
|
* \ie
|
|
*
|
|
* RETURNS: 1 = ok
|
|
*
|
|
* ERRNO
|
|
* \&N/A
|
|
*
|
|
*/
|
|
IP_PUBLIC int ipfreescale_async_error_cbf_register
|
|
(
|
|
void (*cbf)(void *, int)
|
|
);
|
|
|
|
|
|
/* MD5 digest functions */
|
|
/*******************************************************************************
|
|
*
|
|
* ipfreescale_md5_digest - Calculate message digest using the MD5 algorithm.
|
|
*
|
|
* This routine calculates a message digest using the MD5 algorithm.
|
|
*
|
|
* Parameters:
|
|
* \is
|
|
* \i <data>
|
|
* Pointer to buffer with the data to hash.
|
|
*
|
|
* \i <length>
|
|
* Length of data in bytes.
|
|
*
|
|
* \i <digest>
|
|
* Pointer to buffer for the digest (16 bytes).
|
|
* \ie
|
|
*
|
|
* RETURNS: -1 = error, 0 = timeout,
|
|
* 1 = ok
|
|
*
|
|
* ERRNO
|
|
* \&N/A
|
|
*
|
|
*/
|
|
IP_PUBLIC int ipfreescale_md5_digest
|
|
(
|
|
Ip_u8 *data,
|
|
Ip_u32 length,
|
|
Ip_u8 *digest
|
|
);
|
|
|
|
/*******************************************************************************
|
|
*
|
|
* ipfreescale_md5_hmac - Calculate HMAC using the MD5 algorithm.
|
|
*
|
|
* This routine calculates a HMAC using the MD5 algorithm.
|
|
*
|
|
* Parameters:
|
|
* \is
|
|
* \i <data>
|
|
* Pointer to buffer with the data to hash.
|
|
*
|
|
* \i <length>
|
|
* Length of data in bytes.
|
|
*
|
|
* \i <key>
|
|
* Pointer to buffer with the key.
|
|
*
|
|
* \i <keylength>
|
|
* Length of key in bytes.
|
|
*
|
|
* \i <hmac>
|
|
* Pointer to buffer for the hmac (16 bytes).
|
|
* \ie
|
|
*
|
|
* RETURNS: -1 = error, 0 = timeout,
|
|
* 1 = ok
|
|
*
|
|
* ERRNO
|
|
* \&N/A
|
|
*
|
|
*/
|
|
IP_PUBLIC int ipfreescale_md5_hmac
|
|
(
|
|
Ip_u8 *data,
|
|
Ip_u32 length,
|
|
Ip_u8 *key,
|
|
Ip_u32 keylength,
|
|
Ip_u8 *hmac
|
|
);
|
|
|
|
/*******************************************************************************
|
|
*
|
|
* ipfreescale_md5_digest_init - initialize MD5 message digest context
|
|
*
|
|
* This routine initializes an MD5 message context.
|
|
*
|
|
* Parameters:
|
|
* \is
|
|
* \i <ctx>
|
|
* Pointer to the context.
|
|
* \ie
|
|
*
|
|
* RETURNS: 1 = ok
|
|
*
|
|
* ERRNO
|
|
* \&N/A
|
|
*
|
|
*/
|
|
IP_PUBLIC int ipfreescale_md5_digest_init
|
|
(
|
|
void *ctx
|
|
);
|
|
|
|
/*******************************************************************************
|
|
*
|
|
* ipfreescale_md5_digest_update - update MD5 message digest context
|
|
*
|
|
* This routine updates an MD5 message context.
|
|
*
|
|
* Parameters:
|
|
* \is
|
|
* \i <ctx>
|
|
* Pointer to the context.
|
|
*
|
|
* \i <data>
|
|
* Pointer to buffer with the data to hash.
|
|
*
|
|
* \i <length>
|
|
* Length of data in bytes.
|
|
* \ie
|
|
*
|
|
* RETURNS: -1 = error, 1 = ok
|
|
*
|
|
* ERRNO
|
|
* \&N/A
|
|
*
|
|
*/
|
|
IP_PUBLIC int ipfreescale_md5_digest_update
|
|
(
|
|
void *ctx,
|
|
IP_CONST Ip_u8 *data,
|
|
Ip_u32 length
|
|
);
|
|
|
|
/*******************************************************************************
|
|
*
|
|
* ipfreescale_md5_digest_final - finalize MD5 message digest context
|
|
*
|
|
* This routine finalizes an MD5 message digest context.
|
|
*
|
|
* Parameters:
|
|
* \is
|
|
* \i <ctx>
|
|
* Pointer to the context.
|
|
*
|
|
* \i <digest>
|
|
* Pointer to buffer for the digest (16 bytes).
|
|
* \ie
|
|
*
|
|
* RETURNS: -1 = error, 0 = timeout,
|
|
* 1 = ok
|
|
*
|
|
* ERRNO
|
|
* \&N/A
|
|
*
|
|
*/
|
|
IP_PUBLIC int ipfreescale_md5_digest_final
|
|
(
|
|
void *ctx,
|
|
Ip_u8 *digest
|
|
);
|
|
|
|
/* SHA1 digest functions */
|
|
/*******************************************************************************
|
|
*
|
|
* ipfreescale_sha1_digest - calculate message digest using the SHA1 algorithm
|
|
*
|
|
* This routine calculates a message digest using the SHA1 algorithm.
|
|
*
|
|
* Parameters:
|
|
* \is
|
|
* \i <data>
|
|
* Pointer to buffer with the data to hash.
|
|
*
|
|
* \i <length>
|
|
* Length of data in bytes.
|
|
*
|
|
* \i <digest>
|
|
* Pointer to buffer for the digest (20 bytes).
|
|
* \ie
|
|
*
|
|
* RETURNS:
|
|
* -1 = error, 0 = timeout,
|
|
* 1 = ok
|
|
*
|
|
* ERRNO
|
|
* \&N/A
|
|
*
|
|
*/
|
|
IP_PUBLIC int ipfreescale_sha1_digest
|
|
(
|
|
Ip_u8 *data,
|
|
Ip_u32 length,
|
|
Ip_u8 *digest
|
|
);
|
|
|
|
|
|
/*******************************************************************************
|
|
*
|
|
* ipfreescale_sha1_hmac - Calculate HMAC using the SHA1 algorithm.
|
|
*
|
|
* This routine calculates a HMAC using the SHA1 algorithm.
|
|
*
|
|
* Parameters:
|
|
* \is
|
|
* \i <data>
|
|
* Pointer to buffer with the data to hash.
|
|
*
|
|
* \i <length>
|
|
* Length of data in bytes.
|
|
*
|
|
* \i <key>
|
|
* Pointer to buffer with the key.
|
|
*
|
|
* \i <keylength>
|
|
* Length of key in bytes.
|
|
*
|
|
* \i <hmac>
|
|
* Pointer to buffer for the hmac (20 bytes).
|
|
* \ie
|
|
*
|
|
* RETURNS: -1 = error, 0 = timeout,
|
|
* 1 = ok
|
|
*
|
|
* ERRNO
|
|
* \&N/A
|
|
*
|
|
*/
|
|
IP_PUBLIC int ipfreescale_sha1_hmac
|
|
(
|
|
Ip_u8 *data,
|
|
Ip_u32 length,
|
|
Ip_u8 *key,
|
|
Ip_u32 keylength,
|
|
Ip_u8 *hmac
|
|
);
|
|
|
|
|
|
/*******************************************************************************
|
|
*
|
|
* ipfreescale_sha1_digest_init - initialize SHA1 message digest context
|
|
*
|
|
* This routine initializes a SHA1 message digest context.
|
|
*
|
|
* Parameters:
|
|
* \is
|
|
* \i <ctx>
|
|
* Pointer to the context.
|
|
* \ie
|
|
*
|
|
* RETURNS:
|
|
* 1 = ok
|
|
*
|
|
* ERRNO
|
|
* \&N/A
|
|
*
|
|
*/
|
|
IP_PUBLIC int ipfreescale_sha1_digest_init
|
|
(
|
|
void *ctx
|
|
);
|
|
|
|
/*******************************************************************************
|
|
*
|
|
* ipfreescale_sha1_digest_update - update SHA1 message digest context
|
|
*
|
|
* This routine updates a SHA1 message digest context.
|
|
*
|
|
* Parameters:
|
|
* \is
|
|
* \i <ctx>
|
|
* Pointer to the context.
|
|
*
|
|
* \i <data>
|
|
* Pointer to buffer with the data to hash.
|
|
*
|
|
* \i <length>
|
|
* Length of data in bytes.
|
|
* \ie
|
|
*
|
|
* RETURNS:
|
|
* -1 = error, 1 = ok
|
|
*
|
|
* ERRNO
|
|
* \&N/A
|
|
*
|
|
*/
|
|
IP_PUBLIC int ipfreescale_sha1_digest_update
|
|
(
|
|
void *ctx,
|
|
IP_CONST Ip_u8 *data,
|
|
Ip_u32 length
|
|
);
|
|
|
|
/*******************************************************************************
|
|
*
|
|
* ipfreescale_sha1_digest_final - Finalize SHA1 message digest context
|
|
*
|
|
* This routine finalizes a SHA1 message digest context.
|
|
*
|
|
* Parameters:
|
|
* \is
|
|
* \i <ctx>
|
|
* Pointer to the context.
|
|
*
|
|
* \i <digest>
|
|
* Pointer to buffer for the digest (20 bytes).
|
|
* \ie
|
|
*
|
|
* RETURNS:
|
|
* -1 = error, 0 = timeout,
|
|
* 1 = ok
|
|
*
|
|
* ERRNO
|
|
* \&N/A
|
|
*
|
|
*/
|
|
IP_PUBLIC int ipfreescale_sha1_digest_final
|
|
(
|
|
void *ctx,
|
|
Ip_u8 *digest
|
|
);
|
|
|
|
/*******************************************************************************
|
|
*
|
|
* ipfreescale_digest_copy - copy message digest context
|
|
*
|
|
* This routine copies a message digest context.
|
|
*
|
|
* Parameters:
|
|
* \is
|
|
* \i <ctx_to>
|
|
* Pointer to the destination context.
|
|
*
|
|
* \i <ctx_from>
|
|
* Pointer to the source context.
|
|
* \ie
|
|
*
|
|
* RETURNS:
|
|
* -1 = error, 1 = ok
|
|
*
|
|
* ERRNO
|
|
* \&N/A
|
|
*
|
|
*/
|
|
IP_PUBLIC int ipfreescale_digest_copy
|
|
(
|
|
void *ctx_to,
|
|
IP_CONST void *ctx_from
|
|
);
|
|
|
|
/*******************************************************************************
|
|
*
|
|
* ipfreescale_digest_cleanup - clean up message digest context
|
|
*
|
|
* This routine cleans up a message digest context.
|
|
*
|
|
* Parameters:
|
|
* \is
|
|
* \i <ctx>
|
|
* Pointer to the context.
|
|
* \ie
|
|
*
|
|
* RETURNS:
|
|
* 1= ok
|
|
*
|
|
* ERRNO
|
|
* \&N/A
|
|
*
|
|
*/
|
|
IP_PUBLIC int ipfreescale_digest_cleanup
|
|
(
|
|
void *ctx
|
|
);
|
|
|
|
/*******************************************************************************
|
|
*
|
|
* ipfreescale_des_cbc_cipher - encrypt or decrypt using DES-CBC cipher
|
|
*
|
|
* This routine encrypts or decrypts a data buffer using the DES-CBC cipher.
|
|
*
|
|
* Parameters:
|
|
* \is
|
|
* \i <out>
|
|
* Pointer to the result.
|
|
*
|
|
* \i <in>
|
|
* Pointer to buffer with the data to encrypt/decrypt.
|
|
*
|
|
* \i <length>
|
|
* Length of data in bytes.
|
|
*
|
|
* \i <key>
|
|
* Pointer to buffer with the key (8 bytes).
|
|
*
|
|
* \i <iv>
|
|
* Initialization vector (8 bytes). Updated by hardware.
|
|
*
|
|
* \i <enc>
|
|
* 1 = encryption. 0 = decryption.
|
|
* \ie
|
|
*
|
|
* RETURNS:
|
|
* -1 = error, 0 = timeout,
|
|
* 1 = ok
|
|
*
|
|
* ERRNO
|
|
* \&N/A
|
|
*
|
|
*/
|
|
IP_PUBLIC int ipfreescale_des_cbc_cipher
|
|
(
|
|
Ip_u8 *out,
|
|
IP_CONST Ip_u8 *in,
|
|
Ip_u32 length,
|
|
void *key,
|
|
Ip_u8 *iv,
|
|
int enc
|
|
);
|
|
|
|
/*******************************************************************************
|
|
*
|
|
* ipfreescale_des_ecb_cipher - encrypt or decrypt using DES-ECB cipher
|
|
*
|
|
* This routine encrypts or decrypts a data buffer using the DES-ECB cipher.
|
|
*
|
|
* Parameters:
|
|
* \is
|
|
* \i <out>
|
|
* Pointer to the result.
|
|
*
|
|
* \i <in>
|
|
* Pointer to buffer with the data to encrypt/decrypt.
|
|
*
|
|
* \i <length>
|
|
* Length of data in bytes.
|
|
*
|
|
* \i <key>
|
|
* Pointer to buffer with the key (8 bytes).
|
|
*
|
|
* \i <enc>
|
|
* 1 = encryption. 0 = decryption.
|
|
* \ie
|
|
*
|
|
* RETURNS:
|
|
* -1 = error, 0 = timeout,
|
|
* 1 = ok
|
|
*
|
|
* ERRNO
|
|
* \&N/A
|
|
*
|
|
*/
|
|
IP_PUBLIC int ipfreescale_des_ecb_cipher
|
|
(
|
|
Ip_u8 *out,
|
|
IP_CONST Ip_u8 *in,
|
|
Ip_u32 length,
|
|
void *key,
|
|
int enc
|
|
);
|
|
|
|
/*******************************************************************************
|
|
*
|
|
* ipfreescale_3des_cbc_cipher - encrypt or decrypt using 3DES-CBC cipher
|
|
*
|
|
* This routine encrypts or decrypts a data buffer using the 3DES-CBC cipher.
|
|
*
|
|
* Parameters:
|
|
* \is
|
|
* \i <out>
|
|
* Pointer to the result.
|
|
*
|
|
* \i <in>
|
|
* Pointer to buffer with the data to encrypt/decrypt.
|
|
*
|
|
* \i <length>
|
|
* Length of data in bytes.
|
|
*
|
|
* \i <key>
|
|
* Pointer to buffer with the key (24 bytes).
|
|
*
|
|
* \i <iv>
|
|
* Initialization vector (8 bytes). Updated by hardware.
|
|
*
|
|
* \i <enc>
|
|
* 1 = encryption. 0 = decryption.
|
|
* \ie
|
|
*
|
|
* RETURNS:
|
|
* -1 = error, 0 = timeout,
|
|
* 1 = ok
|
|
*
|
|
* ERRNO
|
|
* \&N/A
|
|
*
|
|
*/
|
|
IP_PUBLIC int ipfreescale_3des_cbc_cipher
|
|
(
|
|
Ip_u8 *out,
|
|
IP_CONST Ip_u8 *in,
|
|
Ip_u32 length,
|
|
void *key,
|
|
Ip_u8 *iv,
|
|
int enc
|
|
);
|
|
|
|
/*******************************************************************************
|
|
*
|
|
* ipfreescale_3des_ecb_cipher - encrypt or decrypt using 3DES-ECB cipher
|
|
*
|
|
* This routine encrypts or decrypts a data buffer using the 3DES-ECB cipher.
|
|
*
|
|
* Parameters:
|
|
* \is
|
|
* \i <out>
|
|
* Pointer to the result.
|
|
*
|
|
* \i <in>
|
|
* Pointer to buffer with the data to encrypt/decrypt.
|
|
*
|
|
* \i <length>
|
|
* Length of data in bytes.
|
|
*
|
|
* \i <key>
|
|
* Pointer to buffer with the key (24 bytes).
|
|
*
|
|
* \i <enc>
|
|
* 1 = encryption. 0 = decryption.
|
|
* \ie
|
|
*
|
|
* RETURNS:
|
|
* -1 = error, 0 = timeout,
|
|
* 1 = ok
|
|
*
|
|
* ERRNO
|
|
* \&N/A
|
|
*
|
|
*/
|
|
IP_PUBLIC int ipfreescale_3des_ecb_cipher
|
|
(
|
|
Ip_u8 *out,
|
|
IP_CONST Ip_u8 *in,
|
|
Ip_u32 length,
|
|
void *key,
|
|
int enc
|
|
);
|
|
|
|
/*******************************************************************************
|
|
*
|
|
* ipfreescale_aes128_cbc_cipher - encrypt or decrypt using the AES-CBC-128 cipher
|
|
*
|
|
* This routine encrypts or decrypts a data buffer using the AES-CBC-128 cipher.
|
|
*
|
|
* Parameters:
|
|
* \is
|
|
* \i <out>
|
|
* Pointer to the result.
|
|
*
|
|
* \i <in>
|
|
* Pointer to buffer with the data to encrypt/decrypt.
|
|
*
|
|
* \i <length>
|
|
* Length of data in bytes.
|
|
*
|
|
* \i <key>
|
|
* Pointer to buffer with the key (16 bytes).
|
|
*
|
|
* \i <iv>
|
|
* Initialization vector (16 bytes). Updated by hardware.
|
|
*
|
|
* \i <enc>
|
|
* 1 = encryption. 0 = decryption.
|
|
* \ie
|
|
*
|
|
* RETURNS:
|
|
* -1 = error, 0 = timeout,
|
|
* 1 = ok
|
|
*
|
|
* ERRNO
|
|
* \&N/A
|
|
*
|
|
*/
|
|
IP_PUBLIC int ipfreescale_aes128_cbc_cipher
|
|
(
|
|
Ip_u8 *out,
|
|
IP_CONST Ip_u8 *in,
|
|
Ip_u32 length,
|
|
void *key,
|
|
Ip_u8 *iv,
|
|
int enc
|
|
);
|
|
|
|
/*******************************************************************************
|
|
*
|
|
* ipfreescale_aes128_ecb_cipher - encrypt or decrypt using the AES-ECB-128 cipher
|
|
*
|
|
* This routine encrypts or decrypts a data buffer using the AES-ECB-128 cipher.
|
|
*
|
|
* Parameters:
|
|
* \is
|
|
* \i <out>
|
|
* Pointer to the result.
|
|
*
|
|
* \i <in>
|
|
* Pointer to buffer with the data to encrypt/decrypt.
|
|
*
|
|
* \i <length>
|
|
* Length of data in bytes.
|
|
*
|
|
* \i <key>
|
|
* Pointer to buffer with the key (16 bytes).
|
|
*
|
|
* \i <enc>
|
|
* 1 = encryption. 0 = decryption.
|
|
* \ie
|
|
*
|
|
* RETURNS:
|
|
* -1 = error, 0 = timeout,
|
|
* 1 = ok
|
|
*
|
|
* ERRNO
|
|
* \&N/A
|
|
*
|
|
*/
|
|
IP_PUBLIC int ipfreescale_aes128_ecb_cipher
|
|
(
|
|
Ip_u8 *out,
|
|
IP_CONST Ip_u8 *in,
|
|
Ip_u32 length,
|
|
void *key,
|
|
int enc
|
|
);
|
|
|
|
/*******************************************************************************
|
|
*
|
|
* ipfreescale_aes192_cbc_cipher - encrypt or decrypt using the AES-CBC-192 cipher
|
|
*
|
|
* This routine encrypts or decrypts a data buffer using the AES-CBC-192 cipher.
|
|
*
|
|
* Parameters:
|
|
* \is
|
|
* \i <out>
|
|
* Pointer to the result.
|
|
*
|
|
* \i <in>
|
|
* Pointer to buffer with the data to encrypt/decrypt.
|
|
*
|
|
* \i <length>
|
|
* Length of data in bytes.
|
|
*
|
|
* \i <key>
|
|
* Pointer to buffer with the key (24 bytes).
|
|
*
|
|
* \i <iv>
|
|
* Initialization vector (24 bytes). Updated by hardware.
|
|
*
|
|
* \i <enc>
|
|
* 1 = encryption. 0 = decryption.
|
|
* \ie
|
|
*
|
|
* RETURNS:
|
|
* -1 = error, 0 = timeout,
|
|
* 1 = ok
|
|
*
|
|
* ERRNO
|
|
* \&N/A
|
|
*
|
|
*/
|
|
IP_PUBLIC int ipfreescale_aes192_cbc_cipher
|
|
(
|
|
Ip_u8 *out,
|
|
IP_CONST Ip_u8 *in,
|
|
Ip_u32 length,
|
|
void *key,
|
|
Ip_u8 *iv,
|
|
int enc
|
|
);
|
|
|
|
/*******************************************************************************
|
|
*
|
|
* ipfreescale_aes192_ecb_cipher - encrypt or decrypt using the AES-ECB-192 cipher
|
|
*
|
|
* This routine encrypts or decrypts a data buffer using the AES-ECB-192 cipher.
|
|
*
|
|
* Parameters:
|
|
* \is
|
|
* \i <out>
|
|
* Pointer to the result.
|
|
*
|
|
* \i <in>
|
|
* Pointer to buffer with the data to encrypt/decrypt.
|
|
*
|
|
* \i <length>
|
|
* Length of data in bytes.
|
|
*
|
|
* \i <key>
|
|
* Pointer to buffer with the key (24 bytes).
|
|
*
|
|
* \i <enc>
|
|
* 1 = encryption. 0 = decryption.
|
|
* \ie
|
|
*
|
|
* RETURNS:
|
|
* -1 = error, 0 = timeout,
|
|
* 1 = ok
|
|
*
|
|
* ERRNO
|
|
* \&N/A
|
|
*
|
|
*/
|
|
IP_PUBLIC int ipfreescale_aes192_ecb_cipher
|
|
(
|
|
Ip_u8 *out,
|
|
IP_CONST Ip_u8 *in,
|
|
Ip_u32 length,
|
|
void *key,
|
|
int enc
|
|
);
|
|
|
|
/*******************************************************************************
|
|
*
|
|
* ipfreescale_aes256_cbc_cipher - encrypt or decrypt using the AES-CBC-256 cipher
|
|
*
|
|
* This routine encrypts or decrypts a data buffer using the AES-CBC-256 cipher.
|
|
*
|
|
* Parameters:
|
|
* \is
|
|
* \i <out>
|
|
* Pointer to the result.
|
|
*
|
|
* \i <in>
|
|
* Pointer to buffer with the data to encrypt/decrypt.
|
|
*
|
|
* \i <length>
|
|
* Length of data in bytes.
|
|
*
|
|
* \i <key>
|
|
* Pointer to buffer with the key (32 bytes).
|
|
*
|
|
* \i <iv>
|
|
* Initialization vector (32 bytes). Updated by hardware.
|
|
*
|
|
* \i <enc>
|
|
* 1 = encryption. 0 = decryption.
|
|
* \ie
|
|
*
|
|
* RETURNS:
|
|
* -1 = error, 0 = timeout,
|
|
* 1 = ok
|
|
*
|
|
* ERRNO
|
|
* \&N/A
|
|
*
|
|
*/
|
|
IP_PUBLIC int ipfreescale_aes256_cbc_cipher
|
|
(
|
|
Ip_u8 *out,
|
|
IP_CONST Ip_u8 *in,
|
|
Ip_u32 length,
|
|
void *key,
|
|
Ip_u8 *iv,
|
|
int enc
|
|
);
|
|
|
|
/*******************************************************************************
|
|
*
|
|
* ipfreescale_aes256_ecb_cipher - encrypt or decrypt using the AES-ECB-256 cipher
|
|
*
|
|
* This routine encrypts or decrypts a data buffer using the AES-ECB-256 cipher.
|
|
*
|
|
* Parameters:
|
|
* \is
|
|
* \i <out>
|
|
* Pointer to the result.
|
|
*
|
|
* \i <in>
|
|
* Pointer to buffer with the data to encrypt/decrypt.
|
|
*
|
|
* \i <length>
|
|
* Length of data in bytes.
|
|
*
|
|
* \i <key>
|
|
* Pointer to buffer with the key (32 bytes).
|
|
*
|
|
* \i <enc>
|
|
* 1 = encryption. 0 = decryption.
|
|
* \ie
|
|
*
|
|
* RETURNS:
|
|
* -1 = error, 0 = timeout,
|
|
* 1 = ok
|
|
*
|
|
* ERRNO
|
|
* \&N/A
|
|
*
|
|
*/
|
|
IP_PUBLIC int ipfreescale_aes256_ecb_cipher
|
|
(
|
|
Ip_u8 *out,
|
|
IP_CONST Ip_u8 *in,
|
|
Ip_u32 length,
|
|
void *key,
|
|
int enc
|
|
);
|
|
|
|
/*******************************************************************************
|
|
*
|
|
* ipfreescale_rc4_cipher - RC4 stream cipher
|
|
*
|
|
* This routine performs an RC4 stream cipher.
|
|
* Provide key and output context for operation with key load and context save.
|
|
* Provide input context and output context for operation with context load and context save.
|
|
*
|
|
* Parameters:
|
|
* \is
|
|
* \i <out>
|
|
* Pointer to the result.
|
|
*
|
|
* \i <in>
|
|
* Pointer to buffer with the data to encrypt/decrypt.
|
|
*
|
|
* \i <length>
|
|
* Length of data in bytes.
|
|
*
|
|
* \i <key>
|
|
* Pointer to buffer with the key.
|
|
*
|
|
* \i <keylen>
|
|
* Length of encryption key (1-16 bytes).
|
|
*
|
|
* \i <ctxi>
|
|
* Buffer with input context (259 bytes).
|
|
*
|
|
* \i <ctxo>
|
|
* Buffer with output context (259 bytes).
|
|
* \ie
|
|
*
|
|
* RETURNS:
|
|
* -1 = error, 0 = timeout,
|
|
* 1 = ok
|
|
*
|
|
* ERRNO
|
|
* \&N/A
|
|
*
|
|
*/
|
|
IP_PUBLIC int ipfreescale_rc4_cipher
|
|
(
|
|
Ip_u8 *out,
|
|
IP_CONST Ip_u8 *in,
|
|
Ip_u32 length,
|
|
void *key,
|
|
Ip_u32 keylen,
|
|
Ip_u8 *ctxi,
|
|
Ip_u8 *ctxo
|
|
);
|
|
|
|
/*******************************************************************************
|
|
*
|
|
* ipfreescale_mod_exp - modular exponentiation
|
|
*
|
|
* This routine performs modular exponentiation. Calculates b^e mod m. The size of
|
|
* the base and exponent buffers are assumed to be of equal size as the modulus
|
|
* length and zero padded with leading zeros if necessary. The size of the result buffer
|
|
* is also equal to the modulus length and the result will be zero padded if necessary.
|
|
*
|
|
* Parameters:
|
|
* \is
|
|
* \i <out>
|
|
* Pointer to the result.
|
|
*
|
|
* \i <base>
|
|
* Pointer to buffer with the base.
|
|
*
|
|
* \i <e>
|
|
* Pointer to buffer with the exponent.
|
|
*
|
|
* \i <mod>
|
|
* Pointer to buffer with the result.
|
|
*
|
|
* \i <modlen>
|
|
* Length of modulus.
|
|
* \ie
|
|
*
|
|
* RETURNS:
|
|
* -1 = error, 0 = timeout,
|
|
* 1 = ok
|
|
*
|
|
* ERRNO
|
|
* \&N/A
|
|
*
|
|
*/
|
|
IP_PUBLIC int ipfreescale_mod_exp
|
|
(
|
|
Ip_u8 *out,
|
|
IP_CONST Ip_u8 *base,
|
|
IP_CONST Ip_u8 *e,
|
|
IP_CONST Ip_u8 *mod,
|
|
Ip_u32 modlen
|
|
);
|
|
|
|
/*******************************************************************************
|
|
*
|
|
* ipfreescale_random_gen - generate sequence of random data
|
|
*
|
|
* This routine generates a sequence of random data.
|
|
*
|
|
* Parameters:
|
|
* \is
|
|
* \i <data>
|
|
* Pointer to buffer for the generated random data.
|
|
*
|
|
* \i <length>
|
|
* Number of bytes in the sequence.
|
|
* \ie
|
|
*
|
|
* RETURNS: -1 = error,
|
|
* 0 = timeout,
|
|
* 1 = ok
|
|
*
|
|
* ERRNO
|
|
* \&N/A
|
|
*
|
|
*/
|
|
IP_PUBLIC int ipfreescale_random_gen
|
|
(
|
|
Ip_u8 *data,
|
|
Ip_u32 length
|
|
);
|
|
|
|
/*******************************************************************************
|
|
*
|
|
* ipfreescale_ccmp_encrypt - Counter mode with Cipher Block chaining
|
|
*
|
|
* This routine performs CCMP encryption. (AES-CCM according to IEEE802.11)
|
|
* Provide key and output context for operation with key load and context save.
|
|
* Provide input context for operation with context load.
|
|
*
|
|
* Parameters:
|
|
* \is
|
|
* \i <out>
|
|
* Pointer to the result.
|
|
*
|
|
* \i <in>
|
|
* Pointer to buffer with the data to encrypt.
|
|
*
|
|
* \i <length>
|
|
* Length of data in bytes.
|
|
*
|
|
* \i <mic>
|
|
* Pointer to Message Integrity Code
|
|
*
|
|
* \i <aad>
|
|
* Pointer to Additional Authentication Data
|
|
*
|
|
* \i <aadlen>
|
|
* Additional Authentication Data Length
|
|
*
|
|
* \i <key>
|
|
* Pointer to buffer with the key.
|
|
*
|
|
* \i <keylen>
|
|
* Length of encryption key.
|
|
*
|
|
* \i <ctxi>
|
|
* Buffer with input context.
|
|
* \ie
|
|
*
|
|
* RETURNS:
|
|
* -1 = error, 0 = timeout,
|
|
* 1 = ok
|
|
*
|
|
* ERRNO
|
|
* \&N/A
|
|
*
|
|
*/
|
|
IP_GLOBAL int ipfreescale_ccmp_encrypt
|
|
(
|
|
Ip_u8 *out,
|
|
IP_CONST Ip_u8 *in,
|
|
Ip_u32 length,
|
|
Ip_u8 *mic,
|
|
IP_CONST Ip_u8 *aad,
|
|
Ip_u32 aadlen,
|
|
void *key,
|
|
Ip_u32 keylen,
|
|
Ip_u8 *ctxi
|
|
);
|
|
|
|
/*******************************************************************************
|
|
*
|
|
* ipfreescale_aesccm - AES Counter mode with Cipher Block chaining
|
|
*
|
|
* This routine performs AES - CCM encryption or decryption with associated
|
|
* generation or verification of authenticity.
|
|
* Provide key and output context for operation with key load and context save.
|
|
* Provide input context for operation with context load.
|
|
* Failed integrity check during decrypt will optionally generate an error.
|
|
*
|
|
* Parameters:
|
|
* \is
|
|
* \i <out>
|
|
* Pointer to the buffer or scatter gather table (if options IPFREESCALE_OPT_OUTPUTDATA_IS_SGT or
|
|
* IPFREESCALE_OPT_OUTPUTDATA_IS_HW_SGT are set) for output data.
|
|
*
|
|
* \i <in>
|
|
* Pointer to buffer or scatter gather table (if options IPFREESCALE_OPT_INPUTDATA_IS_SGT or
|
|
* IPFREESCALE_OPT_INPUTDATA_IS_HW_SGT are set) with the input data to process.
|
|
*
|
|
* \i <length>
|
|
* Length of in data in bytes.
|
|
*
|
|
* \i <micout>
|
|
* Pointer to output Message Integrity Code
|
|
*
|
|
* \i <micin>
|
|
* Pointer to input Message Integrity Code
|
|
*
|
|
* \i <miclen>
|
|
* Length in bytes of Message Integrity Code
|
|
*
|
|
* \i <aad>
|
|
* Pointer to Additional Authentication Data
|
|
* Set to IP_NULL if there isn't any AAD.
|
|
*
|
|
* \i <aadlen>
|
|
* Additional Authentication Data Length
|
|
* Set to 0 if there isn't any AAD
|
|
*
|
|
* \i <key>
|
|
* Pointer to buffer with the key.
|
|
*
|
|
* \i <keylen>
|
|
* Length in bytes of encryption key.
|
|
*
|
|
* \i <ctxi>
|
|
* Buffer with input context.
|
|
*
|
|
* \i <enc>
|
|
* 1 for encrypt, 0 for decrypt.
|
|
*
|
|
* \i <async>
|
|
* IP_TRUE for asynchronous operation, IP_FALSE for synchronous operation
|
|
*
|
|
* \i <asynchandle>
|
|
* Handle to identify the job in case of asynchronous job. Should be set to IP_NULL
|
|
* for synchronous jobs.
|
|
*
|
|
* \i <options>
|
|
* Ored bit options to control AES CCM.
|
|
* Valid options: IPFREESCALE_OPT_NONE
|
|
* IPFREESCALE_OPT_AESCCM_ICV
|
|
* IPFREESCALE_OPT_INPUTDATA_IS_SGT
|
|
* IPFREESCALE_OPT_INPUTDATA_IS_HW_SGT
|
|
* IPFREESCALE_OPT_OUTPUTDATA_IS_SGT
|
|
* IPFREESCALE_OPT_OUTPUTDATA_IS_HW_SGT
|
|
* \ie
|
|
*
|
|
* RETURNS:
|
|
* -1 = error,
|
|
* 0 = timeout,
|
|
* 1 = ok,
|
|
* 2 = kept
|
|
*
|
|
* ERRNO
|
|
* \&N/A
|
|
*
|
|
*/
|
|
IP_GLOBAL int ipfreescale_aesccm
|
|
(
|
|
Ip_u8 *out,
|
|
IP_CONST Ip_u8 *in,
|
|
Ip_u32 length,
|
|
Ip_u8 *micout,
|
|
Ip_u8 *micin,
|
|
Ip_u32 miclen,
|
|
IP_CONST Ip_u8 *aad,
|
|
Ip_u32 aadlen,
|
|
void *key,
|
|
Ip_u32 keylen,
|
|
Ip_u8 *ctxi,
|
|
int enc,
|
|
Ip_bool async,
|
|
void * asynchandle,
|
|
Ip_u32 options);
|
|
|
|
/*******************************************************************************
|
|
*
|
|
* ipfreescale_crc - calculate the CRC checksum on data
|
|
*
|
|
* This routine generates CRC checksum on supplied data.
|
|
*
|
|
* Parameters:
|
|
* \is
|
|
* \i <polynomial>
|
|
* CRC polynomial. E.g. for IEEE802: IPFREESCALE_CRC32_POLY_IEEE802
|
|
*
|
|
* \i <indata>
|
|
* Pointer to buffer for data to generate CRC checksum from. Or pointer to
|
|
* scatter gather table if options IPFREESCALE_OPT_INPUTDATA_IS_SGT or
|
|
* IPFREESCALE_OPT_INPUTDATA_IS_HW_SGT are set.
|
|
*
|
|
* \i <length>
|
|
* Number of bytes in the sequence. If indata is a SGT, total length of valid data.
|
|
*
|
|
* \i <inctx>
|
|
* Input context data (initial CRC value).
|
|
*
|
|
* \i <async>
|
|
* IP_TRUE for asynchronous operation, IP_FALSE for synchronous operation
|
|
*
|
|
* \i <asynchandle>
|
|
* Handle to identify the job in case of asynchronous job. Should be set to IP_NULL
|
|
* for synchronous jobs.
|
|
*
|
|
* \i <options>
|
|
* Ored bit options to control CRC generation.
|
|
* Valid options: IPFREESCALE_OPT_NONE
|
|
* IPFREESCALE_OPT_INPUTDATA_IS_SGT
|
|
* IPFREESCALE_OPT_INPUTDATA_IS_HW_SGT
|
|
* IPFREESCALE_OPT_CRC_IEEE802
|
|
* IPFREESCALE_OPT_CRC_IETF3385
|
|
* IPFREESCALE_OPT_CRC_DIS
|
|
* IPFREESCALE_OPT_CRC_DOS
|
|
* IPFREESCALE_OPT_CRC_DOC
|
|
* \ie
|
|
*
|
|
* \os
|
|
* \o <crc>
|
|
* Pointer to where to store the calculated CRC.
|
|
* \oe
|
|
*
|
|
* RETURNS: -1 = error,
|
|
* 0 = timeout,
|
|
* 1 = ok,
|
|
* 2 = kept
|
|
*
|
|
* ERRNO
|
|
* \&N/A
|
|
*
|
|
*/
|
|
IP_PUBLIC int ipfreescale_crc
|
|
(
|
|
IP_CONST Ip_u8 *indata,
|
|
Ip_u32 length,
|
|
Ip_u8 *crc,
|
|
Ip_u32 polynomial,
|
|
Ip_u32 inctx,
|
|
Ip_bool async,
|
|
void * asynchandle,
|
|
Ip_u32 options
|
|
);
|
|
|
|
/*******************************************************************************
|
|
*
|
|
* ipfreescale_dma - DMA copy data using freescale engine
|
|
*
|
|
* This routine copies data using the freescale engine.
|
|
*
|
|
* Parameters:
|
|
* \is
|
|
* \i <indata>
|
|
* Pointer to buffer for data to be copied. Or pointer to
|
|
* scatter gather table if options IPFREESCALE_OPT_INPUTDATA_IS_SGT or
|
|
* IPFREESCALE_OPT_INPUTDATA_IS_HW_SGT are set.
|
|
*
|
|
* \i <length>
|
|
* Number of bytes in the sequence. If indata is a SGT, this is the total length
|
|
* of valid data.
|
|
*
|
|
* \i <async>
|
|
* IP_TRUE for asynchronous operation, IP_FALSE for synchronous operation
|
|
*
|
|
* \i <asynchandle>
|
|
* Handle to identify the job in case of asynchronous job. Should be set to IP_NULL
|
|
* for synchronous jobs.
|
|
*
|
|
* \i <options>
|
|
* Ored bit options to control CRC generation.
|
|
* Valid options: IPFREESCALE_OPT_NONE
|
|
* IPFREESCALE_OPT_INPUTDATA_IS_SGT
|
|
* IPFREESCALE_OPT_INPUTDATA_IS_HW_SGT
|
|
* IPFREESCALE_OPT_OUTPUTDATA_IS_SGT
|
|
* IPFREESCALE_OPT_OUTPUTDATA_IS_HW_SGT
|
|
* \ie
|
|
*
|
|
* \os
|
|
* \o <outdata>
|
|
* Pointer to where to copy the data. Or pointer to scatter gather table if
|
|
* options IPFREESCALE_OPT_OUTPUTDATA_IS_SGT or
|
|
* IPFREESCALE_OPT_INPUTDATA_IS_HW_SGT are set.
|
|
* \oe
|
|
*
|
|
* RETURNS: -1 = error,
|
|
* 0 = timeout,
|
|
* 1 = ok,
|
|
* 2 = kept
|
|
*
|
|
* ERRNO
|
|
* \&N/A
|
|
*
|
|
*/
|
|
IP_PUBLIC int ipfreescale_dma
|
|
(
|
|
IP_CONST Ip_u8 *indata,
|
|
Ip_u32 length,
|
|
Ip_u8 *outdata,
|
|
Ip_bool async,
|
|
void * asynchandle,
|
|
Ip_u32 options
|
|
);
|
|
|
|
/* IPSEC ESP functions */
|
|
#ifdef IPIPSEC2
|
|
IP_PUBLIC int ipfreescale_ipsec_esp_null_md5_input(Ip_u8 *data,
|
|
Ip_u32 length,
|
|
Iphwcrypto_esp_cbc_sa *sa,
|
|
Ip_u8 *digest,
|
|
Ipipsec_param *param,
|
|
Ipcom_pkt *pkt);
|
|
|
|
IP_PUBLIC int ipfreescale_ipsec_esp_null_md5_output(Ip_u8 *data,
|
|
Ip_u32 length,
|
|
Iphwcrypto_esp_cbc_sa *sa,
|
|
Ip_u8 *digest,
|
|
Ipipsec_param *param,
|
|
Ipcom_pkt *pkt);
|
|
|
|
IP_PUBLIC int ipfreescale_ipsec_esp_null_sha1_input(Ip_u8 *data,
|
|
Ip_u32 length,
|
|
Iphwcrypto_esp_cbc_sa *sa,
|
|
Ip_u8 *digest,
|
|
Ipipsec_param *param,
|
|
Ipcom_pkt *pkt);
|
|
|
|
IP_PUBLIC int ipfreescale_ipsec_esp_null_sha1_output(Ip_u8 *data,
|
|
Ip_u32 length,
|
|
Iphwcrypto_esp_cbc_sa *sa,
|
|
Ip_u8 *digest,
|
|
Ipipsec_param *param,
|
|
Ipcom_pkt *pkt);
|
|
|
|
IP_PUBLIC int ipfreescale_ipsec_esp_des_cbc_null_input(Ip_u8 *data,
|
|
Ip_u32 length,
|
|
Iphwcrypto_esp_cbc_sa *sa,
|
|
Ip_u8 *digest,
|
|
Ipipsec_param *param,
|
|
Ipcom_pkt *pkt);
|
|
|
|
IP_PUBLIC int ipfreescale_ipsec_esp_des_cbc_null_output(Ip_u8 *data,
|
|
Ip_u32 length,
|
|
Iphwcrypto_esp_cbc_sa *sa,
|
|
Ip_u8 *digest,
|
|
Ipipsec_param *param,
|
|
Ipcom_pkt *pkt);
|
|
|
|
#if defined (IPFREESCALE_SEC4) && defined (IPCOM_USE_FORWARDER_IPSEC)
|
|
IP_PUBLIC int ipfreescale_ipsec_populate_sa(Ipcom_fw_ipsec_sa_t *sa,
|
|
Ip_u16 sa_index,
|
|
int enc);
|
|
|
|
IP_PUBLIC int ipfreescale_ipsec_esp_encrypt(Ip_u16 sa_index,
|
|
Ip_u32 seq_no,
|
|
Ip_u8 *iv,
|
|
Ip_u8 *p,
|
|
Ip_u16 inOffset,
|
|
Ip_u16 pktlen,
|
|
Ip_u16 outOffset,
|
|
Ip_u8 poolId);
|
|
|
|
IP_PUBLIC int ipfreescale_ipsec_esp_decrypt(Ip_u16 sa_index,
|
|
Ip_u8 *p,
|
|
Ip_u16 inOffset,
|
|
Ip_u16 pktlen,
|
|
Ip_u16 outOffset,
|
|
Ip_u8 poolId);
|
|
|
|
IP_PUBLIC void ipfreescale_ipsec_set_enqueue_resource(void *resource);
|
|
IP_PUBLIC void ipfreescale_ipsec_set_buffer_resource(void *resource, Ip_u32 poolId);
|
|
IP_PUBLIC void ipfreescale_ipsec_set_enqueue_ix_base(Ip_u32 ixBase);
|
|
IP_PUBLIC void ipfreescale_ipsec_set_dequeue_ix(Ip_u32 ixBaseEncrypt, Ip_u32 ixBaseDecrypt);
|
|
|
|
#endif /* defined (IPFREESCALE_SEC4) && defined (IPCOM_USE_FORWARDER_IPSEC) */
|
|
|
|
/*******************************************************************************
|
|
*
|
|
* ipfreescale_ipsec_esp_des_cbc_md5_input - IPsec ESP input processing using DES-CBC-MD5
|
|
*
|
|
* This routine performs IPsec ESP input processing using DES-CBC-MD5.
|
|
*
|
|
* Parameters:
|
|
* \is
|
|
* \i <data>
|
|
* Pointer to the packet data.
|
|
*
|
|
* \i <length>
|
|
* Length of the packet.
|
|
*
|
|
* \i <sa>
|
|
* Pointer to the sa (Security Association).
|
|
*
|
|
* \i <digest>
|
|
* Pointer to the message authentication code.
|
|
*
|
|
* \i <param>
|
|
* Pointer to IPsec Parameters
|
|
*
|
|
* \i <pkt>
|
|
* Pointer to the packet structure.
|
|
* \ie
|
|
*
|
|
* RETURNS:
|
|
* -1 = error, 0 = timeout,
|
|
* 1 = ok,
|
|
* 2 = kept
|
|
*
|
|
* ERRNO
|
|
* \&N/A
|
|
*
|
|
*/
|
|
IP_PUBLIC int ipfreescale_ipsec_esp_des_cbc_md5_input
|
|
(
|
|
Ip_u8 *data,
|
|
Ip_u32 length,
|
|
Iphwcrypto_esp_cbc_sa *sa,
|
|
Ip_u8 *digest,
|
|
Ipipsec_param *param,
|
|
Ipcom_pkt *pkt
|
|
);
|
|
IP_PUBLIC int ipfreescale_ipsec_esp_des_cbc_md5_input_relocate
|
|
(
|
|
Ip_u8 *data,
|
|
Ip_u32 length,
|
|
Ip_u8 *outdata,
|
|
Iphwcrypto_esp_cbc_sa *sa,
|
|
Ip_u8 *digest,
|
|
Ipipsec_param *param,
|
|
Ipcom_pkt *pkt
|
|
);
|
|
|
|
/*******************************************************************************
|
|
*
|
|
* ipfreescale_ipsec_esp_des_cbc_md5_output - IPsec ESP output processing using DES-CBC-MD5
|
|
*
|
|
* This routine performs IPsec ESP output processing using DES-CBC-MD5.
|
|
*
|
|
* Parameters:
|
|
* \is
|
|
* \i <data>
|
|
* Pointer to the packet data.
|
|
*
|
|
* \i <length>
|
|
* Length of the packet.
|
|
*
|
|
* \i <sa>
|
|
* Pointer to the sa (Security Association).
|
|
*
|
|
* \i <digest>
|
|
* Pointer to the message authentication code.
|
|
*
|
|
* \i <param>
|
|
* Pointer to IPsec Parameters
|
|
*
|
|
* \i <pkt>
|
|
* Pointer to the packet structure.
|
|
* \ie
|
|
*
|
|
* RETURNS:
|
|
* -1 = error, 0 = timeout,
|
|
* 1 = ok,
|
|
* 2 = kept
|
|
*
|
|
* ERRNO
|
|
* \&N/A
|
|
*
|
|
*/
|
|
IP_PUBLIC int ipfreescale_ipsec_esp_des_cbc_md5_output
|
|
(
|
|
Ip_u8 *data,
|
|
Ip_u32 length,
|
|
Iphwcrypto_esp_cbc_sa *sa,
|
|
Ip_u8 *digest,
|
|
Ipipsec_param *param,
|
|
Ipcom_pkt *pkt
|
|
);
|
|
IP_PUBLIC int ipfreescale_ipsec_esp_des_cbc_md5_output_relocate
|
|
(
|
|
Ip_u8 *data,
|
|
Ip_u32 length,
|
|
Ip_u8 *outdata,
|
|
Iphwcrypto_esp_cbc_sa *sa,
|
|
Ip_u8 *digest,
|
|
Ipipsec_param *param,
|
|
Ipcom_pkt *pkt
|
|
);
|
|
|
|
/*******************************************************************************
|
|
*
|
|
* ipfreescale_ipsec_esp_des_cbc_sha1_input - IPsec ESP input processing using DES-CBC-SHA1
|
|
*
|
|
* This routine performs input processing using DES-CBC-SHA1.
|
|
*
|
|
* Parameters:
|
|
* \is
|
|
* \i <data>
|
|
* Pointer to the packet data.
|
|
*
|
|
* \i <length>
|
|
* Length of the packet.
|
|
*
|
|
* \i <sa>
|
|
* Pointer to the sa (Security Association).
|
|
*
|
|
* \i <digest>
|
|
* Pointer to the message authentication code.
|
|
*
|
|
* \i <param>
|
|
* Pointer to IPsec Parameters
|
|
*
|
|
* \i <pkt>
|
|
* Pointer to the packet structure.
|
|
* \ie
|
|
*
|
|
* RETURNS:
|
|
* -1 = error, 0 = timeout,
|
|
* 1 = ok,
|
|
* 2 = kept
|
|
*
|
|
* ERRNO
|
|
* \&N/A
|
|
*
|
|
*/
|
|
IP_PUBLIC int ipfreescale_ipsec_esp_des_cbc_sha1_input
|
|
(
|
|
Ip_u8 *data,
|
|
Ip_u32 length,
|
|
Iphwcrypto_esp_cbc_sa *sa,
|
|
Ip_u8 *digest,
|
|
Ipipsec_param *param,
|
|
Ipcom_pkt *pkt
|
|
);
|
|
IP_PUBLIC int ipfreescale_ipsec_esp_des_cbc_sha1_input_relocate
|
|
(
|
|
Ip_u8 *data,
|
|
Ip_u32 length,
|
|
Ip_u8 *outdata,
|
|
Iphwcrypto_esp_cbc_sa *sa,
|
|
Ip_u8 *digest,
|
|
Ipipsec_param *param,
|
|
Ipcom_pkt *pkt
|
|
);
|
|
|
|
|
|
/*******************************************************************************
|
|
*
|
|
* ipfreescale_ipsec_esp_des_cbc_sha1_output - IPsec ESP output processing using DES-CBC-SHA1
|
|
*
|
|
* This routine performs IPsec ESP output processing using DES-CBC-SHA1.
|
|
*
|
|
* Parameters:
|
|
* \is
|
|
* \i <data>
|
|
* Pointer to the packet data.
|
|
*
|
|
* \i <length>
|
|
* Length of the packet.
|
|
*
|
|
* \i <sa>
|
|
* Pointer to the sa (Security Association).
|
|
*
|
|
* \i <digest>
|
|
* Pointer to the message authentication code.
|
|
*
|
|
* \i <param>
|
|
* Pointer to IPsec Parameters
|
|
*
|
|
* \i <pkt>
|
|
* Pointer to the packet structure.
|
|
* \ie
|
|
*
|
|
* RETURNS:
|
|
* -1 = error, 0 = timeout,
|
|
* 1 = ok,
|
|
* 2= kept
|
|
*
|
|
* ERRNO
|
|
* \&N/A
|
|
*
|
|
*/
|
|
IP_PUBLIC int ipfreescale_ipsec_esp_des_cbc_sha1_output
|
|
(
|
|
Ip_u8 *data,
|
|
Ip_u32 length,
|
|
Iphwcrypto_esp_cbc_sa *sa,
|
|
Ip_u8 *digest,
|
|
Ipipsec_param *param,
|
|
Ipcom_pkt *pkt
|
|
);
|
|
IP_PUBLIC int ipfreescale_ipsec_esp_des_cbc_sha1_output_relocate
|
|
(
|
|
Ip_u8 *data,
|
|
Ip_u32 length,
|
|
Ip_u8 *outdata,
|
|
Iphwcrypto_esp_cbc_sa *sa,
|
|
Ip_u8 *digest,
|
|
Ipipsec_param *param,
|
|
Ipcom_pkt *pkt
|
|
);
|
|
|
|
|
|
IP_PUBLIC int ipfreescale_ipsec_esp_3des_cbc_null_input(Ip_u8 *data,
|
|
Ip_u32 length,
|
|
Iphwcrypto_esp_cbc_sa *sa,
|
|
Ip_u8 *digest,
|
|
Ipipsec_param *param,
|
|
Ipcom_pkt *pkt);
|
|
|
|
IP_PUBLIC int ipfreescale_ipsec_esp_3des_cbc_null_output(Ip_u8 *data,
|
|
Ip_u32 length,
|
|
Iphwcrypto_esp_cbc_sa *sa,
|
|
Ip_u8 *digest,
|
|
Ipipsec_param *param,
|
|
Ipcom_pkt *pkt);
|
|
|
|
/*******************************************************************************
|
|
*
|
|
* ipfreescale_ipsec_esp_3des_cbc_md5_input - IPsec ESP input processing using 3DES-CBC-MD5
|
|
*
|
|
* This routine performs IPsec ESP input processing using 3DES-CBC-MD5.
|
|
*
|
|
* Parameters:
|
|
* \is
|
|
* \i <data>
|
|
* Pointer to the packet data.
|
|
*
|
|
* \i <length>
|
|
* Length of the packet.
|
|
*
|
|
* \i <sa>
|
|
* Pointer to the sa (Security Association).
|
|
*
|
|
* \i <digest>
|
|
* Pointer to the message authentication code.
|
|
*
|
|
* \i <param>
|
|
* Pointer to IPsec Parameters
|
|
*
|
|
* \i <pkt>
|
|
* Pointer to the packet structure.
|
|
* \ie
|
|
*
|
|
* RETURNS:
|
|
* -1 = error, 0 = timeout,
|
|
* 1 = ok,
|
|
* 2 = kept
|
|
*
|
|
* ERRNO
|
|
* \&N/A
|
|
*
|
|
*/
|
|
IP_PUBLIC int ipfreescale_ipsec_esp_3des_cbc_md5_input
|
|
(
|
|
Ip_u8 *data,
|
|
Ip_u32 length,
|
|
Iphwcrypto_esp_cbc_sa *sa,
|
|
Ip_u8 *digest,
|
|
Ipipsec_param *param,
|
|
Ipcom_pkt *pkt
|
|
);
|
|
|
|
IP_PUBLIC int ipfreescale_ipsec_esp_3des_cbc_md5_input_relocate
|
|
(
|
|
Ip_u8 *data,
|
|
Ip_u32 length,
|
|
Ip_u8 *outdata,
|
|
Iphwcrypto_esp_cbc_sa *sa,
|
|
Ip_u8 *digest,
|
|
Ipipsec_param *param,
|
|
Ipcom_pkt *pkt
|
|
);
|
|
|
|
/*******************************************************************************
|
|
*
|
|
* ipfreescale_ipsec_esp_3des_cbc_md5_output - IPsec ESP output processing using 3DES-CBC-MD5
|
|
*
|
|
* This routine performs IPsec ESP output processing using 3DES-CBC-MD5.
|
|
*
|
|
* Parameters:
|
|
* \is
|
|
* \i <data>
|
|
* Pointer to the packet data.
|
|
*
|
|
* \i <length>
|
|
* Length of the packet.
|
|
*
|
|
* \i <sa>
|
|
* Pointer to the sa (Security Association).
|
|
*
|
|
* \i <digest>
|
|
* Pointer to the message authentication code.
|
|
*
|
|
* \i <param>
|
|
* Pointer to IPsec Parameters
|
|
*
|
|
* \i <pkt>
|
|
* Pointer to the packet structure.
|
|
* \ie
|
|
*
|
|
* RETURNS:
|
|
* -1 = error, 0 = timeout,
|
|
* 1 = ok,
|
|
* 2 = kept
|
|
*
|
|
* ERRNO
|
|
* \&N/A
|
|
*
|
|
*/
|
|
IP_PUBLIC int ipfreescale_ipsec_esp_3des_cbc_md5_output
|
|
(
|
|
Ip_u8 *data,
|
|
Ip_u32 length,
|
|
Iphwcrypto_esp_cbc_sa *sa,
|
|
Ip_u8 *digest,
|
|
Ipipsec_param *param,
|
|
Ipcom_pkt *pkt
|
|
);
|
|
|
|
IP_PUBLIC int ipfreescale_ipsec_esp_3des_cbc_md5_output_relocate
|
|
(
|
|
Ip_u8 *data,
|
|
Ip_u32 length,
|
|
Ip_u8 *outdata,
|
|
Iphwcrypto_esp_cbc_sa *sa,
|
|
Ip_u8 *digest,
|
|
Ipipsec_param *param,
|
|
Ipcom_pkt *pkt
|
|
);
|
|
|
|
|
|
/*******************************************************************************
|
|
*
|
|
* ipfreescale_ipsec_esp_3des_cbc_sha1_input - IPsec ESP input processing using 3DES-CBC-SHA1
|
|
*
|
|
* This routine performs IPsec ESP input processing using 3DES-CBC-SHA1.
|
|
*
|
|
* Parameters:
|
|
* \is
|
|
* \i <data>
|
|
* Pointer to the packet data.
|
|
*
|
|
* \i <length>
|
|
* Length of the packet.
|
|
*
|
|
* \i <sa>
|
|
* Pointer to the sa (Security Association).
|
|
*
|
|
* \i <digest>
|
|
* Pointer to the message authentication code.
|
|
*
|
|
* \i <param>
|
|
* Pointer to IPsec Parameters
|
|
*
|
|
* \i <pkt>
|
|
* Pointer to the packet structure.
|
|
* \ie
|
|
*
|
|
* RETURNS:
|
|
* -1 = error, 0 = timeout,
|
|
* 1 = ok,
|
|
* 2 = kept
|
|
*
|
|
* ERRNO
|
|
* \&N/A
|
|
*
|
|
*/
|
|
IP_PUBLIC int ipfreescale_ipsec_esp_3des_cbc_sha1_input
|
|
(
|
|
Ip_u8 *data,
|
|
Ip_u32 length,
|
|
Iphwcrypto_esp_cbc_sa *sa,
|
|
Ip_u8 *digest,
|
|
Ipipsec_param *param,
|
|
Ipcom_pkt *pkt
|
|
);
|
|
IP_PUBLIC int ipfreescale_ipsec_esp_3des_cbc_sha1_input_relocate
|
|
(
|
|
Ip_u8 *data,
|
|
Ip_u32 length,
|
|
Ip_u8 *outdata,
|
|
Iphwcrypto_esp_cbc_sa *sa,
|
|
Ip_u8 *digest,
|
|
Ipipsec_param *param,
|
|
Ipcom_pkt *pkt
|
|
);
|
|
|
|
/*******************************************************************************
|
|
*
|
|
* ipfreescale_ipsec_esp_3des_cbc_sha1_output - IPsec ESP output processing using 3DES-CBC-SHA1
|
|
*
|
|
* This routine performs IPsec ESP output processing using 3DES-CBC-SHA1.
|
|
*
|
|
* Parameters:
|
|
* \is
|
|
* \i <data>
|
|
* Pointer to the packet data.
|
|
*
|
|
* \i <length>
|
|
* Length of the packet.
|
|
*
|
|
* \i <sa>
|
|
* Pointer to the sa (Security Association).
|
|
*
|
|
* \i <digest>
|
|
* Pointer to the message authentication code.
|
|
*
|
|
* \i <param>
|
|
* Pointer to IPsec Parameters
|
|
*
|
|
* \i <pkt>
|
|
* Pointer to the packet structure.
|
|
* \ie
|
|
*
|
|
* RETURNS:
|
|
* -1 = error, 0 = timeout,
|
|
* 1 = ok,
|
|
* 2 = kept
|
|
*
|
|
* ERRNO
|
|
* \&N/A
|
|
*
|
|
*/
|
|
IP_PUBLIC int ipfreescale_ipsec_esp_3des_cbc_sha1_output
|
|
(
|
|
Ip_u8 *data,
|
|
Ip_u32 length,
|
|
Iphwcrypto_esp_cbc_sa *sa,
|
|
Ip_u8 *digest,
|
|
Ipipsec_param *param,
|
|
Ipcom_pkt *pkt
|
|
);
|
|
IP_PUBLIC int ipfreescale_ipsec_esp_3des_cbc_sha1_output_relocate
|
|
(
|
|
Ip_u8 *data,
|
|
Ip_u32 length,
|
|
Ip_u8 *outdata,
|
|
Iphwcrypto_esp_cbc_sa *sa,
|
|
Ip_u8 *digest,
|
|
Ipipsec_param *param,
|
|
Ipcom_pkt *pkt
|
|
);
|
|
|
|
|
|
IP_PUBLIC int ipfreescale_ipsec_esp_aes_cbc_null_input(Ip_u8 *data,
|
|
Ip_u32 length,
|
|
Iphwcrypto_esp_cbc_sa *sa,
|
|
Ip_u8 *digest,
|
|
Ipipsec_param *param,
|
|
Ipcom_pkt *pkt);
|
|
|
|
IP_PUBLIC int ipfreescale_ipsec_esp_aes_cbc_null_output(Ip_u8 *data,
|
|
Ip_u32 length,
|
|
Iphwcrypto_esp_cbc_sa *sa,
|
|
Ip_u8 *digest,
|
|
Ipipsec_param *param,
|
|
Ipcom_pkt *pkt);
|
|
|
|
/*******************************************************************************
|
|
*
|
|
* ipfreescale_ipsec_esp_aes_cbc_md5_input - IPsec ESP input processing using AES-CBC-MD5
|
|
*
|
|
* This routine performs IPsec ESP input processing using AES-CBC-MD5.
|
|
*
|
|
* Parameters:
|
|
* \is
|
|
* \i <data>
|
|
* Pointer to the packet data.
|
|
*
|
|
* \i <length>
|
|
* Length of the packet.
|
|
*
|
|
* \i <sa>
|
|
* Pointer to the sa (Security Association).
|
|
*
|
|
* \i <digest>
|
|
* Pointer to the message authentication code.
|
|
*
|
|
* \i <param>
|
|
* Pointer to IPsec Parameters
|
|
*
|
|
* \i <pkt>
|
|
* Pointer to the packet structure.
|
|
* \ie
|
|
*
|
|
* RETURNS:
|
|
* -1 = error, 0 = timeout,
|
|
* 1 = ok,
|
|
* 2 = kept
|
|
*
|
|
* ERRNO
|
|
* \&N/A
|
|
*
|
|
*/
|
|
IP_PUBLIC int ipfreescale_ipsec_esp_aes_cbc_md5_input
|
|
(
|
|
Ip_u8 *data,
|
|
Ip_u32 length,
|
|
Iphwcrypto_esp_cbc_sa *sa,
|
|
Ip_u8 *digest,
|
|
Ipipsec_param *param,
|
|
Ipcom_pkt *pkt
|
|
);
|
|
IP_PUBLIC int ipfreescale_ipsec_esp_aes_cbc_md5_input_relocate
|
|
(
|
|
Ip_u8 *data,
|
|
Ip_u32 length,
|
|
Ip_u8 *outdata,
|
|
Iphwcrypto_esp_cbc_sa *sa,
|
|
Ip_u8 *digest,
|
|
Ipipsec_param *param,
|
|
Ipcom_pkt *pkt
|
|
);
|
|
|
|
/*******************************************************************************
|
|
*
|
|
* ipfreescale_ipsec_esp_aes_cbc_md5_output - IPsec ESP output processing using AES-CBC-MD5
|
|
*
|
|
* This routine performs IPsec ESP output processing using AES-CBC-MD5.
|
|
*
|
|
* Parameters:
|
|
* \is
|
|
* \i <data>
|
|
* Pointer to the packet data.
|
|
*
|
|
* \i <length>
|
|
* Length of the packet.
|
|
*
|
|
* \i <sa>
|
|
* Pointer to the sa (Security Association).
|
|
*
|
|
* \i <digest>
|
|
* Pointer to the message authentication code.
|
|
*
|
|
* \i <param>
|
|
* Pointer to IPsec Parameters
|
|
*
|
|
* \i <pkt>
|
|
* Pointer to the packet structure.
|
|
* \ie
|
|
*
|
|
* RETURNS:
|
|
* -1 = error, 0 = timeout,
|
|
* 1 = ok,
|
|
* 2 = kept
|
|
*
|
|
* ERRNO
|
|
* \&N/A
|
|
*
|
|
*/
|
|
IP_PUBLIC int ipfreescale_ipsec_esp_aes_cbc_md5_output
|
|
(
|
|
Ip_u8 *data,
|
|
Ip_u32 length,
|
|
Iphwcrypto_esp_cbc_sa *sa,
|
|
Ip_u8 *digest,
|
|
Ipipsec_param *param,
|
|
Ipcom_pkt *pkt
|
|
);
|
|
IP_PUBLIC int ipfreescale_ipsec_esp_aes_cbc_md5_output_relocate
|
|
(
|
|
Ip_u8 *data,
|
|
Ip_u32 length,
|
|
Ip_u8 *outdata,
|
|
Iphwcrypto_esp_cbc_sa *sa,
|
|
Ip_u8 *digest,
|
|
Ipipsec_param *param,
|
|
Ipcom_pkt *pkt
|
|
);
|
|
|
|
/*******************************************************************************
|
|
*
|
|
* ipfreescale_ipsec_esp_aes_cbc_sha1_input - IPsec ESP input processing using AES-CBC-SHA1
|
|
*
|
|
* This routine performs IPsec ESP input processing using AES-CBC-SHA1.
|
|
*
|
|
* Parameters:
|
|
* \is
|
|
* \i <data>
|
|
* Pointer to the packet data.
|
|
*
|
|
* \i <length>
|
|
* Length of the packet.
|
|
*
|
|
* \i <sa>
|
|
* Pointer to the sa (Security Association).
|
|
*
|
|
* \i <digest>
|
|
* Pointer to the message authentication code.
|
|
*
|
|
* \i <param>
|
|
* Pointer to IPsec Parameters
|
|
*
|
|
* \i <pkt>
|
|
* Pointer to the packet structure.
|
|
* \ie
|
|
*
|
|
* RETURNS:
|
|
* -1 = error, 0 = timeout,
|
|
* 1 = ok,
|
|
* 2 = kept
|
|
*
|
|
* ERRNO
|
|
* \&N/A
|
|
*
|
|
*/
|
|
IP_PUBLIC int ipfreescale_ipsec_esp_aes_cbc_sha1_input
|
|
(
|
|
Ip_u8 *data,
|
|
Ip_u32 length,
|
|
Iphwcrypto_esp_cbc_sa *sa,
|
|
Ip_u8 *digest,
|
|
Ipipsec_param *param,
|
|
Ipcom_pkt *pkt
|
|
);
|
|
IP_PUBLIC int ipfreescale_ipsec_esp_aes_cbc_sha1_input_relocate
|
|
(
|
|
Ip_u8 *data,
|
|
Ip_u32 length,
|
|
Ip_u8 *outdata,
|
|
Iphwcrypto_esp_cbc_sa *sa,
|
|
Ip_u8 *digest,
|
|
Ipipsec_param *param,
|
|
Ipcom_pkt *pkt
|
|
);
|
|
|
|
/*******************************************************************************
|
|
*
|
|
* ipfreescale_ipsec_esp_aes_cbc_sha1_output - IPsec ESP output processing using AES-CBC-SHA1
|
|
*
|
|
* This routine performs IPsec ESP output processing using AES-CBC-SHA1.
|
|
*
|
|
* Parameters:
|
|
* \is
|
|
* \i <data>
|
|
* Pointer to the packet data.
|
|
*
|
|
* \i <length>
|
|
* Length of the packet.
|
|
*
|
|
* \i <sa>
|
|
* Pointer to the sa (Security Association).
|
|
*
|
|
* \i <digest>
|
|
* Pointer to the message authentication code.
|
|
*
|
|
* \i <param>
|
|
* Pointer to IPsec Parameters
|
|
*
|
|
* \i <pkt>
|
|
* Pointer to the packet structure.
|
|
* \ie
|
|
*
|
|
* RETURNS:
|
|
* -1 = error, 0 = timeout,
|
|
* 1 = ok,
|
|
* 2 = kept
|
|
*
|
|
* ERRNO
|
|
* \&N/A
|
|
*
|
|
*/
|
|
IP_PUBLIC int ipfreescale_ipsec_esp_aes_cbc_sha1_output
|
|
(
|
|
Ip_u8 *data,
|
|
Ip_u32 length,
|
|
Iphwcrypto_esp_cbc_sa *sa,
|
|
Ip_u8 *digest,
|
|
Ipipsec_param *param,
|
|
Ipcom_pkt *pkt
|
|
);
|
|
IP_PUBLIC int ipfreescale_ipsec_esp_aes_cbc_sha1_output_relocate
|
|
(
|
|
Ip_u8 *data,
|
|
Ip_u32 length,
|
|
Ip_u8 *outdata,
|
|
Iphwcrypto_esp_cbc_sa *sa,
|
|
Ip_u8 *digest,
|
|
Ipipsec_param *param,
|
|
Ipcom_pkt *pkt
|
|
);
|
|
|
|
#endif /* #ifdef IPIPSEC2 */
|
|
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif
|
|
|
|
/*
|
|
****************************************************************************
|
|
* END OF FILE
|
|
****************************************************************************
|
|
*/
|