diff options
author | Jeffrey Walton <noloader@gmail.com> | 2018-06-19 18:03:28 -0400 |
---|---|---|
committer | Jeffrey Walton <noloader@gmail.com> | 2018-06-19 18:03:28 -0400 |
commit | 6138829572f58cfe67e2e1c6a6bb1c69c9ed7872 (patch) | |
tree | a56dde0aee83031ccdb6851f27e10a14af52b5bf /cham.h | |
parent | 34dcb0d4cd64623762188b7660b206e05e4836fc (diff) | |
download | cryptopp-git-6138829572f58cfe67e2e1c6a6bb1c69c9ed7872.tar.gz |
Add CHAM128 SSSE3 implementation (PR #670)
CHAM-128(128) from 10.5 cpb to 4.1 cpb. CHAM-128(256) from 12.5 cpb to 4.7 cpb.
Diffstat (limited to 'cham.h')
-rw-r--r-- | cham.h | 14 |
1 files changed, 13 insertions, 1 deletions
@@ -15,6 +15,10 @@ #include "secblock.h"
#include "algparam.h"
+#if (CRYPTOPP_BOOL_X64 || CRYPTOPP_BOOL_X32 || CRYPTOPP_BOOL_X86)
+# define CRYPTOPP_CHAM128_ADVANCED_PROCESS_BLOCKS 1
+#endif
+
NAMESPACE_BEGIN(CryptoPP)
/// \brief CHAM block cipher information
@@ -92,7 +96,7 @@ typedef CHAM64::Decryption CHAM64Decryption; /// \brief CHAM 128-bit block cipher
/// \details CHAM128 provides 128-bit block size. The valid key size is 128-bit and 256-bit.
/// \note Crypto++ provides a byte oriented implementation
-/// \sa CHAM128, <a href="http://www.cryptopp.com/wiki/CHAM">CHAM</a>, <a href=
+/// \sa CHAM64, <a href="http://www.cryptopp.com/wiki/CHAM">CHAM</a>, <a href=
/// "https://pdfs.semanticscholar.org/2f57/61b5c2614cffd58a09cc83c375a2b32a2ed3.pdf">
/// CHAM: A Family of Lightweight Block Ciphers for Resource-Constrained Devices</a>
/// \since Crypto++ 7.1
@@ -120,6 +124,10 @@ public: {
public:
void ProcessAndXorBlock(const byte *inBlock, const byte *xorBlock, byte *outBlock) const;
+
+#if CRYPTOPP_CHAM128_ADVANCED_PROCESS_BLOCKS
+ size_t AdvancedProcessBlocks(const byte *inBlocks, const byte *xorBlocks, byte *outBlocks, size_t length, word32 flags) const;
+#endif
};
/// \brief Provides implementation for encryption transformation
@@ -130,6 +138,10 @@ public: {
public:
void ProcessAndXorBlock(const byte *inBlock, const byte *xorBlock, byte *outBlock) const;
+
+#if CRYPTOPP_CHAM128_ADVANCED_PROCESS_BLOCKS
+ size_t AdvancedProcessBlocks(const byte *inBlocks, const byte *xorBlocks, byte *outBlocks, size_t length, word32 flags) const;
+#endif
};
typedef BlockCipherFinal<ENCRYPTION, Enc> Encryption;
|