]> git.cryptolib.org Git - avr-crypto-lib.git/blobdiff - threefish.h
threefish encrytion in 512 and 1024 bit in assembler
[avr-crypto-lib.git] / threefish.h
index 73871a48302b229853e966d47dacba4291eb51d8..fe3ce783c141c1c81c2b58ce82602e5bb6fc71cd 100644 (file)
 
 #include <stdint.h>
 
+#define THREEFISH256_BLOCKSIZE 256
+#define THREEFISH256_BLOCKSIZE_B ((THREEFISH256_BLOCKSIZE+7)/8)
+#define THREEFISH512_BLOCKSIZE 512
+#define THREEFISH512_BLOCKSIZE_B ((THREEFISH512_BLOCKSIZE+7)/8)
+#define THREEFISH1024_BLOCKSIZE 1024
+#define THREEFISH1024_BLOCKSIZE_B ((THREEFISH1024_BLOCKSIZE+7)/8)
+
+
 typedef struct{
        uint64_t k[5];
        uint64_t t[3];
@@ -46,13 +54,19 @@ typedef struct{
 } threefish1024_ctx_t;
 
 
+void threefish_mix(void* data, uint8_t rot);
+void threefish_invmix(void* data, uint8_t rot);
+
+void threefish256_init(const void* key, const void* tweak, threefish256_ctx_t* ctx);
+void threefish512_init(const void* key, const void* tweak, threefish512_ctx_t* ctx);
+void threefish1024_init(const void* key, const void* tweak, threefish1024_ctx_t* ctx);
 
-void threefish256_init(void* key, void* tweak, threefish256_ctx_t* ctx);
-void threefish512_init(void* key, void* tweak, threefish512_ctx_t* ctx);
-void threefish1024_init(void* key, void* tweak, threefish1024_ctx_t* ctx);
+void threefish256_enc(void* data, const threefish256_ctx_t* ctx);
+void threefish512_enc(void* data, const threefish512_ctx_t* ctx);
+void threefish1024_enc(void* data, const threefish1024_ctx_t* ctx);
 
-void threefish256_enc(void* data, threefish256_ctx_t* ctx);
-void threefish512_enc(void* data, threefish512_ctx_t* ctx);
-void threefish1024_enc(void* data, threefish1024_ctx_t* ctx);
+void threefish256_dec(void* data, const threefish256_ctx_t* ctx);
+void threefish512_dec(void* data, const threefish512_ctx_t* ctx);
+void threefish1024_dec(void* data, const threefish1024_ctx_t* ctx);
 
 #endif /* THREEFISH_H_ */