]> git.cryptolib.org Git - avr-crypto-lib.git/blob - serpent/serpent.h
fixing E-Mail-Address & Copyright
[avr-crypto-lib.git] / serpent / serpent.h
1 /* serpent.h */
2 /*
3     This file is part of the AVR-Crypto-Lib.
4     Copyright (C) 2006-2015 Daniel Otte (bg@nerilex.org)
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 /** \file   serpent.h
20  * \author  Daniel Otte
21  * \license GPLv3
22  * \brief a implementation of the serpent cipher for avr microcontrollers
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 256
39
40
41 /* key must be 256bit (32 byte) large! */
42 void serpent_init(const void *key, uint16_t keysize_b, serpent_ctx_t *ctx);
43 void serpent_enc(void *buffer, const serpent_ctx_t *ctx);
44 void serpent_dec(void *buffer, const serpent_ctx_t *ctx);
45
46
47 #endif /*SERPENT_H_*/