version 0.3.33
[fms.git] / libs / libtomcrypt / headers / tomcrypt_custom.h
diff --git a/libs/libtomcrypt/headers/tomcrypt_custom.h b/libs/libtomcrypt/headers/tomcrypt_custom.h
new file mode 100644 (file)
index 0000000..58ddb81
--- /dev/null
@@ -0,0 +1,409 @@
+#ifndef TOMCRYPT_CUSTOM_H_\r
+#define TOMCRYPT_CUSTOM_H_\r
+\r
+//#define LTC_SOURCE\r
+\r
+/* macros for various libc functions you can change for embedded targets */\r
+#ifndef XMALLOC\r
+   #ifdef malloc \r
+   #define LTC_NO_PROTOTYPES\r
+   #endif\r
+#define XMALLOC  malloc\r
+#endif\r
+#ifndef XREALLOC\r
+   #ifdef realloc \r
+   #define LTC_NO_PROTOTYPES\r
+   #endif\r
+#define XREALLOC realloc\r
+#endif\r
+#ifndef XCALLOC\r
+   #ifdef calloc \r
+   #define LTC_NO_PROTOTYPES\r
+   #endif\r
+#define XCALLOC  calloc\r
+#endif\r
+#ifndef XFREE\r
+   #ifdef free\r
+   #define LTC_NO_PROTOTYPES\r
+   #endif\r
+#define XFREE    free\r
+#endif\r
+\r
+#ifndef XMEMSET\r
+   #ifdef memset\r
+   #define LTC_NO_PROTOTYPES\r
+   #endif\r
+#define XMEMSET  memset\r
+#endif\r
+#ifndef XMEMCPY\r
+   #ifdef memcpy\r
+   #define LTC_NO_PROTOTYPES\r
+   #endif\r
+#define XMEMCPY  memcpy\r
+#endif\r
+#ifndef XMEMCMP\r
+   #ifdef memcmp \r
+   #define LTC_NO_PROTOTYPES\r
+   #endif\r
+#define XMEMCMP  memcmp\r
+#endif\r
+#ifndef XSTRCMP\r
+   #ifdef strcmp\r
+   #define LTC_NO_PROTOTYPES\r
+   #endif\r
+#define XSTRCMP strcmp\r
+#endif\r
+\r
+#ifndef XCLOCK\r
+#define XCLOCK   clock\r
+#endif\r
+#ifndef XCLOCKS_PER_SEC\r
+#define XCLOCKS_PER_SEC CLOCKS_PER_SEC\r
+#endif\r
+\r
+#ifndef XQSORT\r
+   #ifdef qsort\r
+   #define LTC_NO_PROTOTYPES\r
+   #endif\r
+#define XQSORT qsort\r
+#endif\r
+\r
+/* Easy button? */\r
+#ifdef LTC_EASY\r
+   #define LTC_NO_CIPHERS\r
+   #define RIJNDAEL\r
+   #define BLOWFISH\r
+   #define DES\r
+   #define CAST5\r
+   \r
+   #define LTC_NO_MODES\r
+   #define LTC_ECB_MODE\r
+   #define LTC_CBC_MODE\r
+   #define LTC_CTR_MODE\r
+   \r
+   #define LTC_NO_HASHES\r
+   #define SHA1\r
+   #define SHA512\r
+   #define SHA384\r
+   #define SHA256\r
+   #define SHA224\r
+   \r
+   #define LTC_NO_MACS\r
+   #define HMAC\r
+   #define OMAC\r
+   #define CCM_MODE\r
+\r
+   #define LTC_NO_PRNGS\r
+   #define SPRNG\r
+   #define YARROW\r
+   #define DEVRANDOM\r
+   #define TRY_URANDOM_FIRST\r
+      \r
+   #define LTC_NO_PK\r
+   #define MRSA\r
+   #define MECC\r
+#endif   \r
+\r
+/* Use small code where possible */\r
+/* #define LTC_SMALL_CODE */\r
+\r
+/* Enable self-test test vector checking */\r
+#ifndef LTC_NO_TEST\r
+   #define LTC_TEST\r
+#endif\r
+\r
+/* clean the stack of functions which put private information on stack */\r
+/* #define LTC_CLEAN_STACK */\r
+\r
+/* disable all file related functions */\r
+#define LTC_NO_FILE\r
+\r
+/* disable all forms of ASM */\r
+/* #define LTC_NO_ASM */\r
+\r
+/* disable FAST mode */\r
+/* #define LTC_NO_FAST */\r
+\r
+/* disable BSWAP on x86 */\r
+/* #define LTC_NO_BSWAP */\r
+\r
+/* ---> Symmetric Block Ciphers <--- */\r
+#define LTC_NO_CIPHERS\r
+#ifndef LTC_NO_CIPHERS\r
+\r
+#define BLOWFISH\r
+#define RC2\r
+#define RC5\r
+#define RC6\r
+#define SAFERP\r
+#define RIJNDAEL\r
+#define XTEA\r
+/* _TABLES tells it to use tables during setup, _SMALL means to use the smaller scheduled key format\r
+ * (saves 4KB of ram), _ALL_TABLES enables all tables during setup */\r
+#define TWOFISH\r
+#ifndef LTC_NO_TABLES\r
+   #define TWOFISH_TABLES\r
+   /* #define TWOFISH_ALL_TABLES */\r
+#else\r
+   #define TWOFISH_SMALL\r
+#endif\r
+/* #define TWOFISH_SMALL */\r
+/* DES includes EDE triple-DES */\r
+#define DES\r
+#define CAST5\r
+#define NOEKEON\r
+#define SKIPJACK\r
+#define SAFER\r
+#define KHAZAD\r
+#define ANUBIS\r
+#define ANUBIS_TWEAK\r
+#define KSEED\r
+#define LTC_KASUMI\r
+\r
+#endif /* LTC_NO_CIPHERS */\r
+\r
+\r
+/* ---> Block Cipher Modes of Operation <--- */\r
+#define LTC_NO_MODES\r
+#ifndef LTC_NO_MODES\r
+\r
+#define LTC_CFB_MODE\r
+#define LTC_OFB_MODE\r
+#define LTC_ECB_MODE\r
+#define LTC_CBC_MODE\r
+#define LTC_CTR_MODE\r
+\r
+/* F8 chaining mode */\r
+#define LTC_F8_MODE\r
+\r
+/* LRW mode */\r
+#define LTC_LRW_MODE\r
+#ifndef LTC_NO_TABLES\r
+   /* like GCM mode this will enable 16 8x128 tables [64KB] that make\r
+    * seeking very fast.  \r
+    */\r
+   #define LRW_TABLES\r
+#endif\r
+\r
+#endif /* LTC_NO_MODES */\r
+\r
+/* ---> One-Way Hash Functions <--- */\r
+#ifndef LTC_NO_HASHES \r
+\r
+//#define CHC_HASH\r
+//#define WHIRLPOOL\r
+//#define SHA512\r
+//#define SHA384\r
+//#define SHA256\r
+//#define SHA224\r
+//#define TIGER\r
+#define SHA1\r
+//#define MD5\r
+//#define MD4\r
+//#define MD2\r
+//#define RIPEMD128\r
+//#define RIPEMD160\r
+//#define RIPEMD256\r
+//#define RIPEMD320\r
+\r
+#endif /* LTC_NO_HASHES */\r
+\r
+/* ---> MAC functions <--- */\r
+#define LTC_NO_MACS\r
+#ifndef LTC_NO_MACS\r
+\r
+#define LTC_HMAC\r
+#define LTC_OMAC\r
+#define LTC_PMAC\r
+#define LTC_XCBC\r
+#define LTC_F9_MODE\r
+#define PELICAN\r
+\r
+#if defined(PELICAN) && !defined(RIJNDAEL)\r
+   #error Pelican-MAC requires RIJNDAEL\r
+#endif\r
+\r
+/* ---> Encrypt + Authenticate Modes <--- */\r
+\r
+#define EAX_MODE\r
+#if defined(EAX_MODE) && !(defined(LTC_CTR_MODE) && defined(LTC_OMAC))\r
+   #error EAX_MODE requires CTR and OMAC mode\r
+#endif\r
+\r
+#define OCB_MODE\r
+#define CCM_MODE\r
+#define GCM_MODE\r
+\r
+/* Use 64KiB tables */\r
+#ifndef LTC_NO_TABLES\r
+   #define GCM_TABLES \r
+#endif\r
+\r
+/* USE SSE2? requires GCC works on x86_32 and x86_64*/\r
+#ifdef GCM_TABLES\r
+/* #define GCM_TABLES_SSE2 */\r
+#endif\r
+\r
+#endif /* LTC_NO_MACS */\r
+\r
+/* Various tidbits of modern neatoness */\r
+//#define BASE64\r
+\r
+/* --> Pseudo Random Number Generators <--- */\r
+#define LTC_NO_PRNGS\r
+#ifndef LTC_NO_PRNGS\r
+\r
+/* Yarrow */\r
+#define YARROW\r
+/* which descriptor of AES to use?  */\r
+/* 0 = rijndael_enc 1 = aes_enc, 2 = rijndael [full], 3 = aes [full] */\r
+#define YARROW_AES 0\r
+\r
+#if defined(YARROW) && !defined(LTC_CTR_MODE)\r
+   #error YARROW requires LTC_CTR_MODE chaining mode to be defined!\r
+#endif\r
+\r
+/* a PRNG that simply reads from an available system source */\r
+#define SPRNG\r
+\r
+/* The RC4 stream cipher */\r
+#define RC4\r
+\r
+/* Fortuna PRNG */\r
+#define FORTUNA\r
+/* reseed every N calls to the read function */\r
+#define FORTUNA_WD    10\r
+/* number of pools (4..32) can save a bit of ram by lowering the count */\r
+#define FORTUNA_POOLS 32\r
+\r
+/* Greg's SOBER128 PRNG ;-0 */\r
+#define SOBER128\r
+\r
+/* the *nix style /dev/random device */\r
+#define DEVRANDOM\r
+/* try /dev/urandom before trying /dev/random */\r
+#define TRY_URANDOM_FIRST\r
+\r
+#endif /* LTC_NO_PRNGS */\r
+\r
+/* ---> math provider? <--- */\r
+#ifndef LTC_NO_MATH\r
+\r
+/* LibTomMath */\r
+#define LTM_DESC\r
+\r
+/* TomsFastMath */\r
+/* #define TFM_DESC */\r
+\r
+#endif /* LTC_NO_MATH */\r
+\r
+/* ---> Public Key Crypto <--- */\r
+#ifndef LTC_NO_PK\r
+\r
+/* Include RSA support */\r
+#define MRSA\r
+\r
+/* Include Katja (a Rabin variant like RSA) */\r
+/* #define MKAT */ \r
+\r
+/* Digital Signature Algorithm */\r
+//#define MDSA\r
+\r
+/* ECC */\r
+//#define MECC\r
+\r
+/* use Shamir's trick for point mul (speeds up signature verification) */\r
+//#define LTC_ECC_SHAMIR\r
+\r
+#if defined(TFM_DESC) && defined(MECC)\r
+   #define MECC_ACCEL\r
+#endif   \r
+\r
+/* do we want fixed point ECC */\r
+/* #define MECC_FP */\r
+\r
+/* Timing Resistant? */\r
+/* #define LTC_ECC_TIMING_RESISTANT */\r
+\r
+#endif /* LTC_NO_PK */\r
+\r
+/* PKCS #1 (RSA) and #5 (Password Handling) stuff */\r
+#ifndef LTC_NO_PKCS\r
+\r
+#define PKCS_1\r
+//#define PKCS_5\r
+\r
+/* Include ASN.1 DER (required by DSA/RSA) */\r
+#define LTC_DER\r
+\r
+#endif /* LTC_NO_PKCS */\r
+\r
+/* cleanup */\r
+\r
+#ifdef MECC\r
+/* Supported ECC Key Sizes */\r
+#ifndef LTC_NO_CURVES\r
+   #define ECC112\r
+   #define ECC128\r
+   #define ECC160\r
+   #define ECC192\r
+   #define ECC224\r
+   #define ECC256\r
+   #define ECC384\r
+   #define ECC521\r
+#endif\r
+#endif\r
+\r
+#if defined(MECC) || defined(MRSA) || defined(MDSA) || defined(MKATJA)\r
+   /* Include the MPI functionality?  (required by the PK algorithms) */\r
+   #define MPI\r
+#endif\r
+\r
+#ifdef MRSA\r
+   #define PKCS_1\r
+#endif   \r
+\r
+#if defined(LTC_DER) && !defined(MPI) \r
+   #error ASN.1 DER requires MPI functionality\r
+#endif\r
+\r
+#if (defined(MDSA) || defined(MRSA) || defined(MECC) || defined(MKATJA)) && !defined(LTC_DER)\r
+   #error PK requires ASN.1 DER functionality, make sure LTC_DER is enabled\r
+#endif\r
+\r
+/* THREAD management */\r
+#ifdef LTC_PTHREAD\r
+\r
+#include <pthread.h>\r
+\r
+#define LTC_MUTEX_GLOBAL(x)   pthread_mutex_t x = PTHREAD_MUTEX_INITIALIZER;\r
+#define LTC_MUTEX_PROTO(x)    extern pthread_mutex_t x;\r
+#define LTC_MUTEX_TYPE(x)     pthread_mutex_t x;\r
+#define LTC_MUTEX_INIT(x)     pthread_mutex_init(x, NULL);\r
+#define LTC_MUTEX_LOCK(x)     pthread_mutex_lock(x);\r
+#define LTC_MUTEX_UNLOCK(x)   pthread_mutex_unlock(x);\r
+\r
+#else\r
+\r
+/* default no functions */\r
+#define LTC_MUTEX_GLOBAL(x)\r
+#define LTC_MUTEX_PROTO(x)\r
+#define LTC_MUTEX_TYPE(x)\r
+#define LTC_MUTEX_INIT(x)\r
+#define LTC_MUTEX_LOCK(x)\r
+#define LTC_MUTEX_UNLOCK(x)\r
+\r
+#endif\r
+\r
+/* Debuggers */\r
+\r
+/* define this if you use Valgrind, note: it CHANGES the way SOBER-128 and RC4 work (see the code) */\r
+/* #define LTC_VALGRIND */\r
+\r
+#endif\r
+\r
+\r
+\r
+/* $Source: /cvs/libtom/libtomcrypt/src/headers/tomcrypt_custom.h,v $ */\r
+/* $Revision: 1.66 $ */\r
+/* $Date: 2006/12/04 02:50:11 $ */\r