Commit Graph

2562 Commits (2297dd000a7cf2831095ba59be2ed653ea3bd884)

Author SHA1 Message Date
Jeffrey Walton 2297dd000a
Removed "typedef SHA1 SHA" (Issue 369)
This should have happened when we removed most of MAINTAIN_BACKWARDS_COMPATIBILITY artifacts. Its not practical move SHA1 into Weak:: namespace or "typedef SHA256 SHA" because SHA1 is too intertwined at the moment.

In the interim, maybe we can place SHA1 in both CryptoPP:: and Weak:: namespaces. This will allow us to transition into Weak::SHA1 over time, and signal to users SHA1 should be avoided.
2017-04-24 05:05:14 -04:00
Jeffrey Walton 64f1b50b7f
Add pclmulqdq for OS X disassembly tests 2017-04-24 03:05:37 -04:00
Jeffrey Walton e2f5da337e
Add mapfile to allow additional capability bits
Also see http://www.oracle.com/technetwork/server-storage/solaris/hwcap-modification-139536.html
2017-04-23 12:11:08 -04:00
Jeffrey Walton 422600c5b8
Update scripts for testing 2017-04-23 07:38:25 -04:00
Jeffrey Walton 89176e51cd
Add safety for SSSE4.1 and SSE4.2 intructions
They are giving ARIA and BLAKE2 trouble. It looks like SSE4  support appeared in the GCC compiler around 4.1 or 4.2. It looks like SHA support appeared in the GNU assembler around 2.18
2017-04-23 06:37:03 -04:00
Jeffrey Walton 96cc3522ce
Add test for '-march=native' 2017-04-22 23:37:13 -04:00
Jeffrey Walton 4478e4cf39
Removed Unified ASM and Modern Compiler tests
Unified adds no value, and modern compilers are already tested
2017-04-22 21:22:32 -04:00
Jeffrey Walton 7562e38ad6
Add safety for SHA intructions
It looks like SHA support appeared in the GCC compiler around 4.8 or 4.9. It looks like SHA support appeared in the GNU assembler around 2.23
2017-04-22 19:46:13 -04:00
Jeffrey Walton f818d4e50f
Updated code generation tests 2017-04-22 16:27:37 -04:00
Jeffrey Walton b9abd7141e
Fix endian-reversal and loading of MSG0-MSG3
Initially we performed a 32-bit word-size ByteReverse() on the entire 64-byte buffer being hashed. Then we performed another fix-up when loading each 16-byte portion of the buffer into the SSE2 registers for SHA processing. The [undesired] consequence was byte swapping and reversals happened twice. Worse, the call to ByteReverse() produced 16 bswaps instead of 1 call pshufb, so it was orders of magnitude slower than it needed to be.

