#include #include #include "algs.h" typedef struct arc4state ARC4STATE; struct arc4state { ARC4_STATE s; } ; static void *enc_arcfour_init(const void *key, const void *iv __attribute__((__unused__))) { ARC4STATE *s; s = malloc(sizeof(ARC4STATE)); if (s == 0) return(0); arc4_init(&s->s); arc4_setkey(&s->s,key,16,0); return(s); } static void enc_arcfour_process(void *state, const void *in, void *out, int datalen) { ARC4STATE *s; s = state; arc4_crypt(&s->s,in,datalen,out); } static void enc_arcfour_done(void *state) { free(state); } ENCALG encalg_arcfour = { "arcfour", 1, 0, 16, &enc_arcfour_init, &enc_arcfour_init, &enc_arcfour_process, &enc_arcfour_done };