27 #define SWAP( ary, i, j ) \ 28 ({ u8 temp = ary[i]; ary[i] = ary[j]; ary[j] = temp; }) 42 static int arc4_setkey (
void *ctxv,
const void *keyv,
size_t keylen )
49 for (
i = 0;
i < 256;
i++ ) {
53 for (
i =
j = 0;
i < 256;
i++ ) {
54 j = (
j +
S[
i] +
key[
i % keylen] ) & 0xff;
78 static void arc4_xor (
void *ctxv,
const void *srcv,
void *dstv,
89 j = (
j +
S[
i] ) & 0xff;
92 *dst++ = *
src++ ^
S[(
S[
i] +
S[
j]) & 0xff];
110 const void *
src,
void *dst,
size_t msglen )
void cipher_null_setiv(void *ctx __unused, const void *iv __unused, size_t ivlen __unused)
struct golan_eq_context ctx
static u16 S(u16 v)
Perform S-box mapping on a 16-bit value.
static void arc4_xor(void *ctxv, const void *srcv, void *dstv, size_t len)
Perform ARC4 encryption or decryption.
void arc4_skip(const void *key, size_t keylen, size_t skip, const void *src, void *dst, size_t msglen)
Perform ARC4 encryption or decryption, skipping initial keystream bytes.
static int arc4_setkey(void *ctxv, const void *keyv, size_t keylen)
Set ARC4 key.
struct cipher_algorithm arc4_algorithm
FILE_LICENCE(GPL2_OR_LATER)
const char * name
Algorithm name.
void cipher_null_auth(void *ctx __unused, void *auth __unused)
#define NULL
NULL pointer (VOID *)