aboutsummaryrefslogtreecommitdiffstats
path: root/src/lib/block
Commit message (Collapse)AuthorAgeFilesLines
* Remove support for splitting the amalgamation by ABIJack Lloyd2020-01-221-4/+4
| | | | | | | | | | This is as if --single-file-amalgamation was always used, except also now botan_all_internal.h is not created. This effectively drops support for very old GCC/Clang in the amalgamation (only). GCC 5+ and Clang 3.8+ support the target attribute and work fine. MSVC not affected since it doesn't need such attributes in the first place.
* Optimize AES vperm implementationJack Lloyd2020-01-201-68/+68
| | | | | | | | | | | | | Mostly by avoiding strange corner cases in compiler code generation rather than anything clever. Improves Skylake x86 by 1.08x encrypt/no change for decrypt Improves ARMv7 (Pi2) by 1.2x encrypt/1.42x decrypt Improves Aarch64 (Cortex-A53) by 1.45x encrypt/2.15x decrypt Improves POWER8 by 18x encrypt/19.5x decrypt Crazy POWER8 improvement due to the fact that shuffle function was not being inlined properly by GCC 9 due to differing ISA enablement
* Clean up handling of POWER ISA extensionsJack Lloyd2019-12-122-12/+12
| | | | See #2226
* Avoid shadow warning in AES vperm codeJack Lloyd2019-12-051-10/+9
|
* Add SHACAL2 AVX2Jack Lloyd2019-11-144-0/+178
| | | | About 2x faster on Skylake
* Fix some MSVC warningsJack Lloyd2019-10-181-1/+1
|
* Disable AVX2 Serpent on MSVCJack Lloyd2019-09-271-0/+6
| | | | | | MSVC 19.24.28117 miscompiles it GH #2120
* Merge CLMUL and PMULL codeJack Lloyd2019-09-251-34/+3
| | | | Same algorithms were used just using SSSE3 vs NEON
* Fix AES vperm in single file amalgamationJack Lloyd2019-09-121-3/+11
| | | | Nothing enabled ssse3 in that case.
* Merge GH #2061 Add header deprecation warningsJack Lloyd2019-09-0822-0/+44
|\
| * Deprecate many publically available headersJack Lloyd2019-09-0622-0/+44
| |
* | Disable vperm AES on big-endian systemsJack Lloyd2019-09-071-0/+2
| | | | | | | | | | All the constants need to be tweaked and possibly other changes are required.
* | Add support for vector permute AES using AltiVecJack Lloyd2019-09-072-0/+26
| | | | | | | | Slower than T-tables on the machines I've tried, but constant time.
* | In aes_vperm avoid loading from data segmentJack Lloyd2019-09-061-17/+12
|/ | | | I do not understand the mechanism but this is slightly faster.
* Merge GH #2096 Unroll POWER8 AES instructions by 4xJack Lloyd2019-09-041-105/+328
|\
| * Unroll POWER8 AES instructions by 4xJack Lloyd2019-09-041-105/+328
| | | | | | | | Improves performance by 20-30% on POWER9
* | Make ssse3/sse2 dependencies explicit rather than implicitJack Lloyd2019-09-042-0/+3
| | | | | | | | Previously --disable-sse2/--disable-ssse3 would not work as expected
* | Add build supportJack Lloyd2019-09-041-2/+13
| |
* | Some cleanupsJack Lloyd2019-09-041-54/+52
| |
* | Unroll blocks by 2xJack Lloyd2019-09-032-70/+188
| |
* | Support NEON for AES vector permutesJack Lloyd2019-09-014-110/+154
|/ | | | Rename aes_ssse3 -> aes_vperm
* Build fixesJack Lloyd2019-08-311-2/+1
|
* Abstract the AES SSSE3 implementation to support other SIMDJack Lloyd2019-08-312-449/+333
|
* Fix a bug in CAST-128 affecting 11, 13, 14, or 15 byte keysJack Lloyd2019-08-261-2/+5
| | | | | | | | With keys not a multiple of 4 bytes, the zero bytes ended up in the wrong place. In the unlikely event anyone was affected by this they could just use the equivalent 16 byte key. Closes #2081
* Report parallism for AES when hardware is availableJack Lloyd2019-07-051-0/+14
|
* Officially deprecate headersJack Lloyd2019-06-071-0/+4
| | | | | | | | | | Create BOTAN_DEPRECATED_HEADER so we can warn about this consistently. Shuffle around the filter headers so all of the concrete filters are defined in filters.h instead of being spread across many headers. Document which headers are deprecated as well as a list of headers which will be made internal-only in a future major release.
* Add Bcrypt-PBKDFJack Lloyd2019-05-312-4/+12
|
* Remove IP/FP tables in DESJack Lloyd2019-05-033-283/+42
| | | | | The instruction sequence is a bit slower, but saves 8K of ROM and eliminates a side channel issue.
* Make the ISA list a listJack Lloyd2019-04-179-9/+28
|
* Fix some extra semicolonsJack Lloyd2019-03-271-1/+1
|
* Fixes for minimized buildsJack Lloyd2019-02-161-1/+1
| | | | Various configurations would fail build or test, fix that.
* Refactor CPUID to make it thread safeJack Lloyd2019-01-301-6/+7
| | | | | | | | | | Needed for #1819 and unfortunately Windows does not allow thread local data to be stored as a member of a DLL exported class. So hide it behind an accessor function instead. This slows down CPUID test somewhat and I would like to address that but it seems hard without breaking the CPUID API, which is for better or worse public.
* Remove some unnecessary assertsJack Lloyd2019-01-223-34/+0
| | | | Now this is checked at the higher level
* Fix some warnings from PVS-StudioJack Lloyd2019-01-171-3/+4
| | | | No real bugs, but pointed out some odd constructs and duplicated logic
* Remove trailing whitespaceJack Lloyd2019-01-132-8/+8
|
* Avoid including rotate.h in bswap.hJack Lloyd2018-12-2113-0/+13
| | | | | | | It was only needed for one case which is easily hardcoded. Include rotate.h in all the source files that actually use rotr/rotl but implicitly picked it up via loadstor.h -> bswap.h -> rotate.h include chain.
* Add CT::Mask typeJack Lloyd2018-11-281-2/+2
|
* Use vzeroupper/vzeroall to transition between AVX and SSE states.Jack Lloyd2018-11-102-0/+16
| | | | | | | | Otherwise some CPUs suffer serious stalls. Using vzeroall on exit also has the nice effect that we don't have to worry about register contents leaking. HT to @noloader for doing the background research on this.
* Add some missing includesJack Lloyd2018-11-081-0/+1
| | | | This is not exhaustive. See GH #1733
* Remove SIMD_32 typedefJack Lloyd2018-11-053-48/+48
| | | | | It is confusing since its not clear from the name how many elements it has, and this gives consistency with SIMD_8x32 type.
* Unroll Blowfish loop by 4 instead of 2Jack Lloyd2018-10-141-16/+45
| | | | Roughly 50% faster for parallel modes like CTR or CBC decrypt.
* Add explicit AVX2 function annotationsJack Lloyd2018-10-052-0/+8
| | | | Needed for single amalagamation file with AVX2 enabled.
* Make a few simple functions constexprJack Lloyd2018-10-011-9/+9
| | | | This is primarily just to verify that C++11 constexpr works.
* Remove support for Visual C++ 2013Jack Lloyd2018-10-014-9/+9
| | | | Closes GH #1557
* Fix some MSVC warningsJack Lloyd2018-09-301-2/+2
|
* Use correct array length in Serpent AVX2Jack Lloyd2018-09-281-2/+2
| | | | Not an actual problem, but flagged by Coverity
* Split 'cast' module into CAST-128 and CAST-256Jack Lloyd2018-09-137-2/+7
| | | | | | | They were only in the same place because of the desire to share the sbox tables, but that can be handled by adding a dependency. This makes it possible to disable CAST-256 while leaving CAST-128.
* Add CommonCrypto block cipher supportJose Pereira2018-09-101-2/+16
|
* Report if Serpent is using AVX2Jack Lloyd2018-09-101-0/+7
|
* Optimize CT::is_zero, CT::expand_mask, CT::expand_top_bitJack Lloyd2018-09-071-5/+4
|