]> git.cryptolib.org Git - avr-crypto-lib.git/blobdiff - arcfour-asm.S
modified structure
[avr-crypto-lib.git] / arcfour-asm.S
diff --git a/arcfour-asm.S b/arcfour-asm.S
deleted file mode 100644 (file)
index 1ef8218..0000000
+++ /dev/null
@@ -1,133 +0,0 @@
-/* arcfour-asm.S */
-/*
-    This file is part of the AVR-Crypto-Lib.
-    Copyright (C) 2008  Daniel Otte (daniel.otte@rub.de)
-
-    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 3 of the License, or
-    (at your option) any later version.
-
-    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
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with this program.  If not, see <http://www.gnu.org/licenses/>.
-*/
-
-/* 
- * File:        arcfour-asm.S
- * Author:      Daniel Otte
- * Date:        2006-07-06
- * License:     GPLv3 or later
- * Description: Implementation of the ARCFOUR (RC4 compatible) stream cipher algorithm.
- * 
- */
-#include <avr/io.h>
-#include "avr-asm-macros.S"
- /* +---+---+---------------------+
- *  | i | j | ......<256>........ |
- *  +---+---+---------------------+
- */
-.global arcfour_init
-/*
- *== arcfour_init ==
- *  this function initialises the context
- * param1: 16-bit pointer to the key
- *     given in r24:r25
- * param2: 8-bit integer indicating keylength in byte
- *     given in r22
- * param3: 16-bit pointer to a ctx struct
- *     given in r20:r21
- */
-arcfour_init:
-       push_ r28, r29
-       movw r26, r20   /* X points to ctx */
-       movw r30, r24   /* Z points to key */
-       st X+, r1
-       st X+, r1       /* X points to S */
-       movw r20, r26   /* store pointer to S in r21:r20 */
-       
-1:             
-       st X+, r1 
-       inc r1
-       brne 1b
-       
-       movw r26, r20
-       add r22, r30         /* r18 is keyindex counter */
-       clr r0
-       clr r19
-2:
-       ld r23, X
-       ld r18, Z+
-       add r19, r18
-       add r19, r23
-       movw r28, r20   /* load pointer to S in Y */
-       add r28, r19
-       adc r29, r1
-       ld r18, Y
-       st Y,  r23
-       st X+, r18
-       cp r30, r22
-       brne 3f
-       movw r30, r24
-3:             
-       inc r0
-       brne 2b 
-       pop_ r29, r28
-       ret
-
-/*
-uint8_t arcfour_gen(arcfour_ctx_t *c){
-       uint8_t t;
-       c->i++;
-       c->j += c->s[c->i];
-       t = c->s[c->j];
-       c->s[c->j] = c->s[c->i];
-       c->s[c->i] = t;
-       return c->s[(c->s[c->j] + c->s[c->i]) & 0xff];
-}
-*/
-.global arcfour_gen
-
-;== arcfour_gen ==
-;  this function initialises the context
-; param1: 16-bit pointer to a ctx struct
-;      given in r25,r24
-
-arcfour_gen:
-       movw r26, r24
-       ld r18, X
-       inc r18
-       st X+, r18
-       movw r30, r26
-       ld r19, X+
-       add r26, r18
-       adc r27, r1
-       ld r20, X
-       add r19, r20
-       st Z+, r19              /* i,j loaded&saved; X->S[i]; Z->S[0]; r20=S[i] */
-       add r30, r19
-       adc r31, r1
-       ld r21, Z               /* X->S[i]; Z->S[j]; r20=S[i]; r21=S[j]*/
-       st Z, r20
-       st X, r21
-       add r20, r21
-       adiw r24, 2
-       movw r26, r24 /* X and Z point to S */
-       add r26, r20
-       adc r27, r1
-       ld r24, X
-       clr r25
-       ret
-
-
-
-
-
-