Botan
1.11.15
|
#include <botan/internal/block_utils.h>
#include <botan/threefish.h>
Go to the source code of this file.
Namespaces | |
namespace | Botan |
Defines | |
#define | THREEFISH_DEC_8_ROUNDS(R1, R2) |
#define | THREEFISH_ENC_8_ROUNDS(R1, R2) |
#define | THREEFISH_INJECT_KEY(r) |
#define | THREEFISH_INJECT_KEY(r) |
#define | THREEFISH_ROUND(X0, X1, X2, X3, X4, X5, X6, X7, ROT1, ROT2, ROT3, ROT4) |
#define | THREEFISH_ROUND(X0, X1, X2, X3, X4, X5, X6, X7, ROT1, ROT2, ROT3, ROT4) |
Functions | |
Botan::BOTAN_REGISTER_BLOCK_CIPHER_NAMED_NOARGS (Threefish_512,"Threefish-512") |
#define THREEFISH_DEC_8_ROUNDS | ( | R1, | |
R2 | |||
) |
do { \ THREEFISH_ROUND(X6,X0,X2,X4, X1,X7,X5,X3, 8,35,56,22); \ THREEFISH_ROUND(X4,X6,X0,X2, X1,X3,X5,X7, 25,29,39,43); \ THREEFISH_ROUND(X2,X4,X6,X0, X1,X7,X5,X3, 13,50,10,17); \ THREEFISH_ROUND(X0,X2,X4,X6, X1,X3,X5,X7, 39,30,34,24); \ THREEFISH_INJECT_KEY(R1); \ \ THREEFISH_ROUND(X6,X0,X2,X4, X1,X7,X5,X3, 44, 9,54,56); \ THREEFISH_ROUND(X4,X6,X0,X2, X1,X3,X5,X7, 17,49,36,39); \ THREEFISH_ROUND(X2,X4,X6,X0, X1,X7,X5,X3, 33,27,14,42); \ THREEFISH_ROUND(X0,X2,X4,X6, X1,X3,X5,X7, 46,36,19,37); \ THREEFISH_INJECT_KEY(R2); \ } while(0)
Referenced by Botan::Threefish_512::decrypt_n().
#define THREEFISH_ENC_8_ROUNDS | ( | R1, | |
R2 | |||
) |
do { \ THREEFISH_ROUND(X0,X2,X4,X6, X1,X3,X5,X7, 46,36,19,37); \ THREEFISH_ROUND(X2,X4,X6,X0, X1,X7,X5,X3, 33,27,14,42); \ THREEFISH_ROUND(X4,X6,X0,X2, X1,X3,X5,X7, 17,49,36,39); \ THREEFISH_ROUND(X6,X0,X2,X4, X1,X7,X5,X3, 44, 9,54,56); \ THREEFISH_INJECT_KEY(R1); \ \ THREEFISH_ROUND(X0,X2,X4,X6, X1,X3,X5,X7, 39,30,34,24); \ THREEFISH_ROUND(X2,X4,X6,X0, X1,X7,X5,X3, 13,50,10,17); \ THREEFISH_ROUND(X4,X6,X0,X2, X1,X3,X5,X7, 25,29,39,43); \ THREEFISH_ROUND(X6,X0,X2,X4, X1,X7,X5,X3, 8,35,56,22); \ THREEFISH_INJECT_KEY(R2); \ } while(0)
Definition at line 43 of file threefish.cpp.
Referenced by Botan::Threefish_512::encrypt_n().
#define THREEFISH_INJECT_KEY | ( | r | ) |
do { \ X0 += m_K[(r ) % 9]; \ X1 += m_K[(r+1) % 9]; \ X2 += m_K[(r+2) % 9]; \ X3 += m_K[(r+3) % 9]; \ X4 += m_K[(r+4) % 9]; \ X5 += m_K[(r+5) % 9] + m_T[(r ) % 3]; \ X6 += m_K[(r+6) % 9] + m_T[(r+1) % 3]; \ X7 += m_K[(r+7) % 9] + (r); \ } while(0)
Definition at line 31 of file threefish.cpp.
Referenced by Botan::Threefish_512::decrypt_n(), and Botan::Threefish_512::encrypt_n().
#define THREEFISH_INJECT_KEY | ( | r | ) |
do { \ X0 -= m_K[(r ) % 9]; \ X1 -= m_K[(r+1) % 9]; \ X2 -= m_K[(r+2) % 9]; \ X3 -= m_K[(r+3) % 9]; \ X4 -= m_K[(r+4) % 9]; \ X5 -= m_K[(r+5) % 9] + m_T[(r ) % 3]; \ X6 -= m_K[(r+6) % 9] + m_T[(r+1) % 3]; \ X7 -= m_K[(r+7) % 9] + (r); \ } while(0)
Definition at line 31 of file threefish.cpp.
#define THREEFISH_ROUND | ( | X0, | |
X1, | |||
X2, | |||
X3, | |||
X4, | |||
X5, | |||
X6, | |||
X7, | |||
ROT1, | |||
ROT2, | |||
ROT3, | |||
ROT4 | |||
) |
do { \ X0 += X4; \ X1 += X5; \ X2 += X6; \ X3 += X7; \ X4 = rotate_left(X4, ROT1); \ X5 = rotate_left(X5, ROT2); \ X6 = rotate_left(X6, ROT3); \ X7 = rotate_left(X7, ROT4); \ X4 ^= X0; \ X5 ^= X1; \ X6 ^= X2; \ X7 ^= X3; \ } while(0)
Definition at line 15 of file threefish.cpp.
#define THREEFISH_ROUND | ( | X0, | |
X1, | |||
X2, | |||
X3, | |||
X4, | |||
X5, | |||
X6, | |||
X7, | |||
ROT1, | |||
ROT2, | |||
ROT3, | |||
ROT4 | |||
) |
do { \ X4 ^= X0; \ X5 ^= X1; \ X6 ^= X2; \ X7 ^= X3; \ X4 = rotate_right(X4, ROT1); \ X5 = rotate_right(X5, ROT2); \ X6 = rotate_right(X6, ROT3); \ X7 = rotate_right(X7, ROT4); \ X0 -= X4; \ X1 -= X5; \ X2 -= X6; \ X3 -= X7; \ } while(0)
Definition at line 15 of file threefish.cpp.