Move RC4 into crypto.h as a replaceable crypto function

This allows crypto library wrappers to override the internal RC4
implementation in the same way as can already be done for other crypto
algorithms.
This commit is contained in:
Jouni Malinen 2009-08-16 20:13:14 +03:00
parent 8ef1683115
commit ac73690c06
13 changed files with 45 additions and 46 deletions

View file

@ -448,4 +448,20 @@ int __must_check crypto_mod_exp(const u8 *base, size_t base_len,
const u8 *modulus, size_t modulus_len,
u8 *result, size_t *result_len);
/**
* rc4_skip - XOR RC4 stream to given data with skip-stream-start
* @key: RC4 key
* @keylen: RC4 key length
* @skip: number of bytes to skip from the beginning of the RC4 stream
* @data: data to be XOR'ed with RC4 stream
* @data_len: buf length
* Returns: 0 on success, -1 on failure
*
* Generate RC4 pseudo random stream for the given key, skip beginning of the
* stream, and XOR the end result with the data buffer to perform RC4
* encryption/decryption.
*/
int rc4_skip(const u8 *key, size_t keylen, size_t skip,
u8 *data, size_t data_len);
#endif /* CRYPTO_H */

View file

@ -18,7 +18,6 @@
#include "crypto.h"
#include "md5.h"
#include "sha1.h"
#include "rc4.h"
#include "aes.h"
#include "tls/rsa.h"
#include "tls/bignum.h"

View file

@ -16,7 +16,6 @@
#include <tomcrypt.h>
#include "common.h"
#include "rc4.h"
#include "crypto.h"
#ifndef mp_init_multi

View file

@ -18,7 +18,6 @@
#include "sha1.h"
#include "ms_funcs.h"
#include "crypto.h"
#include "rc4.h"
/**

View file

@ -15,24 +15,12 @@
#include "includes.h"
#include "common.h"
#include "rc4.h"
#include "crypto.h"
#define S_SWAP(a,b) do { u8 t = S[a]; S[a] = S[b]; S[b] = t; } while(0)
/**
* rc4 - XOR RC4 stream to given data with skip-stream-start
* @key: RC4 key
* @keylen: RC4 key length
* @skip: number of bytes to skip from the beginning of the RC4 stream
* @data: data to be XOR'ed with RC4 stream
* @data_len: buf length
*
* Generate RC4 pseudo random stream for the given key, skip beginning of the
* stream, and XOR the end result with the data buffer to perform RC4
* encryption/decryption.
*/
void rc4_skip(const u8 *key, size_t keylen, size_t skip,
u8 *data, size_t data_len)
int rc4_skip(const u8 *key, size_t keylen, size_t skip,
u8 *data, size_t data_len)
{
u32 i, j, k;
u8 S[256], *pos;
@ -67,4 +55,6 @@ void rc4_skip(const u8 *key, size_t keylen, size_t skip,
S_SWAP(i, j);
*pos++ ^= S[(S[i] + S[j]) & 0xff];
}
return 0;
}

View file

@ -1,21 +0,0 @@
/*
* RC4 stream cipher
* Copyright (c) 2002-2005, Jouni Malinen <j@w1.fi>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation.
*
* Alternatively, this software may be distributed under the terms of BSD
* license.
*
* See README and COPYING for more details.
*/
#ifndef RC4_H
#define RC4_H
void rc4_skip(const u8 *key, size_t keylen, size_t skip,
u8 *data, size_t data_len);
#endif /* RC4_H */