summaryrefslogtreecommitdiff
path: root/rijndael.cpp
Commit message (Collapse)AuthorAgeFilesLines
* Disable global optimizations for all versions of VS2017 (GH #649, GH #735, ↵Jeffrey Walton2022-08-241-1/+1
| | | | | PR #1146) We started seeing failed self test under VS2017 on AppVeyor. See https://ci.appveyor.com/project/noloader/cryptopp/builds/44570276 .
* Enable MSVC global optimizations for AES and ChaCha for newer MSVC versions ↵chausner2022-07-291-3/+2
| | | | (GH #1131)
* Fix typos (PR# 1099)Dimitris Apostolou2022-01-041-1/+1
|
* Consistently use cryptogams_ prefix for Andy Polyakov's code (PR #952)Jeffrey Walton2020-12-261-8/+8
|
* Fix conflicting Cryptogams API names on ARM with OpenSSL (GH #952)Sergiu Giurgiu2020-06-031-4/+4
|
* Cleanup CFB mode for Cryptogams AESJeffrey Walton2020-04-131-6/+8
|
* Fix AES/CFB mode failure on ARMv7Jeffrey Walton2020-04-121-4/+4
|
* Align Rijdael SIMD data to natural alignmentJeffrey Walton2020-04-031-4/+4
| | | | This should provide a small speedup and avoid problems with loads using 32-bit pointers
* Remove double semicolons after sed'ing definesJeffrey Walton2019-10-031-1/+1
| | | | Also see https://github.com/weidai11/cryptopp/issues/889
* Update commentsJeffrey Walton2019-07-211-1/+1
|
* Avoid use of NDEBUG in source filesJeffrey Walton2018-12-031-3/+5
| | | | Posix NDEBUG causes our test script to fail the Posix Assert test
* Update commentsJeffrey Walton2018-11-111-1/+0
|
* Rename files with dashes to underscores (GH #736)Jeffrey Walton2018-11-101-1/+1
| | | | Also see https://groups.google.com/forum/#!topic/cryptopp-users/HBz-6gZZFOA on the mailing list
* Fix global optimization bug for ChaCha AVX2 under VS2017 (GH #735)Jeffrey Walton2018-11-091-3/+3
| | | | Also see https://github.com/weidai11/cryptopp/issues/649. The 649 issue is the one affecting AES. It appears to be the same problem.
* Disable global optimizations for Rijndael using MSC compiler (GH #649)Jeffrey Walton2018-11-051-0/+8
|
* Sync CRYPTOPP_{BIG|LITTLE}_ENDIAN with AutotoolsJeffrey Walton2018-10-281-1/+1
| | | | Autotools sets up its config.h file with the '#define XXX 0' or '#define XXX 1' pattern. This check-in makes the sources Autotools aware. We need to verify CMake does the same
* Fix unused variable warnings (GH #723)orangefour2018-10-221-9/+0
|
* Allow Cryptogam's AES thunk to be inlinedJeffrey Walton2018-10-141-8/+4
|
* Use consistent suffix for SSE2 ASMJeffrey Walton2018-08-201-3/+3
|
* Disable X32 inline assembly (GH #686, PR #704)Jeffrey Walton2018-08-181-11/+6
| | | Also use CRYPTOPP_DISABLE_XXX_ASM consistently. The pattern is needed for Clang which still can't compile Intel assembly language. Also see http://llvm.org/bugs/show_bug.cgi?id=24232.
* Disable same buffer for in and out on ARM A-32 (GH #683)Jeffrey Walton2018-07-121-0/+4
|
* Remove CRYPTOPP_ALLOW_UNALIGNED_DATA_ACCESS support (GH #682)Jeffrey Walton2018-07-111-15/+16
| | | | | We were able to gut CRYPTOPP_ALLOW_UNALIGNED_DATA_ACCESS for everything except Rijndael. Rijndael uses unaligned accesses on x86 to harden against timing attacks. There's a little more to CRYPTOPP_ALLOW_UNALIGNED_DATA_ACCESS and Rijndael. If we remove unaligned access then AliasedWithTable hangs in an endless loop on non-AESNI machines. So care must be taken when trying to remove the vestige from Rijndael.
* Add ARM AES asm implementation from Cryptogams (GH #683)Jeffrey Walton2018-07-111-9/+104
|
* Add algorithm provider member function to Algorithm classJeffrey Walton2018-07-061-0/+21
|
* Remove unneeded round parameter on Rijndael_UncheckedSetKey_SSE4_AESNIJeffrey Walton2018-02-201-2/+2
|
* Remove unneeded parameter for Rijndael_UncheckedSetKey_POWER8Jeffrey Walton2018-02-201-2/+2
|
* Move Altivec AdvancedProcessBlocks into adv-simd.hJeffrey Walton2018-01-021-4/+4
|
* Switch to rotlConstant and rotrConstantJeffrey Walton2017-11-251-2/+2
| | | | This will help Clang and its need for a constexpr
* Rename CRYPTOPP_ENABLE_ADVANCED_PROCESS_BLOCKS for RijndaelJeffrey Walton2017-11-221-2/+2
|
* Prefix IS_LITTLE_ENDIAN and IS_BIG_ENDIAN with CRYPTOPPJeffrey Walton2017-11-101-1/+1
|
* Use SetMark to avoid unneeded zeroization in RijndaelJeffrey Walton2017-10-081-0/+4
|
* Move AliasedWithTable into unnamed namespaceJeffrey Walton2017-10-051-57/+54
| | | | | | | | Move m_aliasBlock into Rijndael::Base. m_aliasBlock is now an extra data member for Dec because the aliased table is only used for Enc when unaligned data access is in effect. However, the SecBlock is not allocated in the Dec class so there is no runtime penalty. Moving m_aliasBlock into Base also allowed us to remove the Enc::Enc() constructor, which always appeared as a wart in my eyes. Now m_aliasBlock is sized in UncheckedSetKey, so there's no need for the ctor initialization. Also see https://stackoverflow.com/q/46561818/608639 on Stack Overflow. The SO question had an unusual/unexpected interaction with CMake, so the removal of the Enc::Enc() ctor should help the problem.
* Move Power8 crypto functions into ppc-crypto.hJeffrey Walton2017-09-221-2/+0
|
* Enable little endian Rijndael_UncheckedSetKey_POWER8 using built-insJeffrey Walton2017-09-211-4/+5
| | | | The problem was vec_sld is endian sensitive. The built-in required more than us setting up arguments to ensure the vsx load resulted in a big endian value. Thanks to Paul R on Stack Overflow for sharing the information that IBM did not provide. Also see http://stackoverflow.com/q/46341923/608639
* Move Rijndael_UncheckedSetKey_POWER8 prior to GetUserKey callJeffrey Walton2017-09-211-6/+7
| | | | Arg... GetUserKey was performing a 32-bit word reverse. It was part of the problem on little endian machines
* Add Rijndael_UncheckedSetKey_POWER8Jeffrey Walton2017-09-191-20/+11
| | | | We are going to attempt to perform key setup using Power8 in-core vector instructions
* ByteReverseArray → ReverseByteArrayLEJeffrey Walton2017-09-181-2/+2
|
* Refactor LoadT() and StoreT(). Add separate ReverseT() for little endian ↵Jeffrey Walton2017-09-181-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | machines The refactoring has no effect on little endian machines. However, on big endian GCC119 using GCC 7.1 the performance improved by 2.5x for ECB and CTR modes: BEFORE: <TR><TH>AES/CTR (128-bit key)<TD>2723<TD>1.4<TD>0.163<TD>670 <TR><TH>AES/CTR (192-bit key)<TD>2560<TD>1.5<TD>0.175<TD>719 <TR><TH>AES/CTR (256-bit key)<TD>2728<TD>1.4<TD>0.183<TD>749 <TR><TH>AES/CBC (128-bit key)<TD>1204<TD>3.2<TD>0.135<TD>554 <TR><TH>AES/CBC (192-bit key)<TD>1066<TD>3.7<TD>0.148<TD>605 <TR><TH>AES/CBC (256-bit key)<TD>948<TD>4.1<TD>0.155<TD>635 <TR><TH>AES/OFB (128-bit key)<TD>1019<TD>3.8<TD>0.158<TD>648 <TR><TH>AES/CFB (128-bit key)<TD>949<TD>4.1<TD>0.192<TD>787 <TR><TH>AES/ECB (128-bit key)<TD>3564<TD>1.1<TD>0.082<TD>337 AFTER: <TR><TH>AES/CTR (128-bit key)<TD>6484<TD>0.6<TD>0.163<TD>677 <TR><TH>AES/CTR (192-bit key)<TD>5641<TD>0.7<TD>0.176<TD>728 <TR><TH>AES/CTR (256-bit key)<TD>5005<TD>0.8<TD>0.183<TD>761 <TR><TH>AES/CBC (128-bit key)<TD>1223<TD>3.2<TD>0.135<TD>559 <TR><TH>AES/CBC (192-bit key)<TD>1080<TD>3.7<TD>0.147<TD>611 <TR><TH>AES/CBC (256-bit key)<TD>966<TD>4.1<TD>0.155<TD>642 <TR><TH>AES/OFB (128-bit key)<TD>1057<TD>3.7<TD>0.158<TD>656 <TR><TH>AES/CFB (128-bit key)<TD>1217<TD>3.3<TD>0.186<TD>774 <TR><TH>AES/ECB (128-bit key)<TD>7289<TD>0.5<TD>0.082<TD>342
* Add AdvancedProcessBlocks for Power8Jeffrey Walton2017-09-121-8/+15
| | | | This increases performance to about 1.6 cpb. We are about 0.5 cpb behind Botan, and about 1.0 cpb behind OpenSSL. However, it beats the snot out of C/C++, which runs at 20 to 30 cpb
* Add Power8 AES decryptionJeffrey Walton2017-09-121-19/+35
|
* Update commentsJeffrey Walton2017-09-121-5/+4
|
* Add Power8 AES encryptionJeffrey Walton2017-09-111-4/+48
| | | | This is the forward direction on encryption only. Crypto++ uses the "Equivalent Inverse Cipher" (FIPS-197, Section 5.3.5, p.23), and it is not compatible with IBM hardware. The library library will need to re-work the decryption key scheduling routines. (We may be able to work around it another way, but I have not investigated it).
* Revert AltiVec and Power8 commitsJeffrey Walton2017-09-051-29/+0
| | | | | The strategy of "cleanup under-aligned buffers" is not scaling well. Corner cases are still turing up. The library has some corner-case breaks, like old 32-bit Intels. And it still has not solved the AltiVec and Power8 alignment problems. For now we are backing out the changes and investigating other strategies
* Warn of under-aligned buffers when using AES in debug modeJeffrey Walton2017-09-041-0/+20
| | | | This commit supports the upcoming AltiVec and Power8 processor. This commit affects a number of classes due to the ubiquitous use of AES. The commit adds debug asserts to warn of under-aligned and misaligned buffers in debug builds.
* Fixup under-aligned buffers when using AES on AltiVec and Power8Jeffrey Walton2017-09-041-0/+9
| | | | This commit supports the upcoming AltiVec and Power8 processor. This commit affects a number of classes due to the ubiquitous use of AES. The commit provides the data alignment requirements.
* Support Base Implementation + SIMD implementation on Solaris (PR #461)Jeffrey Walton2017-08-241-7/+0
|
* Remove BOOL macro value (GH #462)Jeffrey Walton2017-08-201-7/+7
| | | | Currently the CRYPTOPP_BOOL_XXX macros set the macro value to 0 or 1. If we remove setting the 0 value (the #else part of the expression), then the self tests speed up by about 0.3 seconds. I can't explain it, but I have observed it repeatedly. This check-in prepares for the removal in Upstream master
* Update commentsJeffrey Walton2017-08-191-2/+7
|
* Split source files to support Base Implementation + SIMD implementation (GH ↵Jeffrey Walton2017-08-171-402/+74
| | | | | #461) Split source files to support Base Implementation + SIMD implementation
* Update comments in Rijndael head commentsJeffrey Walton2017-08-151-0/+4
|