Split CPU feature detection code Formerly the ARM code favored CPU probes with SIGILLs. We've found its ineffiient on most platforms and dangerous on Apple platforms. This commit splits feature probes into CPU_QueryXXX(), which asks the OS if a feature is present. The detection code then falls back to CPU_ProbeXXX() using SIGILLs as a last resort.
Jeffrey Walton
2017-08-17 11:13:19 -0400
24e1d30be4Sync with Upstream master
Jeffrey Walton
2017-08-17 10:50:11 -0400
Fix more Clang problems I wish this god damn compiler would stop pretending to be other compilers when it can't consume the same program. Even the GCC devs have told the LLVM devs to stop ding that crap
Jeffrey Walton
2017-08-17 10:45:43 -0400
Fix NEON detection on Aarch32 and Aarch64 I wish GCC would get its head out of its ass and define the apprpriate defines. NEON/ASIMD cannot be disgorged from Aarch32/Aarch64 just like SSE2 cannot be disgorged from x86_64. They are core instruction sets
Jeffrey Walton
2017-08-17 02:15:42 -0400
Fix GCM and carryless multiplies When converting to split-sources, we disgorged ReverseHashBufferIfNeeded from Intel CLMUL and ARM PMULL operations. The problem is, they are linked. The only time a buffer needs reversing is when CLMUL or PMULL is in effect. However, we made GCM_ReverseHashBufferIfNeeded_CLMUL and GCM_ReverseHashBufferIfNeeded_PMULL available wheneever SSSE3 or NEON was available, which was incorrect. They should only be used when CLMUL or PMULL is being used
Jeffrey Walton
2017-08-17 00:26:29 -0400
Fix "warning: binding dereferenced null pointer to reference has undefined behavior" This shows up under debug builds when testing instantiations.
Jeffrey Walton
2017-08-16 20:49:03 -0400
86ff6976ddSync with Upstream master
Jeffrey Walton
2017-08-16 14:57:40 -0400
Fix compiler feature detection under Clang Apparently Clang is too dumb to realize we are interested in C++ defines when we use clagng++ and add -std=c++03. Without the -x c++, it fails with a complaint that -std=c++03 cannot be used with C and ObjC files
Jeffrey Walton
2017-08-16 09:43:11 -0400
Add Intel SHA implementation for SHACAL2 encryption The implementation came from Jack Lloyd and the Botan team. Jack and the Botan was gracious and allowed us to use Botan's x86_encrypt_blocks function. They also allowed us to release it under the Crypto++ licensing terms. Also see https://github.com/randombit/botan/pull/1151/files
Jeffrey Walton
2017-08-16 06:13:06 -0400
e394313071Sync with Upstream master
Jeffrey Walton
2017-08-16 05:44:38 -0400
Add Intel SHA implementation for SHACAL2 encryption The implementation came from Jack Lloyd and the Botan team. Botan was gracious and allowed us to use the x86_encrypt_blocks function, and release it under the Crypto++ licensing terms. Also see https://github.com/randombit/botan/pull/1151/files
Jeffrey Walton
2017-08-16 03:47:06 -0400
Fix Address Sanitizer findings on GCC117 GCC117 is a Aarch64/ARM64 server with AMD's ARM chip and GCC 7.10. It looks like GCC is performing some std::string optimizations that generates a finding. We did not witness the finding on other platforms, like other Aarch64 devices and x86_64.
Jeffrey Walton
2017-08-15 03:11:03 -0400
Fix Address Sanitizer findings on GCC117 GCC117 is a Aarch64/ARM64 server powered by AMD's ARM chip. It runs GCC 7.10. It looks like GCC is performing some std::string optimizations that generates a finding. We have not witnessed the finding on other platforms
Jeffrey Walton
2017-08-15 01:15:08 -0400
Convert GCM to use runtime blocksize checking (Issue 408) GCM is still only defined for 16-byte ciphers, but this is where we need to be when we add the larger polynomials
Jeffrey Walton
2017-08-12 16:14:29 -0400
Move from 'static' to 'enum' for class constants Enums don't take up space in class objects. Its should result in smaller objects and faster code
Jeffrey Walton
2017-08-11 17:13:15 -0400
Switch from 'static const' to 'enum' for class constants Enums do not take up space in a class. It should lead to smaller objects and faster runtimes
Jeffrey Walton
2017-08-11 16:09:28 -0400