Major restructuring of the internals of SILC Cipher API
[crypto.git] / lib / silccrypt / twofish_internal.h
1 /*
2
3   twofish_internal.h
4
5   Author: Pekka Riikonen <priikone@silcnet.org>
6
7   Copyright (C) 2008 Pekka Riikonen
8
9   This program is free software; you can redistribute it and/or modify
10   it under the terms of the GNU General Public License as published by
11   the Free Software Foundation; version 2 of the License.
12
13   This program is distributed in the hope that it will be useful,
14   but WITHOUT ANY WARRANTY; without even the implied warranty of
15   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16   GNU General Public License for more details.
17
18 */
19
20 #ifndef TWOFISH_INTERNAL_H
21 #define TWOFISH_INTERNAL_H
22
23 #include "ciphers_def.h"
24
25 /* Cipher's context */
26 typedef struct {
27   SilcUInt32 S[4][256];
28   SilcUInt32 K[40];
29   SilcUInt32 padlen;
30 } twofish_key;
31
32 /* Prototypes */
33 int twofish_setup(const unsigned char *key, int keylen, int num_rounds,
34                   twofish_key *skey);
35 int twofish_encrypt(const SilcUInt32 pt[4], SilcUInt32 ct[4],
36                     twofish_key *skey);
37 int twofish_decrypt(const SilcUInt32 ct[4], SilcUInt32 pt[4],
38                     twofish_key *skey);
39
40 #endif /* TWOFISH_INTERNAL_H */