1 # |
|
2 # Engine aesni patch openssl-1.0.0d-aesni-v4.i386-patch. |
|
3 # openssl-1.0.0-aesni-v4.patch updated for openssl-1.0.0d. |
|
4 # This engine is X86-only. |
|
5 # |
|
6 Index: Configure |
|
7 =================================================================== |
|
8 diff -ru openssl-1.0.0d/Configure openssl-1.0.0d/Configure |
|
9 --- openssl-1.0.0d/Configure 2010-11-30 14:19:26.000000000 -0800 |
|
10 +++ openssl-1.0.0d/Configure 2011-05-20 10:32:38.598770000 -0700 |
|
11 @@ -123,11 +123,11 @@ |
|
12 my $bits1="THIRTY_TWO_BIT "; |
|
13 my $bits2="SIXTY_FOUR_BIT "; |
|
14 |
|
15 -my $x86_asm="x86cpuid.o:bn-586.o co-586.o x86-mont.o:des-586.o crypt586.o:aes-586.o:bf-586.o:md5-586.o:sha1-586.o sha256-586.o sha512-586.o:cast-586.o:rc4-586.o:rmd-586.o:rc5-586.o:wp_block.o wp-mmx.o:cmll-x86.o"; |
|
16 +my $x86_asm="x86cpuid.o:bn-586.o co-586.o x86-mont.o:des-586.o crypt586.o:aes-586.o aesni-x86.o:bf-586.o:md5-586.o:sha1-586.o sha256-586.o sha512-586.o:cast-586.o:rc4-586.o:rmd-586.o:rc5-586.o:wp_block.o wp-mmx.o:cmll-x86.o"; |
|
17 |
|
18 my $x86_elf_asm="$x86_asm:elf"; |
|
19 |
|
20 -my $x86_64_asm="x86_64cpuid.o:x86_64-gcc.o x86_64-mont.o::aes-x86_64.o::md5-x86_64.o:sha1-x86_64.o sha256-x86_64.o sha512-x86_64.o::rc4-x86_64.o:::wp-x86_64.o:cmll-x86_64.o cmll_misc.o"; |
|
21 +my $x86_64_asm="x86_64cpuid.o:x86_64-gcc.o x86_64-mont.o::aes-x86_64.o aesni-x86_64.o::md5-x86_64.o:sha1-x86_64.o sha256-x86_64.o sha512-x86_64.o::rc4-x86_64.o:::wp-x86_64.o:cmll-x86_64.o cmll_misc.o"; |
|
22 my $ia64_asm="ia64cpuid.o:bn-ia64.o::aes_core.o aes_cbc.o aes-ia64.o::md5-ia64.o:sha1-ia64.o sha256-ia64.o sha512-ia64.o::rc4-ia64.o rc4_skey.o:::::void"; |
|
23 my $sparcv9_asm="sparcv9cap.o sparccpuid.o:bn-sparcv9.o sparcv9-mont.o sparcv9a-mont.o:des_enc-sparc.o fcrypt_b.o:aes_core.o aes_cbc.o aes-sparcv9.o:::sha1-sparcv9.o sha256-sparcv9.o sha512-sparcv9.o:::::::void"; |
|
24 my $sparcv8_asm=":sparcv8.o:des_enc-sparc.o fcrypt_b.o:::::::::::void"; |
|
25 @@ -491,7 +491,7 @@ |
|
26 # |
|
27 # Win64 targets, WIN64I denotes IA-64 and WIN64A - AMD64 |
|
28 "VC-WIN64I","cl:-W3 -Gs0 -Gy -nologo -DOPENSSL_SYSNAME_WIN32 -DWIN32_LEAN_AND_MEAN -DL_ENDIAN -DUNICODE -D_UNICODE -D_CRT_SECURE_NO_DEPRECATE:::WIN64I::SIXTY_FOUR_BIT RC4_CHUNK_LL DES_INT EXPORT_VAR_AS_FN:ia64cpuid.o:ia64.o::aes_core.o aes_cbc.o aes-ia64.o::md5-ia64.o:sha1-ia64.o sha256-ia64.o sha512-ia64.o:::::::ias:win32", |
|
29 -"VC-WIN64A","cl:-W3 -Gs0 -Gy -nologo -DOPENSSL_SYSNAME_WIN32 -DWIN32_LEAN_AND_MEAN -DL_ENDIAN -DUNICODE -D_UNICODE -D_CRT_SECURE_NO_DEPRECATE:::WIN64A::SIXTY_FOUR_BIT RC4_CHUNK_LL DES_INT EXPORT_VAR_AS_FN:x86_64cpuid.o:bn_asm.o x86_64-mont.o::aes-x86_64.o::md5-x86_64.o:sha1-x86_64.o sha256-x86_64.o sha512-x86_64.o::rc4-x86_64.o:::wp-x86_64.o:cmll-x86_64.o cmll_misc.o:auto:win32", |
|
30 +"VC-WIN64A","cl:-W3 -Gs0 -Gy -nologo -DOPENSSL_SYSNAME_WIN32 -DWIN32_LEAN_AND_MEAN -DL_ENDIAN -DUNICODE -D_UNICODE -D_CRT_SECURE_NO_DEPRECATE:::WIN64A::SIXTY_FOUR_BIT RC4_CHUNK_LL DES_INT EXPORT_VAR_AS_FN:x86_64cpuid.o:bn_asm.o x86_64-mont.o::aes-x86_64.o aesni-x86_64.o::md5-x86_64.o:sha1-x86_64.o sha256-x86_64.o sha512-x86_64.o::rc4-x86_64.o:::wp-x86_64.o:cmll-x86_64.o cmll_misc.o:auto:win32", |
|
31 "debug-VC-WIN64I","cl:-W3 -Gs0 -Gy -Zi -nologo -DOPENSSL_SYSNAME_WIN32 -DWIN32_LEAN_AND_MEAN -DL_ENDIAN -DUNICODE -D_UNICODE -D_CRT_SECURE_NO_DEPRECATE:::WIN64I::SIXTY_FOUR_BIT RC4_CHUNK_LL DES_INT EXPORT_VAR_AS_FN:ia64cpuid.o:ia64.o::aes_core.o aes_cbc.o aes-ia64.o::md5-ia64.o:sha1-ia64.o sha256-ia64.o sha512-ia64.o:::::::ias:win32", |
|
32 "debug-VC-WIN64A","cl:-W3 -Gs0 -Gy -Zi -nologo -DOPENSSL_SYSNAME_WIN32 -DWIN32_LEAN_AND_MEAN -DL_ENDIAN -DUNICODE -D_UNICODE -D_CRT_SECURE_NO_DEPRECATE:::WIN64A::SIXTY_FOUR_BIT RC4_CHUNK_LL DES_INT EXPORT_VAR_AS_FN:x86_64cpuid.o:bn_asm.o x86_64-mont.o::aes-x86_64.o::md5-x86_64.o:sha1-x86_64.o sha256-x86_64.o sha512-x86_64.o::rc4-x86_64.o:::wp-x86_64.o:cmll-x86_64.o cmll_misc.o:auto:win32", |
|
33 # x86 Win32 target defaults to ANSI API, if you want UNICODE, complement |
|
34 @@ -1410,6 +1410,7 @@ |
|
35 if ($aes_obj =~ /\.o$/) |
|
36 { |
|
37 $cflags.=" -DAES_ASM"; |
|
38 + $aes_obj =~ s/\s*aesni\-x86\.o// if ($no_sse2); |
|
39 } |
|
40 else { |
|
41 $aes_obj=$aes_enc; |
|
42 Index: crypto/aes/Makefile |
|
43 =================================================================== |
|
44 diff -ru openssl-1.0.0d/crypto/aes/Makefile openssl-1.0.0d/crypto/aes/Makefile |
|
45 --- openssl-1.0.0d/crypto/aes/Makefile 2008-12-23 03:33:00.000000000 -0800 |
|
46 +++ openssl-1.0.0d/crypto/aes/Makefile 2011-06-30 16:52:09.000000000 -0700 |
|
47 @@ -50,9 +50,16 @@ |
|
48 |
|
49 aes-586.s: asm/aes-586.pl ../perlasm/x86asm.pl |
|
50 $(PERL) asm/aes-586.pl $(PERLASM_SCHEME) $(CFLAGS) $(PROCESSOR) > $@ |
|
51 +aesni-x86.s: asm/aesni-x86.pl ../perlasm/x86asm.pl |
|
52 + $(PERL) asm/aesni-x86.pl $(PERLASM_SCHEME) $(CFLAGS) $(PROCESSOR) > $@ |
|
53 +aesni-x86.o: aesni-x86.s |
|
54 + $(CC) $(CFLAGS) -o $@ -c $< |
|
55 + elfedit -e 'cap:hw1 -and -cmp aes' $@ |
|
56 |
|
57 aes-x86_64.s: asm/aes-x86_64.pl |
|
58 $(PERL) asm/aes-x86_64.pl $(PERLASM_SCHEME) > $@ |
|
59 +aesni-x86_64.s: asm/aesni-x86_64.pl |
|
60 + $(PERL) asm/aesni-x86_64.pl $(PERLASM_SCHEME) > $@ |
|
61 |
|
62 aes-sparcv9.s: asm/aes-sparcv9.pl |
|
63 $(PERL) asm/aes-sparcv9.pl $(CFLAGS) > $@ |
|
64 Index: crypto/engine/Makefile |
|
65 =================================================================== |
|
66 diff -ru openssl-1.0.0d/crypto/engine/Makefile openssl-1.0.0d/crypto/engine/Makefile |
|
67 --- openssl-1.0.0d/crypto/engine/Makefile 2010-12-02 10:26:11.000000000 -0800 |
|
68 +++ openssl-1.0.0d/crypto/engine/Makefile 2011-05-20 10:37:14.716792000 -0700 |
|
69 @@ -22,6 +22,7 @@ |
|
70 tb_rsa.c tb_dsa.c tb_ecdsa.c tb_dh.c tb_ecdh.c tb_rand.c tb_store.c \ |
|
71 tb_cipher.c tb_digest.c tb_pkmeth.c tb_asnmth.c \ |
|
72 eng_openssl.c eng_cnf.c eng_dyn.c eng_cryptodev.c \ |
|
73 + eng_aesni.c \ |
|
74 hw_pk11.c hw_pk11_pub.c hw_pk11_uri.c |
|
75 LIBOBJ= eng_err.o eng_lib.o eng_list.o eng_init.o eng_ctrl.o \ |
|
76 eng_table.o eng_pkey.o eng_fat.o eng_all.o \ |
|
77 @@ -28,6 +29,7 @@ |
|
78 tb_rsa.o tb_dsa.o tb_ecdsa.o tb_dh.o tb_ecdh.o tb_rand.o tb_store.o \ |
|
79 tb_cipher.o tb_digest.o tb_pkmeth.o tb_asnmth.o \ |
|
80 eng_openssl.o eng_cnf.o eng_dyn.o eng_cryptodev.o \ |
|
81 + eng_aesni.o \ |
|
82 hw_pk11.o hw_pk11_pub.o hw_pk11_uri.o |
|
83 |
|
84 SRC= $(LIBSRC) |
|
85 Index: crypto/engine/eng_all.c |
|
86 =================================================================== |
|
87 diff -ru openssl-1.0.0d/crypto/engine/eng_all.c openssl-1.0.0d/crypto/engine/eng_all.c |
|
88 --- openssl-1.0.0d/crypto/engine/eng_all.c 2009-07-01 07:55:58.000000000 -0700 |
|
89 +++ openssl-1.0.0d/crypto/engine/eng_all.c 2011-06-22 17:34:25.145829355 -0700 |
|
90 @@ -61,6 +61,8 @@ |
|
91 |
|
92 void ENGINE_load_builtin_engines(void) |
|
93 { |
|
94 + /* Engines may depend on CPU capabilities */ |
|
95 + OPENSSL_cpuid_setup(); |
|
96 #if 0 |
|
97 /* There's no longer any need for an "openssl" ENGINE unless, one day, |
|
98 * it is the *only* way for standard builtin implementations to be be |
|
99 @@ -71,6 +73,10 @@ |
|
100 #if !defined(OPENSSL_NO_HW) && (defined(__OpenBSD__) || defined(__FreeBSD__) || defined(HAVE_CRYPTODEV)) |
|
101 ENGINE_load_cryptodev(); |
|
102 #endif |
|
103 +#if !defined(OPENSSL_NO_HW) && !defined(OPENSSL_NO_HW_AESNI) |
|
104 + ENGINE_load_aesni(); |
|
105 + ENGINE_register_all_complete(); |
|
106 +#endif |
|
107 ENGINE_load_dynamic(); |
|
108 #ifndef OPENSSL_NO_HW_PKCS11 |
|
109 ENGINE_load_pk11(); |
|
110 Index: crypto/engine/engine.h |
|
111 =================================================================== |
|
112 diff -ru openssl-1.0.0d/crypto/engine/engine.h openssl-1.0.0d/crypto/engine/engine.h |
|
113 --- openssl-1.0.0d/crypto/engine/engine.h 2011-01-29 17:05:37.000000000 -0800 |
|
114 +++ openssl-1.0.0d/crypto/engine/engine.h 2011-05-20 10:55:13.878159000 -0700 |
|
115 @@ -344,6 +344,7 @@ |
|
116 #endif |
|
117 #endif |
|
118 void ENGINE_load_cryptodev(void); |
|
119 +void ENGINE_load_aesni(void); |
|
120 void ENGINE_load_pk11(void); |
|
121 void ENGINE_load_builtin_engines(void); |
|
122 |
|
123 Index: crypto/evp/evp.h |
|
124 =================================================================== |
|
125 diff -ru openssl-1.0.0d/crypto/evp/evp.h openssl-1.0.0d/crypto/evp/evp.h |
|
126 --- openssl-1.0.0d/crypto/evp/evp.h 2010-03-27 12:27:50.000000000 -0700 |
|
127 +++ openssl-1.0.0d/crypto/evp/evp.h 2011-05-20 10:55:56.075662000 -0700 |
|
128 @@ -1190,6 +1190,7 @@ |
|
129 /* Error codes for the EVP functions. */ |
|
130 |
|
131 /* Function codes. */ |
|
132 +#define EVP_F_AESNI_INIT_KEY 165 |
|
133 #define EVP_F_AES_INIT_KEY 133 |
|
134 #define EVP_F_CAMELLIA_INIT_KEY 159 |
|
135 #define EVP_F_D2I_PKEY 100 |
|
136 Index: crypto/evp/evp_err.c |
|
137 =================================================================== |
|
138 diff -ru openssl-1.0.0d/crypto/evp/evp_err.c openssl-1.0.0d/crypto/evp/evp_err.c |
|
139 --- openssl-1.0.0d/crypto/evp/evp_err.c 2010-02-07 05:41:23.000000000 -0800 |
|
140 +++ openssl-1.0.0d/crypto/evp/evp_err.c 2011-05-20 10:56:21.674385000 -0700 |
|
141 @@ -70,6 +70,7 @@ |
|
142 |
|
143 static ERR_STRING_DATA EVP_str_functs[]= |
|
144 { |
|
145 +{ERR_FUNC(EVP_F_AESNI_INIT_KEY), "AESNI_INIT_KEY"}, |
|
146 {ERR_FUNC(EVP_F_AES_INIT_KEY), "AES_INIT_KEY"}, |
|
147 {ERR_FUNC(EVP_F_CAMELLIA_INIT_KEY), "CAMELLIA_INIT_KEY"}, |
|
148 {ERR_FUNC(EVP_F_D2I_PKEY), "D2I_PKEY"}, |
|
149 Index: util/libeay.num |
|
150 =================================================================== |
|
151 diff -ru openssl-1.0.0d/util/libeay.num openssl-1.0.0d/util/libeay.num |
|
152 --- openssl-1.0.0d/util/libeay.num 2010-07-25 09:56:06.000000000 -0700 |
|
153 +++ openssl-1.0.0d/util/libeay.num 2011-05-20 11:01:11.198890000 -0700 |
|
154 @@ -4178,6 +4178,7 @@ |
|
155 UI_method_set_prompt_constructor 4551 EXIST:!VMS:FUNCTION: |
|
156 UI_method_set_prompt_constructr 4551 EXIST:VMS:FUNCTION: |
|
157 EVP_read_pw_string_min 4552 EXIST::FUNCTION: |
|
158 +ENGINE_load_aesni 4553 EXIST::FUNCTION:ENGINE |
|
159 CRYPTO_cts128_encrypt 4553 EXIST::FUNCTION: |
|
160 CRYPTO_cts128_decrypt_block 4554 EXIST::FUNCTION: |
|
161 CRYPTO_cfb128_1_encrypt 4555 EXIST::FUNCTION: |
|