twofish_internal.h
- Author: Pekka Riikonen <priikone@poseidon.pspt.fi>
+ Author: Pekka Riikonen <priikone@silcnet.org>
- Copyright (C) 1997 - 2000 Pekka Riikonen
+ Copyright (C) 2008 Pekka Riikonen
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
-
+ the Free Software Foundation; version 2 of the License.
+
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
/* Cipher's context */
typedef struct {
- u4byte k_len;
- u4byte l_key[40];
- u4byte s_key[4];
-} TwofishContext;
+ SilcUInt32 S[4][256];
+ SilcUInt32 K[40];
+ SilcUInt32 padlen;
+} twofish_key;
/* Prototypes */
-u4byte *twofish_set_key(TwofishContext *ctx,
- const u4byte in_key[], const u4byte key_len);
-void twofish_encrypt(TwofishContext *ctx,
- const u4byte in_blk[4], u4byte out_blk[]);
-void twofish_decrypt(TwofishContext *ctx,
- const u4byte in_blk[4], u4byte out_blk[4]);
-
-#endif
+int twofish_setup(const unsigned char *key, int keylen, int num_rounds,
+ twofish_key *skey);
+int twofish_encrypt(const SilcUInt32 pt[4], SilcUInt32 ct[4],
+ twofish_key *skey);
+int twofish_decrypt(const SilcUInt32 ct[4], SilcUInt32 pt[4],
+ twofish_key *skey);
+
+#endif /* TWOFISH_INTERNAL_H */