3 This file is part of the AVR-Crypto-Lib.
4 Copyright (C) 2006-2015 Daniel Otte (bg@nerilex.org)
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.
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.
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/>.
22 * \brief a implementation of the serpent cipher for avr microcontrollers
30 typedef uint32_t serpent_subkey_t[4];
32 typedef struct serpent_ctx_st {
33 serpent_subkey_t k[33];
36 #define SERPENT_KEY128 128
37 #define SERPENT_KEY192 192
38 #define SERPENT_KEY256 256
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);