Major restructuring of the internals of SILC Cipher API
[crypto.git] / lib / silccrypt / twofish_internal.h
index c0071ac00816bc1f557b00ac392b9476808138d1..716e0edf64927230cee6c13e3ffb39b9a2cee618 100644 (file)
@@ -4,12 +4,12 @@
 
   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; 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 */