aboutsummaryrefslogtreecommitdiff
path: root/crypto
diff options
context:
space:
mode:
authorBrent Cook <bcook@openbsd.org>2014-12-06 18:43:58 -0600
committerBrent Cook <bcook@openbsd.org>2014-12-07 16:26:28 -0600
commit03cd45e2c78b0298ab006fb64a4cda4fe6ab5657 (patch)
treeb6169d60691749d3a8a27c366646f7ad34d5c7d1 /crypto
parente57d5d8be3fbab0aa2ffa87f79d5fb079a0af2e9 (diff)
downloadportable-03cd45e2c78b0298ab006fb64a4cda4fe6ab5657.tar.gz
portable-03cd45e2c78b0298ab006fb64a4cda4fe6ab5657.tar.bz2
portable-03cd45e2c78b0298ab006fb64a4cda4fe6ab5657.zip
Enable optimized crypto operations for x86_64
This adds initial support for assembly crypto acceleration on x86_64 for ELF (Linux, *BSD, Solaris) and Mach-O (OS-X) systems. The build method is a little different than OpenSSL and OpenBSD. All the .s files are generated ahead of time when the tarball is generated, so there are no complicated makefile rules at configure/build time. This also means the builds are faster and perl is not required on the build system. Thanks to Wouter Clarie for providing the initial cleanup and patch that this is based on.
Diffstat (limited to 'crypto')
-rw-r--r--crypto/Makefile.am28
-rw-r--r--crypto/Makefile.am.elf-x86_6441
-rw-r--r--crypto/Makefile.am.macosx-x86_6441
3 files changed, 102 insertions, 8 deletions
diff --git a/crypto/Makefile.am b/crypto/Makefile.am
index 39b143d..91c58db 100644
--- a/crypto/Makefile.am
+++ b/crypto/Makefile.am
@@ -10,7 +10,11 @@ EXTRA_DIST = VERSION
10 10
11libcrypto_la_LDFLAGS = -version-info @LIBCRYPTO_VERSION@ 11libcrypto_la_LDFLAGS = -version-info @LIBCRYPTO_VERSION@
12libcrypto_la_LIBADD = libcompat.la libcompatnoopt.la 12libcrypto_la_LIBADD = libcompat.la libcompatnoopt.la
13libcrypto_la_CFLAGS = $(CFLAGS) $(USER_CFLAGS) -DOPENSSL_NO_HW_PADLOCK 13libcrypto_la_CFLAGS = $(CFLAGS) $(USER_CFLAGS)
14libcrypto_la_CFLAGS += -DOPENSSL_NO_HW_PADLOCK
15if OPENSSL_NO_ASM
16libcrypto_la_CFLAGS += -DOPENSSL_NO_ASM
17endif
14 18
15noinst_LTLIBRARIES = libcompat.la libcompatnoopt.la 19noinst_LTLIBRARIES = libcompat.la libcompatnoopt.la
16 20
@@ -103,6 +107,21 @@ noinst_HEADERS += compat/chacha_private.h
103libcrypto_la_SOURCES = 107libcrypto_la_SOURCES =
104EXTRA_libcrypto_la_SOURCES = 108EXTRA_libcrypto_la_SOURCES =
105 109
110include Makefile.am.elf-x86_64
111include Makefile.am.macosx-x86_64
112
113if !HOST_ASM_ELF_X86_64
114if !HOST_ASM_MACOSX_X86_64
115libcrypto_la_SOURCES += aes/aes_cbc.c
116libcrypto_la_SOURCES += aes/aes_core.c
117libcrypto_la_SOURCES += camellia/camellia.c
118libcrypto_la_SOURCES += camellia/cmll_cbc.c
119libcrypto_la_SOURCES += rc4/rc4_enc.c
120libcrypto_la_SOURCES += rc4/rc4_skey.c
121libcrypto_la_SOURCES += whrlpool/wp_block.c
122endif
123endif
124
106libcrypto_la_SOURCES += cpt_err.c 125libcrypto_la_SOURCES += cpt_err.c
107libcrypto_la_SOURCES += cryptlib.c 126libcrypto_la_SOURCES += cryptlib.c
108libcrypto_la_SOURCES += cversion.c 127libcrypto_la_SOURCES += cversion.c
@@ -118,9 +137,7 @@ noinst_HEADERS += md32_common.h
118noinst_HEADERS += o_time.h 137noinst_HEADERS += o_time.h
119 138
120# aes 139# aes
121libcrypto_la_SOURCES += aes/aes_cbc.c
122libcrypto_la_SOURCES += aes/aes_cfb.c 140libcrypto_la_SOURCES += aes/aes_cfb.c
123libcrypto_la_SOURCES += aes/aes_core.c
124libcrypto_la_SOURCES += aes/aes_ctr.c 141libcrypto_la_SOURCES += aes/aes_ctr.c
125libcrypto_la_SOURCES += aes/aes_ecb.c 142libcrypto_la_SOURCES += aes/aes_ecb.c
126libcrypto_la_SOURCES += aes/aes_ige.c 143libcrypto_la_SOURCES += aes/aes_ige.c
@@ -284,8 +301,6 @@ libcrypto_la_SOURCES += buffer/buf_str.c
284libcrypto_la_SOURCES += buffer/buffer.c 301libcrypto_la_SOURCES += buffer/buffer.c
285 302
286# camellia 303# camellia
287libcrypto_la_SOURCES += camellia/camellia.c
288libcrypto_la_SOURCES += camellia/cmll_cbc.c
289libcrypto_la_SOURCES += camellia/cmll_cfb.c 304libcrypto_la_SOURCES += camellia/cmll_cfb.c
290libcrypto_la_SOURCES += camellia/cmll_ctr.c 305libcrypto_la_SOURCES += camellia/cmll_ctr.c
291libcrypto_la_SOURCES += camellia/cmll_ecb.c 306libcrypto_la_SOURCES += camellia/cmll_ecb.c
@@ -666,8 +681,6 @@ libcrypto_la_SOURCES += rc2/rc2ofb64.c
666noinst_HEADERS += rc2/rc2_locl.h 681noinst_HEADERS += rc2/rc2_locl.h
667 682
668# rc4 683# rc4
669libcrypto_la_SOURCES += rc4/rc4_enc.c
670libcrypto_la_SOURCES += rc4/rc4_skey.c
671noinst_HEADERS += rc4/rc4_locl.h 684noinst_HEADERS += rc4/rc4_locl.h
672 685
673# ripemd 686# ripemd
@@ -739,7 +752,6 @@ libcrypto_la_SOURCES += ui/ui_util.c
739noinst_HEADERS += ui/ui_locl.h 752noinst_HEADERS += ui/ui_locl.h
740 753
741# whrlpool 754# whrlpool
742libcrypto_la_SOURCES += whrlpool/wp_block.c
743libcrypto_la_SOURCES += whrlpool/wp_dgst.c 755libcrypto_la_SOURCES += whrlpool/wp_dgst.c
744noinst_HEADERS += whrlpool/wp_locl.h 756noinst_HEADERS += whrlpool/wp_locl.h
745 757
diff --git a/crypto/Makefile.am.elf-x86_64 b/crypto/Makefile.am.elf-x86_64
new file mode 100644
index 0000000..6257c40
--- /dev/null
+++ b/crypto/Makefile.am.elf-x86_64
@@ -0,0 +1,41 @@
1
2ASM_X86_64_ELF = aes/aes-elf-x86_64.s
3ASM_X86_64_ELF += aes/bsaes-elf-x86_64.s
4ASM_X86_64_ELF += aes/vpaes-elf-x86_64.s
5ASM_X86_64_ELF += aes/aesni-elf-x86_64.s
6ASM_X86_64_ELF += aes/aesni-sha1-elf-x86_64.s
7ASM_X86_64_ELF += bn/modexp512-elf-x86_64.s
8ASM_X86_64_ELF += bn/mont-elf-x86_64.s
9ASM_X86_64_ELF += bn/mont5-elf-x86_64.s
10ASM_X86_64_ELF += bn/gf2m-elf-x86_64.s
11ASM_X86_64_ELF += camellia/cmll-elf-x86_64.s
12ASM_X86_64_ELF += md5/md5-elf-x86_64.s
13ASM_X86_64_ELF += modes/ghash-elf-x86_64.s
14ASM_X86_64_ELF += rc4/rc4-elf-x86_64.s
15ASM_X86_64_ELF += rc4/rc4-md5-elf-x86_64.s
16ASM_X86_64_ELF += sha/sha1-elf-x86_64.s
17ASM_X86_64_ELF += sha/sha256-elf-x86_64.S
18ASM_X86_64_ELF += sha/sha512-elf-x86_64.S
19ASM_X86_64_ELF += whrlpool/wp-elf-x86_64.s
20ASM_X86_64_ELF += cpuid-elf-x86_64.S
21
22EXTRA_DIST += $(ASM_X86_64_ELF)
23
24if HOST_ASM_ELF_X86_64
25libcrypto_la_CFLAGS += -DAES_ASM
26libcrypto_la_CFLAGS += -DBSAES_ASM
27libcrypto_la_CFLAGS += -DVPAES_ASM
28libcrypto_la_CFLAGS += -DOPENSSL_IA32_SSE2
29libcrypto_la_CFLAGS += -DOPENSSL_BN_ASM_MONT
30libcrypto_la_CFLAGS += -DOPENSSL_BN_ASM_MONT5
31libcrypto_la_CFLAGS += -DOPENSSL_BN_ASM_GF2m
32libcrypto_la_CFLAGS += -DMD5_ASM
33libcrypto_la_CFLAGS += -DGHASH_ASM
34libcrypto_la_CFLAGS += -DRSA_ASM
35libcrypto_la_CFLAGS += -DSHA1_ASM
36libcrypto_la_CFLAGS += -DSHA256_ASM
37libcrypto_la_CFLAGS += -DSHA512_ASM
38libcrypto_la_CFLAGS += -DWHIRLPOOL_ASM
39libcrypto_la_CFLAGS += -DOPENSSL_CPUID_OBJ
40libcrypto_la_SOURCES += $(ASM_X86_64_ELF)
41endif
diff --git a/crypto/Makefile.am.macosx-x86_64 b/crypto/Makefile.am.macosx-x86_64
new file mode 100644
index 0000000..e361aae
--- /dev/null
+++ b/crypto/Makefile.am.macosx-x86_64
@@ -0,0 +1,41 @@
1
2ASM_X86_64_MACOSX = aes/aes-macosx-x86_64.s
3ASM_X86_64_MACOSX += aes/bsaes-macosx-x86_64.s
4ASM_X86_64_MACOSX += aes/vpaes-macosx-x86_64.s
5ASM_X86_64_MACOSX += aes/aesni-macosx-x86_64.s
6ASM_X86_64_MACOSX += aes/aesni-sha1-macosx-x86_64.s
7ASM_X86_64_MACOSX += bn/modexp512-macosx-x86_64.s
8ASM_X86_64_MACOSX += bn/mont-macosx-x86_64.s
9ASM_X86_64_MACOSX += bn/mont5-macosx-x86_64.s
10ASM_X86_64_MACOSX += bn/gf2m-macosx-x86_64.s
11ASM_X86_64_MACOSX += camellia/cmll-macosx-x86_64.s
12ASM_X86_64_MACOSX += md5/md5-macosx-x86_64.s
13ASM_X86_64_MACOSX += modes/ghash-macosx-x86_64.s
14ASM_X86_64_MACOSX += rc4/rc4-macosx-x86_64.s
15ASM_X86_64_MACOSX += rc4/rc4-md5-macosx-x86_64.s
16ASM_X86_64_MACOSX += sha/sha1-macosx-x86_64.s
17ASM_X86_64_MACOSX += sha/sha256-macosx-x86_64.S
18ASM_X86_64_MACOSX += sha/sha512-macosx-x86_64.S
19ASM_X86_64_MACOSX += whrlpool/wp-macosx-x86_64.s
20ASM_X86_64_MACOSX += cpuid-macosx-x86_64.S
21
22EXTRA_DIST += $(ASM_X86_64_MACOSX)
23
24if HOST_ASM_MACOSX_X86_64
25libcrypto_la_CFLAGS += -DAES_ASM
26libcrypto_la_CFLAGS += -DBSAES_ASM
27libcrypto_la_CFLAGS += -DVPAES_ASM
28libcrypto_la_CFLAGS += -DOPENSSL_IA32_SSE2
29libcrypto_la_CFLAGS += -DOPENSSL_BN_ASM_MONT
30libcrypto_la_CFLAGS += -DOPENSSL_BN_ASM_MONT5
31libcrypto_la_CFLAGS += -DOPENSSL_BN_ASM_GF2m
32libcrypto_la_CFLAGS += -DMD5_ASM
33libcrypto_la_CFLAGS += -DGHASH_ASM
34libcrypto_la_CFLAGS += -DRSA_ASM
35libcrypto_la_CFLAGS += -DSHA1_ASM
36libcrypto_la_CFLAGS += -DSHA256_ASM
37libcrypto_la_CFLAGS += -DSHA512_ASM
38libcrypto_la_CFLAGS += -DWHIRLPOOL_ASM
39libcrypto_la_CFLAGS += -DOPENSSL_CPUID_OBJ
40libcrypto_la_SOURCES += $(ASM_X86_64_MACOSX)
41endif