add changelog and NEWS entry
[gnuk/gnuk.git] / polarssl-0.14.0 / include / polarssl / arc4.h
1 /**
2  * \file arc4.h
3  *
4  *  Copyright (C) 2006-2010, Brainspark B.V.
5  *
6  *  This file is part of PolarSSL (http://www.polarssl.org)
7  *  Lead Maintainer: Paul Bakker <polarssl_maintainer at polarssl.org>
8  *
9  *  All rights reserved.
10  *
11  *  This program is free software; you can redistribute it and/or modify
12  *  it under the terms of the GNU General Public License as published by
13  *  the Free Software Foundation; either version 2 of the License, or
14  *  (at your option) any later version.
15  *
16  *  This program is distributed in the hope that it will be useful,
17  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
18  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
19  *  GNU General Public License for more details.
20  *
21  *  You should have received a copy of the GNU General Public License along
22  *  with this program; if not, write to the Free Software Foundation, Inc.,
23  *  51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
24  */
25 #ifndef POLARSSL_ARC4_H
26 #define POLARSSL_ARC4_H
27
28 /**
29  * \brief          ARC4 context structure
30  */
31 typedef struct
32 {
33     int x;                      /*!< permutation index */
34     int y;                      /*!< permutation index */
35     unsigned char m[256];       /*!< permutation table */
36 }
37 arc4_context;
38
39 #ifdef __cplusplus
40 extern "C" {
41 #endif
42
43 /**
44  * \brief          ARC4 key schedule
45  *
46  * \param ctx      ARC4 context to be initialized
47  * \param key      the secret key
48  * \param keylen   length of the key
49  */
50 void arc4_setup( arc4_context *ctx, const unsigned char *key, int keylen );
51
52 /**
53  * \brief          ARC4 cipher function
54  *
55  * \param ctx      ARC4 context
56  * \param length   length of the input data
57  * \param input    buffer holding the input data
58  * \param output   buffer for the output data
59  *
60  * \return         0 if successful
61  */
62 int arc4_crypt( arc4_context *ctx, int length, const unsigned char *input,
63                 unsigned char *output );
64
65 /*
66  * \brief          Checkup routine
67  *
68  * \return         0 if successful, or 1 if the test failed
69  */
70 int arc4_self_test( int verbose );
71
72 #ifdef __cplusplus
73 }
74 #endif
75
76 #endif /* arc4.h */