]> git.cryptolib.org Git - avr-crypto-lib.git/blob - serpent.h
insereated GPLv3 stub
[avr-crypto-lib.git] / serpent.h
1 /* serpent.h */
2 /*
3     This file is part of the Crypto-avr-lib/microcrypt-lib.
4     Copyright (C) 2008  Daniel Otte (daniel.otte@rub.de)
5
6     This program is free software: you can redistribute it and/or modify
7     it under the terms of the GNU General Public License as published by
8     the Free Software Foundation, either version 3 of the License, or
9     (at your option) any later version.
10
11     This program is distributed in the hope that it will be useful,
12     but WITHOUT ANY WARRANTY; without even the implied warranty of
13     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14     GNU General Public License for more details.
15
16     You should have received a copy of the GNU General Public License
17     along with this program.  If not, see <http://www.gnu.org/licenses/>.
18 */
19 /* serpent.h
20  * a bitsliced implementation of the serpent cipher for avr microcontrollers
21  * author: Daniel Otte
22  * license: GPLv3
23  */
24
25 #ifndef SERPENT_H_
26 #define SERPENT_H_
27
28 #include <stdint.h>
29
30 typedef uint32_t serpent_subkey_t[4];
31
32 typedef struct serpent_ctx_st {
33         serpent_subkey_t k[33];
34 }  serpent_ctx_t;
35
36 #define SERPENT_KEY128 128
37 #define SERPENT_KEY192 192
38 #define SERPENT_KEY256   0
39
40
41 /* key must be 256bit (32 byte) large! */
42 void serpent_genctx(void * key, uint8_t keysize, serpent_ctx_t * ctx);
43 void serpent_enc(void * buffer, serpent_ctx_t * ctx);
44 void serpent_dec(void * buffer, serpent_ctx_t * ctx);
45
46
47 #endif /*SERPENT_H_*/