VeraCrypt
aboutsummaryrefslogtreecommitdiff
path: root/src/Crypto/Twofish.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/Crypto/Twofish.h')
-rw-r--r--src/Crypto/Twofish.h20
1 files changed, 16 insertions, 4 deletions
diff --git a/src/Crypto/Twofish.h b/src/Crypto/Twofish.h
index aebb6ea0..b2d44ddb 100644
--- a/src/Crypto/Twofish.h
+++ b/src/Crypto/Twofish.h
@@ -2,6 +2,7 @@
#define TWOFISH_H
#include "Common/Tcdefs.h"
+#include "config.h"
#if defined(__cplusplus)
extern "C"
@@ -34,21 +35,32 @@ extern "C"
#endif
typedef struct
{
+#if CRYPTOPP_BOOL_X64
+ u4byte mk_tab[4][256], w[8], k[32];
+#else
u4byte l_key[40];
#ifdef TC_MINIMIZE_CODE_SIZE
u4byte s_key[4];
-#endif
-#if !defined (TC_MINIMIZE_CODE_SIZE) || defined (TC_WINDOWS_BOOT_TWOFISH)
u4byte mk_tab[4 * 256];
+#else
+ u4byte mk_tab[4][256];
+#endif
#endif
} TwofishInstance;
#define TWOFISH_KS sizeof(TwofishInstance)
/* in_key must be 32-bytes long */
-u4byte * twofish_set_key(TwofishInstance *instance, const u4byte in_key[]);
-void twofish_encrypt(TwofishInstance *instance, const u4byte in_blk[4], u4byte out_blk[]);
+void twofish_set_key(TwofishInstance *instance, const u4byte in_key[]);
+#if CRYPTOPP_BOOL_X64
+void twofish_encrypt_blocks(TwofishInstance *instance, const byte* in_blk, byte* out_blk, uint32 blockCount);
+void twofish_decrypt_blocks(TwofishInstance *instance, const byte* in_blk, byte* out_blk, uint32 blockCount);
+#define twofish_encrypt(instance,in_blk,out_blk) twofish_encrypt_blocks(instance, (const byte*) in_blk, (byte*) out_blk, 1)
+#define twofish_decrypt(instance,in_blk,out_blk) twofish_decrypt_blocks(instance, (const byte*) in_blk, (byte*) out_blk, 1)
+#else
+void twofish_encrypt(TwofishInstance *instance, const u4byte in_blk[4], u4byte out_blk[4]);
void twofish_decrypt(TwofishInstance *instance, const u4byte in_blk[4], u4byte out_blk[4]);
+#endif
#if defined(__cplusplus)
}