1 #ifndef TOMCRYPT_CUSTOM_H_
\r
2 #define TOMCRYPT_CUSTOM_H_
\r
6 /* macros for various libc functions you can change for embedded targets */
\r
9 #define LTC_NO_PROTOTYPES
\r
11 #define XMALLOC malloc
\r
15 #define LTC_NO_PROTOTYPES
\r
17 #define XREALLOC realloc
\r
21 #define LTC_NO_PROTOTYPES
\r
23 #define XCALLOC calloc
\r
27 #define LTC_NO_PROTOTYPES
\r
34 #define LTC_NO_PROTOTYPES
\r
36 #define XMEMSET memset
\r
40 #define LTC_NO_PROTOTYPES
\r
42 #define XMEMCPY memcpy
\r
46 #define LTC_NO_PROTOTYPES
\r
48 #define XMEMCMP memcmp
\r
52 #define LTC_NO_PROTOTYPES
\r
54 #define XSTRCMP strcmp
\r
58 #define XCLOCK clock
\r
60 #ifndef XCLOCKS_PER_SEC
\r
61 #define XCLOCKS_PER_SEC CLOCKS_PER_SEC
\r
66 #define LTC_NO_PROTOTYPES
\r
68 #define XQSORT qsort
\r
73 #define LTC_NO_CIPHERS
\r
79 #define LTC_NO_MODES
\r
80 #define LTC_ECB_MODE
\r
81 #define LTC_CBC_MODE
\r
82 #define LTC_CTR_MODE
\r
84 #define LTC_NO_HASHES
\r
96 #define LTC_NO_PRNGS
\r
100 #define TRY_URANDOM_FIRST
\r
107 /* Use small code where possible */
\r
108 /* #define LTC_SMALL_CODE */
\r
110 /* Enable self-test test vector checking */
\r
111 #ifndef LTC_NO_TEST
\r
115 /* clean the stack of functions which put private information on stack */
\r
116 /* #define LTC_CLEAN_STACK */
\r
118 /* disable all file related functions */
\r
119 #define LTC_NO_FILE
\r
121 /* disable all forms of ASM */
\r
122 /* #define LTC_NO_ASM */
\r
124 /* disable FAST mode */
\r
125 /* #define LTC_NO_FAST */
\r
127 /* disable BSWAP on x86 */
\r
128 /* #define LTC_NO_BSWAP */
\r
130 /* ---> Symmetric Block Ciphers <--- */
\r
131 #define LTC_NO_CIPHERS
\r
132 #ifndef LTC_NO_CIPHERS
\r
141 /* _TABLES tells it to use tables during setup, _SMALL means to use the smaller scheduled key format
\r
142 * (saves 4KB of ram), _ALL_TABLES enables all tables during setup */
\r
144 #ifndef LTC_NO_TABLES
\r
145 #define TWOFISH_TABLES
\r
146 /* #define TWOFISH_ALL_TABLES */
\r
148 #define TWOFISH_SMALL
\r
150 /* #define TWOFISH_SMALL */
\r
151 /* DES includes EDE triple-DES */
\r
159 #define ANUBIS_TWEAK
\r
163 #endif /* LTC_NO_CIPHERS */
\r
166 /* ---> Block Cipher Modes of Operation <--- */
\r
167 #define LTC_NO_MODES
\r
168 #ifndef LTC_NO_MODES
\r
170 #define LTC_CFB_MODE
\r
171 #define LTC_OFB_MODE
\r
172 #define LTC_ECB_MODE
\r
173 #define LTC_CBC_MODE
\r
174 #define LTC_CTR_MODE
\r
176 /* F8 chaining mode */
\r
177 #define LTC_F8_MODE
\r
180 #define LTC_LRW_MODE
\r
181 #ifndef LTC_NO_TABLES
\r
182 /* like GCM mode this will enable 16 8x128 tables [64KB] that make
\r
183 * seeking very fast.
\r
188 #endif /* LTC_NO_MODES */
\r
190 /* ---> One-Way Hash Functions <--- */
\r
191 #ifndef LTC_NO_HASHES
\r
194 //#define WHIRLPOOL
\r
204 //#define RIPEMD128
\r
205 //#define RIPEMD160
\r
206 //#define RIPEMD256
\r
207 //#define RIPEMD320
\r
209 #endif /* LTC_NO_HASHES */
\r
211 /* ---> MAC functions <--- */
\r
212 #define LTC_NO_MACS
\r
213 #ifndef LTC_NO_MACS
\r
219 #define LTC_F9_MODE
\r
222 #if defined(PELICAN) && !defined(RIJNDAEL)
\r
223 #error Pelican-MAC requires RIJNDAEL
\r
226 /* ---> Encrypt + Authenticate Modes <--- */
\r
229 #if defined(EAX_MODE) && !(defined(LTC_CTR_MODE) && defined(LTC_OMAC))
\r
230 #error EAX_MODE requires CTR and OMAC mode
\r
237 /* Use 64KiB tables */
\r
238 #ifndef LTC_NO_TABLES
\r
239 #define GCM_TABLES
\r
242 /* USE SSE2? requires GCC works on x86_32 and x86_64*/
\r
244 /* #define GCM_TABLES_SSE2 */
\r
247 #endif /* LTC_NO_MACS */
\r
249 /* Various tidbits of modern neatoness */
\r
252 /* --> Pseudo Random Number Generators <--- */
\r
253 #define LTC_NO_PRNGS
\r
254 #ifndef LTC_NO_PRNGS
\r
258 /* which descriptor of AES to use? */
\r
259 /* 0 = rijndael_enc 1 = aes_enc, 2 = rijndael [full], 3 = aes [full] */
\r
260 #define YARROW_AES 0
\r
262 #if defined(YARROW) && !defined(LTC_CTR_MODE)
\r
263 #error YARROW requires LTC_CTR_MODE chaining mode to be defined!
\r
266 /* a PRNG that simply reads from an available system source */
\r
269 /* The RC4 stream cipher */
\r
274 /* reseed every N calls to the read function */
\r
275 #define FORTUNA_WD 10
\r
276 /* number of pools (4..32) can save a bit of ram by lowering the count */
\r
277 #define FORTUNA_POOLS 32
\r
279 /* Greg's SOBER128 PRNG ;-0 */
\r
282 /* the *nix style /dev/random device */
\r
284 /* try /dev/urandom before trying /dev/random */
\r
285 #define TRY_URANDOM_FIRST
\r
287 #endif /* LTC_NO_PRNGS */
\r
289 /* ---> math provider? <--- */
\r
290 #ifndef LTC_NO_MATH
\r
296 /* #define TFM_DESC */
\r
298 #endif /* LTC_NO_MATH */
\r
300 /* ---> Public Key Crypto <--- */
\r
303 /* Include RSA support */
\r
306 /* Include Katja (a Rabin variant like RSA) */
\r
307 /* #define MKAT */
\r
309 /* Digital Signature Algorithm */
\r
315 /* use Shamir's trick for point mul (speeds up signature verification) */
\r
316 //#define LTC_ECC_SHAMIR
\r
318 #if defined(TFM_DESC) && defined(MECC)
\r
322 /* do we want fixed point ECC */
\r
323 /* #define MECC_FP */
\r
325 /* Timing Resistant? */
\r
326 /* #define LTC_ECC_TIMING_RESISTANT */
\r
328 #endif /* LTC_NO_PK */
\r
330 /* PKCS #1 (RSA) and #5 (Password Handling) stuff */
\r
331 #ifndef LTC_NO_PKCS
\r
336 /* Include ASN.1 DER (required by DSA/RSA) */
\r
339 #endif /* LTC_NO_PKCS */
\r
344 /* Supported ECC Key Sizes */
\r
345 #ifndef LTC_NO_CURVES
\r
357 #if defined(MECC) || defined(MRSA) || defined(MDSA) || defined(MKATJA)
\r
358 /* Include the MPI functionality? (required by the PK algorithms) */
\r
366 #if defined(LTC_DER) && !defined(MPI)
\r
367 #error ASN.1 DER requires MPI functionality
\r
370 #if (defined(MDSA) || defined(MRSA) || defined(MECC) || defined(MKATJA)) && !defined(LTC_DER)
\r
371 #error PK requires ASN.1 DER functionality, make sure LTC_DER is enabled
\r
374 /* THREAD management */
\r
377 #include <pthread.h>
\r
379 #define LTC_MUTEX_GLOBAL(x) pthread_mutex_t x = PTHREAD_MUTEX_INITIALIZER;
\r
380 #define LTC_MUTEX_PROTO(x) extern pthread_mutex_t x;
\r
381 #define LTC_MUTEX_TYPE(x) pthread_mutex_t x;
\r
382 #define LTC_MUTEX_INIT(x) pthread_mutex_init(x, NULL);
\r
383 #define LTC_MUTEX_LOCK(x) pthread_mutex_lock(x);
\r
384 #define LTC_MUTEX_UNLOCK(x) pthread_mutex_unlock(x);
\r
388 /* default no functions */
\r
389 #define LTC_MUTEX_GLOBAL(x)
\r
390 #define LTC_MUTEX_PROTO(x)
\r
391 #define LTC_MUTEX_TYPE(x)
\r
392 #define LTC_MUTEX_INIT(x)
\r
393 #define LTC_MUTEX_LOCK(x)
\r
394 #define LTC_MUTEX_UNLOCK(x)
\r
400 /* define this if you use Valgrind, note: it CHANGES the way SOBER-128 and RC4 work (see the code) */
\r
401 /* #define LTC_VALGRIND */
\r
407 /* $Source: /cvs/libtom/libtomcrypt/src/headers/tomcrypt_custom.h,v $ */
\r
408 /* $Revision: 1.66 $ */
\r
409 /* $Date: 2006/12/04 02:50:11 $ */
\r