Commit Graph

42 Commits

Author SHA1 Message Date
Jeffrey Walton
dd7598e638
Remove 64-bit AdvancedProcessBlocks (GH #945) 2020-07-07 15:22:09 -04:00
Jeffrey Walton
84ab419029
Fix SIMON64 and SPECK64 self test failures (GH #945) 2020-07-07 12:36:49 -04:00
Jeffrey Walton
e007e98501
Update comments 2020-04-11 08:36:02 -04:00
Jeffrey Walton
fa23a5ba16
Presplat SIMON and SPECK keys on Intel machines 2020-04-10 23:54:31 -04:00
Jeffrey Walton
acf5c7de10
Update SPECK64 and SPECK128 OptimalDataAlignment 2020-04-08 02:59:38 -04:00
Jeffrey Walton
7b7cf2d70e
Add 32-bit Altivec implementation of Speck128 2020-04-07 14:15:46 -04:00
Jeffrey Walton
5017d9c91c
Report Altivec on PowerPC 2020-04-05 09:21:35 -04:00
Jeffrey Walton
b149f595f8
Use Altivec for Speck64 2020-04-05 09:14:50 -04:00
Jeffrey Walton
c831d6ffee
Pre-splat SIMON and SPECK keys when appropriate for Altivec (PR #910)
SIMON and SPECK keys can be pre-splatted in the forward direction when Altivec instructions will be used. Pre-splatting does not work for the reverse transformation. It breaks modes like CBC, so the speed-up is only applied to the forward transformation.
2019-10-28 01:12:58 -04:00
Jeffrey Walton
6da6b7f5ac
Enable Power7 for Simon and Speck (PR #909) 2019-10-27 14:02:41 -04:00
Jeffrey Walton
883dbce74a Remove double semicolons after sed'ing defines
Also see https://github.com/weidai11/cryptopp/issues/889
2019-10-03 20:44:33 -04:00
Jeffrey Walton
39418a8512
Use PowerPC unaligned loads and stores with Power8 (GH #825, PR #826)
Use PowerPC unaligned loads and stores with Power8. Formerly we were using Power7 as the floor because the IBM POWER Architecture manuals said unaligned loads and stores were available. However, some compilers generate bad code for unaligned loads and stores using `-march=power7`, so bump to a known good.
2019-04-27 20:35:01 -04:00
Jeffrey Walton
7515b4d661
Fix SIMON64 and SPECK64 providers 2018-11-12 22:03:26 -05:00
Jeffrey Walton
a0608a6b80
Port SPECK64 to Altivec
SPECK64 runs about 4x faster than C++ for POWER4 and friends. If POWER7 is available it goes back to full speed due to efficient unaligned loads
2018-11-12 20:56:15 -05:00
Jeffrey Walton
b2c5616ede
Fix AlgorithmProvider for SIMON and SPECK on Solaris 2018-08-17 07:49:35 -04:00
Jeffrey Walton
6f1caab7c2
Move SIMON-64 and SPECK-64 to Power7 minimum
SIMON-64 and SPECK-64 don't use 64-bit type so they can run on Power7. We may be able to drop to Power4, but we need to test the effects of Loads and Stores without vec_vxs_ld and vec_vsx_st
2018-08-14 23:31:40 -04:00
Jeffrey Walton
d221336f42
Add POWER8 SPECK-64 implementation 2018-08-14 03:36:49 -04:00
Jeffrey Walton
aa806f3475
Add SPECK-128 provider for POWER8 2018-08-12 04:40:10 -04:00
Jeffrey Walton
3e26437249
Remove debug statement
Thus slipped by during commit 898dab99b8
2018-08-12 04:24:08 -04:00
Jeffrey Walton
898dab99b8
Add POWER8 SPECK-128 implementation
Performance went from about 14 cpb to 2-3 cpb, depending on endian-ness
2018-08-12 04:08:33 -04:00
Jeffrey Walton
b74a6f4445
Add algorithm provider member function to Algorithm class 2018-07-06 09:23:37 -04:00
Jeffrey Walton
f5c86217c0
Use default alignment for GetBlock 2018-06-24 16:05:37 -04:00
Fabrice Fontaine
3c01bcc352 Allow user to set -DCRYPTOPP_ARM_NEON_AVAILABLE=0 (#595)
Disable neon through -DCRYPTOPP_ARM_NEON_AVAILABLE=0,
replace "if defined(CRYPTOPP_ARM_NEON_AVAILABLE)" by
"if (CRYPTOPP_ARM_NEON_AVAILABLE)"

Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
2018-03-05 18:49:10 -05:00
Jeffrey Walton
e416b243d3
Re-add Simon and Speck, enable SSE (GH #585)
This commit re-adds Simon and Speck. The commit includes C++, SSSE3 and SSE4. NEON, Aarch32 and Aarch64 are disabled at the moment.
2018-02-18 23:23:50 -05:00
Jeffrey Walton
15b14cc618
Remove Simon and Speck ciphers (GH #585)
We recently learned our Simon and Speck implementation was wrong. The removal will stop harm until we can loop back and fix the issue.
The issue is, the paper, the test vectors and the ref-impl do not align. Each produces slightly different result. We followed the test vectors but they turned out to be wrong for the ciphers.
We have one kernel test vector but we don't have a working implementation to observe it to fix our implementation. Ugh...
2018-02-14 04:06:16 -05:00
Jeffrey Walton
0aa2ebbbf3
Clear signed/unsigned warnings with GCC and -Wall -Wextra 2017-12-26 16:59:32 -05:00
Jeffrey Walton
7bc621da62
Enable NEON/ASIMD for Simon and Speck on Aarch32/Aarch64 (GH #545) 2017-12-05 14:02:48 -05:00
Jeffrey Walton
1de143203e
Add SPECK-64 NEON intrinsics 2017-12-03 18:47:39 -05:00
Jeffrey Walton
f0e49785f6
Fix incorrect SPECK-128 decrypt when blocks >= 6
Add defines for CRYPTOPP_SPECK64_ADVANCED_PROCESS_BLOCKS and CRYPTOPP_SPECK128_ADVANCED_PROCESS_BLOCKS
2017-12-03 09:00:39 -05:00
Jeffrey Walton
6bb1f1d9c4
Add SPECK-64 SSE intrinsics
Performance went from about 11.9 cpb (C++) to about 4.5 cpb (SSE)
2017-12-03 02:28:40 -05:00
Jeffrey Walton
61ec50dabe
Change Doxygen comment style from //! to ///
Also see https://groups.google.com/forum/#!topic/cryptopp-users/A7-Xt5Knlzw
2017-11-29 10:54:33 -05:00
Jeffrey Walton
4f2d6f713f
Switch to rotlConstant and rotrConstant
Update comments
2017-11-24 17:54:12 -05:00
Jeffrey Walton
304809a65d
Add NEON and ASIMD intrinsics for SPECK-128 (GH #538)
Performance increased by about 115% on a 980 MHz BananaPi dev-board. Throughput went from about 46.2 cpb to about 21.5 cpb.
2017-11-23 02:47:44 -05:00
Jeffrey Walton
39697d92bf
Add SSSE3 intrinsics for SPECK-128 (GH #538)
Performance increased by about 100% on a 3.1 GHz Core i5 Skylake. Throughput went from about 7.3 cpb to about 3.5 cpb. Not bad for a software-based implementation of a block cipher
2017-11-22 07:57:39 -05:00
Jeffrey Walton
b4cecfef95
Rework UncheckedSetKey to rearrange words in ExpandKey (GH #538) 2017-11-21 17:43:28 -05:00
Jeffrey Walton
5007c13fbd
Switch to size_t for loop control 2017-11-21 04:55:41 -05:00
Jeffrey Walton
78922e9c85
Remove unneeded include 2017-11-21 03:01:23 -05:00
Jeffrey Walton
0dcec5a6d4
Clear unused variable warning for MSVC 2017-11-20 23:53:17 -05:00
Jeffrey Walton
c7760ac4e9
Use SPECK_ExpandKey instead of SPECK_RoundKeys
The reference implementation uses ExpandKey
2017-11-20 23:21:15 -05:00
Jeffrey Walton
6cc89a983d
Update documentation 2017-11-20 20:03:39 -05:00
Jeffrey Walton
4b3560baef
Update documentation
Whitespace check-in
2017-11-20 08:33:33 -05:00
Jeffrey Walton
b9fc470bc7
Add SPECK-64 and SPECK-128 lightweight block ciphers (GH #538) 2017-11-20 06:30:21 -05:00