diff options
author | Simon Josefsson <simon@josefsson.org> | 2005-10-15 18:19:44 +0000 |
---|---|---|
committer | Simon Josefsson <simon@josefsson.org> | 2005-10-15 18:19:44 +0000 |
commit | 13083d5caa5989dab4238adce19a2fa55efc4201 (patch) | |
tree | 6c78c0c5f3e9801edd268255195fc9ebee0c6200 /lib/arcfour.h | |
parent | 0e56d268c07233446ac6171d32bf1a5a41fdbea0 (diff) | |
download | gnulib-13083d5caa5989dab4238adce19a2fa55efc4201.tar.gz |
Add arcfour module.
Diffstat (limited to 'lib/arcfour.h')
-rw-r--r-- | lib/arcfour.h | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/lib/arcfour.h b/lib/arcfour.h new file mode 100644 index 0000000000..28ef679d05 --- /dev/null +++ b/lib/arcfour.h @@ -0,0 +1,50 @@ +/* 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 <stddef.h> + +#define ARCFOUR_SBOX_SIZE 256 + +typedef struct +{ + size_t idx_i, idx_j; + char sbox[ARCFOUR_SBOX_SIZE]; +} 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 */ |