mirror of
https://github.com/veracrypt/VeraCrypt.git
synced 2025-11-12 03:18:26 -06:00
Crypto: Add optimized Twofish assembly implementation for x86_64.
This commit is contained in:
@@ -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)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user