1
/*************************************************
2
* CAST-256 Header File *
3
* (C) 1999-2007 The Botan Project *
4
*************************************************/
6
#ifndef BOTAN_CAST256_H__
7
#define BOTAN_CAST256_H__
9
#include <botan/base.h>
13
/*************************************************
15
*************************************************/
16
class CAST_256 : public BlockCipher
19
void clear() throw() { MK.clear(); RK.clear(); }
20
std::string name() const { return "CAST-256"; }
21
BlockCipher* clone() const { return new CAST_256; }
22
CAST_256() : BlockCipher(16, 4, 32, 4) {}
24
void enc(const byte[], byte[]) const;
25
void dec(const byte[], byte[]) const;
26
void key(const byte[], u32bit);
27
void round1(u32bit&, u32bit, u32bit, u32bit) const;
28
void round2(u32bit&, u32bit, u32bit, u32bit) const;
29
void round3(u32bit&, u32bit, u32bit, u32bit) const;
30
static const u32bit KEY_MASK[192];
31
static const byte KEY_ROT[32];
32
SecureBuffer<u32bit, 48> MK;
33
SecureBuffer<byte, 48> RK;
36
extern const u32bit CAST_SBOX1[256];
37
extern const u32bit CAST_SBOX2[256];
38
extern const u32bit CAST_SBOX3[256];
39
extern const u32bit CAST_SBOX4[256];