Major restructuring of the internals of SILC Cipher API
[crypto.git] / lib / silccrypt / twofish_internal.h
index 2c205d8b3b1aaf656e6245b7bf619d87a9f7a71b..716e0edf64927230cee6c13e3ffb39b9a2cee618 100644 (file)
@@ -4,7 +4,7 @@
 
   Author: Pekka Riikonen <priikone@silcnet.org>
 
-  Copyright (C) 1997 - 2007 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
 
 /* Cipher's context */
 typedef struct {
-  u4byte l_key[40];
-  u4byte s_key[4];
-  SilcUInt16 k_len;
-  SilcUInt16 padlen;
-} 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 */