summaryrefslogtreecommitdiff
path: root/cham.h
diff options
context:
space:
mode:
authorJeffrey Walton <noloader@gmail.com>2018-06-19 18:03:28 -0400
committerJeffrey Walton <noloader@gmail.com>2018-06-19 18:03:28 -0400
commit6138829572f58cfe67e2e1c6a6bb1c69c9ed7872 (patch)
treea56dde0aee83031ccdb6851f27e10a14af52b5bf /cham.h
parent34dcb0d4cd64623762188b7660b206e05e4836fc (diff)
downloadcryptopp-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.h14
1 files changed, 13 insertions, 1 deletions
diff --git a/cham.h b/cham.h
index 52edc4dc..1c8b02b1 100644
--- a/cham.h
+++ b/cham.h
@@ -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;