Commit graph

316 commits

Author SHA1 Message Date
Andy Polyakov
a87ff751b7 Add so called Vector Permutation AES x86[_64] assembler, see
http://crypto.stanford.edu/vpaes/ for background information.
It's not integrated into build system yet.
2011-09-12 08:25:14 +00:00
Andy Polyakov
c608171d9c Add RC4-MD5 and AESNI-SHA1 "stitched" implementations. 2011-08-23 20:51:38 +00:00
Andy Polyakov
267b481c47 aes/asm/aesni-*.pl: fix CCM and further optimize it.
modes/ccm128.c: minor branch optimization.
2011-08-07 17:47:56 +00:00
Andy Polyakov
7b41f350d4 aes-ppc.pl: minor optimization favoring embedded processors (performance
of "big" processors is unaffected).
2011-07-20 22:16:27 +00:00
Andy Polyakov
0c237e42a4 s390x assembler pack: add s390x-gf2m.pl and harmonize AES_xts_[en|de]crypt. 2011-06-27 10:00:31 +00:00
Andy Polyakov
0a9a692e4e Minor x86_64 perlasm update. 2011-06-27 09:45:10 +00:00
Andy Polyakov
8da721ee2b aesni-x86[_64].pl: relax alignment requirement. 2011-05-30 09:15:16 +00:00
Andy Polyakov
cf3aeae419 aes-ppc.pl: handle unaligned data on page boundaries. 2011-05-28 09:41:36 +00:00
Andy Polyakov
6715034002 PPC assembler pack: adhere closer to ABI specs, add PowerOpen traceback data. 2011-05-27 13:32:34 +00:00
Andy Polyakov
f8501464cc aesni-x86[_64].pl: optimize for Sandy Bridge and add XTS mode. 2011-05-22 18:38:00 +00:00
Andy Polyakov
fb2f3411ea aesni-x86_64.pl: make it compile on MacOS X. 2011-05-18 17:05:24 +00:00
Andy Polyakov
1e86318091 ARM assembler pack: profiler-assisted optimizations and NEON support. 2011-04-01 20:58:34 +00:00
Andy Polyakov
0ab8fd58e1 s390x assembler pack: tune-up and support for new z196 hardware. 2011-03-04 13:09:16 +00:00
Andy Polyakov
e822c756b6 s390x assembler pack: adapt for -m31 build, see commentary in Configure
for more details.
2010-11-29 20:52:43 +00:00
Andy Polyakov
bb55003882 Add aes-mips.pl assembler module. 2010-10-21 15:56:55 +00:00
Andy Polyakov
90ba3a28f8 s390x assembler pack: extend OPENSSL_s390xcap_P to 128 bits. 2010-09-18 08:46:53 +00:00
Andy Polyakov
20d171377f aes-x86_64.pl: commit#19797 was overzealous, partially reverse. 2010-07-26 22:56:07 +00:00
Andy Polyakov
058d83cfe9 aes-x86_64.pl: remove redundant instructions. 2010-07-26 21:48:39 +00:00
Andy Polyakov
02f358da49 aesni-x86_64.pl: fix typos. 2010-07-26 21:44:03 +00:00
Andy Polyakov
133a7f9a50 perlasm/x86asm.pl: move aesni and pclmulqdq opcodes to aesni-x86.pl and
ghash-x86.pl.
2010-07-26 21:42:07 +00:00
Andy Polyakov
d7d119a3c9 aesni-x86[_64].pl: fine-tune, add CCM subroutine, add performance data. 2010-07-25 15:17:01 +00:00
Andy Polyakov
26064d7f77 aes-s390x.pl: revisit buffer allocation and add performance data. 2010-07-14 08:43:38 +00:00
Andy Polyakov
2d22e08083 ARM assembler pack: reschedule instructions for dual-issue pipeline.
Modest improvement coefficients mean that code already had some
parallelism and there was not very much room for improvement. Special
thanks to Ted Krovetz for benchmarking the code with such patience.
2010-07-13 14:03:31 +00:00
Andy Polyakov
874a3757af Rework framework for assembler support for AES counter mode and add
AES_ctr32_encrypt to aes-s390x.pl.
2010-07-09 12:21:52 +00:00
Andy Polyakov
1cbdca7bf2 Harmonize s390x assembler modules with "catch-all" rules from commit#19749. 2010-07-09 12:11:12 +00:00
Andy Polyakov
396df7311e crypto/*/Makefile: unify "catch-all" assembler make rules and harmonize
ARM assembler modules.
2010-07-08 15:03:42 +00:00
Andy Polyakov
3efe51a407 Revert previous Linux-specific/centric commit#19629. If it really has to
be done, it's definitely not the way to do it. So far answer to the
question was to ./config -Wa,--noexecstack (adopted by RedHat).
2010-05-05 22:05:39 +00:00
Ben Laurie
0e3ef596e5 Non-executable stack in asm. 2010-05-05 15:50:13 +00:00
Andy Polyakov
109757d254 aes-ppc.pl: 10% performance improvement on Power6. 2010-04-10 14:53:17 +00:00
Andy Polyakov
6c83629bd9 AESNI engine: add counter mode. 2010-04-10 13:56:59 +00:00
Andy Polyakov
97a6a01f0f ARMv4 assembler: fix compilation failure. Fix is actually unconfirmed, but
I can't think of any other cause for failure
2010-03-29 09:55:19 +00:00
Andy Polyakov
91fdacb2c3 s390x assembler update: add support for run-time facility detection. 2010-01-19 12:24:59 +00:00
Andy Polyakov
cb3b9b1323 Throw in more PA-RISC assembler. 2009-12-27 20:49:40 +00:00
Andy Polyakov
6f766a4181 aesni-x86.pl: eliminate development comments. 2009-11-15 16:40:22 +00:00
Andy Polyakov
c5036d785a aesni-x86_64.pl: resolve LNK1223 error. 2009-05-02 10:21:29 +00:00
Andy Polyakov
d608b4d662 AES-NI engine jumbo update. 2009-05-02 09:04:17 +00:00
Andy Polyakov
eda2da3235 aesni-x86.pl: fix another typo and add test script. 2009-04-27 15:46:32 +00:00
Andy Polyakov
c0b03d44fb aesni-x86.pl: fix typos. 2009-04-27 12:50:44 +00:00
Andy Polyakov
d64a7232d4 Intel AES-NI engine.
Submitted by: Huang Ying
2009-04-27 05:55:13 +00:00
Andy Polyakov
4e52b9845e aes-390x.pl: commentary update. 2009-03-17 20:04:11 +00:00
Andy Polyakov
e22b864846 Make SPARC assembler modules *really* Purify-friendly. 2009-03-17 18:31:08 +00:00
Andy Polyakov
4c78bc05c4 Make SPARC assembler Pirify-friendly (Purify can't cope with certain
PIC constructs).
2009-03-16 13:32:38 +00:00
Andy Polyakov
8626230a02 s390x assembler pack update. 2009-02-09 15:42:04 +00:00
Andy Polyakov
3b0ee0d2bf Revisit RT#1801 and complete fix. 2008-12-27 13:32:21 +00:00
Andy Polyakov
be01f79d3d x86_64 assembler pack: add support for Win64 SEH. 2008-12-19 11:17:29 +00:00
Andy Polyakov
6786f52ada SEGV in AES_cbc_encrypt in aes-x86_64 assembler module.
PR: 1801
Submitted by: Huang Ying
2008-12-17 14:11:30 +00:00
Andy Polyakov
aa8f38e49b x86_64 assembler pack to comply with updated styling x86_64-xlate.pl rules. 2008-11-12 08:15:52 +00:00
Andy Polyakov
492279f6f3 AIX build updates. 2008-09-12 14:45:54 +00:00
Andy Polyakov
96d13fe62b Micro-profiling assisted "optimization" for Power6. Essentially it's so
to say educational commit. Reordering instructions doesn't improve
performance much, rather exhibits Power6 limitations.
2008-02-06 10:18:19 +00:00
Andy Polyakov
addd641f3a Unify ppc assembler make rules. 2008-01-13 22:01:30 +00:00
Andy Polyakov
ab0ff06205 Make aes-x86_64 work with debug Win64 build. 2008-01-05 18:17:20 +00:00
Andy Polyakov
79eeb47031 Make AES_T[ed] private to aes-586 module. 2008-01-05 08:58:18 +00:00
Andy Polyakov
ad8bd4ece8 Combat [bogus] relocations in some assember modules. 2007-11-22 20:51:48 +00:00
Andy Polyakov
7722e53f12 Yet another ARM update. It appears to be more appropriate to make
developers responsible for -march choice.
2007-09-27 16:27:03 +00:00
Andy Polyakov
d7e915616d 10% performance tweak in 64-bit mode. 2007-09-27 06:19:25 +00:00
Andy Polyakov
55eab3b74b Make x86_64 modules work under Win64/x64. 2007-08-23 12:01:58 +00:00
Andy Polyakov
983180bb8b Buglet fixes and minor optimization in aes-x86_86 assembler. 2007-07-30 16:42:57 +00:00
Andy Polyakov
afaad0ada6 AES for IA64 update. 2007-07-27 18:20:52 +00:00
Andy Polyakov
a61710b868 Allow for option to skip hardware support. 2007-07-23 20:38:57 +00:00
Andy Polyakov
a415ebd026 Complete synchronization of aes-x86_64 with aes-586. 2007-07-21 14:20:46 +00:00
Andy Polyakov
52ee3d01ae Lppc_AES_[en|de]crypt_compact: size optimization. 2007-07-19 15:31:22 +00:00
Andy Polyakov
e59f992be6 Minor optimization in AES_set_encryption_key for x86_64. 2007-07-19 14:59:26 +00:00
Andy Polyakov
8bae7722a2 _x86_64_AES_[en|de]crypt_compact: size optimization and aggressive
T[ed]4 prefetch.
2007-07-19 14:29:41 +00:00
Andy Polyakov
96b0f6c16d Various minor updates to AES assembler modules. 2007-07-13 17:42:13 +00:00
Andy Polyakov
e1612ea59d Add _x86_64_AES_[en|de]crypt_compact. 2007-07-13 17:39:40 +00:00
Andy Polyakov
f20af72312 AES_set_[en|de]crypt_key for ARMv4. 2007-05-30 15:57:31 +00:00
Andy Polyakov
7ef643360d s390x gas can't handle .align 128. 2007-05-28 16:32:50 +00:00
Andy Polyakov
76c828c627 AES_set_[en|de]crypt_key for s390x. 2007-05-28 16:30:18 +00:00
Andy Polyakov
86d8f3ee19 Typo in aes-ppc.pl. 2007-05-19 20:00:33 +00:00
Andy Polyakov
9c200f5471 Initial draft of AES for PPC. 2007-05-19 17:16:27 +00:00
Andy Polyakov
3f6916cf29 Fix bug introduced in cn#16195. 2007-05-03 09:12:47 +00:00
Andy Polyakov
a4470ae7b2 Fine reading of manual suggests that km can return non-normal completion code. 2007-05-03 07:26:27 +00:00
Andy Polyakov
251718e4c1 Fix s390x bugs and correct performance coefficients. 2007-05-02 11:44:02 +00:00
Andy Polyakov
a2a54ffc5f s390x assembler pack. 2007-04-30 08:42:54 +00:00
Andy Polyakov
14b1d089b6 Minor touch to aes-armv4.pl. 2007-01-25 11:28:07 +00:00
Andy Polyakov
a296239bdd AES for ARMv4. 2007-01-25 10:44:48 +00:00
Andy Polyakov
591e85e928 Linking errors on IA64 and typo in aes-ia64.S. 2006-10-17 06:41:27 +00:00
Andy Polyakov
3a8012cbf2 Improve 386 portability of aes-586.pl. 2006-09-18 19:13:15 +00:00
Andy Polyakov
2b8a5406f9 Fix bug in aes-586.pl. 2006-08-31 21:15:38 +00:00
Andy Polyakov
6c69aa532e Revised AES_cbc_encrypt in x86 assembler module. 2006-08-07 09:05:52 +00:00
Andy Polyakov
fc92414273 Agressively prefetch S-box in SSE codepatch, relax alignment requirement,
check for SSE bit instead of MMX, as pshufw was introduces in PIII, minor
optimization, typos...
2006-08-02 22:38:16 +00:00
Andy Polyakov
53154d71c3 Switch to compact S-box when generating AES key schedule. 2006-08-02 07:46:56 +00:00
Andy Polyakov
22c268e6c9 Next generation aes-586.pl featuring AES_[en|de]crypt, accessing exclusively
256 byte S-box. AES_cbc_encrypt needs further work as it should also use
slow routines when processing smaller amount of data.
2006-07-31 20:03:56 +00:00
Andy Polyakov
af8c1d81a3 Reimplement outer rounds as "compact" in x86 assembler. This has rather
strong impact on decrypt performance, 20-25%. One probably should consider
switching between slower and faster routines depending on how much data
we were asked to process.
2006-07-18 10:05:38 +00:00
Andy Polyakov
985e4c4154 Mitigate the hazard of cache-collision timing attack on last round. The
only chance for T[ed]4 to get evicted in this module is when its cache
"overlaps" with last 128 bits of key schedule.
2006-06-28 08:52:16 +00:00
Andy Polyakov
9598fa8759 Mitigate the hazard of cache-collision timing attack on last round. Well,
prefetch could have been moved closer to Td4 references. Something for
later consideration...
2006-06-28 08:48:54 +00:00
Andy Polyakov
35e00cc2d8 Minor aes-sparcv9.pl optimization. 2005-12-10 12:32:22 +00:00
Andy Polyakov
7395d852c3 Initial draft for AES for UltraSPARC assembler. 2005-12-10 11:19:56 +00:00
Andy Polyakov
0066590f98 Pedantic polish to aes-ia64 and sha512-ia64. 2005-07-20 15:15:22 +00:00
Andy Polyakov
b3f56e8b38 Typo in version number. 2005-07-20 11:11:14 +00:00
Andy Polyakov
5826e4f481 Perl stylistic/cosmetic update for aes-x86_64.pl. 2005-07-20 11:09:02 +00:00
Andy Polyakov
ef428d5681 Fix unwind directives in IA-64 assembler modules. This helps symbolic
debugging and doesn't affect functionality.

Submitted by: David Mosberger

Obtained from: http://www.hpl.hp.com/research/linux/crypto/
2005-07-18 09:54:14 +00:00
Andy Polyakov
afbe674edb ~15% better AES x86_64 assembler. 2005-07-18 09:15:04 +00:00
Andy Polyakov
b4f5e5c959 Commentary section update. 2005-07-14 13:16:31 +00:00
Andy Polyakov
d85185217b AES x86_64 assembler implementation. 2005-07-12 15:44:58 +00:00
Andy Polyakov
4e28f13209 Pedantic polish to aes-586.pl:-) 2005-07-01 10:13:30 +00:00
Andy Polyakov
53a20bfd94 Typos in commentary section. 2005-06-30 22:09:03 +00:00
Andy Polyakov
a28062338c AES_cbc_encrypt to allow end-user to retain small blocks performance by
aligning the key schedule in a specific manner.
2005-06-30 22:06:35 +00:00
Andy Polyakov
e19e549041 Comply with optimization manual (no data should share cache-line with code). 2005-05-09 21:48:01 +00:00
Andy Polyakov
57ee007035 Fix constants.
PR: 1059
2005-05-07 08:11:50 +00:00
Andy Polyakov
3d5fd31280 Avoid L1 cache aliasing even between key and S-boxes. 2005-04-24 21:09:20 +00:00
Andy Polyakov
04d0d0accf Avoid aliasing between stack frames and S-boxes. Compress prefetch code. 2005-04-22 11:49:32 +00:00
Andy Polyakov
c8d5c71af5 Mitigate cache-timing attack in CBC mode. This is done by implementing
compressed tables (2x compression factor) and by pre-fetching them into
processor cache prior every CBC en-/decryption pass. One can argue why
just CBC? Well, it's commonly used mode in real-life applications and
API allows us to amortize the prefetch costs for larger data chunks...
2005-04-16 15:23:21 +00:00
Ulf Möller
8d274837e5 fix breakage for Perl versions that do boolean operations on long words 2005-03-19 11:13:30 +00:00
Andy Polyakov
efde5230f1 Improve ECB performance (48+14*rounds -> 18+13*rounds) and reserve for
hand-coded zero-copy AES_cbc_encrypt.
2005-01-24 14:14:53 +00:00
Andy Polyakov
bac252a5e3 Bug-fix in CBC encrypt tail processing and commentary section update. 2005-01-20 10:33:37 +00:00
Andy Polyakov
addb6e16a8 Throw in AES CBC assembler, up to +40% on aes-128-cbc benchmark. 2005-01-18 01:04:41 +00:00
Andy Polyakov
e7e1150706 "Monolithic" x86 assembler replacement for aes_core.c. Up to +15% better
performance on recent microarchitectures.
2005-01-13 15:35:44 +00:00
Andy Polyakov
25866e3982 Commentary update for AES IA-64 assembler module. 2004-12-30 10:55:02 +00:00
Andy Polyakov
3b3df98ca6 Minor AES x86 assembler tune-up. 2004-12-30 10:46:03 +00:00
Andy Polyakov
f1ce306f30 Oops-kind typos in aes-ia64.S... 2004-12-28 17:10:42 +00:00
Andy Polyakov
25558bf743 Eliminate copies of TeN and TdN, use those found in assembler module. 2004-12-23 21:40:23 +00:00
Andy Polyakov
713147109c AES x86 assembler implementation. 2004-12-23 21:32:34 +00:00
Andy Polyakov
5bd4c26057 Various IA-64 assembler fix-ups. 2004-07-23 22:54:18 +00:00
Andy Polyakov
2232b10f5a Add licensing terms. 2004-07-17 13:24:58 +00:00
Andy Polyakov
51ce5230cd AES assembler implementation for IA-64. Note that there is no anchor from
C code yet...
2004-07-01 11:15:23 +00:00