Update to crypto++ 8.0. This fixes an bug where non-AESNI CPUs on Windows decrypted incorrectly
This commit is contained in:
parent
60aba37eaf
commit
490abd5f31
5
vendor/README
vendored
5
vendor/README
vendored
@ -2,6 +2,5 @@ This directory contains external projects, taken from the following locations:
|
||||
googletest: https://github.com/google/googletest/tree/4e4df226fc197c0dda6e37f5c8c3845ca1e73a49
|
||||
- changed: added NOLINT comment as workaround for clang-tidy warning https://github.com/google/googletest/issues/853
|
||||
spdlog: https://github.com/gabime/spdlog/tree/v0.16.3/include/spdlog
|
||||
cryptopp: https://github.com/weidai11/cryptopp/tree/CRYPTOPP_7_0_0
|
||||
- changed: added CMakeLists.txt and cryptopp-config.cmake from https://github.com/noloader/cryptopp-cmake/tree/7f3b3540740b365bed673936852d70795c0104f3
|
||||
- changed: removed cmake warning from CMakeLists.txt
|
||||
cryptopp: https://github.com/weidai11/cryptopp/tree/CRYPTOPP_8_0_0
|
||||
- changed: added CMakeLists.txt and cryptopp-config.cmake from https://github.com/noloader/cryptopp-cmake/tree/CRYPTOPP_8_0_0
|
||||
|
1
vendor/cryptopp/CMakeLists.txt
vendored
1
vendor/cryptopp/CMakeLists.txt
vendored
@ -88,6 +88,7 @@ set(BUILD_TESTING OFF CACHE BOOL "")
|
||||
set(BUILD_DOCUMENTATION OFF CACHE BOOL "")
|
||||
set(BUILD_SHARED OFF CACHE BOOL "")
|
||||
set(BUILD_STATIC ON CACHE BOOL "")
|
||||
set(cryptocpp_DISPLAY_CMAKE_SUPPORT_WARNING OFF CACHE BOOL "")
|
||||
add_subdirectory(vendor_cryptopp EXCLUDE_FROM_ALL)
|
||||
|
||||
target_link_libraries(cryptopp PRIVATE cryptopp-static)
|
||||
|
1466
vendor/cryptopp/vendor_cryptopp/CMakeLists.txt
vendored
1466
vendor/cryptopp/vendor_cryptopp/CMakeLists.txt
vendored
File diff suppressed because it is too large
Load Diff
15
vendor/cryptopp/vendor_cryptopp/Doxyfile
vendored
15
vendor/cryptopp/vendor_cryptopp/Doxyfile
vendored
@ -41,7 +41,7 @@ PROJECT_NAME = Crypto++
|
||||
# could be handy for archiving the generated documentation or if some version
|
||||
# control system is used.
|
||||
|
||||
PROJECT_NUMBER = 7.0
|
||||
PROJECT_NUMBER = 8.0
|
||||
|
||||
# Using the PROJECT_BRIEF tag one can provide an optional one line description
|
||||
# for a project that appears at the top of each page and should give viewer a
|
||||
@ -1225,8 +1225,7 @@ DOCSET_PUBLISHER_NAME = Crypto++
|
||||
# compressed HTML files.
|
||||
# The default value is: NO.
|
||||
# This tag requires that the tag GENERATE_HTML is set to YES.
|
||||
|
||||
GENERATE_HTMLHELP = YES
|
||||
GENERATE_HTMLHELP = NO
|
||||
|
||||
# The CHM_FILE tag can be used to specify the file name of the resulting .chm
|
||||
# file. You can add a path in front of the file if the result should not be
|
||||
@ -1494,7 +1493,10 @@ MATHJAX_CODEFILE =
|
||||
# The default value is: YES.
|
||||
# This tag requires that the tag GENERATE_HTML is set to YES.
|
||||
|
||||
SEARCHENGINE = NO
|
||||
# JW: Do _not_ enable server-side search. It consumes too many resources
|
||||
# and results in OOM Kills on MySQL, which corrupts the database.
|
||||
# https://github.com/weidai11/cryptopp/issues/720
|
||||
SEARCHENGINE = NO
|
||||
|
||||
# When the SERVER_BASED_SEARCH tag is enabled the search engine will be
|
||||
# implemented using a web server instead of a web client using Javascript. There
|
||||
@ -1506,7 +1508,10 @@ SEARCHENGINE = NO
|
||||
# The default value is: NO.
|
||||
# This tag requires that the tag SEARCHENGINE is set to YES.
|
||||
|
||||
SERVER_BASED_SEARCH = NO
|
||||
# JW: Do _not_ enable server-side search. It consumes too many resources
|
||||
# and results in OOM Kills on MySQL, which corrupts the database.
|
||||
# https://github.com/weidai11/cryptopp/issues/720
|
||||
SERVER_BASED_SEARCH = NO
|
||||
|
||||
# When EXTERNAL_SEARCH tag is enabled doxygen will no longer generate the PHP
|
||||
# script for searching. Instead the search results are written to an XML file
|
||||
|
158
vendor/cryptopp/vendor_cryptopp/Filelist.txt
vendored
158
vendor/cryptopp/vendor_cryptopp/Filelist.txt
vendored
@ -1,10 +1,12 @@
|
||||
3way.cpp
|
||||
3way.h
|
||||
adhoc.cpp.proto
|
||||
adv-simd.h
|
||||
adv_simd.h
|
||||
adler32.cpp
|
||||
adler32.h
|
||||
aes.h
|
||||
aes_armv4.h
|
||||
aes_armv4.S
|
||||
algebra.cpp
|
||||
algebra.h
|
||||
algparam.cpp
|
||||
@ -13,7 +15,7 @@ arc4.cpp
|
||||
arc4.h
|
||||
ariatab.cpp
|
||||
aria.cpp
|
||||
aria-simd.cpp
|
||||
aria_simd.cpp
|
||||
aria.h
|
||||
argnames.h
|
||||
asn.cpp
|
||||
@ -30,9 +32,11 @@ bench.h
|
||||
bds10.zip
|
||||
bench1.cpp
|
||||
bench2.cpp
|
||||
bench3.cpp
|
||||
bfinit.cpp
|
||||
blake2.cpp
|
||||
blake2-simd.cpp
|
||||
blake2s_simd.cpp
|
||||
blake2b_simd.cpp
|
||||
blake2.h
|
||||
blowfish.cpp
|
||||
blowfish.h
|
||||
@ -48,7 +52,12 @@ cbcmac.h
|
||||
ccm.cpp
|
||||
ccm.h
|
||||
chacha.cpp
|
||||
chacha_avx.cpp
|
||||
chacha_simd.cpp
|
||||
chacha.h
|
||||
cham.cpp
|
||||
cham_simd.cpp
|
||||
cham.h
|
||||
channels.cpp
|
||||
channels.h
|
||||
cmac.cpp
|
||||
@ -57,7 +66,7 @@ config.h
|
||||
cpu.cpp
|
||||
cpu.h
|
||||
crc.cpp
|
||||
crc-simd.cpp
|
||||
crc_simd.cpp
|
||||
crc.h
|
||||
cryptdll.vcxproj
|
||||
cryptdll.vcxproj.filters
|
||||
@ -73,6 +82,8 @@ cryptlib.h
|
||||
cryptlib.vcxproj
|
||||
cryptlib.vcxproj.filters
|
||||
cryptopp.rc
|
||||
darn.cpp
|
||||
darn.h
|
||||
datatest.cpp
|
||||
default.cpp
|
||||
default.h
|
||||
@ -90,6 +101,13 @@ dlltest.vcxproj
|
||||
dlltest.vcxproj.filters
|
||||
dmac.h
|
||||
drbg.h
|
||||
donna.h
|
||||
donna_32.h
|
||||
donna_64.h
|
||||
donna_sse.h
|
||||
donna_32.cpp
|
||||
donna_64.cpp
|
||||
donna_sse.cpp
|
||||
dsa.cpp
|
||||
dsa.h
|
||||
eax.cpp
|
||||
@ -121,7 +139,7 @@ fips140.h
|
||||
fipsalgt.cpp
|
||||
fipstest.cpp
|
||||
fltrimpl.h
|
||||
gcm-simd.cpp
|
||||
gcm_simd.cpp
|
||||
gcm.cpp
|
||||
gcm.h
|
||||
gf256.cpp
|
||||
@ -137,8 +155,14 @@ gost.h
|
||||
gzip.cpp
|
||||
gzip.h
|
||||
hashfwd.h
|
||||
hc128.cpp
|
||||
hc128.h
|
||||
hc256.cpp
|
||||
hc256.h
|
||||
hex.cpp
|
||||
hex.h
|
||||
hight.h
|
||||
hight.cpp
|
||||
hkdf.h
|
||||
hmac.cpp
|
||||
hmac.h
|
||||
@ -159,7 +183,12 @@ kalyna.cpp
|
||||
kalyna.h
|
||||
keccak.cpp
|
||||
keccak.h
|
||||
keccakc.cpp
|
||||
keccakc.h
|
||||
lubyrack.h
|
||||
lea.cpp
|
||||
lea_simd.cpp
|
||||
lea.h
|
||||
luc.cpp
|
||||
luc.h
|
||||
mars.cpp
|
||||
@ -186,9 +215,7 @@ mqv.h
|
||||
naclite.h
|
||||
nbtheory.cpp
|
||||
nbtheory.h
|
||||
neon-simd.cpp
|
||||
network.cpp
|
||||
network.h
|
||||
neon_simd.cpp
|
||||
nr.h
|
||||
oaep.cpp
|
||||
oaep.h
|
||||
@ -208,8 +235,11 @@ poly1305.cpp
|
||||
poly1305.h
|
||||
polynomi.cpp
|
||||
polynomi.h
|
||||
ppc-simd.h
|
||||
ppc-simd.cpp
|
||||
ppc_power7.cpp
|
||||
ppc_power8.cpp
|
||||
ppc_power9.cpp
|
||||
ppc_simd.cpp
|
||||
ppc_simd.h
|
||||
pssr.cpp
|
||||
pssr.h
|
||||
pubkey.cpp
|
||||
@ -221,6 +251,8 @@ rabin.cpp
|
||||
rabin.h
|
||||
randpool.cpp
|
||||
randpool.h
|
||||
rabbit.cpp
|
||||
rabbit.h
|
||||
rc2.cpp
|
||||
rc2.h
|
||||
rc5.cpp
|
||||
@ -237,9 +269,10 @@ rdtables.cpp
|
||||
regtest1.cpp
|
||||
regtest2.cpp
|
||||
regtest3.cpp
|
||||
regtest4.cpp
|
||||
resource.h
|
||||
rijndael.cpp
|
||||
rijndael-simd.cpp
|
||||
rijndael_simd.cpp
|
||||
rijndael.h
|
||||
ripemd.cpp
|
||||
ripemd.h
|
||||
@ -265,12 +298,12 @@ serpent.cpp
|
||||
serpent.h
|
||||
serpentp.h
|
||||
sha.cpp
|
||||
sha-simd.cpp
|
||||
sha_simd.cpp
|
||||
sha.h
|
||||
sha3.cpp
|
||||
sha3.h
|
||||
shacal2.cpp
|
||||
shacal2-simd.cpp
|
||||
shacal2_simd.cpp
|
||||
shacal2.h
|
||||
shark.cpp
|
||||
shark.h
|
||||
@ -278,27 +311,31 @@ sharkbox.cpp
|
||||
simple.cpp
|
||||
simple.h
|
||||
siphash.h
|
||||
simeck.cpp
|
||||
simeck_simd.cpp
|
||||
simeck.h
|
||||
simon.cpp
|
||||
simon-simd.cpp
|
||||
simon64_simd.cpp
|
||||
simon128_simd.cpp
|
||||
simon.h
|
||||
skipjack.cpp
|
||||
skipjack.h
|
||||
sm3.cpp
|
||||
sm3.h
|
||||
sm4.cpp
|
||||
sm4_simd.cpp
|
||||
sm4.h
|
||||
smartptr.h
|
||||
socketft.cpp
|
||||
socketft.h
|
||||
sosemanuk.cpp
|
||||
sosemanuk.h
|
||||
speck.cpp
|
||||
speck-simd.cpp
|
||||
speck64_simd.cpp
|
||||
speck128_simd.cpp
|
||||
speck.h
|
||||
square.cpp
|
||||
square.h
|
||||
squaretb.cpp
|
||||
sse-simd.cpp
|
||||
sse_simd.cpp
|
||||
stdcpp.h
|
||||
strciphr.cpp
|
||||
strciphr.h
|
||||
@ -312,8 +349,6 @@ threefish.h
|
||||
tiger.cpp
|
||||
tiger.h
|
||||
tigertab.cpp
|
||||
trdlocal.cpp
|
||||
trdlocal.h
|
||||
trunhash.h
|
||||
ttmac.cpp
|
||||
ttmac.h
|
||||
@ -326,21 +361,25 @@ validat1.cpp
|
||||
validat2.cpp
|
||||
validat3.cpp
|
||||
validat4.cpp
|
||||
validat5.cpp
|
||||
validat6.cpp
|
||||
validat7.cpp
|
||||
validat8.cpp
|
||||
validat9.cpp
|
||||
validat10.cpp
|
||||
validate.h
|
||||
vmac.cpp
|
||||
vmac.h
|
||||
vs2005.zip
|
||||
wait.cpp
|
||||
wait.h
|
||||
wake.cpp
|
||||
wake.h
|
||||
whrlpool.cpp
|
||||
whrlpool.h
|
||||
winpipes.cpp
|
||||
winpipes.h
|
||||
words.h
|
||||
x64dll.asm
|
||||
x64masm.asm
|
||||
xed25519.h
|
||||
xed25519.cpp
|
||||
xtr.cpp
|
||||
xtr.h
|
||||
xtrcrypt.cpp
|
||||
@ -366,6 +405,8 @@ TestData/aria.dat
|
||||
TestData/camellia.dat
|
||||
TestData/cast128v.dat
|
||||
TestData/cast256v.dat
|
||||
TestData/defdmac1.bin
|
||||
TestData/defdmac2.bin
|
||||
TestData/descert.dat
|
||||
TestData/dh1024.dat
|
||||
TestData/dh2048.dat
|
||||
@ -374,6 +415,10 @@ TestData/dlie2048.dat
|
||||
TestData/dsa1024.dat
|
||||
TestData/dsa1024b.dat
|
||||
TestData/dsa512.dat
|
||||
TestData/ed25519.dat
|
||||
TestData/ed25519_ver.dat
|
||||
TestData/ed25519v0.dat
|
||||
TestData/ed25519v1.dat
|
||||
TestData/elgc1024.dat
|
||||
TestData/esig1023.dat
|
||||
TestData/esig1536.dat
|
||||
@ -409,10 +454,10 @@ TestData/rc6val.dat
|
||||
TestData/rijndael.dat
|
||||
TestData/rsa1024.dat
|
||||
TestData/rsa2048.dat
|
||||
TestData/rsa2048a.dat
|
||||
TestData/rsa400pb.dat
|
||||
TestData/rsa400pv.dat
|
||||
TestData/rsa512a.dat
|
||||
TestData/rsa2048a.dat
|
||||
TestData/rw1024.dat
|
||||
TestData/rw2048.dat
|
||||
TestData/saferval.dat
|
||||
@ -423,57 +468,68 @@ TestData/skipjack.dat
|
||||
TestData/squareva.dat
|
||||
TestData/twofishv.dat
|
||||
TestData/usage.dat
|
||||
TestData/x25519.dat
|
||||
TestData/x25519v0.dat
|
||||
TestData/x25519v1.dat
|
||||
TestData/xtrdh171.dat
|
||||
TestData/xtrdh342.dat
|
||||
TestVectors/Readme.txt
|
||||
TestVectors/aes.txt
|
||||
TestVectors/all.txt
|
||||
TestVectors/aria.txt
|
||||
TestVectors/blake2.txt
|
||||
TestVectors/blake2b.txt
|
||||
TestVectors/blake2s.txt
|
||||
TestVectors/aria.txt
|
||||
TestVectors/camellia.txt
|
||||
TestVectors/ccm.txt
|
||||
TestVectors/chacha.txt
|
||||
TestVectors/chacha_tls.txt
|
||||
TestVectors/cham.txt
|
||||
TestVectors/cmac.txt
|
||||
TestVectors/dlies.txt
|
||||
TestVectors/dsa.txt
|
||||
TestVectors/dsa_1363.txt
|
||||
TestVectors/dsa_rfc6979.txt
|
||||
TestVectors/eax.txt
|
||||
TestVectors/esign.txt
|
||||
TestVectors/gcm.txt
|
||||
TestVectors/hc128.txt
|
||||
TestVectors/hc256.txt
|
||||
TestVectors/hight.txt
|
||||
TestVectors/hkdf.txt
|
||||
TestVectors/hmac.txt
|
||||
TestVectors/kalyna.txt
|
||||
TestVectors/keccak.txt
|
||||
TestVectors/lea.txt
|
||||
TestVectors/mars.txt
|
||||
TestVectors/nr.txt
|
||||
TestVectors/ocb.txt
|
||||
TestVectors/panama.txt
|
||||
TestVectors/rabbit.txt
|
||||
TestVectors/Readme.txt
|
||||
TestVectors/rsa_oaep.txt
|
||||
TestVectors/rsa_pkcs1_1_5.txt
|
||||
TestVectors/rsa_pss.txt
|
||||
TestVectors/dsa_rfc6979.txt
|
||||
TestVectors/rw.txt
|
||||
TestVectors/salsa.txt
|
||||
TestVectors/seal.txt
|
||||
TestVectors/seed.txt
|
||||
TestVectors/sha.txt
|
||||
TestVectors/sha2.txt
|
||||
TestVectors/sha3.txt
|
||||
TestVectors/sha1_fips_180.txt
|
||||
TestVectors/sha1_160_fips_180.txt
|
||||
TestVectors/sha2_fips_180.txt
|
||||
TestVectors/sha1_fips_180.txt
|
||||
TestVectors/sha2.txt
|
||||
TestVectors/sha2_224_fips_180.txt
|
||||
TestVectors/sha2_256_fips_180.txt
|
||||
TestVectors/sha2_384_fips_180.txt
|
||||
TestVectors/sha2_512_fips_180.txt
|
||||
TestVectors/sha3_fips_202.txt
|
||||
TestVectors/sha2_fips_180.txt
|
||||
TestVectors/sha3.txt
|
||||
TestVectors/sha3_224_fips_202.txt
|
||||
TestVectors/sha3_256_fips_202.txt
|
||||
TestVectors/sha3_384_fips_202.txt
|
||||
TestVectors/sha3_512_fips_202.txt
|
||||
TestVectors/sha3_fips_202.txt
|
||||
TestVectors/shacal2.txt
|
||||
TestVectors/simeck.txt
|
||||
TestVectors/simon.txt
|
||||
TestVectors/siphash.txt
|
||||
TestVectors/sm3.txt
|
||||
@ -486,3 +542,39 @@ TestVectors/ttmac.txt
|
||||
TestVectors/vmac.txt
|
||||
TestVectors/wake.txt
|
||||
TestVectors/whrlpool.txt
|
||||
TestPrograms/test_32bit.cxx
|
||||
TestPrograms/test_64bit.cxx
|
||||
TestPrograms/test_arm_acle.cxx
|
||||
TestPrograms/test_arm_aes.cxx
|
||||
TestPrograms/test_arm_asimd.cxx
|
||||
TestPrograms/test_arm_crc.cxx
|
||||
TestPrograms/test_arm_neon.cxx
|
||||
TestPrograms/test_arm_pmull.cxx
|
||||
TestPrograms/test_arm_sha.cxx
|
||||
TestPrograms/test_arm_sha3.cxx
|
||||
TestPrograms/test_arm_sha512.cxx
|
||||
TestPrograms/test_arm_sm3.cxx
|
||||
TestPrograms/test_arm_sm4.cxx
|
||||
TestPrograms/test_cxx.cxx
|
||||
TestPrograms/test_mixed_asm.cxx
|
||||
TestPrograms/test_newlib.cxx
|
||||
TestPrograms/test_ppc_aes.cxx
|
||||
TestPrograms/test_ppc_altivec.cxx
|
||||
TestPrograms/test_ppc_power7.cxx
|
||||
TestPrograms/test_ppc_power8.cxx
|
||||
TestPrograms/test_ppc_power9.cxx
|
||||
TestPrograms/test_ppc_sha.cxx
|
||||
TestPrograms/test_ppc_vmull.cxx
|
||||
TestPrograms/test_pthreads.cxx
|
||||
TestPrograms/test_x86_aes.cxx
|
||||
TestPrograms/test_x86_avx.cxx
|
||||
TestPrograms/test_x86_avx2.cxx
|
||||
TestPrograms/test_x86_avx512.cxx
|
||||
TestPrograms/test_x86_clmul.cxx
|
||||
TestPrograms/test_x86_cpuid.cxx
|
||||
TestPrograms/test_x86_sha.cxx
|
||||
TestPrograms/test_x86_sse2.cxx
|
||||
TestPrograms/test_x86_sse3.cxx
|
||||
TestPrograms/test_x86_sse41.cxx
|
||||
TestPrograms/test_x86_sse42.cxx
|
||||
TestPrograms/test_x86_ssse3.cxx
|
||||
|
1277
vendor/cryptopp/vendor_cryptopp/GNUmakefile
vendored
1277
vendor/cryptopp/vendor_cryptopp/GNUmakefile
vendored
File diff suppressed because it is too large
Load Diff
703
vendor/cryptopp/vendor_cryptopp/GNUmakefile-cross
vendored
703
vendor/cryptopp/vendor_cryptopp/GNUmakefile-cross
vendored
@ -3,6 +3,14 @@
|
||||
|
||||
SHELL = /bin/sh
|
||||
|
||||
# If needed
|
||||
TMPDIR ?= /tmp
|
||||
# Used for ARMv7 and NEON.
|
||||
FP_ABI ?= hard
|
||||
# Used for feature tests
|
||||
TOUT ?= a.out
|
||||
TOUT := $(strip $(TOUT))
|
||||
|
||||
# Default CXXFLAGS if none were provided
|
||||
CXXFLAGS ?= -DNDEBUG -g2 -O3 -fPIC -pipe
|
||||
|
||||
@ -22,35 +30,25 @@ INSTALL = install
|
||||
INSTALL_PROGRAM = $(INSTALL)
|
||||
INSTALL_DATA = $(INSTALL) -m 644
|
||||
|
||||
# Attempt to determine host machine, fallback to "this" machine.
|
||||
# The host machine is the one the package runs on. Most people
|
||||
# call this the "target", but not Autotools.
|
||||
HOSTX := $(shell $(CXX) $(CXXFLAGS) -dumpmachine 2>/dev/null | cut -f 1 -d '-')
|
||||
ifeq ($(HOSTX),)
|
||||
HOSTX := $(shell uname -m 2>/dev/null)
|
||||
endif
|
||||
|
||||
IS_i686 := $(shell echo "$HOSTX" | $(EGREP) -v 64 | $(EGREP) -i -c 'i.86')
|
||||
IS_x86_64 := $(shell echo "$HOSTX" | $(EGREP) -i -c 'x86_64|amd64')
|
||||
IS_ARM := $(shell echo "$HOSTX" | $(EGREP) -i -c 'arm')
|
||||
IS_ARMv8 := $(shell echo "$HOSTX" | $(EGREP) -i -c 'aarch32|aarch64')
|
||||
|
||||
CLANG_COMPILER := $(shell $(CXX) --version 2>&1 | $(EGREP) -i -c "clang")
|
||||
|
||||
IS_IOS ?= 0
|
||||
IS_ANDROID ?= 0
|
||||
IS_ARM_EMBEDDED ?= 0
|
||||
IS_NEON ?= 0
|
||||
|
||||
# Fixup ARM
|
||||
ifeq ($(IS_ARMv8),1)
|
||||
IS_ARM := 0
|
||||
endif
|
||||
|
||||
# Can be used by Android and Embeeded cross-compiles. Disable by default because
|
||||
# Android and embedded users typically don't run this configuration.
|
||||
HAS_SOLIB_VERSION ?= 0
|
||||
|
||||
# Formely adhoc.cpp was created from adhoc.cpp.proto when needed.
|
||||
# This is now needed because ISA tests are performed using adhoc.cpp.
|
||||
ifeq ($(wildcard adhoc.cpp),)
|
||||
$(shell cp adhoc.cpp.proto adhoc.cpp)
|
||||
endif
|
||||
|
||||
###########################################################
|
||||
##### General Variables #####
|
||||
###########################################################
|
||||
|
||||
# Default prefix for make install
|
||||
ifeq ($(PREFIX),)
|
||||
PREFIX = /usr/local
|
||||
@ -72,29 +70,37 @@ endif
|
||||
|
||||
# We honor ARFLAGS, but the "v" option used by default causes a noisy make
|
||||
ifeq ($(ARFLAGS),rv)
|
||||
ARFLAGS = r
|
||||
ARFLAGS = r
|
||||
endif
|
||||
|
||||
# Sadly, we can't actually use GCC_PRAGMA_AWARE because of GCC bug 53431.
|
||||
# Its a shame because GCC has so much to offer by the way of analysis.
|
||||
# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=53431
|
||||
ifneq ($(CLANG_COMPILER),0)
|
||||
CXXFLAGS += -Wall
|
||||
CXXFLAGS += -Wall
|
||||
endif
|
||||
|
||||
###########################################################
|
||||
##### iOS #####
|
||||
###########################################################
|
||||
|
||||
# iOS cross-compile configuration.
|
||||
# See http://www.cryptopp.com/wiki/iOS_(Command_Line).
|
||||
ifeq ($(IS_IOS),1)
|
||||
CXX = clang++
|
||||
|
||||
CXXFLAGS += $(IOS_FLAGS) -arch $(IOS_ARCH)
|
||||
CXXFLAGS += -isysroot $(IOS_SYSROOT) -stdlib=libc++
|
||||
CXXFLAGS += -isysroot "$(IOS_SYSROOT)" -stdlib=libc++
|
||||
|
||||
AR = libtool
|
||||
ARFLAGS = -static -o
|
||||
RANLIB = ranlib
|
||||
endif
|
||||
|
||||
###########################################################
|
||||
##### Android #####
|
||||
###########################################################
|
||||
|
||||
# Android cross-compile configuration.
|
||||
# See http://www.cryptopp.com/wiki/Android_(Command_Line).
|
||||
ifeq ($(IS_ANDROID),1)
|
||||
@ -116,6 +122,10 @@ ifeq ($(IS_ANDROID),1)
|
||||
AOSP_CPU_OBJ = cpu-features.o
|
||||
endif
|
||||
|
||||
###########################################################
|
||||
##### Embedded #####
|
||||
###########################################################
|
||||
|
||||
# ARM embedded cross-compile configuration.
|
||||
# See http://www.cryptopp.com/wiki/ARM_Embedded_(Command_Line)
|
||||
# and http://www.cryptopp.com/wiki/ARM_Embedded_(Bare Metal).
|
||||
@ -124,6 +134,364 @@ ifeq ($(IS_ARM_EMBEDDED),1)
|
||||
CXXFLAGS += $(ARM_EMBEDDED_FLAGS) --sysroot=$(ARM_EMBEDDED_SYSROOT)
|
||||
endif
|
||||
|
||||
###########################################################
|
||||
##### Compiler and Platform #####
|
||||
###########################################################
|
||||
|
||||
# Wait until CXXFLAGS have been set by setenv scripts.
|
||||
|
||||
GCC_COMPILER := $(shell $(CXX) --version 2>/dev/null | $(EGREP) -v -E 'llvm|clang' | $(EGREP) -i -c -E '(gcc|g\+\+)')
|
||||
CLANG_COMPILER := $(shell $(CXX) --version 2>/dev/null | $(EGREP) -i -c -E 'llvm|clang')
|
||||
|
||||
HOSTX := $(shell $(CXX) $(CXXFLAGS) -dumpmachine 2>/dev/null | cut -f 1 -d '-')
|
||||
ifeq ($(HOSTX),)
|
||||
HOSTX := $(shell uname -m 2>/dev/null)
|
||||
endif
|
||||
|
||||
# This dance is because Clang reports the host architecture instead
|
||||
# of the target architecture. Running Clang on an x86_64 machine with
|
||||
# -arch arm64 yields x86_64 instead of aarch64 or arm64.
|
||||
|
||||
ifeq ($(CLANG_COMPILER),1)
|
||||
IS_X86 := $(shell echo $(CXXFLAGS) | $(EGREP) -v 64 | $(EGREP) -i -c -E 'i.86')
|
||||
IS_X64 := $(shell echo $(CXXFLAGS) | $(EGREP) -i -c -E 'x86_64|amd64')
|
||||
IS_ARM32 := $(shell echo $(CXXFLAGS) | $(EGREP) -v 64 | $(EGREP) -i -c -E 'arm|armhf|arm7l|eabihf')
|
||||
IS_ARMV8 := $(shell echo $(CXXFLAGS) | $(EGREP) -i -c -E 'aarch32|aarch64|arm64|armv8')
|
||||
else
|
||||
IS_X86 := $(shell echo $(HOSTX) | $(EGREP) -v 64 | $(EGREP) -i -c -E 'i.86')
|
||||
IS_X64 := $(shell echo $(HOSTX) | $(EGREP) -i -c -E 'x86_64|amd64')
|
||||
IS_ARM32 := $(shell echo $(HOSTX) | $(EGREP) -v 64 | $(EGREP) -i -c -E 'arm|armhf|arm7l|eabihf')
|
||||
IS_ARMV8 := $(shell echo $(HOSTX) | $(EGREP) -i -c -E 'aarch32|aarch64|arm64|armv8')
|
||||
endif
|
||||
|
||||
$(info Here's what we found... IS_X86: $(IS_X86), IS_X64: $(IS_X64), IS_ARM32: $(IS_ARM32), IS_ARMV8: $(IS_ARMV8))
|
||||
|
||||
###########################################################
|
||||
##### Test Program #####
|
||||
###########################################################
|
||||
|
||||
# Hack to skip CPU feature tests for some recipes
|
||||
DETECT_FEATURES ?= 1
|
||||
ifeq ($(findstring -DCRYPTOPP_DISABLE_ASM,$(CXXFLAGS)),-DCRYPTOPP_DISABLE_ASM)
|
||||
DETECT_FEATURES := 0
|
||||
else ifeq ($(findstring clean,$(MAKECMDGOALS)),clean)
|
||||
DETECT_FEATURES := 0
|
||||
else ifeq ($(findstring distclean,$(MAKECMDGOALS)),distclean)
|
||||
DETECT_FEATURES := 0
|
||||
else ifeq ($(findstring distclean,$(MAKECMDGOALS)),trim)
|
||||
DETECT_FEATURES := 0
|
||||
endif
|
||||
|
||||
# Strip out -Wall, -Wextra and friends for feature testing
|
||||
ifeq ($(DETECT_FEATURES),1)
|
||||
TCXXFLAGS := $(filter-out -Wall -Wextra -Werror% -Wunused -Wconversion -Wp%, $(CXXFLAGS))
|
||||
ifneq ($(strip $(TCXXFLAGS)),)
|
||||
$(info Using testing flags: $(TCXXFLAGS))
|
||||
endif
|
||||
endif
|
||||
|
||||
# For the previous messages
|
||||
$(info )
|
||||
|
||||
###########################################################
|
||||
##### X86/X32/X64 Options #####
|
||||
###########################################################
|
||||
|
||||
ifneq ($(IS_X86)$(IS_X64),00)
|
||||
ifeq ($(DETECT_FEATURES),1)
|
||||
|
||||
SSE2_FLAG = -msse2
|
||||
SSE3_FLAG = -msse3
|
||||
SSSE3_FLAG = -mssse3
|
||||
SSE41_FLAG = -msse4.1
|
||||
SSE42_FLAG = -msse4.2
|
||||
CLMUL_FLAG = -mpclmul
|
||||
AESNI_FLAG = -maes
|
||||
AVX_FLAG = -mavx
|
||||
AVX2_FLAG = -mavx2
|
||||
SHANI_FLAG = -msha
|
||||
|
||||
TPROG = TestPrograms/test_x86_sse2.cxx
|
||||
TOPT = $(SSE2_FLAG)
|
||||
HAVE_OPT = $(shell $(CXX) $(TCXXFLAGS) $(ZOPT) $(TOPT) $(TPROG) -o $(TOUT) 2>&1 | tr ' ' '\n' | wc -l)
|
||||
ifeq ($(strip $(HAVE_OPT)),0)
|
||||
CHACHA_FLAG = $(SSE2_FLAG)
|
||||
else
|
||||
SSE2_FLAG =
|
||||
endif
|
||||
|
||||
TPROG = TestPrograms/test_x86_ssse3.cxx
|
||||
TOPT = $(SSSE3_FLAG)
|
||||
HAVE_OPT = $(shell $(CXX) $(TCXXFLAGS) $(ZOPT) $(TOPT) $(TPROG) -o $(TOUT) 2>&1 | tr ' ' '\n' | wc -l)
|
||||
ifeq ($(strip $(HAVE_OPT)),0)
|
||||
ARIA_FLAG = $(SSSE3_FLAG)
|
||||
CHAM_FLAG = $(SSSE3_FLAG)
|
||||
LEA_FLAG = $(SSSE3_FLAG)
|
||||
SIMECK_FLAG = $(SSSE3_FLAG)
|
||||
SIMON64_FLAG = $(SSSE3_FLAG)
|
||||
SIMON128_FLAG = $(SSSE3_FLAG)
|
||||
SPECK64_FLAG = $(SSSE3_FLAG)
|
||||
SPECK128_FLAG = $(SSSE3_FLAG)
|
||||
else
|
||||
SSSE3_FLAG =
|
||||
endif
|
||||
|
||||
TPROG = TestPrograms/test_x86_sse41.cxx
|
||||
TOPT = $(SSE41_FLAG)
|
||||
HAVE_OPT = $(shell $(CXX) $(TCXXFLAGS) $(ZOPT) $(TOPT) $(TPROG) -o $(TOUT) 2>&1 | tr ' ' '\n' | wc -l)
|
||||
ifeq ($(strip $(HAVE_OPT)),0)
|
||||
BLAKE2B_FLAG = $(SSE41_FLAG)
|
||||
BLAKE2S_FLAG = $(SSE41_FLAG)
|
||||
SIMON64_FLAG = $(SSE41_FLAG)
|
||||
SPECK64_FLAG = $(SSE41_FLAG)
|
||||
else
|
||||
SSE41_FLAG =
|
||||
endif
|
||||
|
||||
TPROG = TestPrograms/test_x86_sse42.cxx
|
||||
TOPT = $(SSE42_FLAG)
|
||||
HAVE_OPT = $(shell $(CXX) $(TCXXFLAGS) $(ZOPT) $(TOPT) $(TPROG) -o $(TOUT) 2>&1 | tr ' ' '\n' | wc -l)
|
||||
ifeq ($(strip $(HAVE_OPT)),0)
|
||||
CRC_FLAG = $(SSE42_FLAG)
|
||||
else
|
||||
SSE42_FLAG =
|
||||
endif
|
||||
|
||||
TPROG = TestPrograms/test_x86_clmul.cxx
|
||||
TOPT = $(CLMUL_FLAG)
|
||||
HAVE_OPT = $(shell $(CXX) $(TCXXFLAGS) $(ZOPT) $(TOPT) $(TPROG) -o $(TOUT) 2>&1 | tr ' ' '\n' | wc -l)
|
||||
ifeq ($(strip $(HAVE_OPT)),0)
|
||||
GCM_FLAG = $(SSSE3_FLAG) $(CLMUL_FLAG)
|
||||
else
|
||||
CLMUL_FLAG =
|
||||
endif
|
||||
|
||||
TPROG = TestPrograms/test_x86_aes.cxx
|
||||
TOPT = $(AESNI_FLAG)
|
||||
HAVE_OPT = $(shell $(CXX) $(TCXXFLAGS) $(ZOPT) $(TOPT) $(TPROG) -o $(TOUT) 2>&1 | tr ' ' '\n' | wc -l)
|
||||
ifeq ($(strip $(HAVE_OPT)),0)
|
||||
AES_FLAG = $(SSE41_FLAG) $(AESNI_FLAG)
|
||||
SM4_FLAG = $(SSSE3_FLAG) $(AESNI_FLAG)
|
||||
else
|
||||
AESNI_FLAG =
|
||||
endif
|
||||
|
||||
TPROG = TestPrograms/test_x86_avx.cxx
|
||||
TOPT = $(AVX_FLAG)
|
||||
HAVE_OPT = $(shell $(CXX) $(TCXXFLAGS) $(ZOPT) $(TOPT) $(TPROG) -o $(TOUT) 2>&1 | tr ' ' '\n' | wc -l)
|
||||
ifeq ($(strip $(HAVE_OPT)),0)
|
||||
# XXX_FLAG = $(AVX_FLAG)
|
||||
else
|
||||
AVX_FLAG =
|
||||
endif
|
||||
|
||||
TPROG = TestPrograms/test_x86_avx2.cxx
|
||||
TOPT = $(AVX2_FLAG)
|
||||
HAVE_OPT = $(shell $(CXX) $(TCXXFLAGS) $(ZOPT) $(TOPT) $(TPROG) -o $(TOUT) 2>&1 | tr ' ' '\n' | wc -l)
|
||||
ifeq ($(strip $(HAVE_OPT)),0)
|
||||
CHACHA_AVX2_FLAG = $(AVX2_FLAG)
|
||||
else
|
||||
AVX2_FLAG =
|
||||
endif
|
||||
|
||||
TPROG = TestPrograms/test_x86_sha.cxx
|
||||
TOPT = $(SHANI_FLAG)
|
||||
HAVE_OPT = $(shell $(CXX) $(TCXXFLAGS) $(ZOPT) $(TOPT) $(TPROG) -o $(TOUT) 2>&1 | tr ' ' '\n' | wc -l)
|
||||
ifeq ($(strip $(HAVE_OPT)),0)
|
||||
SHA_FLAG = $(SSE42_FLAG) $(SHANI_FLAG)
|
||||
else
|
||||
SHANI_FLAG =
|
||||
endif
|
||||
|
||||
ifeq ($(SSE2_FLAG),)
|
||||
CXXFLAGS += -DCRYPTOPP_DISABLE_ASM
|
||||
else ifeq ($(SSE3_FLAG),)
|
||||
CXXFLAGS += -DCRYPTOPP_DISABLE_SSE3
|
||||
else ifeq ($(SSSE3_FLAG),)
|
||||
CXXFLAGS += -DCRYPTOPP_DISABLE_SSSE3
|
||||
else ifeq ($(SSE41_FLAG),)
|
||||
CXXFLAGS += -DCRYPTOPP_DISABLE_SSE4
|
||||
else ifeq ($(SSE42_FLAG),)
|
||||
CXXFLAGS += -DCRYPTOPP_DISABLE_SSE4
|
||||
endif
|
||||
|
||||
ifneq ($(SSE42_FLAG),)
|
||||
|
||||
# Unusual GCC/Clang on Macports. It assembles AES, but not CLMUL.
|
||||
# test_x86_clmul.s:15: no such instruction: 'pclmulqdq $0, %xmm1,%xmm0'
|
||||
ifeq ($(CLMUL_FLAG),)
|
||||
CXXFLAGS += -DCRYPTOPP_DISABLE_CLMUL
|
||||
endif
|
||||
ifeq ($(AESNI_FLAG),)
|
||||
CXXFLAGS += -DCRYPTOPP_DISABLE_AESNI
|
||||
endif
|
||||
|
||||
ifeq ($(AVX_FLAG),)
|
||||
CXXFLAGS += -DCRYPTOPP_DISABLE_AVX
|
||||
else ifeq ($(AVX2_FLAG),)
|
||||
CXXFLAGS += -DCRYPTOPP_DISABLE_AVX2
|
||||
else ifeq ($(SHANI_FLAG),)
|
||||
CXXFLAGS += -DCRYPTOPP_DISABLE_SHANI
|
||||
endif
|
||||
endif
|
||||
|
||||
# DETECT_FEATURES
|
||||
endif
|
||||
|
||||
# IS_X86, IS_X32 and IS_X64
|
||||
endif
|
||||
|
||||
###########################################################
|
||||
##### ARM A-32, Aach64 and NEON #####
|
||||
###########################################################
|
||||
|
||||
ifneq ($(IS_ARM32)$(IS_ARMV8),00)
|
||||
ifeq ($(DETECT_FEATURES),1)
|
||||
|
||||
ifeq ($(IS_ARM32),1)
|
||||
|
||||
ifneq ($(IS_IOS)$(IS_ANDROID),00)
|
||||
NEON_FLAG =
|
||||
else
|
||||
NEON_FLAG = -march=armv7-a -mfloat-abi=$(FP_ABI) -mfpu=neon
|
||||
endif
|
||||
|
||||
TPROG = TestPrograms/test_arm_neon.cxx
|
||||
TOPT = $(NEON_FLAG)
|
||||
HAVE_OPT = $(shell $(CXX) $(TCXXFLAGS) $(ZOPT) $(TOPT) $(TPROG) -o $(TOUT) 2>&1 | tr ' ' '\n' | wc -l)
|
||||
ifeq ($(strip $(HAVE_OPT)),0)
|
||||
ARIA_FLAG = $(NEON_FLAG)
|
||||
AES_FLAG = $(NEON_FLAG)
|
||||
CRC_FLAG = $(NEON_FLAG)
|
||||
GCM_FLAG = $(NEON_FLAG)
|
||||
BLAKE2B_FLAG = $(NEON_FLAG)
|
||||
BLAKE2S_FLAG = $(NEON_FLAG)
|
||||
CHACHA_FLAG = $(NEON_FLAG)
|
||||
CHAM_FLAG = $(NEON_FLAG)
|
||||
LEA_FLAG = $(NEON_FLAG)
|
||||
SHA_FLAG = $(NEON_FLAG)
|
||||
SIMECK_FLAG = $(NEON_FLAG)
|
||||
SIMON64_FLAG = $(NEON_FLAG)
|
||||
SIMON128_FLAG = $(NEON_FLAG)
|
||||
SPECK64_FLAG = $(NEON_FLAG)
|
||||
SPECK128_FLAG = $(NEON_FLAG)
|
||||
SM4_FLAG = $(NEON_FLAG)
|
||||
else
|
||||
NEON_FLAG =
|
||||
CXXFLAGS += -DCRYPTOPP_DISABLE_NEON
|
||||
endif
|
||||
|
||||
# IS_NEON
|
||||
endif
|
||||
|
||||
ifeq ($(IS_ARMV8),1)
|
||||
|
||||
ifeq ($(IS_IOS),1)
|
||||
ASIMD_FLAG =
|
||||
CRC_FLAG =
|
||||
AES_FLAG =
|
||||
PMUL_FLAG =
|
||||
SHA_FLAG =
|
||||
else
|
||||
ASIMD_FLAG = -march=armv8-a
|
||||
CRC_FLAG = -march=armv8-a+crc
|
||||
AES_FLAG = -march=armv8-a+crypto
|
||||
PMULL_FLAG = -march=armv8-a+crypto
|
||||
SHA_FLAG = -march=armv8-a+crypto
|
||||
endif
|
||||
|
||||
TPROG = TestPrograms/test_arm_acle.cxx
|
||||
TOPT = $(ASIMD_FLAG)
|
||||
HAVE_OPT = $(shell $(CXX) $(TCXXFLAGS) $(ZOPT) $(TOPT) $(TPROG) -o $(TOUT) 2>&1 | tr ' ' '\n' | wc -l)
|
||||
ifeq ($(strip $(HAVE_OPT)),0)
|
||||
ACLE_FLAG += -DCRYPTOPP_ARM_ACLE_AVAILABLE=1
|
||||
else
|
||||
CXXFLAGS += -DCRYPTOPP_ARM_ACLE_AVAILABLE=0
|
||||
endif
|
||||
|
||||
TPROG = TestPrograms/test_arm_asimd.cxx
|
||||
TOPT = $(ASIMD_FLAG)
|
||||
HAVE_OPT = $(shell $(CXX) $(CXXFLAGS) $(ACLE_FLAG) $(ZOPT) $(TOPT) $(TPROG) -o $(TOUT) 2>&1 | tr ' ' '\n' | wc -l)
|
||||
ifeq ($(strip $(HAVE_OPT)),0)
|
||||
ARIA_FLAG = $(ASIMD_FLAG)
|
||||
BLAKE2B_FLAG = $(ASIMD_FLAG)
|
||||
BLAKE2S_FLAG = $(ASIMD_FLAG)
|
||||
CHACHA_FLAG = $(ASIMD_FLAG)
|
||||
CHAM_FLAG = $(ASIMD_FLAG)
|
||||
LEA_FLAG = $(ASIMD_FLAG)
|
||||
NEON_FLAG = $(ASIMD_FLAG)
|
||||
SIMECK_FLAG = $(ASIMD_FLAG)
|
||||
SIMON64_FLAG = $(ASIMD_FLAG)
|
||||
SIMON128_FLAG = $(ASIMD_FLAG)
|
||||
SPECK64_FLAG = $(ASIMD_FLAG)
|
||||
SPECK128_FLAG = $(ASIMD_FLAG)
|
||||
SM4_FLAG = $(ASIMD_FLAG)
|
||||
else
|
||||
ASIMD_FLAG =
|
||||
CXXFLAGS += -DCRYPTOPP_DISABLE_ASM
|
||||
endif
|
||||
|
||||
TPROG = TestPrograms/test_arm_crc.cxx
|
||||
TOPT = $(CRC_FLAG)
|
||||
HAVE_OPT = $(shell $(CXX) $(CXXFLAGS) $(ACLE_FLAG) $(ZOPT) $(TOPT) $(TPROG) -o $(TOUT) 2>&1 | tr ' ' '\n' | wc -l)
|
||||
ifneq ($(strip $(HAVE_OPT)),0)
|
||||
CRC_FLAG =
|
||||
CXXFLAGS += -DCRYPTOPP_ARM_CRC32_AVAILABLE=0
|
||||
endif
|
||||
|
||||
TPROG = TestPrograms/test_arm_aes.cxx
|
||||
TOPT = $(AES_FLAG)
|
||||
HAVE_OPT = $(shell $(CXX) $(CXXFLAGS) $(ACLE_FLAG) $(ZOPT) $(TOPT) $(TPROG) -o $(TOUT) 2>&1 | tr ' ' '\n' | wc -l)
|
||||
ifneq ($(strip $(HAVE_OPT)),0)
|
||||
AES_FLAG =
|
||||
CXXFLAGS += -DCRYPTOPP_ARM_AES_AVAILABLE=0
|
||||
endif
|
||||
|
||||
TPROG = TestPrograms/test_arm_pmull.cxx
|
||||
TOPT = $(PMULL_FLAG)
|
||||
HAVE_OPT = $(shell $(CXX) $(CXXFLAGS) $(ACLE_FLAG) $(ZOPT) $(TOPT) $(TPROG) -o $(TOUT) 2>&1 | tr ' ' '\n' | wc -l)
|
||||
ifneq ($(strip $(HAVE_OPT)),0)
|
||||
PMULL_FLAG =
|
||||
CXXFLAGS += -DCRYPTOPP_ARM_PMULL_AVAILABLE=0
|
||||
endif
|
||||
|
||||
TPROG = TestPrograms/test_arm_sha.cxx
|
||||
TOPT = $(SHA_FLAG)
|
||||
HAVE_OPT = $(shell $(CXX) $(CXXFLAGS) $(ACLE_FLAG) $(ZOPT) $(TOPT) $(TPROG) -o $(TOUT) 2>&1 | tr ' ' '\n' | wc -l)
|
||||
ifneq ($(strip $(HAVE_OPT)),0)
|
||||
SHA_FLAG =
|
||||
CXXFLAGS += -DCRYPTOPP_ARM_SHA_AVAILABLE=0
|
||||
endif
|
||||
|
||||
TPROG = TestPrograms/test_arm_sm3.cxx
|
||||
TOPT = -march=armv8.4-a+crypto
|
||||
HAVE_OPT = $(shell $(CXX) $(CXXFLAGS) $(ACLE_FLAG) $(ZOPT) $(TOPT) $(TPROG) -o $(TOUT) 2>&1 | tr ' ' '\n' | wc -l)
|
||||
ifeq ($(strip $(HAVE_OPT)),0)
|
||||
SM3_FLAG = -march=armv8.4-a+crypto
|
||||
SM4_FLAG = -march=armv8.4-a+crypto
|
||||
endif
|
||||
|
||||
TPROG = TestPrograms/test_arm_sha3.cxx
|
||||
TOPT = -march=armv8.4-a+crypto
|
||||
HAVE_OPT = $(shell $(CXX) $(CXXFLAGS) $(ACLE_FLAG) $(ZOPT) $(TOPT) $(TPROG) -o $(TOUT) 2>&1 | tr ' ' '\n' | wc -l)
|
||||
ifeq ($(strip $(HAVE_OPT)),0)
|
||||
SHA3_FLAG = -march=armv8.4-a+crypto
|
||||
SHA512_FLAG = -march=armv8.4-a+crypto
|
||||
endif
|
||||
|
||||
# IS_ARMV8
|
||||
endif
|
||||
|
||||
# DETECT_FEATURES
|
||||
endif
|
||||
|
||||
# IS_ARM32, IS_ARMV8, IS_NEON
|
||||
endif
|
||||
|
||||
###########################################################
|
||||
##### Common #####
|
||||
###########################################################
|
||||
|
||||
# No ASM for Travis testing
|
||||
ifeq ($(findstring no-asm,$(MAKECMDGOALS)),no-asm)
|
||||
ifeq ($(findstring -DCRYPTOPP_DISABLE_ASM,$(CXXFLAGS)),)
|
||||
@ -178,7 +546,7 @@ endif # Valgrind
|
||||
# Debug testing on GNU systems. Triggered by -DDEBUG.
|
||||
# Newlib test due to http://sourceware.org/bugzilla/show_bug.cgi?id=20268
|
||||
ifneq ($(filter -DDEBUG -DDEBUG=1,$(CXXFLAGS)),)
|
||||
USING_GLIBCXX := $(shell $(CXX) -x c++ $(CXXFLAGS) -E adhoc.cpp.proto 2>&1 | $(EGREP) -i -c "__GLIBCXX__")
|
||||
USING_GLIBCXX := $(shell $(CXX) $(CXXFLAGS) -E pch.cpp 2>&1 | $(EGREP) -i -c "__GLIBCXX__")
|
||||
ifneq ($(USING_GLIBCXX),0)
|
||||
ifeq ($(HAS_NEWLIB),0)
|
||||
ifeq ($(findstring -D_GLIBCXX_DEBUG,$(CXXFLAGS)),)
|
||||
@ -207,115 +575,34 @@ ifeq ($(findstring lean,$(MAKECMDGOALS)),lean)
|
||||
endif # MAKECMDGOALS
|
||||
endif # Dead code stripping
|
||||
|
||||
# Pickup ARMv7 and NEON. Do it after Android, iOS and Embedded flags have been set.
|
||||
ifeq ($(IS_ARM),1)
|
||||
IS_ARMv7 := $(shell echo | $(CXX) -x c++ $(CXXFLAGS) -dM -E - 2>/dev/null | $(EGREP) -i -c '__ARM_ARCH 7')
|
||||
ifeq ($(IS_ARMv7),1)
|
||||
IS_NEON := 1
|
||||
else
|
||||
IS_NEON := $(shell echo | $(CXX) -x c++ $(CXXFLAGS) -dM -E - 2>/dev/null | $(EGREP) -i -c -E '\<__ARM_NEON\>')
|
||||
endif
|
||||
endif
|
||||
|
||||
# ARMv7-a
|
||||
ifeq ($(IS_ARMv7),1)
|
||||
ifeq ($(findstring -march=armv7-a,$(CXXFLAGS)),)
|
||||
NEON_FLAG = -march=armv7-a
|
||||
GCM_FLAG = -march=armv7-a
|
||||
ARIA_FLAG = -march=armv7-a
|
||||
BLAKE2_FLAG = -march=armv7-a
|
||||
endif
|
||||
endif
|
||||
|
||||
# NEON
|
||||
ifeq ($(IS_NEON),1)
|
||||
ifeq ($(findstring -mfpu=neon,$(CXXFLAGS)),)
|
||||
NEON_FLAG += -mfpu=neon
|
||||
GCM_FLAG += -mfpu=neon
|
||||
ARIA_FLAG += -mfpu=neon
|
||||
BLAKE2_FLAG += -mfpu=neon
|
||||
SIMON_FLAG += -mfpu=neon
|
||||
SPECK_FLAG += -mfpu=neon
|
||||
ifeq ($(IS_ANDROID),1)
|
||||
ifeq ($(findstring -mfloat-abi=softfp,$(CXXFLAGS)),)
|
||||
NEON_FLAG += -mfloat-abi=softfp
|
||||
GCM_FLAG += -mfloat-abi=softfp
|
||||
ARIA_FLAG += -mfloat-abi=softfp
|
||||
BLAKE2_FLAG += -mfloat-abi=softfp
|
||||
SIMON_FLAG += -mfloat-abi=softfp
|
||||
SPECK_FLAG += -mfloat-abi=softfp
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
|
||||
# ARMv8-a
|
||||
ifneq ($(IS_ARMv8),0)
|
||||
IS_NEON := $(shell echo | $(CXX) -x c++ $(CXXFLAGS) -march=armv8-a -dM -E - 2>/dev/null | $(EGREP) -i -c __ARM_NEON)
|
||||
ifeq ($(IS_NEON),1)
|
||||
ARIA_FLAG = -march=armv8-a
|
||||
BLAKE2_FLAG = -march=armv8-a
|
||||
NEON_FLAG = -march=armv8-a
|
||||
SIMON_FLAG = -march=armv8-a
|
||||
SPECK_FLAG = -march=armv8-a
|
||||
endif
|
||||
HAVE_CRC := $(shell echo | $(CXX) -x c++ $(CXXFLAGS) -march=armv8-a+crc -dM -E - 2>/dev/null | $(EGREP) -i -c __ARM_FEATURE_CRC32)
|
||||
ifeq ($(HAVE_CRC),1)
|
||||
CRC_FLAG = -march=armv8-a+crc
|
||||
endif
|
||||
HAVE_CRYPTO := $(shell echo | $(CXX) -x c++ $(CXXFLAGS) -march=armv8-a+crypto -dM -E - 2>/dev/null | $(EGREP) -i -c __ARM_FEATURE_CRYPTO)
|
||||
ifeq ($(HAVE_CRYPTO),1)
|
||||
AES_FLAG = -march=armv8-a+crypto
|
||||
GCM_FLAG = -march=armv8-a+crypto
|
||||
SHA_FLAG = -march=armv8-a+crypto
|
||||
endif
|
||||
endif
|
||||
|
||||
# i686 and x86_64
|
||||
ifneq ($(IS_i686)$(IS_x86_64),00)
|
||||
HAVE_SSSE3 = $(shell echo | $(CXX) -x c++ $(CXXFLAGS) -mssse3 -dM -E - 2>/dev/null | $(EGREP) -i -c __SSSE3__)
|
||||
ifeq ($(HAVE_SSSE3),1)
|
||||
ARIA_FLAG = -mssse3
|
||||
SSSE3_FLAG = -mssse3
|
||||
SIMON_FLAG = -mssse3
|
||||
SPECK_FLAG = -mssse3
|
||||
endif
|
||||
HAVE_SSE4 = $(shell echo | $(CXX) -x c++ $(CXXFLAGS) -msse4.1 -dM -E - 2>/dev/null | $(EGREP) -i -c __SSE4_1__)
|
||||
ifeq ($(HAVE_SSE4),1)
|
||||
SIMON_FLAG = -msse4.1
|
||||
SPECK_FLAG = -msse4.1
|
||||
endif
|
||||
HAVE_SSE4 = $(shell echo | $(CXX) -x c++ $(CXXFLAGS) -msse4.2 -dM -E - 2>/dev/null | $(EGREP) -i -c __SSE4_2__)
|
||||
ifeq ($(HAVE_SSE4),1)
|
||||
BLAKE2_FLAG = -msse4.2
|
||||
CRC_FLAG = -msse4.2
|
||||
endif
|
||||
HAVE_CLMUL = $(shell echo | $(CXX) -x c++ $(CXXFLAGS) -mssse3 -mpclmul -dM -E - 2>/dev/null | $(EGREP) -i -c __PCLMUL__ )
|
||||
ifeq ($(HAVE_CLMUL),1)
|
||||
GCM_FLAG = -mssse3 -mpclmul
|
||||
endif
|
||||
HAVE_AES = $(shell echo | $(CXX) -x c++ $(CXXFLAGS) -msse4.1 -maes -dM -E - 2>/dev/null | $(EGREP) -i -c __AES__)
|
||||
ifeq ($(HAVE_AES),1)
|
||||
AES_FLAG = -msse4.1 -maes
|
||||
endif
|
||||
HAVE_SHA = $(shell echo | $(CXX) -x c++ $(CXXFLAGS) -msse4.2 -msha -dM -E - 2>/dev/null | $(EGREP) -i -c __SHA__)
|
||||
ifeq ($(HAVE_SHA),1)
|
||||
SHA_FLAG = -msse4.2 -msha
|
||||
endif
|
||||
endif
|
||||
###########################################################
|
||||
##### Source and object files #####
|
||||
###########################################################
|
||||
|
||||
# List cryptlib.cpp first, then cpu.cpp, then integer.cpp to tame C++ static initialization problems.
|
||||
SRCS := cryptlib.cpp cpu.cpp integer.cpp $(filter-out cryptlib.cpp cpu.cpp integer.cpp pch.cpp simple.cpp winpipes.cpp cryptlib_bds.cpp,$(sort $(wildcard *.cpp)))
|
||||
|
||||
SRCS := cryptlib.cpp cpu.cpp integer.cpp $(filter-out cryptlib.cpp cpu.cpp integer.cpp pch.cpp simple.cpp cryptlib_bds.cpp,$(sort $(wildcard *.cpp)))
|
||||
# For Makefile.am; resource.h is Windows
|
||||
INCL := $(filter-out resource.h,$(sort $(wildcard *.h)))
|
||||
|
||||
# Cryptogams AES for ARMv4 and above. We couple to ARMv7.
|
||||
# Avoid iOS. It cannot consume the assembly.
|
||||
ifeq ($(IS_ARM32),1)
|
||||
ifneq ($(IS_IOS),1)
|
||||
CRYPTOGAMS_AES_FLAG = -march=armv7-a
|
||||
CRYPTOGAMS_AES_FLAG += -Wa,--noexecstack
|
||||
SRCS += aes_armv4.S
|
||||
endif
|
||||
endif
|
||||
|
||||
# List cryptlib.cpp first, then cpu.cpp, then integer.cpp to tame C++ static initialization problems.
|
||||
OBJS := $(SRCS:.cpp=.o)
|
||||
OBJS := $(OBJS:.S=.o)
|
||||
|
||||
# List test.cpp first to tame C++ static initialization problems.
|
||||
TESTSRCS := adhoc.cpp test.cpp bench1.cpp bench2.cpp validat0.cpp validat1.cpp validat2.cpp validat3.cpp validat4.cpp datatest.cpp regtest1.cpp regtest2.cpp regtest3.cpp fipsalgt.cpp dlltest.cpp
|
||||
TESTSRCS := adhoc.cpp test.cpp bench1.cpp bench2.cpp bench3.cpp datatest.cpp dlltest.cpp fipsalgt.cpp validat0.cpp validat1.cpp validat2.cpp validat3.cpp validat4.cpp validat5.cpp validat6.cpp validat7.cpp validat8.cpp validat9.cpp validat10.cpp regtest1.cpp regtest2.cpp regtest3.cpp regtest4.cpp
|
||||
TESTINCL := bench.h factory.h validate.h
|
||||
|
||||
# Test objects
|
||||
TESTOBJS := $(TESTSRCS:.cpp=.o)
|
||||
LIBOBJS := $(filter-out $(TESTOBJS),$(OBJS))
|
||||
|
||||
@ -337,11 +624,15 @@ SOLIB_COMPAT_SUFFIX=.$(LIB_MAJOR)
|
||||
SOLIB_FLAGS=-Wl,-soname,libcryptopp.so$(SOLIB_COMPAT_SUFFIX)
|
||||
endif # HAS_SOLIB_VERSION
|
||||
|
||||
###########################################################
|
||||
##### Targets and Recipes #####
|
||||
###########################################################
|
||||
|
||||
# Default builds program with static library only
|
||||
.PHONY: default
|
||||
default: cryptest.exe
|
||||
|
||||
.PHONY: all
|
||||
.PHONY: all static dynamic
|
||||
all: static dynamic cryptest.exe
|
||||
|
||||
ifneq ($(IS_IOS),0)
|
||||
@ -363,10 +654,10 @@ lean: static dynamic cryptest.exe
|
||||
|
||||
.PHONY: clean
|
||||
clean:
|
||||
-$(RM) adhoc.cpp.o adhoc.cpp.proto.o $(LIBOBJS) $(AOSP_CPU_OBJ) $(TESTOBJS) $(DLLOBJS) $(LIBIMPORTOBJS) $(TESTIMPORTOBJS) $(DLLTESTOBJS)
|
||||
-$(RM) adhoc.cpp.o adhoc.cpp.proto.o $(LIBOBJS) $(AOSP_CPU_OBJ) rdrand-*.o $(TESTOBJS) $(DLLOBJS) $(LIBIMPORTOBJS) $(TESTIMPORTOBJS) $(DLLTESTOBJS)
|
||||
@-$(RM) libcryptopp.a libcryptopp.dylib cryptopp.dll libcryptopp.dll.a libcryptopp.import.a
|
||||
@-$(RM) libcryptopp.so libcryptopp.so$(SOLIB_COMPAT_SUFFIX) libcryptopp.so$(SOLIB_VERSION_SUFFIX)
|
||||
@-$(RM) cryptest.exe dlltest.exe cryptest.import.exe cryptest.info ct rdrand-???.o
|
||||
@-$(RM) cryptest.exe dlltest.exe cryptest.import.exe cryptest.info ct et
|
||||
@-$(RM) *.la *.lo *.gcov *.gcno *.gcda *.stackdump core core-*
|
||||
@-$(RM) /tmp/adhoc.exe
|
||||
@-$(RM) -r /tmp/cryptopp_test/
|
||||
@ -374,31 +665,46 @@ clean:
|
||||
@-$(RM) -r *.dylib.dSYM/
|
||||
@-$(RM) -r cov-int/
|
||||
|
||||
.PHONY: distclean
|
||||
distclean: clean
|
||||
-$(RM) adhoc.cpp adhoc.cpp.copied GNUmakefile.deps benchmarks.html cryptest.txt cryptest-*.txt
|
||||
@-$(RM) cryptopp.tgz *.o *.bc *.ii *~
|
||||
@-$(RM) -r $(SRCS:.cpp=.obj) cryptlib.lib cryptest.exe *.suo *.sdf *.pdb Win32/ x64/ ipch/
|
||||
.PHONY: autotools-clean
|
||||
autotools-clean:
|
||||
@-$(RM) -f configure.ac configure configure.in Makefile.am Makefile.in Makefile
|
||||
@-$(RM) -f config.guess config.status config.sub depcomp install-sh compile
|
||||
@-$(RM) -f stamp-h1 ar-lib *.m4 local.* lt*.sh missing libtool* libcryptopp.pc*
|
||||
@-$(RM) -f config.guess config.status config.sub config.h.in compile depcomp
|
||||
@-$(RM) -f install-sh stamp-h1 ar-lib *.lo *.la *.m4 local.* lt*.sh missing
|
||||
@-$(RM) -f cryptest cryptestcwd libtool* libcryptopp.la libcryptopp.pc*
|
||||
@-$(RM) -rf m4/ auto*.cache/ .deps/ .libs/
|
||||
@-$(RM) -r TestCoverage/
|
||||
@-$(RM) cryptopp$(LIB_VER)\.*
|
||||
@-$(RM) CryptoPPRef.zip
|
||||
|
||||
.PHONY: cmake-clean
|
||||
cmake-clean:
|
||||
@-$(RM) -f cryptopp-config.cmake CMakeLists.txt
|
||||
@-$(RM) -rf cmake_build/
|
||||
|
||||
.PHONY: distclean
|
||||
distclean: clean autotools-clean cmake-clean
|
||||
-$(RM) adhoc.cpp adhoc.cpp.copied GNUmakefile.deps benchmarks.html cryptest.txt
|
||||
@-$(RM) cryptest-*.txt cryptopp.tgz libcryptopp.pc *.o *.bc *.ii *~
|
||||
@-$(RM) -r cryptlib.lib cryptest.exe *.suo *.sdf *.pdb Win32/ x64/ ipch/
|
||||
@-$(RM) -r $(LIBOBJS:.o=.obj) $(TESTOBJS:.o=.obj)
|
||||
@-$(RM) -r $(LIBOBJS:.o=.lst) $(TESTOBJS:.o=.lst)
|
||||
@-$(RM) -r TestCoverage/ ref*/
|
||||
@-$(RM) cryptopp$(LIB_VER)\.* CryptoPPRef.zip
|
||||
|
||||
# Install cryptest.exe, libcryptopp.a and libcryptopp.so.
|
||||
# The library install was broken-out into its own recipe at GH #653.
|
||||
.PHONY: install
|
||||
install:
|
||||
@-$(MKDIR) $(DESTDIR)$(INCLUDEDIR)/cryptopp
|
||||
$(INSTALL_DATA) *.h $(DESTDIR)$(INCLUDEDIR)/cryptopp
|
||||
ifneq ($(wildcard cryptest.exe),)
|
||||
install: cryptest.exe install-lib
|
||||
@-$(MKDIR) $(DESTDIR)$(BINDIR)
|
||||
$(INSTALL_PROGRAM) cryptest.exe $(DESTDIR)$(BINDIR)
|
||||
@-$(MKDIR) $(DESTDIR)$(DATADIR)/cryptopp/TestData
|
||||
@-$(MKDIR) $(DESTDIR)$(DATADIR)/cryptopp/TestVectors
|
||||
$(INSTALL_DATA) TestData/*.dat $(DESTDIR)$(DATADIR)/cryptopp/TestData
|
||||
$(INSTALL_DATA) TestVectors/*.txt $(DESTDIR)$(DATADIR)/cryptopp/TestVectors
|
||||
endif
|
||||
|
||||
# A recipe to install only the library, and not cryptest.exe. Also
|
||||
# see https://github.com/weidai11/cryptopp/issues/653.
|
||||
.PHONY: install-lib
|
||||
install-lib:
|
||||
@-$(MKDIR) $(DESTDIR)$(INCLUDEDIR)/cryptopp
|
||||
$(INSTALL_DATA) *.h $(DESTDIR)$(INCLUDEDIR)/cryptopp
|
||||
ifneq ($(wildcard libcryptopp.a),)
|
||||
@-$(MKDIR) $(DESTDIR)$(LIBDIR)
|
||||
$(INSTALL_DATA) libcryptopp.a $(DESTDIR)$(LIBDIR)
|
||||
@ -435,15 +741,15 @@ ifeq ($(HAS_SOLIB_VERSION),1)
|
||||
libcryptopp.so: libcryptopp.so$(SOLIB_VERSION_SUFFIX)
|
||||
endif
|
||||
|
||||
libcryptopp.so$(SOLIB_VERSION_SUFFIX): $(LIBOBJS)
|
||||
$(CXX) -shared $(SOLIB_FLAGS) -o $@ $(strip $(CXXFLAGS)) -Wl,--exclude-libs,ALL $(LIBOBJS) $(LDFLAGS) $(LDLIBS)
|
||||
libcryptopp.so$(SOLIB_VERSION_SUFFIX): $(LIBOBJS) $(AOSP_CPU_OBJ)
|
||||
$(CXX) -shared $(SOLIB_FLAGS) -o $@ $(strip $(CXXFLAGS)) -Wl,--exclude-libs,ALL $(LIBOBJS) $(AOSP_CPU_OBJ) $(LDFLAGS) $(LDLIBS)
|
||||
ifeq ($(HAS_SOLIB_VERSION),1)
|
||||
-$(LN) libcryptopp.so$(SOLIB_VERSION_SUFFIX) libcryptopp.so
|
||||
-$(LN) libcryptopp.so$(SOLIB_VERSION_SUFFIX) libcryptopp.so$(SOLIB_COMPAT_SUFFIX)
|
||||
endif
|
||||
|
||||
libcryptopp.dylib: $(LIBOBJS)
|
||||
$(CXX) -dynamiclib -o $@ $(strip $(CXXFLAGS)) -install_name "$@" -current_version "$(LIB_MAJOR).$(LIB_MINOR).$(LIB_PATCH)" -compatibility_version "$(LIB_MAJOR).$(LIB_MINOR)" -headerpad_max_install_names $(LDFLAGS) $(LIBOBJS)
|
||||
libcryptopp.dylib: $(LIBOBJS) $(AOSP_CPU_OBJ)
|
||||
$(CXX) -dynamiclib -o $@ $(strip $(CXXFLAGS)) -install_name "$@" -current_version "$(LIB_MAJOR).$(LIB_MINOR).$(LIB_PATCH)" -compatibility_version "$(LIB_MAJOR).$(LIB_MINOR)" -headerpad_max_install_names $(LDFLAGS) $(LIBOBJS) $(AOSP_CPU_OBJ)
|
||||
|
||||
cryptest.exe: libcryptopp.a $(TESTOBJS)
|
||||
$(CXX) -o $@ $(strip $(CXXFLAGS)) $(TESTOBJS) ./libcryptopp.a $(LDFLAGS) $(LDLIBS)
|
||||
@ -451,13 +757,17 @@ cryptest.exe: libcryptopp.a $(TESTOBJS)
|
||||
# Used to generate list of source files for Autotools, CMakeList and Android.mk
|
||||
.PHONY: sources
|
||||
sources:
|
||||
$(info Library sources: $(filter-out $(TESTSRCS),$(SRCS)))
|
||||
$(info ***** Library sources *****)
|
||||
$(info $(filter-out $(TESTSRCS),$(SRCS)))
|
||||
$(info )
|
||||
$(info Library headers: $(filter-out $(TESTINCL),$(INCL)))
|
||||
$(info ***** Library headers *****)
|
||||
$(info $(filter-out $(TESTINCL),$(INCL)))
|
||||
$(info )
|
||||
$(info Test sources: $(TESTSRCS))
|
||||
$(info ***** Test sources *****)
|
||||
$(info $(TESTSRCS))
|
||||
$(info )
|
||||
$(info Test headers: $(TESTINCL))
|
||||
$(info ***** Test headers *****)
|
||||
$(info $(TESTINCL))
|
||||
|
||||
adhoc.cpp: adhoc.cpp.proto
|
||||
ifeq ($(wildcard adhoc.cpp),)
|
||||
@ -471,55 +781,108 @@ ifeq ($(wildcard GNUmakefile.deps),GNUmakefile.deps)
|
||||
-include GNUmakefile.deps
|
||||
endif # Dependencies
|
||||
|
||||
# Cryptogams ARM asm implementation.
|
||||
aes_armv4.o : aes_armv4.S
|
||||
$(CXX) $(strip $(CXXFLAGS) -fpermissive $(CRYPTOGAMS_AES_FLAG) -c) $<
|
||||
|
||||
cpu-features.o: cpu-features.h cpu-features.c
|
||||
$(CXX) $(strip $(CXXFLAGS) -fpermissive -c) cpu-features.c
|
||||
|
||||
# SSE4.2 or NEON available
|
||||
aria-simd.o : aria-simd.cpp
|
||||
# SSSE3 or NEON available
|
||||
aria_simd.o : aria_simd.cpp
|
||||
$(CXX) $(strip $(CXXFLAGS) $(ARIA_FLAG) -c) $<
|
||||
|
||||
# SSE4.2 or ARMv8a available
|
||||
blake2-simd.o : blake2-simd.cpp
|
||||
$(CXX) $(strip $(CXXFLAGS) $(BLAKE2_FLAG) -c) $<
|
||||
# SSE, NEON or POWER7 available
|
||||
blake2s_simd.o : blake2s_simd.cpp
|
||||
$(CXX) $(strip $(CXXFLAGS) $(BLAKE2S_FLAG) -c) $<
|
||||
|
||||
# SSE2 on i586
|
||||
cpu.o : cpu.cpp
|
||||
$(CXX) $(strip $(CXXFLAGS) $(CPU_FLAG) -c) $<
|
||||
# SSE, NEON or POWER8 available
|
||||
blake2b_simd.o : blake2b_simd.cpp
|
||||
$(CXX) $(strip $(CXXFLAGS) $(BLAKE2B_FLAG) -c) $<
|
||||
|
||||
# SSE2 or NEON available
|
||||
chacha_simd.o : chacha_simd.cpp
|
||||
$(CXX) $(strip $(CXXFLAGS) $(CHACHA_FLAG) -c) $<
|
||||
|
||||
# AVX2 available
|
||||
chacha_avx.o : chacha_avx.cpp
|
||||
$(CXX) $(strip $(CXXFLAGS) $(CHACHA_AVX2_FLAG) -c) $<
|
||||
|
||||
# SSSE3 available
|
||||
cham_simd.o : cham_simd.cpp
|
||||
$(CXX) $(strip $(CXXFLAGS) $(CHAM_FLAG) -c) $<
|
||||
|
||||
# Power9 available
|
||||
darn.o : darn.cpp
|
||||
$(CXX) $(strip $(CXXFLAGS) $(DARN_FLAG) -c) $<
|
||||
|
||||
# SSE2 on i686
|
||||
donna_sse.o : donna_sse.cpp
|
||||
$(CXX) $(strip $(CXXFLAGS) $(SSE2_FLAG) -c) $<
|
||||
|
||||
# SSE2 on i686
|
||||
sse_simd.o : sse_simd.cpp
|
||||
$(CXX) $(strip $(CXXFLAGS) $(SSE2_FLAG) -c) $<
|
||||
|
||||
# SSE4.2 or ARMv8a available
|
||||
crc-simd.o : crc-simd.cpp
|
||||
crc_simd.o : crc_simd.cpp
|
||||
$(CXX) $(strip $(CXXFLAGS) $(CRC_FLAG) -c) $<
|
||||
|
||||
# PCLMUL or ARMv7a/ARMv8a available
|
||||
gcm-simd.o : gcm-simd.cpp
|
||||
gcm_simd.o : gcm_simd.cpp
|
||||
$(CXX) $(strip $(CXXFLAGS) $(GCM_FLAG) -c) $<
|
||||
|
||||
# SSSE3 available
|
||||
lea_simd.o : lea_simd.cpp
|
||||
$(CXX) $(strip $(CXXFLAGS) $(LEA_FLAG) -c) $<
|
||||
|
||||
# NEON available
|
||||
neon-simd.o : neon-simd.cpp
|
||||
neon_simd.o : neon_simd.cpp
|
||||
$(CXX) $(strip $(CXXFLAGS) $(NEON_FLAG) -c) $<
|
||||
|
||||
# AESNI or ARMv7a/ARMv8a available
|
||||
rijndael-simd.o : rijndael-simd.cpp
|
||||
rijndael_simd.o : rijndael_simd.cpp
|
||||
$(CXX) $(strip $(CXXFLAGS) $(AES_FLAG) -c) $<
|
||||
|
||||
# SSE4.2/SHA-NI or ARMv8a available
|
||||
sha-simd.o : sha-simd.cpp
|
||||
sha_simd.o : sha_simd.cpp
|
||||
$(CXX) $(strip $(CXXFLAGS) $(SHA_FLAG) -c) $<
|
||||
|
||||
# SSE4.2/SHA-NI or ARMv8a available
|
||||
shacal2-simd.o : shacal2-simd.cpp
|
||||
shacal2_simd.o : shacal2_simd.cpp
|
||||
$(CXX) $(strip $(CXXFLAGS) $(SHA_FLAG) -c) $<
|
||||
|
||||
# SSSE3 or NEON available
|
||||
simon-simd.o : simon-simd.cpp
|
||||
$(CXX) $(strip $(CXXFLAGS) $(SIMON_FLAG) -c) $<
|
||||
simeck_simd.o : simeck_simd.cpp
|
||||
$(CXX) $(strip $(CXXFLAGS) $(SIMECK_FLAG) -c) $<
|
||||
|
||||
# SSSE3 or NEON available
|
||||
speck-simd.o : speck-simd.cpp
|
||||
$(CXX) $(strip $(CXXFLAGS) $(SPECK_FLAG) -c) $<
|
||||
# SSE4.1, NEON or POWER7 available
|
||||
simon64_simd.o : simon64_simd.cpp
|
||||
$(CXX) $(strip $(CXXFLAGS) $(SIMON64_FLAG) -c) $<
|
||||
|
||||
# SSSE3, NEON or POWER8 available
|
||||
simon128_simd.o : simon128_simd.cpp
|
||||
$(CXX) $(strip $(CXXFLAGS) $(SIMON128_FLAG) -c) $<
|
||||
|
||||
# SSE4.1, NEON or POWER7 available
|
||||
speck64_simd.o : speck64_simd.cpp
|
||||
$(CXX) $(strip $(CXXFLAGS) $(SPECK64_FLAG) -c) $<
|
||||
|
||||
# SSSE3, NEON or POWER8 available
|
||||
speck128_simd.o : speck128_simd.cpp
|
||||
$(CXX) $(strip $(CXXFLAGS) $(SPECK128_FLAG) -c) $<
|
||||
|
||||
# ARMv8.4 available
|
||||
sm3_simd.o : sm3_simd.cpp
|
||||
$(CXX) $(strip $(CXXFLAGS) $(SM3_FLAG) -c) $<
|
||||
|
||||
# AESNI available
|
||||
sm4_simd.o : sm4_simd.cpp
|
||||
$(CXX) $(strip $(CXXFLAGS) $(SM4_FLAG) -c) $<
|
||||
|
||||
%.o : %.cpp
|
||||
$(CXX) $(strip $(CXXFLAGS) -c) $<
|
||||
|
||||
GNUmakefile.deps:
|
||||
$(CXX) $(strip $(CXXFLAGS) -MM) *.cpp > GNUmakefile.deps
|
||||
.PHONY: dep deps depend
|
||||
dep deps depend GNUmakefile.deps:
|
||||
$(CXX) $(strip $(CXXFLAGS) -DCRYPTOPP_DISABLE_ASM) -MM *.cpp > GNUmakefile.deps
|
||||
|
22
vendor/cryptopp/vendor_cryptopp/History.txt
vendored
22
vendor/cryptopp/vendor_cryptopp/History.txt
vendored
@ -4,7 +4,8 @@ The History file contains the items that comprise the release notes. The
|
||||
items in the list below used to be in Readme.txt. Readme.txt now contans the
|
||||
last several releases.
|
||||
|
||||
1.0 - First public release. Withdrawn at the request of RSA DSI.
|
||||
1.0 - First public release
|
||||
- Withdrawn at the request of RSA DSI over patent claims
|
||||
- included Blowfish, BBS, DES, DH, Diamond, DSA, ElGamal, IDEA,
|
||||
MD5, RC4, RC5, RSA, SHA, WAKE, secret sharing, DEFLATE compression
|
||||
- had a serious bug in the RSA key generation code.
|
||||
@ -432,3 +433,22 @@ last several releases.
|
||||
- remove s_nullNameValuePairs from unnamed namespace
|
||||
- ported to MSVC 2017, Xcode 9.3, Sun Studio 12.5, GCC 8.0.1,
|
||||
MacPorts GCC 7.0, Clang 4.0, Intel C++ 17.00, IBM XL C/C++ 13.1
|
||||
|
||||
8.0.0 - December 28, 2018
|
||||
|
||||
- major release, recompile of programs required
|
||||
- expanded community input and support
|
||||
* 54 unique contributors as of this release
|
||||
- add x25519 key exchange and ed25519 signature scheme
|
||||
- add limited Asymmetric Key Package support from RFC 5958
|
||||
- add Power9 DARN random number generator support
|
||||
- add CHAM, HC-128, HC-256, Hight, LEA, Rabbit, Simeck
|
||||
- fix FixedSizeAllocatorWithCleanup may be unaligned on some platforms
|
||||
- cutover to GNU Make-based cpu feature tests
|
||||
- rename files with dashes to underscores
|
||||
- fix LegacyDecryptor and LegacyDecryptorWithMAC use wrong MAC
|
||||
- fix incorrect AES/CBC decryption on Windows
|
||||
- avoid Singleton<T> when possible, avoid std::call_once completely
|
||||
- fix SPARC alignment problems due to GetAlignmentOf<T>() on word64
|
||||
- add ARM AES asm implementation from Cryptogams
|
||||
- remove CRYPTOPP_ALLOW_UNALIGNED_DATA_ACCESS support
|
101
vendor/cryptopp/vendor_cryptopp/Readme.txt
vendored
101
vendor/cryptopp/vendor_cryptopp/Readme.txt
vendored
@ -1,5 +1,5 @@
|
||||
Crypto++: free C++ Class Library of Cryptographic Schemes
|
||||
Version 7.0 - APR/08/2018
|
||||
Version 8.0 - DEC/28/2018
|
||||
|
||||
Crypto++ Library is a free C++ class library of cryptographic schemes.
|
||||
Currently the library contains the following algorithms:
|
||||
@ -39,11 +39,12 @@ Currently the library contains the following algorithms:
|
||||
padding schemes for public-key PKCS#1 v2.0, OAEP, PSS, PSSR, IEEE P1363
|
||||
systems EMSA2 and EMSA5
|
||||
|
||||
Diffie-Hellman (DH), Unified Diffie-Hellman
|
||||
key agreement schemes (DH2), Menezes-Qu-Vanstone (MQV), Hashed MQV (HMQV),
|
||||
Diffie-Hellman (DH), Unified Diffie-Hellman (DH2),
|
||||
key agreement schemes Menezes-Qu-Vanstone (MQV), Hashed MQV (HMQV),
|
||||
Fully Hashed MQV (FHMQV), LUCDIF, XTR-DH
|
||||
|
||||
elliptic curve cryptography ECDSA, Determinsitic ECDSA, ECNR, ECIES, ECDH, ECMQV
|
||||
elliptic curve cryptography ECDSA, Determinsitic ECDSA, ed25519, ECNR, ECIES,
|
||||
ECDH, ECMQV, x25519
|
||||
|
||||
insecure or obsolescent MD2, MD4, MD5, Panama Hash, DES, ARC4, SEAL
|
||||
algorithms retained for backwards 3.0, WAKE-OFB, DESX (DES-XEX3), RC2,
|
||||
@ -53,7 +54,7 @@ algorithms retained for backwards 3.0, WAKE-OFB, DESX (DES-XEX3), RC2,
|
||||
Other features include:
|
||||
|
||||
* pseudo random number generators (PRNG): ANSI X9.17 appendix C, RandomPool,
|
||||
VIA Padlock, RDRAND, RDSEED, NIST Hash and HMAC DRBGs
|
||||
DARN, VIA Padlock, RDRAND, RDSEED, NIST Hash and HMAC DRBGs
|
||||
* password based key derivation functions: PBKDF1 and PBKDF2 from PKCS #5,
|
||||
PBKDF from PKCS #12 appendix B, HKDF from RFC 5869, Scrypt from RFC 7914
|
||||
* Shamir's secret sharing scheme and Rabin's information dispersal algorithm
|
||||
@ -91,13 +92,13 @@ The following compilers are supported for this release. Please visit
|
||||
http://www.cryptopp.com the most up to date build instructions and porting notes.
|
||||
|
||||
* Visual Studio 2003 - 2017
|
||||
* GCC 3.3 - 8.0
|
||||
* GCC 3.3 - 9.0
|
||||
* Apple Clang 4.3 - 9.3
|
||||
* LLVM Clang 2.9 - 4.0
|
||||
* C++Builder 2010
|
||||
* LLVM Clang 2.9 - 7.0
|
||||
* C++Builder 2015
|
||||
* Intel C++ Compiler 9 - 16.0
|
||||
* Sun Studio 12u1 - 12.5
|
||||
* IBM XL C/C++ 10.0 - 13.1
|
||||
* Sun Studio 12u1 - 12.6
|
||||
* IBM XL C/C++ 10.0 - 13.3
|
||||
|
||||
*** Important Usage Notes ***
|
||||
|
||||
@ -282,6 +283,25 @@ documentation is one of the highest returns on investment.
|
||||
The items in this section comprise the most recent history. Please see History.txt
|
||||
for the record back to Crypto++ 1.0.
|
||||
|
||||
8.0.0 - December 28, 2018
|
||||
|
||||
- major release, recompile of programs required
|
||||
- expanded community input and support
|
||||
* 54 unique contributors as of this release
|
||||
- add x25519 key exchange and ed25519 signature scheme
|
||||
- add limited Asymmetric Key Package support from RFC 5958
|
||||
- add Power9 DARN random number generator support
|
||||
- add CHAM, HC-128, HC-256, Hight, LEA, Rabbit, Simeck
|
||||
- fix FixedSizeAllocatorWithCleanup may be unaligned on some platforms
|
||||
- cutover to GNU Make-based cpu feature tests
|
||||
- rename files with dashes to underscores
|
||||
- fix LegacyDecryptor and LegacyDecryptorWithMAC use wrong MAC
|
||||
- fix incorrect AES/CBC decryption on Windows
|
||||
- avoid Singleton<T> when possible, avoid std::call_once completely
|
||||
- fix SPARC alignment problems due to GetAlignmentOf<T>() on word64
|
||||
- add ARM AES asm implementation from Cryptogams
|
||||
- remove CRYPTOPP_ALLOW_UNALIGNED_DATA_ACCESS support
|
||||
|
||||
7.0.0 - April 8, 2018
|
||||
- major release, recompile of programs required
|
||||
- expanded community input and support
|
||||
@ -340,67 +360,6 @@ for the record back to Crypto++ 1.0.
|
||||
- ported to MSVC 2017, Xcode 8.1, Sun Studio 12.5, GCC 7.3,
|
||||
MacPorts GCC 7.0, Clang 4.0, Intel C++ 17.00, IBM XL C/C++ 13.1
|
||||
|
||||
5.6.5 - October 11, 2016
|
||||
- maintenance release, recompile of programs recommended
|
||||
- expanded community input and support
|
||||
* 25 unique contributors as of this release
|
||||
- fixed CVE-2016-7420 (Issue 277, document NDEBUG for production/release)
|
||||
- fixed CVE-2016-7544 (Issue 302, avoid _malloca and _freea)
|
||||
- shipped library in recommended state
|
||||
* backwards compatibility achieved with <config.compat>
|
||||
- Visual Studio project file cleanup
|
||||
* improved X86 and X64 MSBuild support
|
||||
* added ARM-based MSBuild awareness
|
||||
- improved Testing and QA
|
||||
* expanded platforms and compilers
|
||||
* expanded Coverity into OS X and Windows platforms
|
||||
* added Windows test scripts using Strawberry Perl
|
||||
- ported to MSVC 2015 SP3, Xcode 7.3, Sun Studio 12.5, GCC 7.0,
|
||||
MacPorts GCC 7.0, Clang 3.8, Intel C++ 17.00
|
||||
|
||||
5.6.4 - September 11, 2016
|
||||
- maintenance release, honored API/ABI/Versioning requirements
|
||||
- expanded community input and support
|
||||
* 22 unique contributors for this release
|
||||
- fixed CVE-2016-3995
|
||||
- changed SHA3 to FIPS 202 (F1600, XOF d=0x06)
|
||||
- added Keccak (F1600, XOF d=0x01)
|
||||
- added ChaCha (ChaCha8/12/20)
|
||||
- added HMQV and FHMQV
|
||||
* Hashed and Fully Hashed MQV
|
||||
- added BLAKE2 (BLAKE2s and BLAKE2b)
|
||||
* C++, SSE2, SSE4, ARM NEON and ARMv8 ASIMD
|
||||
- added CRC32-C
|
||||
* C/C++, Amd64 CRC, and ARMv8 CRC
|
||||
- improved Rabin-William signatures
|
||||
* Tweaked roots <em>e</em> and <em>f</em>
|
||||
- improved C++11 support
|
||||
* atomics, threads and fences
|
||||
* alginof, alignas
|
||||
* constexpr
|
||||
* noexcept
|
||||
- improved GCM mode
|
||||
* ARM NEON and ARMv8 ASIMD
|
||||
* ARMv8 carry-less multiply
|
||||
- improved Windows 8 and 10 support
|
||||
* Windows Phone, Universal Windows Platform, Windows Store
|
||||
- improved MIPS, ARMv7 and ARMv8 support
|
||||
* added scripts setenv-{android|embedded|ios}.sh for GNUmakefile-cross
|
||||
* aggressive use of -march=<arch> and -mfpu=<fpu> in cryptest.sh
|
||||
- improved build systems
|
||||
* Visual Studio 2010 default
|
||||
* added CMake support (lacks FindCryptopp.cmake)
|
||||
* archived VC++ 5/0/6.0 project files (vc60.zip)
|
||||
* archived VS2005 project files (vs2005.zip)
|
||||
* archived Borland project files (bds10.zip)
|
||||
- improved Testing and QA
|
||||
* expanded platforms and compilers
|
||||
* added code generation tests based on CPU features
|
||||
* added C++03, C++11, C++14, C++17 testing
|
||||
* added -O3, -O5, -Ofast and -Os testing
|
||||
- ported to MSVC 2015 SP3, Xcode 9.0, Sun Studio 12.5, GCC 7.0,
|
||||
MacPorts GCC 7.0, Clang 3.8, Intel C++ 17.00
|
||||
|
||||
June 2015 - Changing of the guard. Wei Dai turned the library over to the
|
||||
community. The first community release was Crypto++ 5.6.3. Wei is
|
||||
no longer involved with the daily operations of the project. Wei
|
||||
|
1
vendor/cryptopp/vendor_cryptopp/TestData/defdmac1.bin
vendored
Normal file
1
vendor/cryptopp/vendor_cryptopp/TestData/defdmac1.bin
vendored
Normal file
@ -0,0 +1 @@
|
||||
nCBţpIbź_¤_ĺ|źâ+"w˙¶¶†Ž˝í#Aýíż‡„nŢmÖéŠČ‡ű%±––kXřťąRňłüw`Ză‘^s.+ÚÚµ<C39A>ř„Š`ŠÝBf]zó•}¦R`}\ŘdiśbfttÉ^ř˛
|
BIN
vendor/cryptopp/vendor_cryptopp/TestData/defdmac2.bin
vendored
Normal file
BIN
vendor/cryptopp/vendor_cryptopp/TestData/defdmac2.bin
vendored
Normal file
Binary file not shown.
1
vendor/cryptopp/vendor_cryptopp/TestData/ed25519.dat
vendored
Normal file
1
vendor/cryptopp/vendor_cryptopp/TestData/ed25519.dat
vendored
Normal file
@ -0,0 +1 @@
|
||||
302E020100300506032B65700422042098C59D3F097FB23D44BA90791281B453258D691A55AF5CE4F1EE712FDF91AE6D
|
1
vendor/cryptopp/vendor_cryptopp/TestData/ed25519v0.dat
vendored
Normal file
1
vendor/cryptopp/vendor_cryptopp/TestData/ed25519v0.dat
vendored
Normal file
@ -0,0 +1 @@
|
||||
302E020100300506032B65700422042030BF776A497D7F1E0E26AC4FB03F5BE7E187DDFEFB914CD292A6FEDB7F70CE6B
|
1
vendor/cryptopp/vendor_cryptopp/TestData/ed25519v1.dat
vendored
Normal file
1
vendor/cryptopp/vendor_cryptopp/TestData/ed25519v1.dat
vendored
Normal file
@ -0,0 +1 @@
|
||||
3053020101300506032B6570042204206861FD53C7643DABDCDF4C3969CE44A156BAC261242A5AAEC140EDE510071C6CA12303210029CF90E6C1CF1ADC7105720303B2EE303412D2B682C6FEEF3D8736A286B2E27F
|
1
vendor/cryptopp/vendor_cryptopp/TestData/x25519.dat
vendored
Normal file
1
vendor/cryptopp/vendor_cryptopp/TestData/x25519.dat
vendored
Normal file
@ -0,0 +1 @@
|
||||
302E020100300506032B656E0422042030D407BB0CC97D0EC493BDB00A4A8EFA06A50D2388F5BA62947030E7D9873F49
|
1
vendor/cryptopp/vendor_cryptopp/TestData/x25519v0.dat
vendored
Normal file
1
vendor/cryptopp/vendor_cryptopp/TestData/x25519v0.dat
vendored
Normal file
@ -0,0 +1 @@
|
||||
302E020100300506032B656E042204202818E54DE6B88EEF3E99E25042CB98E69373B222E4C1E8B3FB10AC9B26C1007B
|
1
vendor/cryptopp/vendor_cryptopp/TestData/x25519v1.dat
vendored
Normal file
1
vendor/cryptopp/vendor_cryptopp/TestData/x25519v1.dat
vendored
Normal file
@ -0,0 +1 @@
|
||||
3053020101300506032B656E04220420A00FADD6D29BE764B851F64F7620E80B700DF65914BED31E486362281BB5D061A123032100E9AD4CC54DAA36F312D98B253854F0076E2BC26FCE5802B3AC79A5B59B3D2C4F
|
7
vendor/cryptopp/vendor_cryptopp/TestPrograms/test_32bit.cxx
vendored
Normal file
7
vendor/cryptopp/vendor_cryptopp/TestPrograms/test_32bit.cxx
vendored
Normal file
@ -0,0 +1,7 @@
|
||||
#include <cstddef>
|
||||
int main(int argc, char* argv[])
|
||||
{
|
||||
enum {N = (sizeof(std::size_t) == 4 ? 4 : -1)};
|
||||
int x[N];
|
||||