From 420e575ab11f20f29a173725a36f2414dc95a76d Mon Sep 17 00:00:00 2001 From: Davide Beatrici Date: Mon, 16 Apr 2018 04:39:36 +0200 Subject: [PATCH] Remove Intel AES-NI library --- centos/SOURCES/linux_32bit.mak | 2 +- centos/SOURCES/linux_64bit.mak | 2 +- .../Library/Win32_Debug/libintelaes.lib | Bin 34486 -> 0 bytes .../Library/Win32_Release/libintelaes.lib | Bin 34486 -> 0 bytes .../Library/x64_Debug/libintelaes.lib | Bin 40460 -> 0 bytes .../Library/x64_Release/libintelaes.lib | Bin 40460 -> 0 bytes src/BuildUtil/UnixBuildSoftwares.cs | 9 -- src/Mayaqua/Mayaqua.vcproj | 16 +- src/Mayaqua/intelaes/iaesni.h | 147 ------------------ src/THIRD_PARTY.TXT | 33 ---- src/bin/hamcore/eula.txt | 17 -- src/bin/hamcore/legal.txt | 17 -- 12 files changed, 6 insertions(+), 237 deletions(-) delete mode 100644 src/BuildFiles/Library/Win32_Debug/libintelaes.lib delete mode 100644 src/BuildFiles/Library/Win32_Release/libintelaes.lib delete mode 100644 src/BuildFiles/Library/x64_Debug/libintelaes.lib delete mode 100644 src/BuildFiles/Library/x64_Release/libintelaes.lib delete mode 100644 src/Mayaqua/intelaes/iaesni.h diff --git a/centos/SOURCES/linux_32bit.mak b/centos/SOURCES/linux_32bit.mak index 684b8ab1..ae5d8efd 100644 --- a/centos/SOURCES/linux_32bit.mak +++ b/centos/SOURCES/linux_32bit.mak @@ -47,7 +47,7 @@ else endif # Files -HEADERS_MAYAQUA=src/Mayaqua/Cfg.h src/Mayaqua/cryptoki.h src/Mayaqua/Encrypt.h src/Mayaqua/FileIO.h src/Mayaqua/intelaes/iaesni.h src/Mayaqua/Internat.h src/Mayaqua/Kernel.h src/Mayaqua/Mayaqua.h src/Mayaqua/MayaType.h src/Mayaqua/Memory.h src/Mayaqua/Microsoft.h src/Mayaqua/Network.h src/Mayaqua/Object.h src/Mayaqua/OS.h src/Mayaqua/Pack.h src/Mayaqua/pkcs11.h src/Mayaqua/pkcs11f.h src/Mayaqua/pkcs11t.h src/Mayaqua/Secure.h src/Mayaqua/Str.h src/Mayaqua/Table.h src/Mayaqua/TcpIp.h src/Mayaqua/Tick64.h src/Mayaqua/Tracking.h src/Mayaqua/TunTap.h src/Mayaqua/Unix.h src/Mayaqua/Win32.h src/Mayaqua/zlib/zconf.h src/Mayaqua/zlib/zlib.h +HEADERS_MAYAQUA=src/Mayaqua/Cfg.h src/Mayaqua/cryptoki.h src/Mayaqua/Encrypt.h src/Mayaqua/FileIO.h src/Mayaqua/Internat.h src/Mayaqua/Kernel.h src/Mayaqua/Mayaqua.h src/Mayaqua/MayaType.h src/Mayaqua/Memory.h src/Mayaqua/Microsoft.h src/Mayaqua/Network.h src/Mayaqua/Object.h src/Mayaqua/OS.h src/Mayaqua/Pack.h src/Mayaqua/pkcs11.h src/Mayaqua/pkcs11f.h src/Mayaqua/pkcs11t.h src/Mayaqua/Secure.h src/Mayaqua/Str.h src/Mayaqua/Table.h src/Mayaqua/TcpIp.h src/Mayaqua/Tick64.h src/Mayaqua/Tracking.h src/Mayaqua/TunTap.h src/Mayaqua/Unix.h src/Mayaqua/Win32.h src/Mayaqua/zlib/zconf.h src/Mayaqua/zlib/zlib.h HEADERS_CEDAR=src/Cedar/Account.h src/Cedar/Admin.h src/Cedar/AzureClient.h src/Cedar/AzureServer.h src/Cedar/Bridge.h src/Cedar/BridgeUnix.h src/Cedar/BridgeWin32.h src/Cedar/Cedar.h src/Cedar/CedarPch.h src/Cedar/CedarType.h src/Cedar/Client.h src/Cedar/CM.h src/Cedar/CMInner.h src/Cedar/Command.h src/Cedar/Connection.h src/Cedar/Console.h src/Cedar/Database.h src/Cedar/DDNS.h src/Cedar/EM.h src/Cedar/EMInner.h src/Cedar/EtherLog.h src/Cedar/Hub.h src/Cedar/Interop_OpenVPN.h src/Cedar/Interop_SSTP.h src/Cedar/IPsec.h src/Cedar/IPsec_EtherIP.h src/Cedar/IPsec_IKE.h src/Cedar/IPsec_IkePacket.h src/Cedar/IPsec_IPC.h src/Cedar/IPsec_L2TP.h src/Cedar/IPsec_PPP.h src/Cedar/IPsec_Win7.h src/Cedar/IPsec_Win7Inner.h src/Cedar/Layer3.h src/Cedar/Link.h src/Cedar/Listener.h src/Cedar/Logging.h src/Cedar/Nat.h src/Cedar/NativeStack.h src/Cedar/netcfgn.h src/Cedar/netcfgx.h src/Cedar/NM.h src/Cedar/NMInner.h src/Cedar/NullLan.h src/Cedar/Protocol.h src/Cedar/Radius.h src/Cedar/Remote.h src/Cedar/Sam.h src/Cedar/SecureInfo.h src/Cedar/SecureNAT.h src/Cedar/SeLowUser.h src/Cedar/Server.h src/Cedar/Session.h src/Cedar/SM.h src/Cedar/SMInner.h src/Cedar/SW.h src/Cedar/SWInner.h src/Cedar/UdpAccel.h src/Cedar/UT.h src/Cedar/VG.h src/Cedar/Virtual.h src/Cedar/VLan.h src/Cedar/VLanUnix.h src/Cedar/VLanWin32.h src/Cedar/WaterMark.h src/Cedar/WebUI.h src/Cedar/Win32Com.h src/Cedar/winpcap/bittypes.h src/Cedar/winpcap/bucket_lookup.h src/Cedar/winpcap/count_packets.h src/Cedar/winpcap/Devioctl.h src/Cedar/winpcap/Gnuc.h src/Cedar/winpcap/ip6_misc.h src/Cedar/winpcap/memory_t.h src/Cedar/winpcap/normal_lookup.h src/Cedar/winpcap/Ntddndis.h src/Cedar/winpcap/Ntddpack.h src/Cedar/winpcap/Packet32.h src/Cedar/winpcap/pcap.h src/Cedar/winpcap/pcap-bpf.h src/Cedar/winpcap/pcap-int.h src/Cedar/winpcap/pcap-stdinc.h src/Cedar/winpcap/pthread.h src/Cedar/winpcap/remote-ext.h src/Cedar/winpcap/sched.h src/Cedar/winpcap/semaphore.h src/Cedar/winpcap/tcp_session.h src/Cedar/winpcap/time_calls.h src/Cedar/winpcap/tme.h src/Cedar/winpcap/Win32-Extensions.h src/Cedar/WinUi.h src/Cedar/Wpc.h OBJECTS_MAYAQUA=tmp/objs/Mayaqua/Cfg.o tmp/objs/Mayaqua/Encrypt.o tmp/objs/Mayaqua/FileIO.o tmp/objs/Mayaqua/Internat.o tmp/objs/Mayaqua/Kernel.o tmp/objs/Mayaqua/Mayaqua.o tmp/objs/Mayaqua/Memory.o tmp/objs/Mayaqua/Microsoft.o tmp/objs/Mayaqua/Network.o tmp/objs/Mayaqua/Object.o tmp/objs/Mayaqua/OS.o tmp/objs/Mayaqua/Pack.o tmp/objs/Mayaqua/Secure.o tmp/objs/Mayaqua/Str.o tmp/objs/Mayaqua/Table.o tmp/objs/Mayaqua/TcpIp.o tmp/objs/Mayaqua/Tick64.o tmp/objs/Mayaqua/Tracking.o tmp/objs/Mayaqua/Unix.o tmp/objs/Mayaqua/Win32.o OBJECTS_CEDAR=tmp/objs/Cedar/Account.o tmp/objs/Cedar/Admin.o tmp/objs/Cedar/AzureClient.o tmp/objs/Cedar/AzureServer.o tmp/objs/Cedar/Bridge.o tmp/objs/Cedar/BridgeUnix.o tmp/objs/Cedar/BridgeWin32.o tmp/objs/Cedar/Cedar.o tmp/objs/Cedar/CedarPch.o tmp/objs/Cedar/Client.o tmp/objs/Cedar/CM.o tmp/objs/Cedar/Command.o tmp/objs/Cedar/Connection.o tmp/objs/Cedar/Console.o tmp/objs/Cedar/Database.o tmp/objs/Cedar/DDNS.o tmp/objs/Cedar/EM.o tmp/objs/Cedar/EtherLog.o tmp/objs/Cedar/Hub.o tmp/objs/Cedar/Interop_OpenVPN.o tmp/objs/Cedar/Interop_SSTP.o tmp/objs/Cedar/IPsec.o tmp/objs/Cedar/IPsec_EtherIP.o tmp/objs/Cedar/IPsec_IKE.o tmp/objs/Cedar/IPsec_IkePacket.o tmp/objs/Cedar/IPsec_IPC.o tmp/objs/Cedar/IPsec_L2TP.o tmp/objs/Cedar/IPsec_PPP.o tmp/objs/Cedar/IPsec_Win7.o tmp/objs/Cedar/Layer3.o tmp/objs/Cedar/Link.o tmp/objs/Cedar/Listener.o tmp/objs/Cedar/Logging.o tmp/objs/Cedar/Nat.o tmp/objs/Cedar/NativeStack.o tmp/objs/Cedar/NM.o tmp/objs/Cedar/NullLan.o tmp/objs/Cedar/Protocol.o tmp/objs/Cedar/Radius.o tmp/objs/Cedar/Remote.o tmp/objs/Cedar/Sam.o tmp/objs/Cedar/SecureInfo.o tmp/objs/Cedar/SecureNAT.o tmp/objs/Cedar/SeLowUser.o tmp/objs/Cedar/Server.o tmp/objs/Cedar/Session.o tmp/objs/Cedar/SM.o tmp/objs/Cedar/SW.o tmp/objs/Cedar/UdpAccel.o tmp/objs/Cedar/UT.o tmp/objs/Cedar/VG.o tmp/objs/Cedar/Virtual.o tmp/objs/Cedar/VLan.o tmp/objs/Cedar/VLanUnix.o tmp/objs/Cedar/VLanWin32.o tmp/objs/Cedar/WaterMark.o tmp/objs/Cedar/WebUI.o tmp/objs/Cedar/WinUi.o tmp/objs/Cedar/Wpc.o diff --git a/centos/SOURCES/linux_64bit.mak b/centos/SOURCES/linux_64bit.mak index f6550719..07343eea 100644 --- a/centos/SOURCES/linux_64bit.mak +++ b/centos/SOURCES/linux_64bit.mak @@ -47,7 +47,7 @@ else endif # Files -HEADERS_MAYAQUA=src/Mayaqua/Cfg.h src/Mayaqua/cryptoki.h src/Mayaqua/Encrypt.h src/Mayaqua/FileIO.h src/Mayaqua/intelaes/iaesni.h src/Mayaqua/Internat.h src/Mayaqua/Kernel.h src/Mayaqua/Mayaqua.h src/Mayaqua/MayaType.h src/Mayaqua/Memory.h src/Mayaqua/Microsoft.h src/Mayaqua/Network.h src/Mayaqua/Object.h src/Mayaqua/OS.h src/Mayaqua/Pack.h src/Mayaqua/pkcs11.h src/Mayaqua/pkcs11f.h src/Mayaqua/pkcs11t.h src/Mayaqua/Secure.h src/Mayaqua/Str.h src/Mayaqua/Table.h src/Mayaqua/TcpIp.h src/Mayaqua/Tick64.h src/Mayaqua/Tracking.h src/Mayaqua/TunTap.h src/Mayaqua/Unix.h src/Mayaqua/Win32.h src/Mayaqua/zlib/zconf.h src/Mayaqua/zlib/zlib.h +HEADERS_MAYAQUA=src/Mayaqua/Cfg.h src/Mayaqua/cryptoki.h src/Mayaqua/Encrypt.h src/Mayaqua/FileIO.h src/Mayaqua/Internat.h src/Mayaqua/Kernel.h src/Mayaqua/Mayaqua.h src/Mayaqua/MayaType.h src/Mayaqua/Memory.h src/Mayaqua/Microsoft.h src/Mayaqua/Network.h src/Mayaqua/Object.h src/Mayaqua/OS.h src/Mayaqua/Pack.h src/Mayaqua/pkcs11.h src/Mayaqua/pkcs11f.h src/Mayaqua/pkcs11t.h src/Mayaqua/Secure.h src/Mayaqua/Str.h src/Mayaqua/Table.h src/Mayaqua/TcpIp.h src/Mayaqua/Tick64.h src/Mayaqua/Tracking.h src/Mayaqua/TunTap.h src/Mayaqua/Unix.h src/Mayaqua/Win32.h src/Mayaqua/zlib/zconf.h src/Mayaqua/zlib/zlib.h HEADERS_CEDAR=src/Cedar/Account.h src/Cedar/Admin.h src/Cedar/AzureClient.h src/Cedar/AzureServer.h src/Cedar/Bridge.h src/Cedar/BridgeUnix.h src/Cedar/BridgeWin32.h src/Cedar/Cedar.h src/Cedar/CedarPch.h src/Cedar/CedarType.h src/Cedar/Client.h src/Cedar/CM.h src/Cedar/CMInner.h src/Cedar/Command.h src/Cedar/Connection.h src/Cedar/Console.h src/Cedar/Database.h src/Cedar/DDNS.h src/Cedar/EM.h src/Cedar/EMInner.h src/Cedar/EtherLog.h src/Cedar/Hub.h src/Cedar/Interop_OpenVPN.h src/Cedar/Interop_SSTP.h src/Cedar/IPsec.h src/Cedar/IPsec_EtherIP.h src/Cedar/IPsec_IKE.h src/Cedar/IPsec_IkePacket.h src/Cedar/IPsec_IPC.h src/Cedar/IPsec_L2TP.h src/Cedar/IPsec_PPP.h src/Cedar/IPsec_Win7.h src/Cedar/IPsec_Win7Inner.h src/Cedar/Layer3.h src/Cedar/Link.h src/Cedar/Listener.h src/Cedar/Logging.h src/Cedar/Nat.h src/Cedar/NativeStack.h src/Cedar/netcfgn.h src/Cedar/netcfgx.h src/Cedar/NM.h src/Cedar/NMInner.h src/Cedar/NullLan.h src/Cedar/Protocol.h src/Cedar/Radius.h src/Cedar/Remote.h src/Cedar/Sam.h src/Cedar/SecureInfo.h src/Cedar/SecureNAT.h src/Cedar/SeLowUser.h src/Cedar/Server.h src/Cedar/Session.h src/Cedar/SM.h src/Cedar/SMInner.h src/Cedar/SW.h src/Cedar/SWInner.h src/Cedar/UdpAccel.h src/Cedar/UT.h src/Cedar/VG.h src/Cedar/Virtual.h src/Cedar/VLan.h src/Cedar/VLanUnix.h src/Cedar/VLanWin32.h src/Cedar/WaterMark.h src/Cedar/WebUI.h src/Cedar/Win32Com.h src/Cedar/winpcap/bittypes.h src/Cedar/winpcap/bucket_lookup.h src/Cedar/winpcap/count_packets.h src/Cedar/winpcap/Devioctl.h src/Cedar/winpcap/Gnuc.h src/Cedar/winpcap/ip6_misc.h src/Cedar/winpcap/memory_t.h src/Cedar/winpcap/normal_lookup.h src/Cedar/winpcap/Ntddndis.h src/Cedar/winpcap/Ntddpack.h src/Cedar/winpcap/Packet32.h src/Cedar/winpcap/pcap.h src/Cedar/winpcap/pcap-bpf.h src/Cedar/winpcap/pcap-int.h src/Cedar/winpcap/pcap-stdinc.h src/Cedar/winpcap/pthread.h src/Cedar/winpcap/remote-ext.h src/Cedar/winpcap/sched.h src/Cedar/winpcap/semaphore.h src/Cedar/winpcap/tcp_session.h src/Cedar/winpcap/time_calls.h src/Cedar/winpcap/tme.h src/Cedar/winpcap/Win32-Extensions.h src/Cedar/WinUi.h src/Cedar/Wpc.h OBJECTS_MAYAQUA=tmp/objs/Mayaqua/Cfg.o tmp/objs/Mayaqua/Encrypt.o tmp/objs/Mayaqua/FileIO.o tmp/objs/Mayaqua/Internat.o tmp/objs/Mayaqua/Kernel.o tmp/objs/Mayaqua/Mayaqua.o tmp/objs/Mayaqua/Memory.o tmp/objs/Mayaqua/Microsoft.o tmp/objs/Mayaqua/Network.o tmp/objs/Mayaqua/Object.o tmp/objs/Mayaqua/OS.o tmp/objs/Mayaqua/Pack.o tmp/objs/Mayaqua/Secure.o tmp/objs/Mayaqua/Str.o tmp/objs/Mayaqua/Table.o tmp/objs/Mayaqua/TcpIp.o tmp/objs/Mayaqua/Tick64.o tmp/objs/Mayaqua/Tracking.o tmp/objs/Mayaqua/Unix.o tmp/objs/Mayaqua/Win32.o OBJECTS_CEDAR=tmp/objs/Cedar/Account.o tmp/objs/Cedar/Admin.o tmp/objs/Cedar/AzureClient.o tmp/objs/Cedar/AzureServer.o tmp/objs/Cedar/Bridge.o tmp/objs/Cedar/BridgeUnix.o tmp/objs/Cedar/BridgeWin32.o tmp/objs/Cedar/Cedar.o tmp/objs/Cedar/CedarPch.o tmp/objs/Cedar/Client.o tmp/objs/Cedar/CM.o tmp/objs/Cedar/Command.o tmp/objs/Cedar/Connection.o tmp/objs/Cedar/Console.o tmp/objs/Cedar/Database.o tmp/objs/Cedar/DDNS.o tmp/objs/Cedar/EM.o tmp/objs/Cedar/EtherLog.o tmp/objs/Cedar/Hub.o tmp/objs/Cedar/Interop_OpenVPN.o tmp/objs/Cedar/Interop_SSTP.o tmp/objs/Cedar/IPsec.o tmp/objs/Cedar/IPsec_EtherIP.o tmp/objs/Cedar/IPsec_IKE.o tmp/objs/Cedar/IPsec_IkePacket.o tmp/objs/Cedar/IPsec_IPC.o tmp/objs/Cedar/IPsec_L2TP.o tmp/objs/Cedar/IPsec_PPP.o tmp/objs/Cedar/IPsec_Win7.o tmp/objs/Cedar/Layer3.o tmp/objs/Cedar/Link.o tmp/objs/Cedar/Listener.o tmp/objs/Cedar/Logging.o tmp/objs/Cedar/Nat.o tmp/objs/Cedar/NativeStack.o tmp/objs/Cedar/NM.o tmp/objs/Cedar/NullLan.o tmp/objs/Cedar/Protocol.o tmp/objs/Cedar/Radius.o tmp/objs/Cedar/Remote.o tmp/objs/Cedar/Sam.o tmp/objs/Cedar/SecureInfo.o tmp/objs/Cedar/SecureNAT.o tmp/objs/Cedar/SeLowUser.o tmp/objs/Cedar/Server.o tmp/objs/Cedar/Session.o tmp/objs/Cedar/SM.o tmp/objs/Cedar/SW.o tmp/objs/Cedar/UdpAccel.o tmp/objs/Cedar/UT.o tmp/objs/Cedar/VG.o tmp/objs/Cedar/Virtual.o tmp/objs/Cedar/VLan.o tmp/objs/Cedar/VLanUnix.o tmp/objs/Cedar/VLanWin32.o tmp/objs/Cedar/WaterMark.o tmp/objs/Cedar/WebUI.o tmp/objs/Cedar/WinUi.o tmp/objs/Cedar/Wpc.o diff --git a/src/BuildFiles/Library/Win32_Debug/libintelaes.lib b/src/BuildFiles/Library/Win32_Debug/libintelaes.lib deleted file mode 100644 index cb2bf4c54be14aec3720a74c55190c22b0788c97..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 34486 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 - - - - diff --git a/src/Mayaqua/intelaes/iaesni.h b/src/Mayaqua/intelaes/iaesni.h deleted file mode 100644 index b71a223a..00000000 --- a/src/Mayaqua/intelaes/iaesni.h +++ /dev/null @@ -1,147 +0,0 @@ -/* - * Copyright (c) 2010, Intel Corporation - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * * Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * * Neither the name of Intel Corporation nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, - * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE - * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF - * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * -*/ - - -#ifndef _IAESNI_H__ -#define _IAESNI_H__ - -#include - -#define AES_INSTRCTIONS_CPUID_BIT (1<<25) - -//indicates input param -#define _AES_IN - -//indicates output param -#define _AES_OUT - -//indicates input/output param - based on context -#define _AES_INOUT - -//typedef unsigned char UCHAR; - - -/*#ifndef bool -#define bool BOOL -#endif*/ -//test if the processor actually supports the above functions -//executing one the functions below without processor support will cause UD fault -//bool check_for_aes_instructions(void); -#if (__cplusplus) -extern "C" { -#endif -int check_for_aes_instructions(void); - -#define ROUND_KEYS_UNALIGNED_TESTING - -#ifdef __linux__ - -#ifdef ROUND_KEYS_UNALIGNED_TESTING - -#define DEFINE_ROUND_KEYS \ - UCHAR __attribute__ ((aligned (16))) _expandedKey[16*16]; \ - UCHAR *expandedKey = _expandedKey + 4; \ - - -#else - - - -#define DEFINE_ROUND_KEYS \ - UCHAR __attribute__ ((aligned (16))) _expandedKey[16*16]; \ - UCHAR *expandedKey = _expandedKey; \ - -#endif - -#else // if not __linux__ - -#ifdef ROUND_KEYS_UNALIGNED_TESTING - -#define DEFINE_ROUND_KEYS \ - __declspec(align(16)) UCHAR _expandedKey[16*16]; \ - UCHAR *expandedKey = _expandedKey + 4; \ - - -#else - - - -#define DEFINE_ROUND_KEYS \ - __declspec(align(16)) UCHAR _expandedKey[16*16]; \ - UCHAR *expandedKey = _expandedKey; \ - - -#endif - -#endif - - - -// encryption functions -// plainText is pointer to input stream -// cipherText is pointer to buffer to be filled with encrypted (cipher text) data -// key is pointer to enc key (sizes are 16 bytes for AES-128, 24 bytes for AES-192, 32 for AES-256) -// numBlocks is number of 16 bytes blocks to process - note that encryption is done of full 16 byte blocks -void intel_AES_enc128(_AES_IN UCHAR *plainText, _AES_OUT UCHAR *cipherText, _AES_IN UCHAR *key, _AES_IN size_t numBlocks); -void intel_AES_enc192(_AES_IN UCHAR *plainText, _AES_OUT UCHAR *cipherText, _AES_IN UCHAR *key, _AES_IN size_t numBlocks); -void intel_AES_enc256(_AES_IN UCHAR *plainText, _AES_OUT UCHAR *cipherText, _AES_IN UCHAR *key, _AES_IN size_t numBlocks); - - -void intel_AES_enc128_CBC(_AES_IN UCHAR *plainText, _AES_OUT UCHAR *cipherText, _AES_IN UCHAR *key, _AES_IN size_t numBlocks, _AES_IN UCHAR *iv); -void intel_AES_enc192_CBC(_AES_IN UCHAR *plainText, _AES_OUT UCHAR *cipherText, _AES_IN UCHAR *key, _AES_IN size_t numBlocks, _AES_IN UCHAR *iv); -void intel_AES_enc256_CBC(_AES_IN UCHAR *plainText, _AES_OUT UCHAR *cipherText, _AES_IN UCHAR *key, _AES_IN size_t numBlocks, _AES_IN UCHAR *iv); - - -// encryption functions -// cipherText is pointer to encrypted stream -// plainText is pointer to buffer to be filled with original (plain text) data -// key is pointer to enc key (sizes are 16 bytes for AES-128, 24 bytes for AES-192, 32 for AES-256) -// numBlocks is number of 16 bytes blocks to process - note that decryption is done of full 16 byte blocks -void intel_AES_dec128(_AES_IN UCHAR *cipherText, _AES_OUT UCHAR *plainText, _AES_IN UCHAR *key, _AES_IN size_t numBlocks); -void intel_AES_dec192(_AES_IN UCHAR *cipherText, _AES_OUT UCHAR *plainText, _AES_IN UCHAR *key, _AES_IN size_t numBlocks); -void intel_AES_dec256(_AES_IN UCHAR *cipherText, _AES_OUT UCHAR *plainText, _AES_IN UCHAR *key, _AES_IN size_t numBlocks); - -void intel_AES_dec128_CBC(_AES_IN UCHAR *cipherText, _AES_OUT UCHAR *plainText, _AES_IN UCHAR *key, _AES_IN size_t numBlocks, _AES_IN UCHAR *iv); -void intel_AES_dec192_CBC(_AES_IN UCHAR *cipherText, _AES_OUT UCHAR *plainText, _AES_IN UCHAR *key, _AES_IN size_t numBlocks, _AES_IN UCHAR *iv); -void intel_AES_dec256_CBC(_AES_IN UCHAR *cipherText, _AES_OUT UCHAR *plainText, _AES_IN UCHAR *key, _AES_IN size_t numBlocks, _AES_IN UCHAR *iv); - -void intel_AES_encdec128_CTR(_AES_IN UCHAR *input, _AES_OUT UCHAR *output, _AES_IN UCHAR *key, _AES_IN size_t numBlocks, _AES_IN UCHAR *initial_counter); -void intel_AES_encdec192_CTR(_AES_IN UCHAR *input, _AES_OUT UCHAR *output, _AES_IN UCHAR *key, _AES_IN size_t numBlocks, _AES_IN UCHAR *initial_counter); -void intel_AES_encdec256_CTR(_AES_IN UCHAR *input, _AES_OUT UCHAR *output, _AES_IN UCHAR *key, _AES_IN size_t numBlocks, _AES_IN UCHAR *initial_counter); - - -#if (__cplusplus) -} -#endif - - -#endif - - - diff --git a/src/THIRD_PARTY.TXT b/src/THIRD_PARTY.TXT index 6846f45e..2c1b9e78 100644 --- a/src/THIRD_PARTY.TXT +++ b/src/THIRD_PARTY.TXT @@ -689,36 +689,3 @@ Gailly and Mark Adler; it does not include third-party code. If you redistribute modified sources, we would appreciate that you include in the file ChangeLog history information documenting your changes. Please read the FAQ for more information on the distribution of modified source versions. - -------------------- - -Intel AESNI Sample Library: - -Copyright (c) 2010, Intel Corporation -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - -* Redistributions of source code must retain the above copyright notice, this -list of conditions and the following disclaimer. -* Redistributions in binary form must reproduce the above copyright notice, -this list of conditions and the following disclaimer in the documentation -and/or other materials provided with the distribution. -* Neither the name of Intel Corporation nor the names of its contributors may -be used to endorse or promote products derived from this software without -specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE -FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -Issue Date: Aug 6, 2010 - diff --git a/src/bin/hamcore/eula.txt b/src/bin/hamcore/eula.txt index 1d4a4174..79532bee 100644 --- a/src/bin/hamcore/eula.txt +++ b/src/bin/hamcore/eula.txt @@ -420,23 +420,6 @@ If you redistribute modified sources, we would appreciate that you include in th ------------------- -Intel AESNI Sample Library: - -Copyright (c) 2010, Intel Corporation -All rights reserved. - -Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: - -* Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. -* Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. -* Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -Issue Date: Aug 6, 2010 - -------------------- - SHA0 implementation: Copyright (C) 2009 Gabriel A. Petursson diff --git a/src/bin/hamcore/legal.txt b/src/bin/hamcore/legal.txt index db470884..359c6ad3 100644 --- a/src/bin/hamcore/legal.txt +++ b/src/bin/hamcore/legal.txt @@ -295,23 +295,6 @@ If you redistribute modified sources, we would appreciate that you include in th ------------------- -Intel AESNI Sample Library: - -Copyright (c) 2010, Intel Corporation -All rights reserved. - -Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: - -* Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. -* Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. -* Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -Issue Date: Aug 6, 2010 - -------------------- - NOTES WRITTEN BY SOFTETHER CORPORATION Note for users of non-Windows version of PacketiX VPN: The enumerated bundle of License Agreements above are copies of original License Agreements of each library programs which PacketiX VPN uses. PacketiX VPN is not a delivered work from these libraries. PacketiX VPN is a separated work from the libraries, but it may call functions of the libraries (whether or not PacketiX VPN calls such functions are depended on the user's intention to link them or not on user's side computer). While some libraries indicate GPL or LGPL as a condition to re-distribute, PacketiX VPN is not license under GPL nor LGPL. Therefore, we took special care not to make PacketiX VPN become delivered works of any GPL or LGPL libraries. In order to achieve that, both PacketiX VPN and GPL/LGPL libraries are distributed with isolated forms (means that any program files of PacketiX VPN are not bound nor linked to any GPL/LGPL libraries). If a user of PacketiX VPN wants to link GPL/LGPL libraries by their own decisions, operations and responsibilities, he may do that on his computer. However, if a delivered work under copyright law is created as a result of such an operation, such a delivered work must not re-distributed to other people, because it may violate GPL/LGPL libraries' conditions.