This check-in takes the sane approach to byte reversals and swapping. It performs it once when the message is loaded for SSE processing. The result is SHA1 calculations drop from about 3.0 cpb to about 2.5 cpb.
2017-04-22 12:19:55 -04:00
Jeffrey Walton cd65ce873a
Add -xmemalign=4i for Sun SPARC (Issue 403) 2017-04-22 01:15:17 -04:00
Jeffrey Walton 12b5074c72
Fix SunCC and "_mm_set_epi8 must have prototype" 2017-04-22 00:17:45 -04:00
Jeffrey Walton c25edcaff3
Add potential workaround for Solaris SIGBUS 2017-04-22 00:05:55 -04:00
Jeffrey Walton 8ded8bc38d
Clear SunCC anachronism warning "Attempt to redefine IS_BIG_ENDIAN without using #undef" 2017-04-21 23:52:43 -04:00
Jeffrey Walton 1249ac16eb Merge pull request #402 from kvirund/alignment.issues
Some fixes related to SunCC compiler bugs.
2017-04-21 22:25:06 -04:00
Anton Gorev 63cc633be7 Reverted change in config.h as it does not fix anything. 2017-04-21 21:23:08 -05:00
Anton Gorev 72d8cbe917 Some fixes related to SunCC compiler bugs.
Fixes for "invalid address alignment" errors. See https://groups.google.com/d/topic/cryptopp-users/OYaByDEbSI0/discussion for details.
Changed config.h in accordance to Jeffrey Walton's request;
2017-04-21 15:26:16 -05:00
Jeffrey Walton cede0f3fb1
Whitespace 2017-04-18 02:57:38 -04:00
Jeffrey Walton ceecf3faf5
Fix table whitespace 2017-04-17 04:23:50 -04:00
Jeffrey Walton ba904cc9da
Update algorithm list in cryptlib.h 2017-04-17 02:39:22 -04:00
Jeffrey Walton f69504f6b4
Cleanup travis.yml file 2017-04-17 01:15:55 -04:00
Jeffrey Walton cfa98a32c0
Add Win64 to exclude until the issues are sorted out 2017-04-17 01:06:27 -04:00
Jeffrey Walton 3d9ac8f66f
Add Travis configuration file 2017-04-17 00:25:57 -04:00
Jeffrey Walton b784852998
Add no-asm target to ease testing of -DCRYPTOPP_DISABLE_ASM
This is intended to be used on Travis CI
2017-04-17 00:20:22 -04:00
Jeffrey Walton 7df4418258
Add allow_failures to appveyor.yml until we sort out some of the issues 2017-04-16 15:57:46 -04:00
Jeffrey Walton 3504f1da25
Add VS2010 - VS2017 images to appveyor.yml 2017-04-16 15:10:20 -04:00
Jeffrey Walton dad532cb4b
Remove stdio.h header 2017-04-16 13:23:27 -04:00
Jeffrey Walton 1d1a150737
Avoid extra loads of workspace variables 2017-04-16 13:00:45 -04:00
Jeffrey Walton ddc0f3a899
Switch to Put and Get blocks. Remove unneeded macros 2017-04-16 08:06:20 -04:00
Jeffrey Walton 83a87cb4df
Group DSA-RFC6979 tests together by hash value
Previously, all 1024-bit tests were run, and then 2048-bit tests were run. Splitting them meant there were two entries for DSA-RFC6979/SHA-1, two entries for DSA-RFC6979/SHA-256 and so on. Now there will be one entry output during testing.
2017-04-15 09:03:22 -04:00
Jeffrey Walton 106106813a
Add missing sha2 and sha3 test file names
sha2.txt and sha3.txt are just collections of other files, so they don't take up much space.

This commit stens from and exception when running 'cryptest.exe tv sha2' and  'cryptest.exe tv sha3'. Its not obvious the name of the file to be run sha2_224_fips_180.txt. Users should not have to hunt for the reason sha2 and sha3 do not work.
2017-04-15 08:50:03 -04:00
Jeffrey Walton 5e27404a15
Add missing sha2 and sha3 test file names
sha2.txt and sha3.txt are just collections of other files, so they don't take up much space.

