1/* camellia.h ver 1.2.0 2 * 3 * Copyright (C) 2006,2007 4 * NTT (Nippon Telegraph and Telephone Corporation). 5 * 6 * This library is free software; you can redistribute it and/or 7 * modify it under the terms of the GNU Lesser General Public 8 * License as published by the Free Software Foundation; either 9 * version 2.1 of the License, or (at your option) any later version. 10 * 11 * This library 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 GNU 14 * Lesser General Public License for more details. 15 * 16 * You should have received a copy of the GNU Lesser General Public 17 * License along with this library; if not, write to the Free Software 18 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 19 */ 20 21#ifndef HEADER_CAMELLIA_H 22#define HEADER_CAMELLIA_H 23 24/* To use Camellia with libraries it is often useful to keep the name 25 * space of the library clean. The following macro is thus useful: 26 * 27 * #define CAMELLIA_EXT_SYM_PREFIX foo_ 28 * 29 * This prefixes all external symbols with "foo_". 30 */ 31#ifdef HAVE_CONFIG_H 32#include <config.h> 33#endif 34#ifdef CAMELLIA_EXT_SYM_PREFIX 35#define CAMELLIA_PREFIX1(x,y) x ## y 36#define CAMELLIA_PREFIX2(x,y) CAMELLIA_PREFIX1(x,y) 37#define CAMELLIA_PREFIX(x) CAMELLIA_PREFIX2(CAMELLIA_EXT_SYM_PREFIX,x) 38#define Camellia_Ekeygen CAMELLIA_PREFIX(Camellia_Ekeygen) 39#define Camellia_EncryptBlock CAMELLIA_PREFIX(Camellia_EncryptBlock) 40#define Camellia_DecryptBlock CAMELLIA_PREFIX(Camellia_DecryptBlock) 41#define camellia_decrypt128 CAMELLIA_PREFIX(camellia_decrypt128) 42#define camellia_decrypt256 CAMELLIA_PREFIX(camellia_decrypt256) 43#define camellia_encrypt128 CAMELLIA_PREFIX(camellia_encrypt128) 44#define camellia_encrypt256 CAMELLIA_PREFIX(camellia_encrypt256) 45#define camellia_setup128 CAMELLIA_PREFIX(camellia_setup128) 46#define camellia_setup192 CAMELLIA_PREFIX(camellia_setup192) 47#define camellia_setup256 CAMELLIA_PREFIX(camellia_setup256) 48#endif /*CAMELLIA_EXT_SYM_PREFIX*/ 49 50 51#ifdef __cplusplus 52extern "C" { 53#endif 54 55#define CAMELLIA_BLOCK_SIZE 16 56#define CAMELLIA_TABLE_BYTE_LEN 272 57#define CAMELLIA_TABLE_WORD_LEN (CAMELLIA_TABLE_BYTE_LEN / 4) 58 59typedef unsigned int KEY_TABLE_TYPE[CAMELLIA_TABLE_WORD_LEN]; 60 61 62void Camellia_Ekeygen(const int keyBitLength, 63 const unsigned char *rawKey, 64 KEY_TABLE_TYPE keyTable); 65 66void Camellia_EncryptBlock(const int keyBitLength, 67 const unsigned char *plaintext, 68 const KEY_TABLE_TYPE keyTable, 69 unsigned char *cipherText); 70 71void Camellia_DecryptBlock(const int keyBitLength, 72 const unsigned char *cipherText, 73 const KEY_TABLE_TYPE keyTable, 74 unsigned char *plaintext); 75 76 77#ifdef __cplusplus 78} 79#endif 80 81#endif /* HEADER_CAMELLIA_H */ 82