X-Git-Url: http://git.ozlabs.org/?p=ppp.git;a=blobdiff_plain;f=linux%2Fmppe%2Farcfour.c;fp=linux%2Fmppe%2Farcfour.c;h=0000000000000000000000000000000000000000;hp=97ae00659b1e1ad870879e1e0d412410ead5c977;hb=169be1f83215285b2bd3004f4c1b326b984ccb87;hpb=979e14c39fcbbffaa98880f1a5fc33ada4a8063d diff --git a/linux/mppe/arcfour.c b/linux/mppe/arcfour.c deleted file mode 100644 index 97ae006..0000000 --- a/linux/mppe/arcfour.c +++ /dev/null @@ -1,75 +0,0 @@ -/* - * arcfour.c - * by Frank Cusack - * 100% public domain - * - * Implemented from the description in _Applied Cryptography_, 2nd ed. - * - * ** Distribution ** of this software is unlimited and unrestricted. - * - * ** Use ** of this software is almost certainly legal; however, refer - * to . - */ - -#include "arcfour.h" -#if defined(__linux__) -#include -#endif - -#define swap(a, b) \ -{ \ - unsigned char t = b; \ - b = a; \ - a = t; \ -} - -/* - * Initialize arcfour from a key. - */ -void -arcfour_setkey(arcfour_context *context, const unsigned char *key, - unsigned keylen) -{ - unsigned i, j; - unsigned char K[256]; - - context->i = context->j = 0; - - for (i = 0; i < 256; i++) { - context->S[i] = i; - K[i] = key[i % keylen]; - } - - j = 0; - for (i = 0; i < 256; i++) { - j = (j + context->S[i] + K[i]) % 256; - swap(context->S[i], context->S[j]); - } - - memset(K, 0, sizeof(K)); -} - -/* - * plaintext -> ciphertext (or vice versa) - */ -void -arcfour_encrypt(arcfour_context *context, const unsigned char *in, unsigned len, - unsigned char *out) -{ - unsigned i = context->i; - unsigned j = context->j; - unsigned char *S = context->S; - unsigned char K; - - while (len--) { - i = (i + 1) % 256; - j = (j + S[i]) % 256; - swap(S[i], S[j]); - K = S[(S[i] + S[j]) % 256]; - *out++ = *in++ ^ K; - } - - context->i = i; - context->j = j; -} -