original files of m241

This commit is contained in:
neelimap
2026-07-30 11:19:44 +05:30
parent 170c2b3f3a
commit afc7070c1f
12254 changed files with 7655111 additions and 0 deletions
@@ -0,0 +1,28 @@
/* 01iphwcrypto.cdf - IPHWCRYPTO configuration file */
/*
* Copyright (c) 2006-2007 Wind River Systems, Inc.
*
* The right to copy, distribute or otherwise make use of this software
* may be licensed only pursuant to the terms of an applicable Wind River
* license agreement. No license to Wind River intellectual property rights
* is granted herein. All rights not licensed by Wind River are reserved
* by Wind River.
*/
/*
modification history
--------------------
01a,02jul07,mcarlste Added file contents
*/
#ifdef _WRS_CONFIG_COMPONENT_IPHWCRYPTO
Component INCLUDE_IPHWCRYPTO
{
NAME Hardware crypto support
_CHILDREN FOLDER_CRYPTO
SYNOPSIS Provides an API for hardware offload crypto hooks
CONFIGLETTES iphwcrypto_config.c
MODULES iphwcrypto.o
}
#endif
@@ -0,0 +1,12 @@
# Document no: @(#) $Name: VXWORKS_ITER40_2019102207 $ $RCSfile: common.vxconfig,v $ $Revision: 1.4 $
# $Source: /home/interpeak/CVSRoot/iphwcrypto/config/common.vxconfig,v $
# $Author: myakan $
# $State: Exp $ $Locker: $
#
# INTERPEAK_COPYRIGHT_STRING
#hidden option that enables IPHWCRYPTO
config SUPPORTS_HWCRYPTO
bool
default y
@@ -0,0 +1,107 @@
/*
******************************************************************************
* INTERPEAK CONFIGURATION SOURCE FILE
*
* Document no: @(#) $Name: VXWORKS_ITER40_2019102207 $ $RCSfile: iphwcrypto_config.c,v $ $Revision: 1.6 $
* $Source: /home/interpeak/CVSRoot/iphwcrypto/config/iphwcrypto_config.c,v $
* $Author: markus $
* $State: Exp $ $Locker: $
*
* INTERPEAK_COPYRIGHT_STRING
* Design and implementation by Markus Carlstedt <markus@interpeak.se>
******************************************************************************
*/
/*
****************************************************************************
* 1 DESCRIPTION
****************************************************************************
*/
/*
****************************************************************************
* 2 INCLUDE FILES
****************************************************************************
*/
#include "iphwcrypto_config.h"
#include <ipcom_type.h>
#include <ipcom_cstyle.h>
#include <ipcom_err.h>
/*
****************************************************************************
* 3 DEFINES
****************************************************************************
*/
/*
****************************************************************************
* 4 TYPES
****************************************************************************
*/
/*
****************************************************************************
* 5 EXTERN PROTOTYPES
****************************************************************************
*/
/*
****************************************************************************
* 6 LOCAL PROTOTYPES
****************************************************************************
*/
IP_PUBLIC Ip_err iphwcrypto_configure(void);
/*
****************************************************************************
* 7 DATA
****************************************************************************
*/
/*
****************************************************************************
* 8 STATIC FUNCTIONS
****************************************************************************
*/
/*
****************************************************************************
* 9 GLOBAL FUNCTIONS
****************************************************************************
*/
/*
****************************************************************************
* 10 PUBLIC FUNCTIONS
****************************************************************************
*/
/*
*===========================================================================
* iphwcrypto_configure
*===========================================================================
* Description: Product configure hook. Called by IPCOM at startup.
* Parameters: none.
* Returns: IPCOM_SUCCESS = ok
* IPCOM_ERR_FAILED = error
*
*/
IP_PUBLIC Ip_err
iphwcrypto_configure(void)
{
return IPCOM_SUCCESS;
}
/*
****************************************************************************
* END OF FILE
****************************************************************************
*/
@@ -0,0 +1,82 @@
/*
******************************************************************************
* INTERPEAK CONFIGURATION HEADER FILE
*
* Document no: @(#) $Name: VXWORKS_ITER40_2019102207 $ $RCSfile: iphwcrypto_config.h,v $ $Revision: 1.7 $
* $Source: /home/interpeak/CVSRoot/iphwcrypto/config/iphwcrypto_config.h,v $
* $Author: markus $ $Date: 2007-05-30 16:18:00 $
* $State: Exp $ $Locker: $
*
* INTERPEAK_COPYRIGHT_STRING
* Design and implementation by Markus Carlstedt <markus@interpeak.se>
******************************************************************************
*/
#ifndef IPHWCRYPTO_CONFIG_H
#define IPHWCRYPTO_CONFIG_H
/*
****************************************************************************
* 1 DESCRIPTION
****************************************************************************
*/
/*
****************************************************************************
* 2 INCLUDE FILES
****************************************************************************
*/
#ifdef __cplusplus
extern "C" {
#endif
/*
****************************************************************************
* 3 DEFINES
****************************************************************************
*/
/*
*===========================================================================
* IPHWCRYPTO_REVERT_FAILURES_TO_SOFTWARE
*===========================================================================
* Define this macro to revert failed hardware operations to software.
*
*/
#define IPHWCRYPTO_REVERT_FAILURES_TO_SOFTWARE
/*
*===========================================================================
* IPHWCRYPTO_CREATE_EVP_TEST_FILE
*===========================================================================
* Define this macro to create a test file for the IPCRYPTO evp_test utility.
*
*/
#define IPHWCRYPTO_CREATE_EVP_TEST_FILE
/*
****************************************************************************
* 4 TYPES
****************************************************************************
*/
/*
****************************************************************************
* 5 FUNCTIONS
****************************************************************************
*/
#ifdef __cplusplus
}
#endif
#endif
/*
****************************************************************************
* END OF FILE
****************************************************************************
*/
@@ -0,0 +1,10 @@
IPTARGETS := lib
ifneq ($(IPMAKEFILE),)
include $(IPMAKEFILE)
else
include $(IPCOM_ROOT)/Makefile
endif
include iphwcrypto.mk
include $(IPCOM_ROOT)/gmake/ipcom_make.mk
lib: dirs $(IPLIBFILE)
@@ -0,0 +1,88 @@
#############################################################################
# IPHWCRYPTO.MK
#
# Document no: @(#) $Name: VXWORKS_ITER40_2019102207 $ $RCSfile: iphwcrypto.mk,v $ $Revision: 1.7 $
# $Source: /home/interpeak/CVSRoot/iphwcrypto/gmake/iphwcrypto.mk,v $
# $Author: markus $ $Date: 2006-09-07 14:26:31 $
# $State: Exp $ $Locker: $
#
# INTERPEAK_COPYRIGHT_STRING
#
#############################################################################
#
# Copyright (c) 2006 Wind River Systems, Inc.
#
# The right to copy, distribute, modify or otherwise make use
# of this software may be licensed only pursuant to the terms
# of an applicable Wind River license agreement.
#
# modification history
# --------------------
# 01a,31aug06,kch Build iphwcrypto_config.o only if $(SKIP_CONFIG) is either
# not defined or set to anything other than true.
#
#############################################################################
# PRODUCT
###########################################################################
IPPROD ?= iphwcrypto
#############################################################################
# DEFINE
###########################################################################
IPDEFINE += -DIPHWCRYPTO
#############################################################################
# INCLUDE
###########################################################################
IPINCLUDE += -I$(IPHWCRYPTO_ROOT)/config
IPINCLUDE += -I$(IPHWCRYPTO_ROOT)/include
IPLIBINCLUDE += -I$(IPHWCRYPTO_ROOT)/src
IPLIBINCLUDE += -I$(IPIPSEC_ROOT)/src
#############################################################################
# OBJECTS
###########################################################################
# Configuration
IPLIBOBJECTS_C += iphwcrypto_config.o
# Source files
IPLIBOBJECTS += iphwcrypto.o
IPLIBOBJECTS += iphwcrypto_evptest.o
# Compiles the xxx_config.o if the $SKIP_CONFIG macro is either not defined
# or set to anything other than true.
ifneq ($(SKIP_CONFIG),true)
IPLIBOBJECTS += $(IPLIBOBJECTS_C)
endif
#############################################################################
# VPATH
###########################################################################
IPSRCDIRS += $(IPHWCRYPTO_ROOT)/src $(IPHWCRYPTO_ROOT)/config
#############################################################################
# LIB
###########################################################################
IPLIBS += $(IPLIBROOT)/libiphwcrypto.a
#############################################################################
# BINARIES
#############################################################################
###########################################################################
# END OF IPHWCRYPTO.MK
###########################################################################
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,250 @@
/*
******************************************************************************
* INTERPEAK SOURCE FILE
*
* Document no: @(#) $Name: VXWORKS_ITER40_2019102207 $ $RCSfile: iphwcrypto_evptest.c,v $ $Revision: 1.8.48.1 $
* $Source: /home/interpeak/CVSRoot/iphwcrypto/src/iphwcrypto_evptest.c,v $
* $Author: zan $
* $State: Exp $ $Locker: $
*
* INTERPEAK_COPYRIGHT_STRING
* Design and implementation by Markus Carlstedt <markus@interpeak.se>
******************************************************************************
*/
/*
****************************************************************************
* 1 DESCRIPTION
****************************************************************************
*/
/*
****************************************************************************
* 2 CONFIGURATION
****************************************************************************
*/
#include "iphwcrypto_config.h"
#if defined(IPCRYPTO) && defined(IPHWCRYPTO_CREATE_EVP_TEST_FILE)
/*
****************************************************************************
* 3 INCLUDE FILES
****************************************************************************
*/
#define IPCOM_USE_CLIB_PROTO
#include <ipcom_type.h>
#include <ipcom_cstyle.h>
#include <ipcom_clib.h>
#include <ipcom_err.h>
#include <ipcom_syslog.h>
#include "iphwcrypto.h"
#include "iphwcrypto_h.h"
/*
****************************************************************************
* 4 DEFINES
****************************************************************************
*/
/*
****************************************************************************
* 5 TYPES
****************************************************************************
*/
/*
****************************************************************************
* 6 EXTERN PROTOTYPES
****************************************************************************
*/
/*
****************************************************************************
* 7 LOCAL PROTOTYPES
****************************************************************************
*/
/*
****************************************************************************
* 8 DATA
****************************************************************************
*/
/* Test file name */
IP_STATIC IP_CONST char *testfilename = IPCOM_FILE_ROOT"evptests";
/* Test specification for IPCRYPTO evp_test function */
IP_STATIC IP_CONST char *iphwcrypto_evptests[] =
{
"#cipher:key:iv:plaintext:ciphertext:0/1(decrypt/encrypt)\n",
"#digest:::input:output\n",
"\n",
"# MD5 tests\n",
"MD5::::d41d8cd98f00b204e9800998ecf8427e\n",
"MD5:::61:0cc175b9c0f1b6a831c399e269772661\n",
"MD5:::616263:900150983cd24fb0d6963f7d28e17f72\n",
"MD5:::6d65737361676520646967657374:f96b697d7cb7938d525a2f31aaf161d0\n",
"MD5:::6162636465666768696a6b6c6d6e6f707172737475767778797a:c3fcd3d76192e4007dfb496cca67e13b\n",
"MD5:::4142434445464748494a4b4c4d4e4f505152535455565758595a6162636465666768696a6b6c6d6e6f707172737475767778797a30313233343536373839:d174ab98d277d9f5a5611c2c9f419d9f\n",
"MD5:::3132333435363738393031323334353637383930313233343536373839303132333435363738393031323334353637383930313233343536373839303132333435363738393031323334353637383930:57edf4a22be3c955ac49da2e2107b67a\n",
"\n",
"# SHA1 tests\n",
"SHA1:::616263:a9993e364706816aba3e25717850c26c9cd0d89d\n",
"\n",
"# DES-CBC tests\n",
"DES-CBC:0123456789abcdef:fedcba9876543210:37363534333231204E6F77206973207468652074696D6520666F722000000000:ccd173ffab2039f4acd8aefddfd8a1eb468e91157888ba681d269397f7fe62b4\n",
"\n",
"# DES-ECB tests \n",
"DES-ECB:0000000000000000::0000000000000000:8CA64DE9C1B123A7\n",
"DES-ECB:FFFFFFFFFFFFFFFF::FFFFFFFFFFFFFFFF:7359B2163E4EDC58\n",
"DES-ECB:3000000000000000::1000000000000001:958E6E627A05557B\n",
"DES-ECB:1111111111111111::1111111111111111:F40379AB9E0EC533\n",
"DES-ECB:0123456789ABCDEF::1111111111111111:17668DFC7292532D\n",
"DES-ECB:1111111111111111::0123456789ABCDEF:8A5AE1F81AB8F2DD\n",
"DES-ECB:0000000000000000::0000000000000000:8CA64DE9C1B123A7\n",
"DES-ECB:FEDCBA9876543210::0123456789ABCDEF:ED39D950FA74BCC4\n",
"DES-ECB:7CA110454A1A6E57::01A1D6D039776742:690F5B0D9A26939B\n",
"DES-ECB:0131D9619DC1376E::5CD54CA83DEF57DA:7A389D10354BD271\n",
"DES-ECB:07A1133E4A0B2686::0248D43806F67172:868EBB51CAB4599A\n",
"DES-ECB:3849674C2602319E::51454B582DDF440A:7178876E01F19B2A\n",
"DES-ECB:04B915BA43FEB5B6::42FD443059577FA2:AF37FB421F8C4095\n",
"DES-ECB:0113B970FD34F2CE::059B5E0851CF143A:86A560F10EC6D85B\n",
"DES-ECB:0170F175468FB5E6::0756D8E0774761D2:0CD3DA020021DC09\n",
"DES-ECB:43297FAD38E373FE::762514B829BF486A:EA676B2CB7DB2B7A\n",
"DES-ECB:07A7137045DA2A16::3BDD119049372802:DFD64A815CAF1A0F\n",
"DES-ECB:04689104C2FD3B2F::26955F6835AF609A:5C513C9C4886C088\n",
"DES-ECB:37D06BB516CB7546::164D5E404F275232:0A2AEEAE3FF4AB77\n",
"DES-ECB:1F08260D1AC2465E::6B056E18759F5CCA:EF1BF03E5DFA575A\n",
"DES-ECB:584023641ABA6176::004BD6EF09176062:88BF0DB6D70DEE56\n",
"DES-ECB:025816164629B007::480D39006EE762F2:A1F9915541020B56\n",
"DES-ECB:49793EBC79B3258F::437540C8698F3CFA:6FBF1CAFCFFD0556\n",
"DES-ECB:4FB05E1515AB73A7::072D43A077075292:2F22E49BAB7CA1AC\n",
"DES-ECB:49E95D6D4CA229BF::02FE55778117F12A:5A6B612CC26CCE4A\n",
"DES-ECB:018310DC409B26D6::1D9D5C5018F728C2:5F4C038ED12B2E41\n",
"DES-ECB:1C587F1C13924FEF::305532286D6F295A:63FAC0D034D9F793\n",
"DES-ECB:0101010101010101::0123456789ABCDEF:617B3A0CE8F07100\n",
"DES-ECB:1F1F1F1F0E0E0E0E::0123456789ABCDEF:DB958605F8C8C606\n",
"DES-ECB:E0FEE0FEF1FEF1FE::0123456789ABCDEF:EDBFD1C66C29CCC7\n",
"DES-ECB:0000000000000000::FFFFFFFFFFFFFFFF:355550B2150E2451\n",
"DES-ECB:FFFFFFFFFFFFFFFF::0000000000000000:CAAAAF4DEAF1DBAE\n",
"DES-ECB:0123456789ABCDEF::0000000000000000:D5D44FF720683D0D\n",
"DES-ECB:FEDCBA9876543210::FFFFFFFFFFFFFFFF:2A2BB008DF97C2F2\n",
"\n",
"# DES-EDE3-CBC tests\n",
"DES-EDE3-CBC:0123456789abcdeff1e0d3c2b5a49786fedcba9876543210:fedcba9876543210:37363534333231204E6F77206973207468652074696D6520666F722000000000:3FE301C962AC01D02213763C1CBD4CDC799657C064ECF5D41C673812CFDE9675\n",
"\n",
"# DES-EDE3 tests\n",
"DES-EDE3:0123456789abcdef23456789abcdef01456789abcdef0123::4e6f772069732074:314f8327fa7a09a8\n",
"\n",
"# AES-128-CBC tests\n",
"AES-128-CBC:2B7E151628AED2A6ABF7158809CF4F3C:000102030405060708090A0B0C0D0E0F:6BC1BEE22E409F96E93D7E117393172A:7649ABAC8119B246CEE98E9B12E9197D\n",
"AES-128-CBC:2B7E151628AED2A6ABF7158809CF4F3C:7649ABAC8119B246CEE98E9B12E9197D:AE2D8A571E03AC9C9EB76FAC45AF8E51:5086CB9B507219EE95DB113A917678B2\n",
"AES-128-CBC:2B7E151628AED2A6ABF7158809CF4F3C:5086CB9B507219EE95DB113A917678B2:30C81C46A35CE411E5FBC1191A0A52EF:73BED6B8E3C1743B7116E69E22229516\n",
"AES-128-CBC:2B7E151628AED2A6ABF7158809CF4F3C:73BED6B8E3C1743B7116E69E22229516:F69F2445DF4F9B17AD2B417BE66C3710:3FF1CAA1681FAC09120ECA307586E1A7\n",
"# AES-128-ECB tests\n",
"AES-128-ECB:2B7E151628AED2A6ABF7158809CF4F3C::6BC1BEE22E409F96E93D7E117393172A:3AD77BB40D7A3660A89ECAF32466EF97\n",
"AES-128-ECB:2B7E151628AED2A6ABF7158809CF4F3C::AE2D8A571E03AC9C9EB76FAC45AF8E51:F5D3D58503B9699DE785895A96FDBAAF\n",
"AES-128-ECB:2B7E151628AED2A6ABF7158809CF4F3C::30C81C46A35CE411E5FBC1191A0A52EF:43B1CD7F598ECE23881B00E3ED030688\n",
"AES-128-ECB:2B7E151628AED2A6ABF7158809CF4F3C::F69F2445DF4F9B17AD2B417BE66C3710:7B0C785E27E8AD3F8223207104725DD4\n",
"# AES-192-CBC tests\n",
"AES-192-CBC:8E73B0F7DA0E6452C810F32B809079E562F8EAD2522C6B7B:000102030405060708090A0B0C0D0E0F:6BC1BEE22E409F96E93D7E117393172A:4F021DB243BC633D7178183A9FA071E8\n",
"AES-192-CBC:8E73B0F7DA0E6452C810F32B809079E562F8EAD2522C6B7B:4F021DB243BC633D7178183A9FA071E8:AE2D8A571E03AC9C9EB76FAC45AF8E51:B4D9ADA9AD7DEDF4E5E738763F69145A\n",
"AES-192-CBC:8E73B0F7DA0E6452C810F32B809079E562F8EAD2522C6B7B:B4D9ADA9AD7DEDF4E5E738763F69145A:30C81C46A35CE411E5FBC1191A0A52EF:571B242012FB7AE07FA9BAAC3DF102E0\n",
"AES-192-CBC:8E73B0F7DA0E6452C810F32B809079E562F8EAD2522C6B7B:571B242012FB7AE07FA9BAAC3DF102E0:F69F2445DF4F9B17AD2B417BE66C3710:08B0E27988598881D920A9E64F5615CD\n",
"# AES-192-ECB tests\n",
"AES-192-ECB:8E73B0F7DA0E6452C810F32B809079E562F8EAD2522C6B7B::6BC1BEE22E409F96E93D7E117393172A:BD334F1D6E45F25FF712A214571FA5CC\n",
"AES-192-ECB:8E73B0F7DA0E6452C810F32B809079E562F8EAD2522C6B7B::AE2D8A571E03AC9C9EB76FAC45AF8E51:974104846D0AD3AD7734ECB3ECEE4EEF\n",
"AES-192-ECB:8E73B0F7DA0E6452C810F32B809079E562F8EAD2522C6B7B::30C81C46A35CE411E5FBC1191A0A52EF:EF7AFD2270E2E60ADCE0BA2FACE6444E\n",
"AES-192-ECB:8E73B0F7DA0E6452C810F32B809079E562F8EAD2522C6B7B::F69F2445DF4F9B17AD2B417BE66C3710:9A4B41BA738D6C72FB16691603C18E0E\n",
"# AES-256-CBC tests\n",
"AES-256-CBC:603DEB1015CA71BE2B73AEF0857D77811F352C073B6108D72D9810A30914DFF4:000102030405060708090A0B0C0D0E0F:6BC1BEE22E409F96E93D7E117393172A:F58C4C04D6E5F1BA779EABFB5F7BFBD6\n",
"AES-256-CBC:603DEB1015CA71BE2B73AEF0857D77811F352C073B6108D72D9810A30914DFF4:F58C4C04D6E5F1BA779EABFB5F7BFBD6:AE2D8A571E03AC9C9EB76FAC45AF8E51:9CFC4E967EDB808D679F777BC6702C7D\n",
"AES-256-CBC:603DEB1015CA71BE2B73AEF0857D77811F352C073B6108D72D9810A30914DFF4:9CFC4E967EDB808D679F777BC6702C7D:30C81C46A35CE411E5FBC1191A0A52EF:39F23369A9D9BACFA530E26304231461\n",
"AES-256-CBC:603DEB1015CA71BE2B73AEF0857D77811F352C073B6108D72D9810A30914DFF4:39F23369A9D9BACFA530E26304231461:F69F2445DF4F9B17AD2B417BE66C3710:B2EB05E2C39BE9FCDA6C19078C6A9D1B\n",
"# AES-256-ECB tests\n",
"AES-256-ECB:603DEB1015CA71BE2B73AEF0857D77811F352C073B6108D72D9810A30914DFF4::6BC1BEE22E409F96E93D7E117393172A:F3EED1BDB5D2A03C064B5A7E3DB181F8\n",
"AES-256-ECB:603DEB1015CA71BE2B73AEF0857D77811F352C073B6108D72D9810A30914DFF4::AE2D8A571E03AC9C9EB76FAC45AF8E51:591CCB10D410ED26DC5BA74A31362870\n",
"AES-256-ECB:603DEB1015CA71BE2B73AEF0857D77811F352C073B6108D72D9810A30914DFF4::30C81C46A35CE411E5FBC1191A0A52EF:B6ED21B99CA6F4F9F153E7B1BEAFED1D\n",
"AES-256-ECB:603DEB1015CA71BE2B73AEF0857D77811F352C073B6108D72D9810A30914DFF4::F69F2445DF4F9B17AD2B417BE66C3710:23304B7A39F9F3FF067D8D8F9E24ECC7\n",
IP_NULL
};
/*
****************************************************************************
* 9 STATIC FUNCTIONS
****************************************************************************
*/
/*
****************************************************************************
* 10 GLOBAL FUNCTIONS
****************************************************************************
*/
/*
*===========================================================================
* iphwcrypto_evptests_create
*===========================================================================
* Description: Create a test file for IPCRYPTO evp_test utility.
* Parameters: none.
* Returns: 1 = ok
* 0 = fail
*/
IP_GLOBAL int
iphwcrypto_evptests_create(void)
{
IP_FILE *fp;
const char **s;
fp = ipcom_fopen(testfilename, "w");
if(fp != IP_NULL)
{
for (s = iphwcrypto_evptests; *s != IP_NULL; s++)
(void)ipcom_fwrite(*s, 1, ipcom_strlen(*s), fp);
ipcom_fclose(fp);
return 1;
}
else
{
IPCOM_LOG1(ERR, "iphwcrypto_evptests_create() :: failed to create \"%s\"", testfilename);
return 0;
}
}
#else
int iphwcrypto_evptests_empty_file;
#endif /* #if defined(IPCRYPTO) && defined(IPHWCRYPTO_CREATE_EVP_TEST_FILE) */
/*
****************************************************************************
* 11 PUBLIC FUNCTIONS
****************************************************************************
*/
/*
****************************************************************************
* END OF FILE
****************************************************************************
*/
@@ -0,0 +1,210 @@
/*
******************************************************************************
* INTERPEAK INTERNAL API HEADER FILE
*
* Document no: @(#) $Name: VXWORKS_ITER40_2019102207 $ $RCSfile: iphwcrypto_h.h,v $ $Revision: 1.18 $
* $Source: /home/interpeak/CVSRoot/iphwcrypto/src/iphwcrypto_h.h,v $
* $Author: lob $ $Date: 2009-01-13 10:59:33 $
* $State: Exp $ $Locker: $
*
* INTERPEAK_COPYRIGHT_STRING
* Design and implementation by Markus Carlstedt <markus@interpeak.se>
******************************************************************************
*/
#ifndef IPHWCRYPTO_H_H
#define IPHWCRYPTO_H_H
/*
****************************************************************************
* 1 DESCRIPTION
****************************************************************************
*/
/*
****************************************************************************
* 2 CONFIGURATION
****************************************************************************
*/
#include "iphwcrypto_config.h"
#ifdef IPCRYPTO
#include <ipcrypto_config.h>
#endif
/*
****************************************************************************
* 3 INCLUDE FILES
****************************************************************************
*/
#include <ipcom_type.h>
#include <ipcom_cstyle.h>
#ifdef IPCRYPTO
#include <openssl/engine.h>
#include <openssl/evp.h>
#include <openssl/md5.h>
#include <openssl/sha.h>
#include <openssl/des.h>
#include <openssl/aes.h>
#ifndef OPENSSL_NO_RC4
#include <openssl/rc4.h>
#endif
#include <openssl/bn.h>
#endif
#ifdef IPIPSEC2
#include <ipipsec_h.h>
#endif
#ifdef __cplusplus
extern "C" {
#endif
/*
****************************************************************************
* 4 DEFINES
****************************************************************************
*/
#ifdef IPCOM_SYSLOG_FACILITY
#undef IPCOM_SYSLOG_FACILITY
#endif
#define IPCOM_SYSLOG_FACILITY IPCOM_LOG_IPHWCRYPTO
/* Syslog priority */
#ifdef IPCOM_SYSLOG_PRIORITY
#undef IPCOM_SYSLOG_PRIORITY
#endif
#ifdef IP_DEBUG
#define IPCOM_SYSLOG_PRIORITY IPCOM_LOG_DEBUG
#else
#define IPCOM_SYSLOG_PRIORITY IPCOM_LOG_WARNING
#endif
/*
****************************************************************************
* 5 TYPES
****************************************************************************
*/
#ifdef IPIPSEC2
/*
*===========================================================================
* Iphwcrypto_ipsec_engine
*===========================================================================
*/
typedef struct Iphwcrypto_ipsec_engine_struct
{
Iphwcrypto_ipsec_esp esp_in[IPHWCRYPTO_ENGINE_ESP_MAX];
Iphwcrypto_ipsec_esp esp_out[IPHWCRYPTO_ENGINE_ESP_MAX];
}
Iphwcrypto_ipsec_engine;
#endif
/*
*===========================================================================
* Iphwcrypto_engine
*===========================================================================
*/
typedef struct Iphwcrypto_engine_struct
{
#ifdef IPCRYPTO
/* Structural reference to the OpenSSL engine */
ENGINE *e;
/* Digests */
int num_digests;
int digest_nids[IPHWCRYPTO_ENGINE_DIGEST_MAX];
EVP_MD *digests[IPHWCRYPTO_ENGINE_DIGEST_MAX];
Iphwcrypto_digest_init digest_init[IPHWCRYPTO_ENGINE_DIGEST_MAX];
Iphwcrypto_digest_update digest_update[IPHWCRYPTO_ENGINE_DIGEST_MAX];
Iphwcrypto_digest_final digest_final[IPHWCRYPTO_ENGINE_DIGEST_MAX];
Iphwcrypto_digest_copy digest_copy[IPHWCRYPTO_ENGINE_DIGEST_MAX];
Iphwcrypto_digest_cleanup digest_cleanup[IPHWCRYPTO_ENGINE_DIGEST_MAX];
/* Ciphers */
int num_ciphers;
int cipher_nids[IPHWCRYPTO_ENGINE_CIPHER_MAX];
EVP_CIPHER *ciphers[IPHWCRYPTO_ENGINE_CIPHER_MAX];
Iphwcrypto_cbc_cipher_calc cbc_cipher_calc[IPHWCRYPTO_ENGINE_CIPHER_MAX];
Iphwcrypto_ecb_cipher_calc ecb_cipher_calc[IPHWCRYPTO_ENGINE_CIPHER_MAX];
#ifndef OPENSSL_NO_RSA
/* RSA */
RSA_METHOD rsa_meth;
Iphwcrypto_mod_exp rsa_mod_exp_hw;
#endif
#ifndef OPENSSL_NO_DSA
/* DSA */
DSA_METHOD dsa_meth;
Iphwcrypto_mod_exp dsa_mod_exp_hw;
#endif
#ifndef OPENSSL_NO_DH
/* Diffie-Hellman */
DH_METHOD dh_meth;
Iphwcrypto_mod_exp dh_mod_exp_hw;
#endif
/* Randmon number generation */
RAND_METHOD rand_meth;
Iphwcrypto_random_gen rand_hw;
#endif /* #ifdef IPCRYPTO */
#ifdef IPIPSEC2
Iphwcrypto_ipsec_engine ipsec;
#endif
int dummy;
}
Iphwcrypto_engine;
/*
*===========================================================================
* Iphwcrypto_data
*===========================================================================
*/
typedef struct Iphwcrypto_data_struct
{
Iphwcrypto_engine *engine;
#ifdef IPIPSEC2
Ipcom_atomic_t num_async;
Ip_u32 pipe_fail;
#endif
}
Iphwcrypto_data;
/*
****************************************************************************
* 6 FUNCTIONS
****************************************************************************
*/
#ifdef IPIPSEC2
IP_GLOBAL void iphwcrypto_ipsec_esp_release(Ipipsec_sa *sa);
IP_GLOBAL int iphwcrypto_ipsec_esp_input(Ip_u8 *data, Ip_u32 length, Ipipsec_sa *sa, Ipipsec_param *param, Ip_u8 *digest, Ipcom_pkt *pkt);
IP_GLOBAL int iphwcrypto_ipsec_esp_output(Ip_u8 *data, Ip_u32 length, Ipipsec_sa *sa, Ipipsec_param *param, Ip_u8 *digest, Ipcom_pkt *pkt);
#endif /* #ifdef IPIPSEC2 */
#if defined(IPCRYPTO) && defined(IPHWCRYPTO_CREATE_EVP_TEST_FILE)
IP_GLOBAL int iphwcrypto_evptests_create(void);
#endif
#ifdef __cplusplus
}
#endif
#endif
/*
****************************************************************************
* END OF FILE
****************************************************************************
*/