X-Git-Url: https://git.distorted.org.uk/~mdw/disorder/blobdiff_plain/05dcfac6f90b695d4e238f9f15fab1cb5d011967..fcdff1398b72c97915b11975046865fbdf2f8713:/lib/arcfour.h diff --git a/lib/arcfour.h b/lib/arcfour.h new file mode 100644 index 0000000..0a9d75c --- /dev/null +++ b/lib/arcfour.h @@ -0,0 +1,51 @@ +/* arcfour.h --- The arcfour stream cipher + * Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005 + * Free Software Foundation, Inc. + * + * This file 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 2, or (at your + * option) any later version. + * + * This file 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 file; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA + * 02110-1301, USA. + * + */ + +/* Code from Libgcrypt adapted for gnulib by Simon Josefsson. */ + +#ifndef ARCFOUR_H +# define ARCFOUR_H + +# include +# include + +#define ARCFOUR_SBOX_SIZE 256 + +typedef struct +{ + char sbox[ARCFOUR_SBOX_SIZE]; + uint8_t idx_i, idx_j; +} arcfour_context; + +/* Apply ARCFOUR stream to INBUF placing the result in OUTBUF, both of + LENGTH size. CONTEXT must be initialized with arcfour_setkey + before this function is called. */ +extern void +arcfour_stream (arcfour_context * context, + const char *inbuf, char *outbuf, size_t length); + +/* Initialize CONTEXT using encryption KEY of KEYLEN bytes. KEY + should be 40 bits (5 bytes) or longer. The KEY cannot be zero + length. */ +extern void +arcfour_setkey (arcfour_context * context, const char *key, size_t keylen); + +#endif /* ARCFOUR_H */