This commit stens from and exception when running 'cryptest.exe tv sha2' and  'cryptest.exe tv sha3'. Its not obvious the name of the file to be run sha2_224_fips_180.txt. Users should not have to hunt for the reason sha2 and sha3 do not work.
2017-04-15 08:49:00 -04:00
Jeffrey Walton 922568864e
Convert tab to space for .appveyor.yml
The configuration validated but the test build died
2017-04-15 04:26:19 -04:00
Jeffrey Walton 2fba69fb16
Add whitespace to test_script cmd
Without the additional CRLF, Appveyor dies with on the command . The odd thing is, YAML validated OK.
2017-04-15 04:22:26 -04:00
Jeffrey Walton 424bd710ac
Add Configuration and Platform information 2017-04-15 04:15:06 -04:00
Jeffrey Walton 1ace49049a
Add clone depth to Appveyor 2017-04-15 03:12:08 -04:00
Jeffrey Walton c0d6f3882b
Add Appveyor configuration file 2017-04-15 02:54:35 -04:00
Jeffrey Walton 556e3610e8
Add CopyCryptestToRoot target
Also see https://www.cryptopp.com/wiki/MSBuild_(Command_Line)#CopyCryptestToRoot
2017-04-15 02:36:03 -04:00
Jeffrey Walton 163f8febe6
Fix comment 2017-04-14 07:19:04 -04:00
Jeffrey Walton 0f7aba8b4c Merge pull request #398 from anonimal/cmake
Build: apply patch for GNU assembler errors to CMake
2017-04-14 06:27:56 -04:00
Jeffrey Walton b081f7c634
Use full S1 table for timing attack counter measures
Change stride to cache line size divided by word size based on Yun's 32-bit word implementation
2017-04-14 06:24:54 -04:00
Jeffrey Walton cf160e91c4
Added comments on using InformationDisperseFile and SecretShareFile
This is based on feedback from https://groups.google.com/forum/#\!topic/cryptopp-users/XEKKLCEFH3Y
2017-04-13 23:13:07 -04:00
Jeffrey Walton bf92cb0039
Split regtest.cpp into regtest{1|2|3}.cpp
regtest.cpp is where ciphers register by name. The library has added a number of ciphers over the last couple of years and the source file has experienced bloat. Most of the ARM and MIPS test borads were suffering Out of Memory (OOM) kills as the compiler processed the source fille and the included header files.
This won't stop the OOM kills, but it will help the situation. An early BeagleBoard with 512 MB of RAM is still going to have trouble, but it can be worked around by building with 1 make job as opposed to 2 or 4.
2017-04-13 21:45:21 -04:00
Jeffrey Walton bae30d6767
Add ARIA to nmake makefile for Windows 2017-04-13 18:44:20 -04:00
Jeffrey Walton 70cf88f230
Apply S-box timing attack counter measures to ARIA
The ARIA S-boxes could leak timining information. This commit applies the counter measures present in Rijndael and Camellia to ARIA. We take a penalty of about 0.05 to 0.1 cpb. It equates to about 0 MiB/s on an ARM device, and about 2 MiB/s on a modern Skylake.

We recently gained some performance though use of SSE and NEON in ProcessAndXorBlock, so the net result is an improvement.
2017-04-13 17:46:51 -04:00
Jeffrey Walton 65c3c63b52
Breakout and cleanup macros. Add CRYPTOPP_ENABLE_ARIA_SSE2_INTRINSICS, CRYPTOPP_ENABLE_ARIA_SSSE3_INTRINSICS and CRYPTOPP_ENABLE_ARIA_NEON_INTRINSICS.
Tune CRYPTOPP_ENABLE_ARIA_SSE2_INTRINSICS and CRYPTOPP_ENABLE_ARIA_SSSE3_INTRINSICS macro for older GCC and Clang. Clang needs some more tuning on Aarch64 becuase performance is off by about 15%.

Add additional NEON code paths.

Remove keyBits from Aarch64 code paths.
2017-04-13 17:45:58 -04:00
Jeffrey Walton 471e2f0d91
Remove unneeded assert from Camellia 2017-04-13 16:53:53 -04:00
Jeffrey Walton 2bb36c790e
Add ARIA test vectors from RFC 5794 2017-04-13 16:00:59 -04:00
Jeffrey Walton 04908cca48
Improve x86 and x64 ARIA performance
The changes were meant to improve Windows, but GCC benefited more. Windows gained 0.3 cpb, while GCC gained 1.2 cpb
2017-04-13 06:52:56 -04:00
Jeffrey Walton 35f95fb739
Fix unaligned pointer crash on Win32 due to _mm_load_si128
The SSSE3 intrinsics were performing aligned loads using _mm_load_si128 using user supplied pointers. The pointers are only a byte pointer, so its alignment can drop to 1 or 2. Switching to _mm_loadu_si128 will sidestep potential problems. The crash surfaced under Win32 testing.

Switch to memcpy's when performing bulk assignment x[0]=y[0] ... x[3]=y[3]. I believe Yun used the pattern to promote vectorization. Some compilers appear to be braindead and issue integer move's one word at a time. Non-braindead compiler will still take the optimization when advantageous, and slower compilers will benefit from the bulk move. We also cherry picked vectorization opportunities, like in ARIA_GSRK_NEON.

Remove keyBits variable. We now use UncheckedSetKey's keylen throughout.

Also fix a typo in CRYPTOPP_BOOL_SSSE3_INTRINSICS_AVAILABLE. __SSSE3__ was listed twice.
2017-04-13 04:28:02 -04:00