]> git.cryptolib.org Git - avr-crypto-lib.git/blobdiff - skein/threefish256_dec_asm.S
fixing E-Mail-Address & Copyright
[avr-crypto-lib.git] / skein / threefish256_dec_asm.S
index d2316c6deb5b446e9c784c04d0301479b69e09ce..384b6ab8ab4805a9deab33199cf250e585733205 100644 (file)
@@ -1,7 +1,7 @@
 /* threefish256_enc_asm.S */
 /*
     This file is part of the AVR-Crypto-Lib.
-    Copyright (C) 2009  Daniel Otte (daniel.otte@rub.de)
+    Copyright (C) 2006-2015 Daniel Otte (bg@nerilex.org)
 
     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
 */
 /*
  * \author  Daniel Otte
- * \email   daniel.otte@rub.de
+ * \email   bg@nerilex.org
  * \date    2009-03-16
  * \license GPLv3 or later
- */ 
+ */
 
 #include "avr-asm-macros.S"
 
 /******************************************************************************/
 /*
-void permute_4(voiddata){
+void permute_4(void *data){
        uint64_t t;
        t = X(1);
        X(1) = X(3);
        X(3) = t;
 }
-void add_key_4(void* data, const threefish256_ctx_t* ctx, uint8_t s){
+void add_key_4(void *data, const threefish256_ctx_t *ctx, uint8_t s){
        X(0) -= ctx->k[(s+0)%5];
        X(1) -= ctx->k[(s+1)%5] + ctx->t[s%3];
        X(2) -= ctx->k[(s+2)%5] + ctx->t[(s+1)%3];
        X(3) -= ctx->k[(s+3)%5] + s;
 }
-void threefish256_dec(void* data, const threefish256_ctx_t* ctx){
+void threefish256_dec(void *data, const threefish256_ctx_t *ctx){
        uint8_t i=0,s=18;
-       uint8_t r0[8] = {0x73, 0x13, 0x7b, 0x32, 0x72, 0x2b, 0x44, 0x1b}; 
+       uint8_t r0[8] = {0x73, 0x13, 0x7b, 0x32, 0x72, 0x2b, 0x44, 0x1b};
        uint8_t r1[8] = {0x62, 0x52, 0x43, 0x24, 0x54, 0x6a, 0x34, 0x70};
        do{
                if(i%4==0){
@@ -80,7 +80,7 @@ threefish256_dec:
        clr I
        ldi r26, 18
        mov S, r26
-1:     
+1:
        mov r30,  I
        andi r30, 0x03
        breq 2f
@@ -111,7 +111,7 @@ threefish256_dec:
        add r30, IDX3
        adc r31, r1
        rcall sub_z_from_x8
-       
+
        /* now the remaining key */
        sbiw r26, 3*8
        ldi r30, lo8(threefish256_slut3)
@@ -160,10 +160,10 @@ exit:
        pop_range 2, 17
        pop r29
        pop r28
-       ret     
+       ret
 3:
-       dec S   
-4:     
+       dec S
+4:
        /* now the permutation */
        movw r26, DATA0
        adiw r26, 8
@@ -219,18 +219,22 @@ exit:
        call threefish_invmix_asm /* no rcall? */
        inc I
        rjmp 1b
-       
+
 threefish256_slut5:
-    .byte 0x00, 0x08, 0x10, 0x18, 0x20, 0x00, 0x08, 0x10 
+    .byte 0x00, 0x08, 0x10, 0x18, 0x20, 0x00, 0x08, 0x10
        .byte 0x18, 0x20, 0x00, 0x08, 0x10, 0x18, 0x20, 0x00
        .byte 0x08, 0x10, 0x18, 0x20, 0x00, 0x08, 0x10
 threefish256_slut3:
        .byte 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08
-       .byte 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00 
+       .byte 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00
        .byte 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08
-       
-threefish256_rc0: .byte 0x73, 0x13, 0x7b, 0x32, 0x72, 0x2b, 0x44, 0x1b 
+/* old round constants
+threefish256_rc0: .byte 0x73, 0x13, 0x7b, 0x32, 0x72, 0x2b, 0x44, 0x1b
 threefish256_rc1: .byte        0x62, 0x52, 0x43, 0x24, 0x54, 0x6a, 0x34, 0x70
+*/
+threefish256_rc0:  .byte 0x40, 0x72, 0x6a, 0x31, 0x1b, 0x39, 0x64, 0x2a
+threefish256_rc1:  .byte 0x40, 0x3a, 0x14, 0x41, 0x5b, 0x50, 0x71, 0x20
+
 
 sub_z_from_x8:
        ld r0, Z+
@@ -267,9 +271,9 @@ sub_z_from_x8:
        st X+, r1
        clr r1
        ret
-       
-       
-       
+
+
+