mirror of
https://github.com/veracrypt/VeraCrypt.git
synced 2025-11-13 03:48:26 -06:00
Windows: Add Magma cipher (GOST-89)
This commit is contained in:
61
src/Crypto/GostCipher.h
Normal file
61
src/Crypto/GostCipher.h
Normal file
@@ -0,0 +1,61 @@
|
||||
|
||||
/*
|
||||
Copyright (c) 2008-2011 TrueCrypt Developers Association. All rights reserved.
|
||||
|
||||
Governed by the TrueCrypt License 3.0 the full text of which is contained in
|
||||
the file License.txt included in TrueCrypt binary and source code distribution
|
||||
packages.
|
||||
*/
|
||||
|
||||
|
||||
|
||||
#ifndef GOST_CIPHER_H
|
||||
#define GOST_CIPHER_H
|
||||
|
||||
//In unsigned chars
|
||||
#define GOST_KEYSIZE 32
|
||||
#define GOST_BLOCKSIZE 8
|
||||
#define GOST_SBOX_SIZE 16
|
||||
|
||||
//Production setting, but can be turned off to compare the algorithm with other implementations
|
||||
#define CIPHER_GOST89
|
||||
#define GOST_DYNAMIC_SBOXES
|
||||
|
||||
#if defined(CIPHER_GOST89)
|
||||
|
||||
#ifndef rotl32
|
||||
#define rotl32(b, shift) ((b << shift) | (b >> (32 - shift)))
|
||||
#endif
|
||||
|
||||
typedef unsigned char byte;
|
||||
#ifdef GST_WINDOWS_BOOT
|
||||
typedef int gst_word;
|
||||
typedef long gst_dword;
|
||||
typedef unsigned int gst_uword;
|
||||
typedef unsigned long gst_udword;
|
||||
#else
|
||||
typedef short gst_word;
|
||||
typedef int gst_dword;
|
||||
typedef unsigned short gst_uword;
|
||||
typedef unsigned int gst_udword;
|
||||
#endif
|
||||
|
||||
typedef struct gost_kds
|
||||
{
|
||||
byte key[32];
|
||||
gst_udword sbox_cvt[256 * 4];
|
||||
byte sbox[8][16];
|
||||
} gost_kds;
|
||||
|
||||
#define GOST_KS (sizeof(gost_kds))
|
||||
|
||||
void gost_encrypt(byte *in, byte *out, gost_kds *ks, int count);
|
||||
void gost_decrypt(byte *in, byte *out, gost_kds *ks, int count);
|
||||
void gost_set_key(byte *key, gost_kds *ks);
|
||||
|
||||
#else
|
||||
#define GOST_KS (0)
|
||||
#endif
|
||||
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user