X-Git-Url: https://git.cryptolib.org/?a=blobdiff_plain;ds=sidebyside;f=arcfour-asm.S;fp=arcfour-asm.S;h=0000000000000000000000000000000000000000;hb=d32eba56ce10ea6b9eff123b50d9842673b38f2b;hp=1ef8218ce971a608ffaf096959dc40fb63141804;hpb=8f855d283a31a468ea014774c4723a8b77b81644;p=avr-crypto-lib.git
diff --git a/arcfour-asm.S b/arcfour-asm.S
deleted file mode 100644
index 1ef8218..0000000
--- a/arcfour-asm.S
+++ /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 .
-*/
-
-/*
- * 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
-#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
-
-
-
-
-
-