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 /* USE_ARM_ASM indicates whether to use ARM assembly code. */ 34 # undef USE_ARM_ASM 35 # if defined(__ARMEL__) 36 # ifdef HAVE_COMPATIBLE_GCC_ARM_PLATFORM_AS 37 # define USE_ARM_ASM 1 38 # endif 39 # endif 40 # if defined(__AARCH64EL__) 41 # ifdef HAVE_COMPATIBLE_GCC_AARCH64_PLATFORM_AS 42 # define USE_ARM_ASM 1 43 # endif 44 # endif 45 #endif 46 #ifdef CAMELLIA_EXT_SYM_PREFIX 47 #define CAMELLIA_PREFIX1(x,y) x ## y 48 #define CAMELLIA_PREFIX2(x,y) CAMELLIA_PREFIX1(x,y) 49 #define CAMELLIA_PREFIX(x) CAMELLIA_PREFIX2(CAMELLIA_EXT_SYM_PREFIX,x) 50 #define Camellia_Ekeygen CAMELLIA_PREFIX(Camellia_Ekeygen) 51 #define Camellia_EncryptBlock CAMELLIA_PREFIX(Camellia_EncryptBlock) 52 #define Camellia_DecryptBlock CAMELLIA_PREFIX(Camellia_DecryptBlock) 53 #define camellia_decrypt128 CAMELLIA_PREFIX(camellia_decrypt128) 54 #define camellia_decrypt256 CAMELLIA_PREFIX(camellia_decrypt256) 55 #define camellia_encrypt128 CAMELLIA_PREFIX(camellia_encrypt128) 56 #define camellia_encrypt256 CAMELLIA_PREFIX(camellia_encrypt256) 57 #define camellia_setup128 CAMELLIA_PREFIX(camellia_setup128) 58 #define camellia_setup192 CAMELLIA_PREFIX(camellia_setup192) 59 #define camellia_setup256 CAMELLIA_PREFIX(camellia_setup256) 60 #endif /*CAMELLIA_EXT_SYM_PREFIX*/ 61 62 63 #ifdef __cplusplus 64 extern "C" { 65 #endif 66 67 #define CAMELLIA_BLOCK_SIZE 16 68 #define CAMELLIA_TABLE_BYTE_LEN 272 69 #define CAMELLIA_TABLE_WORD_LEN (CAMELLIA_TABLE_BYTE_LEN / 4) 70 71 typedef unsigned int KEY_TABLE_TYPE[CAMELLIA_TABLE_WORD_LEN]; 72 73 74 void Camellia_Ekeygen(const int keyBitLength, 75 const unsigned char *rawKey, 76 KEY_TABLE_TYPE keyTable); 77 78 #ifndef USE_ARM_ASM 79 void Camellia_EncryptBlock(const int keyBitLength, 80 const unsigned char *plaintext, 81 const KEY_TABLE_TYPE keyTable, 82 unsigned char *cipherText); 83 84 void Camellia_DecryptBlock(const int keyBitLength, 85 const unsigned char *cipherText, 86 const KEY_TABLE_TYPE keyTable, 87 unsigned char *plaintext); 88 #endif /*!USE_ARM_ASM*/ 89 90 91 #ifdef __cplusplus 92 } 93 #endif 94 95 #endif /* HEADER_CAMELLIA_H */ 96