blob: d50b50c59160dbbde3d0ca513cbdcd1f6f154af9 [file] [log] [blame]
Paul Bakker5121ce52009-01-03 21:22:43 +00001/**
2 * \file config.h
3 *
Paul Bakker37ca75d2011-01-06 12:28:03 +00004 * \brief Configuration options (set of defines)
5 *
Paul Bakker9bcf16c2013-06-24 19:31:17 +02006 * Copyright (C) 2006-2013, Brainspark B.V.
Paul Bakkerb96f1542010-07-18 20:36:00 +00007 *
8 * This file is part of PolarSSL (http://www.polarssl.org)
Paul Bakker84f12b72010-07-18 10:13:04 +00009 * Lead Maintainer: Paul Bakker <polarssl_maintainer at polarssl.org>
Paul Bakkerb96f1542010-07-18 20:36:00 +000010 *
Paul Bakker77b385e2009-07-28 17:23:11 +000011 * All rights reserved.
Paul Bakkere0ccd0a2009-01-04 16:27:10 +000012 *
Paul Bakkere0ccd0a2009-01-04 16:27:10 +000013 * This program is free software; you can redistribute it and/or modify
14 * it under the terms of the GNU General Public License as published by
15 * the Free Software Foundation; either version 2 of the License, or
16 * (at your option) any later version.
17 *
18 * This program is distributed in the hope that it will be useful,
19 * but WITHOUT ANY WARRANTY; without even the implied warranty of
20 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
21 * GNU General Public License for more details.
22 *
23 * You should have received a copy of the GNU General Public License along
24 * with this program; if not, write to the Free Software Foundation, Inc.,
25 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
26 *
Paul Bakker5121ce52009-01-03 21:22:43 +000027 * This set of compile-time options may be used to enable
28 * or disable features selectively, and reduce the global
29 * memory footprint.
30 */
Paul Bakker40e46942009-01-03 21:51:57 +000031#ifndef POLARSSL_CONFIG_H
32#define POLARSSL_CONFIG_H
Paul Bakker5121ce52009-01-03 21:22:43 +000033
Paul Bakkercce9d772011-11-18 14:26:47 +000034#if defined(_MSC_VER) && !defined(_CRT_SECURE_NO_DEPRECATE)
Paul Bakker5121ce52009-01-03 21:22:43 +000035#define _CRT_SECURE_NO_DEPRECATE 1
36#endif
37
Paul Bakkerf3b86c12011-01-27 15:24:17 +000038/**
Paul Bakker0a62cd12011-01-21 11:00:08 +000039 * \name SECTION: System support
40 *
41 * This section sets system specific settings.
42 * \{
43 */
44
Paul Bakkerf3b86c12011-01-27 15:24:17 +000045/**
46 * \def POLARSSL_HAVE_INT8
Paul Bakker5121ce52009-01-03 21:22:43 +000047 *
Paul Bakkerf3b86c12011-01-27 15:24:17 +000048 * The system uses 8-bit wide native integers.
49 *
50 * Uncomment if native integers are 8-bit wide.
Paul Bakker5121ce52009-01-03 21:22:43 +000051 */
Paul Bakkera7ea6a52013-10-15 11:55:10 +020052//#define POLARSSL_HAVE_INT8
Paul Bakker5121ce52009-01-03 21:22:43 +000053
Paul Bakkerf3b86c12011-01-27 15:24:17 +000054/**
55 * \def POLARSSL_HAVE_INT16
Paul Bakker5121ce52009-01-03 21:22:43 +000056 *
Paul Bakkerf3b86c12011-01-27 15:24:17 +000057 * The system uses 16-bit wide native integers.
58 *
59 * Uncomment if native integers are 16-bit wide.
Paul Bakker5121ce52009-01-03 21:22:43 +000060 */
Paul Bakkera7ea6a52013-10-15 11:55:10 +020061//#define POLARSSL_HAVE_INT16
Paul Bakker5121ce52009-01-03 21:22:43 +000062
Paul Bakkerf3b86c12011-01-27 15:24:17 +000063/**
Paul Bakker62261d62012-10-02 12:19:31 +000064 * \def POLARSSL_HAVE_LONGLONG
Paul Bakker5121ce52009-01-03 21:22:43 +000065 *
Paul Bakker62261d62012-10-02 12:19:31 +000066 * The compiler supports the 'long long' type.
67 * (Only used on 32-bit platforms)
Paul Bakker5121ce52009-01-03 21:22:43 +000068 */
Paul Bakker62261d62012-10-02 12:19:31 +000069#define POLARSSL_HAVE_LONGLONG
Paul Bakker5121ce52009-01-03 21:22:43 +000070
Paul Bakkerf3b86c12011-01-27 15:24:17 +000071/**
72 * \def POLARSSL_HAVE_ASM
73 *
Manuel Pégourié-Gonnard09fff7e2013-09-20 13:45:36 +020074 * The compiler has support for asm().
Paul Bakker68041ec2009-04-19 21:17:55 +000075 *
76 * Requires support for asm() in compiler.
77 *
78 * Used in:
79 * library/timing.c
80 * library/padlock.c
81 * include/polarssl/bn_mul.h
82 *
Manuel Pégourié-Gonnard09fff7e2013-09-20 13:45:36 +020083 * Comment to disable the use of assembly code.
Paul Bakker5121ce52009-01-03 21:22:43 +000084 */
Paul Bakker40e46942009-01-03 21:51:57 +000085#define POLARSSL_HAVE_ASM
Paul Bakker5121ce52009-01-03 21:22:43 +000086
Paul Bakkerf3b86c12011-01-27 15:24:17 +000087/**
88 * \def POLARSSL_HAVE_SSE2
89 *
Paul Bakkere23c3152012-10-01 14:42:47 +000090 * CPU supports SSE2 instruction set.
Paul Bakkerf3b86c12011-01-27 15:24:17 +000091 *
Paul Bakker5121ce52009-01-03 21:22:43 +000092 * Uncomment if the CPU supports SSE2 (IA-32 specific).
Paul Bakker5121ce52009-01-03 21:22:43 +000093 */
Paul Bakkera7ea6a52013-10-15 11:55:10 +020094//#define POLARSSL_HAVE_SSE2
Paul Bakkerfa9b1002013-07-03 15:31:03 +020095
96/**
Paul Bakkerbe089b02013-10-14 15:51:50 +020097 * \def POLARSSL_HAVE_READDIR_R
98 *
99 * (Non Windows) System has readdir_r().
100 *
101 * Required for x509_crt_parse_path() in non-Windows systems.
102 *
103 * Comment if your system does not have support.
104 */
105#define POLARSSL_HAVE_READDIR_R
106
107/**
Paul Bakkerfa9b1002013-07-03 15:31:03 +0200108 * \def POLARSSL_HAVE_TIME
109 *
Manuel Pégourié-Gonnard09fff7e2013-09-20 13:45:36 +0200110 * System has time.h and time() / localtime() / gettimeofday().
Paul Bakkerfa9b1002013-07-03 15:31:03 +0200111 *
112 * Comment if your system does not support time functions
113 */
114#define POLARSSL_HAVE_TIME
Manuel Pégourié-Gonnard09fff7e2013-09-20 13:45:36 +0200115/* \} name SECTION: System support */
Paul Bakker0a62cd12011-01-21 11:00:08 +0000116
Paul Bakkerf3b86c12011-01-27 15:24:17 +0000117/**
Paul Bakker0a62cd12011-01-21 11:00:08 +0000118 * \name SECTION: PolarSSL feature support
119 *
120 * This section sets support for features that are or are not needed
121 * within the modules that are enabled.
122 * \{
123 */
Paul Bakker5121ce52009-01-03 21:22:43 +0000124
Paul Bakkerf3b86c12011-01-27 15:24:17 +0000125/**
Paul Bakker90995b52013-06-24 19:20:35 +0200126 * \def POLARSSL_XXX_ALT
127 *
128 * Uncomment a macro to let PolarSSL use your alternate core implementation of
129 * a symmetric or hash algorithm (e.g. platform specific assembly optimized
130 * implementations). Keep in mind that the function prototypes should remain
131 * the same.
132 *
133 * Example: In case you uncomment POLARSSL_AES_ALT, PolarSSL will no longer
134 * provide the "struct aes_context" definition and omit the base function
135 * declarations and implementations. "aes_alt.h" will be included from
136 * "aes.h" to include the new function definitions.
137 *
138 * Uncomment a macro to enable alternate implementation for core algorithm
139 * functions
Paul Bakker90995b52013-06-24 19:20:35 +0200140 */
Paul Bakkera7ea6a52013-10-15 11:55:10 +0200141//#define POLARSSL_AES_ALT
142//#define POLARSSL_ARC4_ALT
143//#define POLARSSL_BLOWFISH_ALT
144//#define POLARSSL_CAMELLIA_ALT
145//#define POLARSSL_DES_ALT
146//#define POLARSSL_XTEA_ALT
147//#define POLARSSL_MD2_ALT
148//#define POLARSSL_MD4_ALT
149//#define POLARSSL_MD5_ALT
150//#define POLARSSL_SHA1_ALT
151//#define POLARSSL_SHA256_ALT
152//#define POLARSSL_SHA512_ALT
Paul Bakker90995b52013-06-24 19:20:35 +0200153
154/**
Paul Bakker15566e42011-04-24 21:19:15 +0000155 * \def POLARSSL_AES_ROM_TABLES
156 *
157 * Store the AES tables in ROM.
158 *
159 * Uncomment this macro to store the AES tables in ROM.
160 *
Paul Bakker15566e42011-04-24 21:19:15 +0000161 */
Paul Bakkera7ea6a52013-10-15 11:55:10 +0200162//#define POLARSSL_AES_ROM_TABLES
Paul Bakker15566e42011-04-24 21:19:15 +0000163
164/**
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200165 * \def POLARSSL_CIPHER_MODE_CBC
166 *
167 * Enable Cipher Block Chaining mode (CBC) for symmetric ciphers.
168 */
169#define POLARSSL_CIPHER_MODE_CBC
170
171/**
Paul Bakkerb6ecaf52011-04-19 14:29:23 +0000172 * \def POLARSSL_CIPHER_MODE_CFB
173 *
174 * Enable Cipher Feedback mode (CFB) for symmetric ciphers.
175 */
176#define POLARSSL_CIPHER_MODE_CFB
177
178/**
179 * \def POLARSSL_CIPHER_MODE_CTR
180 *
181 * Enable Counter Block Cipher mode (CTR) for symmetric ciphers.
182 */
183#define POLARSSL_CIPHER_MODE_CTR
184
185/**
Paul Bakkerfab5c822012-02-06 16:45:10 +0000186 * \def POLARSSL_CIPHER_NULL_CIPHER
187 *
188 * Enable NULL cipher.
189 * Warning: Only do so when you know what you are doing. This allows for
190 * encryption or channels without any security!
191 *
192 * Requires POLARSSL_ENABLE_WEAK_CIPHERSUITES as well to enable
193 * the following ciphersuites:
Manuel Pégourié-Gonnard9d703732013-10-25 18:01:50 +0200194 * TLS_ECDHE_ECDSA_WITH_NULL_SHA
Paul Bakker41c83d32013-03-20 14:39:14 +0100195 * TLS_ECDHE_RSA_WITH_NULL_SHA
Manuel Pégourié-Gonnard225d6aa2013-10-11 19:07:56 +0200196 * TLS_ECDHE_PSK_WITH_NULL_SHA384
Manuel Pégourié-Gonnard9d703732013-10-25 18:01:50 +0200197 * TLS_ECDHE_PSK_WITH_NULL_SHA256
198 * TLS_ECDHE_PSK_WITH_NULL_SHA
199 * TLS_DHE_PSK_WITH_NULL_SHA384
200 * TLS_DHE_PSK_WITH_NULL_SHA256
201 * TLS_DHE_PSK_WITH_NULL_SHA
202 * TLS_RSA_WITH_NULL_SHA256
203 * TLS_RSA_WITH_NULL_SHA
204 * TLS_RSA_WITH_NULL_MD5
205 * TLS_RSA_PSK_WITH_NULL_SHA384
206 * TLS_RSA_PSK_WITH_NULL_SHA256
207 * TLS_RSA_PSK_WITH_NULL_SHA
208 * TLS_PSK_WITH_NULL_SHA384
209 * TLS_PSK_WITH_NULL_SHA256
210 * TLS_PSK_WITH_NULL_SHA
Paul Bakkerfab5c822012-02-06 16:45:10 +0000211 *
212 * Uncomment this macro to enable the NULL cipher and ciphersuites
Manuel Pégourié-Gonnard9d703732013-10-25 18:01:50 +0200213#define POLARSSL_CIPHER_NULL_CIPHER
Paul Bakkerfab5c822012-02-06 16:45:10 +0000214 */
215
216/**
Paul Bakker48e93c82013-08-14 12:21:18 +0200217 * \def POLARSSL_CIPHER_PADDING_XXX
218 *
219 * Uncomment or comment macros to add support for specific padding modes
220 * in the cipher layer with cipher modes that support padding (e.g. CBC)
221 *
222 * If you disable all padding modes, only full blocks can be used with CBC.
223 *
224 * Enable padding modes in the cipher layer.
225 */
226#define POLARSSL_CIPHER_PADDING_PKCS7
227#define POLARSSL_CIPHER_PADDING_ONE_AND_ZEROS
228#define POLARSSL_CIPHER_PADDING_ZEROS_AND_LEN
229#define POLARSSL_CIPHER_PADDING_ZEROS
230
231/**
Paul Bakkerfab5c822012-02-06 16:45:10 +0000232 * \def POLARSSL_ENABLE_WEAK_CIPHERSUITES
233 *
Manuel Pégourié-Gonnard09fff7e2013-09-20 13:45:36 +0200234 * Enable weak ciphersuites in SSL / TLS.
Paul Bakkerfab5c822012-02-06 16:45:10 +0000235 * Warning: Only do so when you know what you are doing. This allows for
Paul Bakker9a736322012-11-14 12:39:52 +0000236 * channels with virtually no security at all!
Paul Bakkerfab5c822012-02-06 16:45:10 +0000237 *
238 * This enables the following ciphersuites:
Paul Bakker645ce3a2012-10-31 12:32:41 +0000239 * TLS_RSA_WITH_DES_CBC_SHA
240 * TLS_DHE_RSA_WITH_DES_CBC_SHA
Paul Bakkerfab5c822012-02-06 16:45:10 +0000241 *
242 * Uncomment this macro to enable weak ciphersuites
Manuel Pégourié-Gonnard9d703732013-10-25 18:01:50 +0200243#define POLARSSL_ENABLE_WEAK_CIPHERSUITES
Paul Bakkerfab5c822012-02-06 16:45:10 +0000244 */
245
246/**
Paul Bakker5dc6b5f2013-06-29 23:26:34 +0200247 * \def POLARSSL_ECP_XXXX_ENABLED
248 *
249 * Enables specific curves within the Elliptic Curve module.
Manuel Pégourié-Gonnard9d703732013-10-25 18:01:50 +0200250 * By default all supported curves are enabled.
Paul Bakker5dc6b5f2013-06-29 23:26:34 +0200251 *
252 * Comment macros to disable the curve and functions for it
253 */
254#define POLARSSL_ECP_DP_SECP192R1_ENABLED
255#define POLARSSL_ECP_DP_SECP224R1_ENABLED
256#define POLARSSL_ECP_DP_SECP256R1_ENABLED
257#define POLARSSL_ECP_DP_SECP384R1_ENABLED
258#define POLARSSL_ECP_DP_SECP521R1_ENABLED
Manuel Pégourié-Gonnard8195c1a2013-10-07 19:40:41 +0200259#define POLARSSL_ECP_DP_BP256R1_ENABLED
260#define POLARSSL_ECP_DP_BP384R1_ENABLED
261#define POLARSSL_ECP_DP_BP512R1_ENABLED
Paul Bakker5dc6b5f2013-06-29 23:26:34 +0200262
263/**
Manuel Pégourié-Gonnardc04c5302013-10-23 16:11:52 +0200264 * \def POLARSSL_ECP_NIST_OPTIM
265 *
266 * Enable specific 'modulo p' routines for each NIST prime.
267 * Depending on the prime and architecture, makes operations 4 to 8 times
268 * faster on the corresponding curve.
269 *
270 * Comment this macro to disable NIST curves optimisation.
271 */
272#define POLARSSL_ECP_NIST_OPTIM
273
274/**
Paul Bakkerd4a56ec2013-04-16 18:05:29 +0200275 * \def POLARSSL_KEY_EXCHANGE_PSK_ENABLED
276 *
Manuel Pégourié-Gonnard09fff7e2013-09-20 13:45:36 +0200277 * Enable the PSK based ciphersuite modes in SSL / TLS.
Paul Bakkerd4a56ec2013-04-16 18:05:29 +0200278 *
Paul Bakkere07f41d2013-04-19 09:08:57 +0200279 * This enables the following ciphersuites (if other requisites are
280 * enabled as well):
Paul Bakker45bda902013-04-19 22:28:21 +0200281 * TLS_PSK_WITH_AES_256_GCM_SHA384
Manuel Pégourié-Gonnard9d703732013-10-25 18:01:50 +0200282 * TLS_PSK_WITH_AES_256_CBC_SHA384
283 * TLS_PSK_WITH_AES_256_CBC_SHA
284 * TLS_PSK_WITH_CAMELLIA_256_GCM_SHA384
285 * TLS_PSK_WITH_CAMELLIA_256_CBC_SHA384
286 * TLS_PSK_WITH_AES_128_GCM_SHA256
287 * TLS_PSK_WITH_AES_128_CBC_SHA256
288 * TLS_PSK_WITH_AES_128_CBC_SHA
289 * TLS_PSK_WITH_CAMELLIA_128_GCM_SHA256
290 * TLS_PSK_WITH_CAMELLIA_128_CBC_SHA256
291 * TLS_PSK_WITH_3DES_EDE_CBC_SHA
292 * TLS_PSK_WITH_RC4_128_SHA
Paul Bakkerd4a56ec2013-04-16 18:05:29 +0200293 */
294#define POLARSSL_KEY_EXCHANGE_PSK_ENABLED
295
296/**
Paul Bakkere07f41d2013-04-19 09:08:57 +0200297 * \def POLARSSL_KEY_EXCHANGE_DHE_PSK_ENABLED
298 *
Manuel Pégourié-Gonnard09fff7e2013-09-20 13:45:36 +0200299 * Enable the DHE-PSK based ciphersuite modes in SSL / TLS.
Paul Bakkere07f41d2013-04-19 09:08:57 +0200300 *
301 * Requires: POLARSSL_DHM_C
302 *
303 * This enables the following ciphersuites (if other requisites are
304 * enabled as well):
Paul Bakker45bda902013-04-19 22:28:21 +0200305 * TLS_DHE_PSK_WITH_AES_256_GCM_SHA384
Manuel Pégourié-Gonnard9d703732013-10-25 18:01:50 +0200306 * TLS_DHE_PSK_WITH_AES_256_CBC_SHA384
307 * TLS_DHE_PSK_WITH_AES_256_CBC_SHA
308 * TLS_DHE_PSK_WITH_CAMELLIA_256_GCM_SHA384
309 * TLS_DHE_PSK_WITH_CAMELLIA_256_CBC_SHA384
310 * TLS_DHE_PSK_WITH_AES_128_GCM_SHA256
311 * TLS_DHE_PSK_WITH_AES_128_CBC_SHA256
312 * TLS_DHE_PSK_WITH_AES_128_CBC_SHA
313 * TLS_DHE_PSK_WITH_CAMELLIA_128_GCM_SHA256
314 * TLS_DHE_PSK_WITH_CAMELLIA_128_CBC_SHA256
315 * TLS_DHE_PSK_WITH_3DES_EDE_CBC_SHA
316 * TLS_DHE_PSK_WITH_RC4_128_SHA
Paul Bakkere07f41d2013-04-19 09:08:57 +0200317 */
Paul Bakker48f7a5d2013-04-19 14:30:58 +0200318#define POLARSSL_KEY_EXCHANGE_DHE_PSK_ENABLED
Paul Bakkere07f41d2013-04-19 09:08:57 +0200319
320/**
Manuel Pégourié-Gonnard3ce3bbd2013-10-11 16:53:50 +0200321 * \def POLARSSL_KEY_EXCHANGE_ECDHE_PSK_ENABLED
322 *
323 * Enable the ECDHE-PSK based ciphersuite modes in SSL / TLS.
324 *
325 * Requires: POLARSSL_ECDH_C
326 *
327 * This enables the following ciphersuites (if other requisites are
328 * enabled as well):
Manuel Pégourié-Gonnard225d6aa2013-10-11 19:07:56 +0200329 * TLS_ECDHE_PSK_WITH_AES_256_CBC_SHA384
Manuel Pégourié-Gonnard9d703732013-10-25 18:01:50 +0200330 * TLS_ECDHE_PSK_WITH_AES_256_CBC_SHA
Manuel Pégourié-Gonnard225d6aa2013-10-11 19:07:56 +0200331 * TLS_ECDHE_PSK_WITH_CAMELLIA_256_CBC_SHA384
Manuel Pégourié-Gonnard9d703732013-10-25 18:01:50 +0200332 * TLS_ECDHE_PSK_WITH_AES_128_CBC_SHA256
333 * TLS_ECDHE_PSK_WITH_AES_128_CBC_SHA
334 * TLS_ECDHE_PSK_WITH_CAMELLIA_128_CBC_SHA256
335 * TLS_ECDHE_PSK_WITH_3DES_EDE_CBC_SHA
336 * TLS_ECDHE_PSK_WITH_RC4_128_SHA
Manuel Pégourié-Gonnard3ce3bbd2013-10-11 16:53:50 +0200337 */
338#define POLARSSL_KEY_EXCHANGE_ECDHE_PSK_ENABLED
339
340/**
Paul Bakkere07f41d2013-04-19 09:08:57 +0200341 * \def POLARSSL_KEY_EXCHANGE_RSA_PSK_ENABLED
342 *
Manuel Pégourié-Gonnard09fff7e2013-09-20 13:45:36 +0200343 * Enable the RSA-PSK based ciphersuite modes in SSL / TLS.
Manuel Pégourié-Gonnard0fae60b2013-10-14 17:39:48 +0200344 *
Manuel Pégourié-Gonnard1032c1d2013-09-18 17:18:34 +0200345 * Requires: POLARSSL_RSA_C, POLARSSL_PKCS1_V15,
Manuel Pégourié-Gonnardcbf3ef32013-09-23 12:20:02 +0200346 * POLARSSL_X509_CRT_PARSE_C
Paul Bakkere07f41d2013-04-19 09:08:57 +0200347 *
348 * This enables the following ciphersuites (if other requisites are
349 * enabled as well):
Paul Bakker45bda902013-04-19 22:28:21 +0200350 * TLS_RSA_PSK_WITH_AES_256_GCM_SHA384
Manuel Pégourié-Gonnard9d703732013-10-25 18:01:50 +0200351 * TLS_RSA_PSK_WITH_AES_256_CBC_SHA384
352 * TLS_RSA_PSK_WITH_AES_256_CBC_SHA
353 * TLS_RSA_PSK_WITH_CAMELLIA_256_GCM_SHA384
354 * TLS_RSA_PSK_WITH_CAMELLIA_256_CBC_SHA384
355 * TLS_RSA_PSK_WITH_AES_128_GCM_SHA256
356 * TLS_RSA_PSK_WITH_AES_128_CBC_SHA256
357 * TLS_RSA_PSK_WITH_AES_128_CBC_SHA
358 * TLS_RSA_PSK_WITH_CAMELLIA_128_GCM_SHA256
359 * TLS_RSA_PSK_WITH_CAMELLIA_128_CBC_SHA256
360 * TLS_RSA_PSK_WITH_3DES_EDE_CBC_SHA
361 * TLS_RSA_PSK_WITH_RC4_128_SHA
Paul Bakkere07f41d2013-04-19 09:08:57 +0200362 */
Manuel Pégourié-Gonnard0fae60b2013-10-14 17:39:48 +0200363#define POLARSSL_KEY_EXCHANGE_RSA_PSK_ENABLED
Paul Bakkere07f41d2013-04-19 09:08:57 +0200364
365/**
366 * \def POLARSSL_KEY_EXCHANGE_RSA_ENABLED
367 *
Manuel Pégourié-Gonnard09fff7e2013-09-20 13:45:36 +0200368 * Enable the RSA-only based ciphersuite modes in SSL / TLS.
Paul Bakkere07f41d2013-04-19 09:08:57 +0200369 *
Manuel Pégourié-Gonnard1032c1d2013-09-18 17:18:34 +0200370 * Requires: POLARSSL_RSA_C, POLARSSL_PKCS1_V15,
Manuel Pégourié-Gonnardcbf3ef32013-09-23 12:20:02 +0200371 * POLARSSL_X509_CRT_PARSE_C
Paul Bakkere07f41d2013-04-19 09:08:57 +0200372 *
373 * This enables the following ciphersuites (if other requisites are
374 * enabled as well):
Paul Bakkere07f41d2013-04-19 09:08:57 +0200375 * TLS_RSA_WITH_AES_256_GCM_SHA384
Manuel Pégourié-Gonnard9d703732013-10-25 18:01:50 +0200376 * TLS_RSA_WITH_AES_256_CBC_SHA256
377 * TLS_RSA_WITH_AES_256_CBC_SHA
378 * TLS_RSA_WITH_CAMELLIA_256_GCM_SHA384
Paul Bakkere07f41d2013-04-19 09:08:57 +0200379 * TLS_RSA_WITH_CAMELLIA_256_CBC_SHA256
Manuel Pégourié-Gonnard9d703732013-10-25 18:01:50 +0200380 * TLS_RSA_WITH_CAMELLIA_256_CBC_SHA
381 * TLS_RSA_WITH_AES_128_GCM_SHA256
382 * TLS_RSA_WITH_AES_128_CBC_SHA256
383 * TLS_RSA_WITH_AES_128_CBC_SHA
384 * TLS_RSA_WITH_CAMELLIA_128_GCM_SHA256
385 * TLS_RSA_WITH_CAMELLIA_128_CBC_SHA256
386 * TLS_RSA_WITH_CAMELLIA_128_CBC_SHA
Paul Bakkere07f41d2013-04-19 09:08:57 +0200387 * TLS_RSA_WITH_3DES_EDE_CBC_SHA
Manuel Pégourié-Gonnard9d703732013-10-25 18:01:50 +0200388 * TLS_RSA_WITH_RC4_128_SHA
389 * TLS_RSA_WITH_RC4_128_MD5
Paul Bakkere07f41d2013-04-19 09:08:57 +0200390 */
391#define POLARSSL_KEY_EXCHANGE_RSA_ENABLED
392
393/**
394 * \def POLARSSL_KEY_EXCHANGE_DHE_RSA_ENABLED
395 *
Manuel Pégourié-Gonnard09fff7e2013-09-20 13:45:36 +0200396 * Enable the DHE-RSA based ciphersuite modes in SSL / TLS.
Paul Bakkere07f41d2013-04-19 09:08:57 +0200397 *
Manuel Pégourié-Gonnard1032c1d2013-09-18 17:18:34 +0200398 * Requires: POLARSSL_DHM_C, POLARSSL_RSA_C, POLARSSL_PKCS1_V15,
Manuel Pégourié-Gonnardcbf3ef32013-09-23 12:20:02 +0200399 * POLARSSL_X509_CRT_PARSE_C
Paul Bakkere07f41d2013-04-19 09:08:57 +0200400 *
401 * This enables the following ciphersuites (if other requisites are
402 * enabled as well):
Manuel Pégourié-Gonnard9d703732013-10-25 18:01:50 +0200403 * TLS_DHE_RSA_WITH_AES_256_GCM_SHA384
Paul Bakkere07f41d2013-04-19 09:08:57 +0200404 * TLS_DHE_RSA_WITH_AES_256_CBC_SHA256
Manuel Pégourié-Gonnard9d703732013-10-25 18:01:50 +0200405 * TLS_DHE_RSA_WITH_AES_256_CBC_SHA
406 * TLS_DHE_RSA_WITH_CAMELLIA_256_GCM_SHA384
Paul Bakkere07f41d2013-04-19 09:08:57 +0200407 * TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA256
Manuel Pégourié-Gonnard9d703732013-10-25 18:01:50 +0200408 * TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA
409 * TLS_DHE_RSA_WITH_AES_128_GCM_SHA256
410 * TLS_DHE_RSA_WITH_AES_128_CBC_SHA256
411 * TLS_DHE_RSA_WITH_AES_128_CBC_SHA
412 * TLS_DHE_RSA_WITH_CAMELLIA_128_GCM_SHA256
413 * TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA256
414 * TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA
Paul Bakkere07f41d2013-04-19 09:08:57 +0200415 * TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA
416 */
417#define POLARSSL_KEY_EXCHANGE_DHE_RSA_ENABLED
418
419/**
420 * \def POLARSSL_KEY_EXCHANGE_ECDHE_RSA_ENABLED
421 *
Manuel Pégourié-Gonnard09fff7e2013-09-20 13:45:36 +0200422 * Enable the ECDHE-RSA based ciphersuite modes in SSL / TLS.
Paul Bakkere07f41d2013-04-19 09:08:57 +0200423 *
Manuel Pégourié-Gonnard1032c1d2013-09-18 17:18:34 +0200424 * Requires: POLARSSL_ECDH_C, POLARSSL_RSA_C, POLARSSL_PKCS1_V15,
Manuel Pégourié-Gonnardcbf3ef32013-09-23 12:20:02 +0200425 * POLARSSL_X509_CRT_PARSE_C
Paul Bakkere07f41d2013-04-19 09:08:57 +0200426 *
427 * This enables the following ciphersuites (if other requisites are
428 * enabled as well):
Paul Bakkere07f41d2013-04-19 09:08:57 +0200429 * TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
Manuel Pégourié-Gonnard9d703732013-10-25 18:01:50 +0200430 * TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384
431 * TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA
432 * TLS_ECDHE_RSA_WITH_CAMELLIA_256_GCM_SHA384
Paul Bakkere07f41d2013-04-19 09:08:57 +0200433 * TLS_ECDHE_RSA_WITH_CAMELLIA_256_CBC_SHA384
Manuel Pégourié-Gonnard9d703732013-10-25 18:01:50 +0200434 * TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
435 * TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256
436 * TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA
437 * TLS_ECDHE_RSA_WITH_CAMELLIA_128_GCM_SHA256
438 * TLS_ECDHE_RSA_WITH_CAMELLIA_128_CBC_SHA256
439 * TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA
440 * TLS_ECDHE_RSA_WITH_RC4_128_SHA
Paul Bakkere07f41d2013-04-19 09:08:57 +0200441 */
442#define POLARSSL_KEY_EXCHANGE_ECDHE_RSA_ENABLED
443
444/**
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +0200445 * \def POLARSSL_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED
446 *
Manuel Pégourié-Gonnard09fff7e2013-09-20 13:45:36 +0200447 * Enable the ECDHE-ECDSA based ciphersuite modes in SSL / TLS.
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +0200448 *
Manuel Pégourié-Gonnard1032c1d2013-09-18 17:18:34 +0200449 * Requires: POLARSSL_ECDH_C, POLARSSL_ECDSA_C, POLARSSL_X509_CRT_PARSE_C,
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +0200450 *
451 * This enables the following ciphersuites (if other requisites are
452 * enabled as well):
Manuel Pégourié-Gonnard9d703732013-10-25 18:01:50 +0200453 * TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384
454 * TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384
455 * TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA
456 * TLS_ECDHE_ECDSA_WITH_CAMELLIA_256_GCM_SHA384
457 * TLS_ECDHE_ECDSA_WITH_CAMELLIA_256_CBC_SHA384
458 * TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
459 * TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256
460 * TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA
461 * TLS_ECDHE_ECDSA_WITH_CAMELLIA_128_GCM_SHA256
462 * TLS_ECDHE_ECDSA_WITH_CAMELLIA_128_CBC_SHA256
463 * TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA
464 * TLS_ECDHE_ECDSA_WITH_RC4_128_SHA
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +0200465 */
466#define POLARSSL_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED
467
468/**
Paul Bakkere2ab84f2013-06-29 18:24:32 +0200469 * \def POLARSSL_ERROR_STRERROR_BC
470 *
471 * Make available the backward compatible error_strerror() next to the
472 * current polarssl_strerror().
473 *
474 * Disable if you run into name conflicts and want to really remove the
475 * error_strerror()
476 */
477#define POLARSSL_ERROR_STRERROR_BC
478
479/**
Paul Bakker8fe40dc2013-02-02 12:43:08 +0100480 * \def POLARSSL_ERROR_STRERROR_DUMMY
481 *
Paul Bakkereba3ccf2013-09-09 15:55:12 +0200482 * Enable a dummy error function to make use of polarssl_strerror() in
Paul Bakker8fe40dc2013-02-02 12:43:08 +0100483 * third party libraries easier.
484 *
485 * Disable if you run into name conflicts and want to really remove the
Paul Bakkereba3ccf2013-09-09 15:55:12 +0200486 * polarssl_strerror()
Paul Bakker8fe40dc2013-02-02 12:43:08 +0100487 */
488#define POLARSSL_ERROR_STRERROR_DUMMY
489
490/**
Paul Bakker15566e42011-04-24 21:19:15 +0000491 * \def POLARSSL_GENPRIME
Paul Bakkerf3b86c12011-01-27 15:24:17 +0000492 *
Manuel Pégourié-Gonnardfe286462013-09-20 14:10:14 +0200493 * Enable the prime-number generation code.
Manuel Pégourié-Gonnard09fff7e2013-09-20 13:45:36 +0200494 *
Manuel Pégourié-Gonnardfe286462013-09-20 14:10:14 +0200495 * Requires: POLARSSL_BIGNUM_C
Paul Bakker5121ce52009-01-03 21:22:43 +0000496 */
Paul Bakker15566e42011-04-24 21:19:15 +0000497#define POLARSSL_GENPRIME
Paul Bakker5121ce52009-01-03 21:22:43 +0000498
Paul Bakkerf3b86c12011-01-27 15:24:17 +0000499/**
Paul Bakker335db3f2011-04-25 15:28:35 +0000500 * \def POLARSSL_FS_IO
501 *
502 * Enable functions that use the filesystem.
503 */
504#define POLARSSL_FS_IO
505
506/**
Paul Bakker43655f42011-12-15 20:11:16 +0000507 * \def POLARSSL_NO_DEFAULT_ENTROPY_SOURCES
508 *
509 * Do not add default entropy sources. These are the platform specific,
510 * hardclock and HAVEGE based poll functions.
511 *
512 * This is useful to have more control over the added entropy sources in an
513 * application.
514 *
515 * Uncomment this macro to prevent loading of default entropy functions.
Paul Bakker43655f42011-12-15 20:11:16 +0000516 */
Paul Bakkera7ea6a52013-10-15 11:55:10 +0200517//#define POLARSSL_NO_DEFAULT_ENTROPY_SOURCES
Paul Bakker43655f42011-12-15 20:11:16 +0000518
519/**
Paul Bakker6083fd22011-12-03 21:45:14 +0000520 * \def POLARSSL_NO_PLATFORM_ENTROPY
521 *
522 * Do not use built-in platform entropy functions.
523 * This is useful if your platform does not support
524 * standards like the /dev/urandom or Windows CryptoAPI.
525 *
526 * Uncomment this macro to disable the built-in platform entropy functions.
Paul Bakker6083fd22011-12-03 21:45:14 +0000527 */
Paul Bakkera7ea6a52013-10-15 11:55:10 +0200528//#define POLARSSL_NO_PLATFORM_ENTROPY
Paul Bakker6083fd22011-12-03 21:45:14 +0000529
530/**
Paul Bakker6e339b52013-07-03 13:37:05 +0200531 * \def POLARSSL_MEMORY_DEBUG
532 *
533 * Enable debugging of buffer allocator memory issues. Automatically prints
534 * (to stderr) all (fatal) messages on memory allocation issues. Enables
535 * function for 'debug output' of allocated memory.
536 *
537 * Requires: POLARSSL_MEMORY_BUFFER_ALLOC_C
538 * fprintf()
539 *
540 * Uncomment this macro to let the buffer allocator print out error messages.
Paul Bakkera7ea6a52013-10-15 11:55:10 +0200541 */
542//#define POLARSSL_MEMORY_DEBUG
Paul Bakker6e339b52013-07-03 13:37:05 +0200543
544/**
545 * \def POLARSSL_MEMORY_BACKTRACE
546 *
547 * Include backtrace information with each allocated block.
548 *
549 * Requires: POLARSSL_MEMORY_BUFFER_ALLOC_C
550 * GLIBC-compatible backtrace() an backtrace_symbols() support
551 *
552 * Uncomment this macro to include backtrace information
Paul Bakker6e339b52013-07-03 13:37:05 +0200553 */
Paul Bakkera7ea6a52013-10-15 11:55:10 +0200554//#define POLARSSL_MEMORY_BACKTRACE
Paul Bakker6e339b52013-07-03 13:37:05 +0200555
556/**
Paul Bakker48377d92013-08-30 12:06:24 +0200557 * \def POLARSSL_PKCS1_V15
558 *
Manuel Pégourié-Gonnard09fff7e2013-09-20 13:45:36 +0200559 * Enable support for PKCS#1 v1.5 encoding.
560 *
Paul Bakker48377d92013-08-30 12:06:24 +0200561 * Requires: POLARSSL_RSA_C
562 *
Paul Bakker48377d92013-08-30 12:06:24 +0200563 * This enables support for PKCS#1 v1.5 operations.
564 */
565#define POLARSSL_PKCS1_V15
566
567/**
Paul Bakker9dcc3222011-03-08 14:16:06 +0000568 * \def POLARSSL_PKCS1_V21
569 *
Manuel Pégourié-Gonnard09fff7e2013-09-20 13:45:36 +0200570 * Enable support for PKCS#1 v2.1 encoding.
571 *
Paul Bakker5690efc2011-05-26 13:16:06 +0000572 * Requires: POLARSSL_MD_C, POLARSSL_RSA_C
573 *
Paul Bakker9dcc3222011-03-08 14:16:06 +0000574 * This enables support for RSAES-OAEP and RSASSA-PSS operations.
575 */
576#define POLARSSL_PKCS1_V21
577
578/**
Paul Bakker0216cc12011-03-26 13:40:23 +0000579 * \def POLARSSL_RSA_NO_CRT
580 *
581 * Do not use the Chinese Remainder Theorem for the RSA private operation.
582 *
583 * Uncomment this macro to disable the use of CRT in RSA.
584 *
Paul Bakker0216cc12011-03-26 13:40:23 +0000585 */
Paul Bakkera7ea6a52013-10-15 11:55:10 +0200586//#define POLARSSL_RSA_NO_CRT
Paul Bakker15566e42011-04-24 21:19:15 +0000587
588/**
589 * \def POLARSSL_SELF_TEST
590 *
591 * Enable the checkup functions (*_self_test).
592 */
593#define POLARSSL_SELF_TEST
Paul Bakker5c721f92011-07-27 16:51:09 +0000594
595/**
Paul Bakker40865c82013-01-31 17:13:13 +0100596 * \def POLARSSL_SSL_ALL_ALERT_MESSAGES
597 *
598 * Enable sending of alert messages in case of encountered errors as per RFC.
599 * If you choose not to send the alert messages, PolarSSL can still communicate
600 * with other servers, only debugging of failures is harder.
601 *
602 * The advantage of not sending alert messages, is that no information is given
603 * about reasons for failures thus preventing adversaries of gaining intel.
604 *
605 * Enable sending of all alert messages
606 */
607#define POLARSSL_SSL_ALERT_MESSAGES
608
609/**
Paul Bakkerd66f0702013-01-31 16:57:45 +0100610 * \def POLARSSL_SSL_DEBUG_ALL
611 *
612 * Enable the debug messages in SSL module for all issues.
613 * Debug messages have been disabled in some places to prevent timing
614 * attacks due to (unbalanced) debugging function calls.
615 *
616 * If you need all error reporting you should enable this during debugging,
617 * but remove this for production servers that should log as well.
618 *
619 * Uncomment this macro to report all debug messages on errors introducing
620 * a timing side-channel.
621 *
Paul Bakkerd66f0702013-01-31 16:57:45 +0100622 */
Paul Bakkera7ea6a52013-10-15 11:55:10 +0200623//#define POLARSSL_SSL_DEBUG_ALL
Paul Bakkerd66f0702013-01-31 16:57:45 +0100624
625/**
Paul Bakker05ef8352012-05-08 09:17:57 +0000626 * \def POLARSSL_SSL_HW_RECORD_ACCEL
627 *
628 * Enable hooking functions in SSL module for hardware acceleration of
629 * individual records.
630 *
631 * Uncomment this macro to enable hooking functions.
Paul Bakker05ef8352012-05-08 09:17:57 +0000632 */
Paul Bakkera7ea6a52013-10-15 11:55:10 +0200633//#define POLARSSL_SSL_HW_RECORD_ACCEL
Paul Bakker05ef8352012-05-08 09:17:57 +0000634
635/**
Paul Bakker78a8c712013-03-06 17:01:52 +0100636 * \def POLARSSL_SSL_SRV_SUPPORT_SSLV2_CLIENT_HELLO
637 *
638 * Enable support for receiving and parsing SSLv2 Client Hello messages for the
Manuel Pégourié-Gonnard09fff7e2013-09-20 13:45:36 +0200639 * SSL Server module (POLARSSL_SSL_SRV_C).
Paul Bakker78a8c712013-03-06 17:01:52 +0100640 *
641 * Comment this macro to disable support for SSLv2 Client Hello messages.
642 */
643#define POLARSSL_SSL_SRV_SUPPORT_SSLV2_CLIENT_HELLO
644
645/**
Manuel Pégourié-Gonnard1a9f2c72013-11-30 18:30:06 +0100646 * \def POLARSSL_SSL_SRV_RESPECT_CLIENT_PREFERENCE
647 *
648 * Pick the ciphersuite according to the client's preferences rather than ours
649 * in the SSL Server module (POLARSSL_SSL_SRV_C).
650 *
651 * Uncomment this macro to respect client's ciphersuite order
652 */
653//#define POLARSSL_SSL_SRV_RESPECT_CLIENT_PREFERENCE
654
655/**
Paul Bakker05decb22013-08-15 13:33:48 +0200656 * \def POLARSSL_SSL_MAX_FRAGMENT_LENGTH
657 *
Manuel Pégourié-Gonnard09fff7e2013-09-20 13:45:36 +0200658 * Enable support for RFC 6066 max_fragment_length extension in SSL.
Paul Bakker05decb22013-08-15 13:33:48 +0200659 *
660 * Comment this macro to disable support for the max_fragment_length extension
661 */
662#define POLARSSL_SSL_MAX_FRAGMENT_LENGTH
663
664/**
Paul Bakkerd2f068e2013-08-27 21:19:20 +0200665 * \def POLARSSL_SSL_PROTO_SSL3
666 *
Manuel Pégourié-Gonnard09fff7e2013-09-20 13:45:36 +0200667 * Enable support for SSL 3.0.
Paul Bakkerd2f068e2013-08-27 21:19:20 +0200668 *
669 * Requires: POLARSSL_MD5_C
670 * POLARSSL_SHA1_C
671 *
672 * Comment this macro to disable support for SSL 3.0
673 */
674#define POLARSSL_SSL_PROTO_SSL3
675
676/**
677 * \def POLARSSL_SSL_PROTO_TLS1
678 *
Manuel Pégourié-Gonnard09fff7e2013-09-20 13:45:36 +0200679 * Enable support for TLS 1.0.
Paul Bakkerd2f068e2013-08-27 21:19:20 +0200680 *
681 * Requires: POLARSSL_MD5_C
682 * POLARSSL_SHA1_C
683 *
684 * Comment this macro to disable support for TLS 1.0
685 */
686#define POLARSSL_SSL_PROTO_TLS1
687
688/**
689 * \def POLARSSL_SSL_PROTO_TLS1_1
690 *
Manuel Pégourié-Gonnard09fff7e2013-09-20 13:45:36 +0200691 * Enable support for TLS 1.1.
Paul Bakkerd2f068e2013-08-27 21:19:20 +0200692 *
693 * Requires: POLARSSL_MD5_C
694 * POLARSSL_SHA1_C
695 *
696 * Comment this macro to disable support for TLS 1.1
697 */
698#define POLARSSL_SSL_PROTO_TLS1_1
699
700/**
701 * \def POLARSSL_SSL_PROTO_TLS1_2
702 *
Manuel Pégourié-Gonnard09fff7e2013-09-20 13:45:36 +0200703 * Enable support for TLS 1.2.
Paul Bakkerd2f068e2013-08-27 21:19:20 +0200704 *
Manuel Pégourié-Gonnard7c3291e2013-10-27 14:29:51 +0100705 * Requires: POLARSSL_SHA1_C or POLARSSL_SHA256_C or POLARSSL_SHA512_C
Paul Bakkerd2f068e2013-08-27 21:19:20 +0200706 * (Depends on ciphersuites)
707 *
708 * Comment this macro to disable support for TLS 1.2
709 */
710#define POLARSSL_SSL_PROTO_TLS1_2
711
712/**
Paul Bakkera503a632013-08-14 13:48:06 +0200713 * \def POLARSSL_SSL_SESSION_TICKETS
714 *
Manuel Pégourié-Gonnard09fff7e2013-09-20 13:45:36 +0200715 * Enable support for RFC 5077 session tickets in SSL.
Paul Bakkera503a632013-08-14 13:48:06 +0200716 *
717 * Requires: POLARSSL_AES_C
718 * POLARSSL_SHA256_C
Manuel Pégourié-Gonnard92cb1d32013-09-13 16:24:20 +0200719 * POLARSSL_CIPHER_MODE_CBC
Paul Bakkera503a632013-08-14 13:48:06 +0200720 *
721 * Comment this macro to disable support for SSL session tickets
722 */
723#define POLARSSL_SSL_SESSION_TICKETS
724
725/**
Paul Bakker0be444a2013-08-27 21:55:01 +0200726 * \def POLARSSL_SSL_SERVER_NAME_INDICATION
727 *
Manuel Pégourié-Gonnard09fff7e2013-09-20 13:45:36 +0200728 * Enable support for RFC 6066 server name indication (SNI) in SSL.
Paul Bakker0be444a2013-08-27 21:55:01 +0200729 *
730 * Comment this macro to disable support for server name indication in SSL
731 */
732#define POLARSSL_SSL_SERVER_NAME_INDICATION
733
734/**
Paul Bakker1f2bc622013-08-15 13:45:55 +0200735 * \def POLARSSL_SSL_TRUNCATED_HMAC
736 *
Manuel Pégourié-Gonnard09fff7e2013-09-20 13:45:36 +0200737 * Enable support for RFC 6066 truncated HMAC in SSL.
Paul Bakker1f2bc622013-08-15 13:45:55 +0200738 *
739 * Comment this macro to disable support for truncated HMAC in SSL
740 */
741#define POLARSSL_SSL_TRUNCATED_HMAC
742
743/**
Paul Bakker2466d932013-09-28 14:40:38 +0200744 * \def POLARSSL_THREADING_ALT
745 *
746 * Provide your own alternate threading implementation.
747 *
748 * Requires: POLARSSL_THREADING_C
749 *
750 * Uncomment this to allow your own alternate threading implementation.
Paul Bakker2466d932013-09-28 14:40:38 +0200751 */
Paul Bakkera7ea6a52013-10-15 11:55:10 +0200752//#define POLARSSL_THREADING_ALT
Paul Bakker2466d932013-09-28 14:40:38 +0200753
754/**
755 * \def POLARSSL_THREADING_DUMMY
756 *
757 * Provide a dummy threading implementation.
Paul Bakker6838bd12013-09-30 13:56:38 +0200758 * Warning: If you use this, all claims of thread-safety in the documentation
759 * are void!
Paul Bakker2466d932013-09-28 14:40:38 +0200760 *
761 * Requires: POLARSSL_THREADING_C
762 *
763 * Uncomment this to enable code to compile like with threading enabled
Paul Bakker2466d932013-09-28 14:40:38 +0200764 */
Paul Bakkera7ea6a52013-10-15 11:55:10 +0200765//#define POLARSSL_THREADING_DUMMY
Paul Bakker2466d932013-09-28 14:40:38 +0200766
767/**
768 * \def POLARSSL_THREADING_PTHREAD
769 *
770 * Enable the pthread wrapper layer for the threading layer.
771 *
772 * Requires: POLARSSL_THREADING_C
773 *
774 * Uncomment this to enable pthread mutexes.
Paul Bakker2466d932013-09-28 14:40:38 +0200775 */
Paul Bakkera7ea6a52013-10-15 11:55:10 +0200776//#define POLARSSL_THREADING_PTHREAD
Paul Bakker2466d932013-09-28 14:40:38 +0200777
778/**
Paul Bakkerc27c4e22013-09-23 15:01:36 +0200779 * \def POLARSSL_X509_ALLOW_EXTENSIONS_NON_V3
780 *
781 * If set, the X509 parser will not break-off when parsing an X509 certificate
782 * and encountering an extension in a v1 or v2 certificate.
783 *
784 * Uncomment to prevent an error.
Paul Bakkerc27c4e22013-09-23 15:01:36 +0200785 */
Paul Bakkera7ea6a52013-10-15 11:55:10 +0200786//#define POLARSSL_X509_ALLOW_EXTENSIONS_NON_V3
Paul Bakkerc27c4e22013-09-23 15:01:36 +0200787
788/**
Paul Bakker5c721f92011-07-27 16:51:09 +0000789 * \def POLARSSL_X509_ALLOW_UNSUPPORTED_CRITICAL_EXTENSION
790 *
791 * If set, the X509 parser will not break-off when parsing an X509 certificate
792 * and encountering an unknown critical extension.
793 *
794 * Uncomment to prevent an error.
Paul Bakker5c721f92011-07-27 16:51:09 +0000795 */
Paul Bakkera7ea6a52013-10-15 11:55:10 +0200796//#define POLARSSL_X509_ALLOW_UNSUPPORTED_CRITICAL_EXTENSION
Paul Bakker2770fbd2012-07-03 13:30:23 +0000797
798/**
799 * \def POLARSSL_ZLIB_SUPPORT
800 *
801 * If set, the SSL/TLS module uses ZLIB to support compression and
802 * decompression of packet data.
803 *
804 * Used in: library/ssl_tls.c
805 * library/ssl_cli.c
806 * library/ssl_srv.c
807 *
808 * This feature requires zlib library and headers to be present.
809 *
810 * Uncomment to enable use of ZLIB
Paul Bakker2770fbd2012-07-03 13:30:23 +0000811 */
Paul Bakkera7ea6a52013-10-15 11:55:10 +0200812//#define POLARSSL_ZLIB_SUPPORT
Manuel Pégourié-Gonnard09fff7e2013-09-20 13:45:36 +0200813/* \} name SECTION: PolarSSL feature support */
Paul Bakker0a62cd12011-01-21 11:00:08 +0000814
Paul Bakkerf3b86c12011-01-27 15:24:17 +0000815/**
Paul Bakker0a62cd12011-01-21 11:00:08 +0000816 * \name SECTION: PolarSSL modules
817 *
818 * This section enables or disables entire modules in PolarSSL
819 * \{
820 */
Paul Bakker5121ce52009-01-03 21:22:43 +0000821
Paul Bakkerf3b86c12011-01-27 15:24:17 +0000822/**
823 * \def POLARSSL_AES_C
824 *
825 * Enable the AES block cipher.
826 *
Paul Bakker5121ce52009-01-03 21:22:43 +0000827 * Module: library/aes.c
828 * Caller: library/ssl_tls.c
Paul Bakker96743fc2011-02-12 14:30:57 +0000829 * library/pem.c
Paul Bakker6083fd22011-12-03 21:45:14 +0000830 * library/ctr_drbg.c
Paul Bakker5121ce52009-01-03 21:22:43 +0000831 *
Paul Bakker645ce3a2012-10-31 12:32:41 +0000832 * This module enables the following ciphersuites (if other requisites are
833 * enabled as well):
Manuel Pégourié-Gonnard9d703732013-10-25 18:01:50 +0200834 * TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384
835 * TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
836 * TLS_DHE_RSA_WITH_AES_256_GCM_SHA384
837 * TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384
838 * TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384
Paul Bakker645ce3a2012-10-31 12:32:41 +0000839 * TLS_DHE_RSA_WITH_AES_256_CBC_SHA256
Manuel Pégourié-Gonnard9d703732013-10-25 18:01:50 +0200840 * TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA
Paul Bakker41c83d32013-03-20 14:39:14 +0100841 * TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA
Manuel Pégourié-Gonnard9d703732013-10-25 18:01:50 +0200842 * TLS_DHE_RSA_WITH_AES_256_CBC_SHA
843 * TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
844 * TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
845 * TLS_DHE_RSA_WITH_AES_128_GCM_SHA256
846 * TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256
847 * TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256
848 * TLS_DHE_RSA_WITH_AES_128_CBC_SHA256
849 * TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA
850 * TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA
851 * TLS_DHE_RSA_WITH_AES_128_CBC_SHA
852 * TLS_DHE_PSK_WITH_AES_256_GCM_SHA384
853 * TLS_ECDHE_PSK_WITH_AES_256_CBC_SHA384
854 * TLS_DHE_PSK_WITH_AES_256_CBC_SHA384
855 * TLS_ECDHE_PSK_WITH_AES_256_CBC_SHA
856 * TLS_DHE_PSK_WITH_AES_256_CBC_SHA
857 * TLS_DHE_PSK_WITH_AES_128_GCM_SHA256
858 * TLS_ECDHE_PSK_WITH_AES_128_CBC_SHA256
859 * TLS_DHE_PSK_WITH_AES_128_CBC_SHA256
860 * TLS_ECDHE_PSK_WITH_AES_128_CBC_SHA
861 * TLS_DHE_PSK_WITH_AES_128_CBC_SHA
862 * TLS_RSA_WITH_AES_256_GCM_SHA384
863 * TLS_RSA_WITH_AES_256_CBC_SHA256
864 * TLS_RSA_WITH_AES_256_CBC_SHA
865 * TLS_RSA_WITH_AES_128_GCM_SHA256
866 * TLS_RSA_WITH_AES_128_CBC_SHA256
867 * TLS_RSA_WITH_AES_128_CBC_SHA
868 * TLS_RSA_PSK_WITH_AES_256_GCM_SHA384
869 * TLS_RSA_PSK_WITH_AES_256_CBC_SHA384
870 * TLS_RSA_PSK_WITH_AES_256_CBC_SHA
871 * TLS_RSA_PSK_WITH_AES_128_GCM_SHA256
872 * TLS_RSA_PSK_WITH_AES_128_CBC_SHA256
873 * TLS_RSA_PSK_WITH_AES_128_CBC_SHA
874 * TLS_PSK_WITH_AES_256_GCM_SHA384
875 * TLS_PSK_WITH_AES_256_CBC_SHA384
Paul Bakkerd4a56ec2013-04-16 18:05:29 +0200876 * TLS_PSK_WITH_AES_256_CBC_SHA
Manuel Pégourié-Gonnard9d703732013-10-25 18:01:50 +0200877 * TLS_PSK_WITH_AES_128_GCM_SHA256
878 * TLS_PSK_WITH_AES_128_CBC_SHA256
879 * TLS_PSK_WITH_AES_128_CBC_SHA
Paul Bakker6deb37e2013-02-19 13:17:08 +0100880 *
Paul Bakkercff68422013-09-15 20:43:33 +0200881 * PEM_PARSE uses AES for decrypting encrypted keys.
Paul Bakker5121ce52009-01-03 21:22:43 +0000882 */
Paul Bakker40e46942009-01-03 21:51:57 +0000883#define POLARSSL_AES_C
Paul Bakker5121ce52009-01-03 21:22:43 +0000884
Paul Bakkerf3b86c12011-01-27 15:24:17 +0000885/**
886 * \def POLARSSL_ARC4_C
887 *
888 * Enable the ARCFOUR stream cipher.
889 *
Paul Bakker5121ce52009-01-03 21:22:43 +0000890 * Module: library/arc4.c
891 * Caller: library/ssl_tls.c
892 *
Paul Bakker41c83d32013-03-20 14:39:14 +0100893 * This module enables the following ciphersuites (if other requisites are
894 * enabled as well):
Manuel Pégourié-Gonnard9d703732013-10-25 18:01:50 +0200895 * TLS_ECDHE_ECDSA_WITH_RC4_128_SHA
Paul Bakker41c83d32013-03-20 14:39:14 +0100896 * TLS_ECDHE_RSA_WITH_RC4_128_SHA
Manuel Pégourié-Gonnard9d703732013-10-25 18:01:50 +0200897 * TLS_ECDHE_PSK_WITH_RC4_128_SHA
898 * TLS_DHE_PSK_WITH_RC4_128_SHA
899 * TLS_RSA_WITH_RC4_128_SHA
900 * TLS_RSA_WITH_RC4_128_MD5
901 * TLS_RSA_PSK_WITH_RC4_128_SHA
Paul Bakkerd4a56ec2013-04-16 18:05:29 +0200902 * TLS_PSK_WITH_RC4_128_SHA
Paul Bakker5121ce52009-01-03 21:22:43 +0000903 */
Paul Bakker40e46942009-01-03 21:51:57 +0000904#define POLARSSL_ARC4_C
Paul Bakker5121ce52009-01-03 21:22:43 +0000905
Paul Bakkerf3b86c12011-01-27 15:24:17 +0000906/**
Paul Bakkerefc30292011-11-10 14:43:23 +0000907 * \def POLARSSL_ASN1_PARSE_C
908 *
909 * Enable the generic ASN1 parser.
910 *
911 * Module: library/asn1.c
Manuel Pégourié-Gonnardfe286462013-09-20 14:10:14 +0200912 * Caller: library/x509.c
913 * library/dhm.c
914 * library/pkcs12.c
915 * library/pkcs5.c
916 * library/pkparse.c
Paul Bakkerefc30292011-11-10 14:43:23 +0000917 */
918#define POLARSSL_ASN1_PARSE_C
919
920/**
Paul Bakkerbdb912d2012-02-13 23:11:30 +0000921 * \def POLARSSL_ASN1_WRITE_C
922 *
923 * Enable the generic ASN1 writer.
924 *
925 * Module: library/asn1write.c
Manuel Pégourié-Gonnardfe286462013-09-20 14:10:14 +0200926 * Caller: library/ecdsa.c
927 * library/pkwrite.c
928 * library/x509_create.c
929 * library/x509write_crt.c
930 * library/x509write_csr.c
Paul Bakkerbdb912d2012-02-13 23:11:30 +0000931 */
932#define POLARSSL_ASN1_WRITE_C
933
934/**
Paul Bakkerf3b86c12011-01-27 15:24:17 +0000935 * \def POLARSSL_BASE64_C
936 *
937 * Enable the Base64 module.
938 *
Paul Bakker5121ce52009-01-03 21:22:43 +0000939 * Module: library/base64.c
Paul Bakker5690efc2011-05-26 13:16:06 +0000940 * Caller: library/pem.c
Paul Bakker5121ce52009-01-03 21:22:43 +0000941 *
Paul Bakker5690efc2011-05-26 13:16:06 +0000942 * This module is required for PEM support (required by X.509).
Paul Bakker5121ce52009-01-03 21:22:43 +0000943 */
Paul Bakker40e46942009-01-03 21:51:57 +0000944#define POLARSSL_BASE64_C
Paul Bakker5121ce52009-01-03 21:22:43 +0000945
Paul Bakkerf3b86c12011-01-27 15:24:17 +0000946/**
947 * \def POLARSSL_BIGNUM_C
948 *
Paul Bakker9a736322012-11-14 12:39:52 +0000949 * Enable the multi-precision integer library.
Paul Bakkerf3b86c12011-01-27 15:24:17 +0000950 *
Paul Bakker5121ce52009-01-03 21:22:43 +0000951 * Module: library/bignum.c
952 * Caller: library/dhm.c
Manuel Pégourié-Gonnardfe286462013-09-20 14:10:14 +0200953 * library/ecp.c
Paul Bakker5121ce52009-01-03 21:22:43 +0000954 * library/rsa.c
955 * library/ssl_tls.c
Paul Bakker5121ce52009-01-03 21:22:43 +0000956 *
957 * This module is required for RSA and DHM support.
958 */
Paul Bakker40e46942009-01-03 21:51:57 +0000959#define POLARSSL_BIGNUM_C
Paul Bakker5121ce52009-01-03 21:22:43 +0000960
Paul Bakkerf3b86c12011-01-27 15:24:17 +0000961/**
Paul Bakkera9379c02012-07-04 11:02:11 +0000962 * \def POLARSSL_BLOWFISH_C
963 *
964 * Enable the Blowfish block cipher.
965 *
966 * Module: library/blowfish.c
967 */
968#define POLARSSL_BLOWFISH_C
969
970/**
Paul Bakkerf3b86c12011-01-27 15:24:17 +0000971 * \def POLARSSL_CAMELLIA_C
972 *
973 * Enable the Camellia block cipher.
974 *
Paul Bakker38119b12009-01-10 23:31:23 +0000975 * Module: library/camellia.c
Paul Bakker13e2dfe2009-07-28 07:18:38 +0000976 * Caller: library/ssl_tls.c
Paul Bakker38119b12009-01-10 23:31:23 +0000977 *
Paul Bakker645ce3a2012-10-31 12:32:41 +0000978 * This module enables the following ciphersuites (if other requisites are
979 * enabled as well):
Manuel Pégourié-Gonnard9d703732013-10-25 18:01:50 +0200980 * TLS_ECDHE_ECDSA_WITH_CAMELLIA_256_GCM_SHA384
981 * TLS_ECDHE_RSA_WITH_CAMELLIA_256_GCM_SHA384
982 * TLS_DHE_RSA_WITH_CAMELLIA_256_GCM_SHA384
983 * TLS_ECDHE_ECDSA_WITH_CAMELLIA_256_CBC_SHA384
984 * TLS_ECDHE_RSA_WITH_CAMELLIA_256_CBC_SHA384
Paul Bakker645ce3a2012-10-31 12:32:41 +0000985 * TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA256
Manuel Pégourié-Gonnard9d703732013-10-25 18:01:50 +0200986 * TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA
987 * TLS_ECDHE_ECDSA_WITH_CAMELLIA_128_GCM_SHA256
988 * TLS_ECDHE_RSA_WITH_CAMELLIA_128_GCM_SHA256
989 * TLS_DHE_RSA_WITH_CAMELLIA_128_GCM_SHA256
990 * TLS_ECDHE_ECDSA_WITH_CAMELLIA_128_CBC_SHA256
991 * TLS_ECDHE_RSA_WITH_CAMELLIA_128_CBC_SHA256
992 * TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA256
993 * TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA
994 * TLS_DHE_PSK_WITH_CAMELLIA_256_GCM_SHA384
995 * TLS_ECDHE_PSK_WITH_CAMELLIA_256_CBC_SHA384
996 * TLS_DHE_PSK_WITH_CAMELLIA_256_CBC_SHA384
997 * TLS_DHE_PSK_WITH_CAMELLIA_128_GCM_SHA256
998 * TLS_DHE_PSK_WITH_CAMELLIA_128_CBC_SHA256
999 * TLS_ECDHE_PSK_WITH_CAMELLIA_128_CBC_SHA256
1000 * TLS_RSA_WITH_CAMELLIA_256_GCM_SHA384
1001 * TLS_RSA_WITH_CAMELLIA_256_CBC_SHA256
1002 * TLS_RSA_WITH_CAMELLIA_256_CBC_SHA
1003 * TLS_RSA_WITH_CAMELLIA_128_GCM_SHA256
1004 * TLS_RSA_WITH_CAMELLIA_128_CBC_SHA256
1005 * TLS_RSA_WITH_CAMELLIA_128_CBC_SHA
1006 * TLS_RSA_PSK_WITH_CAMELLIA_256_GCM_SHA384
1007 * TLS_RSA_PSK_WITH_CAMELLIA_256_CBC_SHA384
1008 * TLS_RSA_PSK_WITH_CAMELLIA_128_GCM_SHA256
1009 * TLS_RSA_PSK_WITH_CAMELLIA_128_CBC_SHA256
1010 * TLS_PSK_WITH_CAMELLIA_256_GCM_SHA384
1011 * TLS_PSK_WITH_CAMELLIA_256_CBC_SHA384
1012 * TLS_PSK_WITH_CAMELLIA_128_GCM_SHA256
1013 * TLS_PSK_WITH_CAMELLIA_128_CBC_SHA256
Paul Bakker38119b12009-01-10 23:31:23 +00001014 */
1015#define POLARSSL_CAMELLIA_C
1016
Paul Bakkerf3b86c12011-01-27 15:24:17 +00001017/**
1018 * \def POLARSSL_CERTS_C
1019 *
1020 * Enable the test certificates.
1021 *
Paul Bakker5121ce52009-01-03 21:22:43 +00001022 * Module: library/certs.c
1023 * Caller:
1024 *
Manuel Pégourié-Gonnard18dc0e22013-10-27 14:35:02 +01001025 * Requires: POLARSSL_PEM_PARSE_C
1026 *
Paul Bakker5121ce52009-01-03 21:22:43 +00001027 * This module is used for testing (ssl_client/server).
1028 */
Paul Bakker40e46942009-01-03 21:51:57 +00001029#define POLARSSL_CERTS_C
Paul Bakker5121ce52009-01-03 21:22:43 +00001030
Paul Bakkerf3b86c12011-01-27 15:24:17 +00001031/**
1032 * \def POLARSSL_CIPHER_C
1033 *
1034 * Enable the generic cipher layer.
1035 *
Paul Bakker8123e9d2011-01-06 15:37:30 +00001036 * Module: library/cipher.c
Paul Bakker04784f52013-08-19 13:30:57 +02001037 * Caller: library/ssl_tls.c
Paul Bakker8123e9d2011-01-06 15:37:30 +00001038 *
1039 * Uncomment to enable generic cipher wrappers.
1040 */
1041#define POLARSSL_CIPHER_C
1042
Paul Bakkerf3b86c12011-01-27 15:24:17 +00001043/**
Paul Bakker0e04d0e2011-11-27 14:46:59 +00001044 * \def POLARSSL_CTR_DRBG_C
1045 *
Manuel Pégourié-Gonnard09fff7e2013-09-20 13:45:36 +02001046 * Enable the CTR_DRBG AES-256-based random generator.
Paul Bakker0e04d0e2011-11-27 14:46:59 +00001047 *
1048 * Module: library/ctr_drbg.c
1049 * Caller:
1050 *
Paul Bakker6083fd22011-12-03 21:45:14 +00001051 * Requires: POLARSSL_AES_C
1052 *
Paul Bakker0e04d0e2011-11-27 14:46:59 +00001053 * This module provides the CTR_DRBG AES-256 random number generator.
1054 */
1055#define POLARSSL_CTR_DRBG_C
1056
1057/**
Paul Bakkerf3b86c12011-01-27 15:24:17 +00001058 * \def POLARSSL_DEBUG_C
1059 *
1060 * Enable the debug functions.
1061 *
Paul Bakker5121ce52009-01-03 21:22:43 +00001062 * Module: library/debug.c
1063 * Caller: library/ssl_cli.c
1064 * library/ssl_srv.c
1065 * library/ssl_tls.c
1066 *
1067 * This module provides debugging functions.
1068 */
Paul Bakker40e46942009-01-03 21:51:57 +00001069#define POLARSSL_DEBUG_C
Paul Bakker5121ce52009-01-03 21:22:43 +00001070
Paul Bakkerf3b86c12011-01-27 15:24:17 +00001071/**
1072 * \def POLARSSL_DES_C
1073 *
1074 * Enable the DES block cipher.
1075 *
Paul Bakker5121ce52009-01-03 21:22:43 +00001076 * Module: library/des.c
Paul Bakker6deb37e2013-02-19 13:17:08 +01001077 * Caller: library/pem.c
1078 * library/ssl_tls.c
Paul Bakker5121ce52009-01-03 21:22:43 +00001079 *
Paul Bakker645ce3a2012-10-31 12:32:41 +00001080 * This module enables the following ciphersuites (if other requisites are
1081 * enabled as well):
Manuel Pégourié-Gonnard9d703732013-10-25 18:01:50 +02001082 * TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA
Paul Bakker41c83d32013-03-20 14:39:14 +01001083 * TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA
Manuel Pégourié-Gonnard9d703732013-10-25 18:01:50 +02001084 * TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA
1085 * TLS_ECDHE_PSK_WITH_3DES_EDE_CBC_SHA
1086 * TLS_DHE_PSK_WITH_3DES_EDE_CBC_SHA
1087 * TLS_RSA_WITH_3DES_EDE_CBC_SHA
1088 * TLS_RSA_PSK_WITH_3DES_EDE_CBC_SHA
Paul Bakkerd4a56ec2013-04-16 18:05:29 +02001089 * TLS_PSK_WITH_3DES_EDE_CBC_SHA
Paul Bakker6deb37e2013-02-19 13:17:08 +01001090 *
Paul Bakkercff68422013-09-15 20:43:33 +02001091 * PEM_PARSE uses DES/3DES for decrypting encrypted keys.
Paul Bakker5121ce52009-01-03 21:22:43 +00001092 */
Paul Bakker40e46942009-01-03 21:51:57 +00001093#define POLARSSL_DES_C
Paul Bakker5121ce52009-01-03 21:22:43 +00001094
Paul Bakkerf3b86c12011-01-27 15:24:17 +00001095/**
1096 * \def POLARSSL_DHM_C
1097 *
Manuel Pégourié-Gonnard9d703732013-10-25 18:01:50 +02001098 * Enable the Diffie-Hellman-Merkle module.
Paul Bakkerf3b86c12011-01-27 15:24:17 +00001099 *
Paul Bakker5121ce52009-01-03 21:22:43 +00001100 * Module: library/dhm.c
1101 * Caller: library/ssl_cli.c
1102 * library/ssl_srv.c
1103 *
Manuel Pégourié-Gonnard9d703732013-10-25 18:01:50 +02001104 * This module is used by the following key exchanges:
1105 * DHE-RSA, DHE-PSK
Paul Bakker5121ce52009-01-03 21:22:43 +00001106 */
Paul Bakker40e46942009-01-03 21:51:57 +00001107#define POLARSSL_DHM_C
Paul Bakker5121ce52009-01-03 21:22:43 +00001108
Paul Bakkerf3b86c12011-01-27 15:24:17 +00001109/**
Paul Bakkerd589a0d2013-03-13 16:30:17 +01001110 * \def POLARSSL_ECDH_C
1111 *
1112 * Enable the elliptic curve Diffie-Hellman library.
1113 *
1114 * Module: library/ecdh.c
Paul Bakker41c83d32013-03-20 14:39:14 +01001115 * Caller: library/ssl_cli.c
1116 * library/ssl_srv.c
1117 *
Manuel Pégourié-Gonnard9d703732013-10-25 18:01:50 +02001118 * This module is used by the following key exchanges:
1119 * ECDHE-ECDSA, ECDHE-RSA, DHE-PSK
Paul Bakkerd589a0d2013-03-13 16:30:17 +01001120 *
1121 * Requires: POLARSSL_ECP_C
1122 */
1123#define POLARSSL_ECDH_C
1124
1125/**
1126 * \def POLARSSL_ECDSA_C
1127 *
1128 * Enable the elliptic curve DSA library.
1129 *
1130 * Module: library/ecdsa.c
1131 * Caller:
1132 *
Manuel Pégourié-Gonnard9d703732013-10-25 18:01:50 +02001133 * This module is used by the following key exchanges:
1134 * ECDHE-ECDSA
1135 *
Manuel Pégourié-Gonnard4846f5e2013-08-08 14:36:15 +02001136 * Requires: POLARSSL_ECP_C, POLARSSL_ASN1_WRITE_C, POLARSSL_ASN1_PARSE_C
Paul Bakkerd589a0d2013-03-13 16:30:17 +01001137 */
1138#define POLARSSL_ECDSA_C
1139
1140/**
1141 * \def POLARSSL_ECP_C
1142 *
1143 * Enable the elliptic curve over GF(p) library.
1144 *
1145 * Module: library/ecp.c
1146 * Caller: library/ecdh.c
1147 * library/ecdsa.c
1148 *
Manuel Pégourié-Gonnardb8012fc2013-10-10 15:40:49 +02001149 * Requires: POLARSSL_BIGNUM_C and at least one POLARSSL_ECP_DP_XXX_ENABLED
Paul Bakkerd589a0d2013-03-13 16:30:17 +01001150 */
1151#define POLARSSL_ECP_C
1152
1153/**
Paul Bakker6083fd22011-12-03 21:45:14 +00001154 * \def POLARSSL_ENTROPY_C
1155 *
1156 * Enable the platform-specific entropy code.
1157 *
1158 * Module: library/entropy.c
1159 * Caller:
1160 *
Paul Bakker9e36f042013-06-30 14:34:05 +02001161 * Requires: POLARSSL_SHA512_C
Paul Bakker6083fd22011-12-03 21:45:14 +00001162 *
1163 * This module provides a generic entropy pool
1164 */
1165#define POLARSSL_ENTROPY_C
1166
1167/**
Paul Bakker9d781402011-05-09 16:17:09 +00001168 * \def POLARSSL_ERROR_C
1169 *
1170 * Enable error code to error string conversion.
1171 *
1172 * Module: library/error.c
1173 * Caller:
1174 *
1175 * This module enables err_strerror().
1176 */
1177#define POLARSSL_ERROR_C
1178
1179/**
Paul Bakker89e80c92012-03-20 13:50:09 +00001180 * \def POLARSSL_GCM_C
1181 *
Manuel Pégourié-Gonnard09fff7e2013-09-20 13:45:36 +02001182 * Enable the Galois/Counter Mode (GCM) for AES.
Paul Bakker89e80c92012-03-20 13:50:09 +00001183 *
1184 * Module: library/gcm.c
1185 *
Manuel Pégourié-Gonnard7bd8a992013-10-24 13:39:39 +02001186 * Requires: POLARSSL_AES_C or POLARSSL_CAMELLIA_C
Paul Bakker645ce3a2012-10-31 12:32:41 +00001187 *
Manuel Pégourié-Gonnard9d703732013-10-25 18:01:50 +02001188 * This module enables the AES-GCM and CAMELLIA-GCM ciphersuites, if other
1189 * requisites are enabled as well.
Paul Bakker89e80c92012-03-20 13:50:09 +00001190 */
1191#define POLARSSL_GCM_C
1192
1193/**
Paul Bakkerf3b86c12011-01-27 15:24:17 +00001194 * \def POLARSSL_HAVEGE_C
1195 *
1196 * Enable the HAVEGE random generator.
1197 *
Paul Bakker2a844242013-06-24 13:01:53 +02001198 * Warning: the HAVEGE random generator is not suitable for virtualized
1199 * environments
1200 *
1201 * Warning: the HAVEGE random generator is dependent on timing and specific
1202 * processor traits. It is therefore not advised to use HAVEGE as
1203 * your applications primary random generator or primary entropy pool
1204 * input. As a secondary input to your entropy pool, it IS able add
1205 * the (limited) extra entropy it provides.
1206 *
Paul Bakker5121ce52009-01-03 21:22:43 +00001207 * Module: library/havege.c
1208 * Caller:
1209 *
Paul Bakker5690efc2011-05-26 13:16:06 +00001210 * Requires: POLARSSL_TIMING_C
1211 *
Paul Bakker2a844242013-06-24 13:01:53 +02001212 * Uncomment to enable the HAVEGE random generator.
Paul Bakker2a844242013-06-24 13:01:53 +02001213 */
Paul Bakkera7ea6a52013-10-15 11:55:10 +02001214//#define POLARSSL_HAVEGE_C
Paul Bakker5121ce52009-01-03 21:22:43 +00001215
Paul Bakkerf3b86c12011-01-27 15:24:17 +00001216/**
1217 * \def POLARSSL_MD_C
1218 *
1219 * Enable the generic message digest layer.
1220 *
Paul Bakker17373852011-01-06 14:20:01 +00001221 * Module: library/md.c
1222 * Caller:
1223 *
1224 * Uncomment to enable generic message digest wrappers.
1225 */
1226#define POLARSSL_MD_C
1227
Paul Bakkerf3b86c12011-01-27 15:24:17 +00001228/**
1229 * \def POLARSSL_MD2_C
1230 *
Manuel Pégourié-Gonnard09fff7e2013-09-20 13:45:36 +02001231 * Enable the MD2 hash algorithm.
Paul Bakkerf3b86c12011-01-27 15:24:17 +00001232 *
Paul Bakker5121ce52009-01-03 21:22:43 +00001233 * Module: library/md2.c
Manuel Pégourié-Gonnardfe286462013-09-20 14:10:14 +02001234 * Caller:
Paul Bakker5121ce52009-01-03 21:22:43 +00001235 *
1236 * Uncomment to enable support for (rare) MD2-signed X.509 certs.
Paul Bakker6506aff2009-07-28 20:52:02 +00001237 */
Paul Bakkera7ea6a52013-10-15 11:55:10 +02001238//#define POLARSSL_MD2_C
Paul Bakker5121ce52009-01-03 21:22:43 +00001239
Paul Bakkerf3b86c12011-01-27 15:24:17 +00001240/**
1241 * \def POLARSSL_MD4_C
1242 *
Manuel Pégourié-Gonnard09fff7e2013-09-20 13:45:36 +02001243 * Enable the MD4 hash algorithm.
Paul Bakkerf3b86c12011-01-27 15:24:17 +00001244 *
Paul Bakker5121ce52009-01-03 21:22:43 +00001245 * Module: library/md4.c
Manuel Pégourié-Gonnardfe286462013-09-20 14:10:14 +02001246 * Caller:
Paul Bakker5121ce52009-01-03 21:22:43 +00001247 *
1248 * Uncomment to enable support for (rare) MD4-signed X.509 certs.
Paul Bakker6506aff2009-07-28 20:52:02 +00001249 */
Paul Bakkera7ea6a52013-10-15 11:55:10 +02001250//#define POLARSSL_MD4_C
Paul Bakker5121ce52009-01-03 21:22:43 +00001251
Paul Bakkerf3b86c12011-01-27 15:24:17 +00001252/**
1253 * \def POLARSSL_MD5_C
1254 *
Manuel Pégourié-Gonnard09fff7e2013-09-20 13:45:36 +02001255 * Enable the MD5 hash algorithm.
Paul Bakkerf3b86c12011-01-27 15:24:17 +00001256 *
Paul Bakker5121ce52009-01-03 21:22:43 +00001257 * Module: library/md5.c
Manuel Pégourié-Gonnardfe286462013-09-20 14:10:14 +02001258 * Caller: library/md.c
1259 * library/pem.c
Paul Bakker6deb37e2013-02-19 13:17:08 +01001260 * library/ssl_tls.c
Paul Bakker5121ce52009-01-03 21:22:43 +00001261 *
1262 * This module is required for SSL/TLS and X.509.
Paul Bakkercff68422013-09-15 20:43:33 +02001263 * PEM_PARSE uses MD5 for decrypting encrypted keys.
Paul Bakker5121ce52009-01-03 21:22:43 +00001264 */
Paul Bakker40e46942009-01-03 21:51:57 +00001265#define POLARSSL_MD5_C
Paul Bakker5121ce52009-01-03 21:22:43 +00001266
Paul Bakkerf3b86c12011-01-27 15:24:17 +00001267/**
Paul Bakker6e339b52013-07-03 13:37:05 +02001268 * \def POLARSSL_MEMORY_C
1269 *
1270 * Enable the memory allocation layer.
1271 * By default PolarSSL uses the system-provided malloc() and free().
1272 * (As long as POLARSSL_MEMORY_STDMALLOC and POLARSSL_MEMORY_STDFREE
1273 * are defined and unmodified)
1274 *
1275 * This allows different allocators (self-implemented or provided)
1276 *
1277 * Enable this layer to allow use of alternative memory allocators.
Paul Bakker6e339b52013-07-03 13:37:05 +02001278 */
Paul Bakkera7ea6a52013-10-15 11:55:10 +02001279//#define POLARSSL_MEMORY_C
Paul Bakker6e339b52013-07-03 13:37:05 +02001280
1281/**
Manuel Pégourié-Gonnard09fff7e2013-09-20 13:45:36 +02001282 * \def POLARSSL_MEMORY_BUFFER_ALLOC_C
1283 *
1284 * Enable the buffer allocator implementation that makes use of a (stack)
1285 * based buffer to 'allocate' dynamic memory. (replaces malloc() and free()
1286 * calls)
Paul Bakker6e339b52013-07-03 13:37:05 +02001287 *
1288 * Module: library/memory_buffer_alloc.c
1289 *
1290 * Requires: POLARSSL_MEMORY_C
1291 *
1292 * Enable this module to enable the buffer memory allocator.
Paul Bakker6e339b52013-07-03 13:37:05 +02001293 */
Paul Bakkera7ea6a52013-10-15 11:55:10 +02001294//#define POLARSSL_MEMORY_BUFFER_ALLOC_C
Paul Bakker6e339b52013-07-03 13:37:05 +02001295
1296/**
Paul Bakkerf3b86c12011-01-27 15:24:17 +00001297 * \def POLARSSL_NET_C
1298 *
1299 * Enable the TCP/IP networking routines.
1300 *
Paul Bakker5121ce52009-01-03 21:22:43 +00001301 * Module: library/net.c
Paul Bakker5121ce52009-01-03 21:22:43 +00001302 *
1303 * This module provides TCP/IP networking routines.
1304 */
Paul Bakker40e46942009-01-03 21:51:57 +00001305#define POLARSSL_NET_C
Paul Bakker5121ce52009-01-03 21:22:43 +00001306
Paul Bakkerf3b86c12011-01-27 15:24:17 +00001307/**
Paul Bakkerc70b9822013-04-07 22:00:46 +02001308 * \def POLARSSL_OID_C
1309 *
Manuel Pégourié-Gonnard09fff7e2013-09-20 13:45:36 +02001310 * Enable the OID database.
Paul Bakkerc70b9822013-04-07 22:00:46 +02001311 *
1312 * Module: library/oid.c
Manuel Pégourié-Gonnardfe286462013-09-20 14:10:14 +02001313 * Caller: library/asn1write.c
1314 * library/pkcs5.c
1315 * library/pkparse.c
1316 * library/pkwrite.c
1317 * library/rsa.c
1318 * library/x509.c
1319 * library/x509_create.c
1320 * library/x509_crl.c
1321 * library/x509_crt.c
1322 * library/x509_csr.c
1323 * library/x509write_crt.c
1324 * library/x509write_csr.c
Paul Bakkerc70b9822013-04-07 22:00:46 +02001325 *
1326 * This modules translates between OIDs and internal values.
1327 */
1328#define POLARSSL_OID_C
1329
1330/**
Paul Bakkerf3b86c12011-01-27 15:24:17 +00001331 * \def POLARSSL_PADLOCK_C
1332 *
1333 * Enable VIA Padlock support on x86.
1334 *
Paul Bakker5121ce52009-01-03 21:22:43 +00001335 * Module: library/padlock.c
1336 * Caller: library/aes.c
1337 *
1338 * This modules adds support for the VIA PadLock on x86.
1339 */
Paul Bakker40e46942009-01-03 21:51:57 +00001340#define POLARSSL_PADLOCK_C
Paul Bakker5121ce52009-01-03 21:22:43 +00001341
Paul Bakkerf3b86c12011-01-27 15:24:17 +00001342/**
Paul Bakkerf518b162012-08-23 13:03:18 +00001343 * \def POLARSSL_PBKDF2_C
1344 *
Manuel Pégourié-Gonnard09fff7e2013-09-20 13:45:36 +02001345 * Enable PKCS#5 PBKDF2 key derivation function.
Paul Bakkerb0c19a42013-06-24 19:26:38 +02001346 * DEPRECATED: Use POLARSSL_PKCS5_C instead
Paul Bakkerf518b162012-08-23 13:03:18 +00001347 *
1348 * Module: library/pbkdf2.c
1349 *
Paul Bakkerb0c19a42013-06-24 19:26:38 +02001350 * Requires: POLARSSL_PKCS5_C
Paul Bakkerf518b162012-08-23 13:03:18 +00001351 *
1352 * This module adds support for the PKCS#5 PBKDF2 key derivation function.
Paul Bakkerf518b162012-08-23 13:03:18 +00001353 */
Paul Bakker370e90c2013-04-08 15:19:43 +02001354#define POLARSSL_PBKDF2_C
Paul Bakkerf518b162012-08-23 13:03:18 +00001355
1356/**
Paul Bakkercff68422013-09-15 20:43:33 +02001357 * \def POLARSSL_PEM_PARSE_C
Paul Bakker96743fc2011-02-12 14:30:57 +00001358 *
Manuel Pégourié-Gonnard09fff7e2013-09-20 13:45:36 +02001359 * Enable PEM decoding / parsing.
Paul Bakker96743fc2011-02-12 14:30:57 +00001360 *
1361 * Module: library/pem.c
Manuel Pégourié-Gonnardfe286462013-09-20 14:10:14 +02001362 * Caller: library/dhm.c
Paul Bakkercff68422013-09-15 20:43:33 +02001363 * library/pkparse.c
Manuel Pégourié-Gonnardfe286462013-09-20 14:10:14 +02001364 * library/x509_crl.c
1365 * library/x509_crt.c
1366 * library/x509_csr.c
Paul Bakker96743fc2011-02-12 14:30:57 +00001367 *
Paul Bakker5690efc2011-05-26 13:16:06 +00001368 * Requires: POLARSSL_BASE64_C
1369 *
Paul Bakkercff68422013-09-15 20:43:33 +02001370 * This modules adds support for decoding / parsing PEM files.
Paul Bakker96743fc2011-02-12 14:30:57 +00001371 */
Paul Bakkercff68422013-09-15 20:43:33 +02001372#define POLARSSL_PEM_PARSE_C
1373
1374/**
1375 * \def POLARSSL_PEM_WRITE_C
1376 *
Manuel Pégourié-Gonnard09fff7e2013-09-20 13:45:36 +02001377 * Enable PEM encoding / writing.
Paul Bakkercff68422013-09-15 20:43:33 +02001378 *
1379 * Module: library/pem.c
Manuel Pégourié-Gonnardfe286462013-09-20 14:10:14 +02001380 * Caller: library/pkwrite.c
1381 * library/x509write_crt.c
1382 * library/x509write_csr.c
Paul Bakkercff68422013-09-15 20:43:33 +02001383 *
1384 * Requires: POLARSSL_BASE64_C
1385 *
1386 * This modules adds support for encoding / writing PEM files.
1387 */
1388#define POLARSSL_PEM_WRITE_C
Paul Bakker96743fc2011-02-12 14:30:57 +00001389
1390/**
Manuel Pégourié-Gonnardc40b4c32013-08-22 13:29:31 +02001391 * \def POLARSSL_PK_C
1392 *
1393 * Enable the generic public (asymetric) key layer.
1394 *
1395 * Module: library/pk.c
Manuel Pégourié-Gonnard1a483832013-09-20 12:29:15 +02001396 * Caller: library/ssl_tls.c
Manuel Pégourié-Gonnardc40b4c32013-08-22 13:29:31 +02001397 * library/ssl_cli.c
1398 * library/ssl_srv.c
1399 *
Manuel Pégourié-Gonnard1a483832013-09-20 12:29:15 +02001400 * Requires: POLARSSL_RSA_C or POLARSSL_ECP_C
1401 *
Manuel Pégourié-Gonnardc40b4c32013-08-22 13:29:31 +02001402 * Uncomment to enable generic public key wrappers.
1403 */
1404#define POLARSSL_PK_C
1405
1406/**
Paul Bakker4606c732013-09-15 17:04:23 +02001407 * \def POLARSSL_PK_PARSE_C
1408 *
1409 * Enable the generic public (asymetric) key parser.
1410 *
1411 * Module: library/pkparse.c
Manuel Pégourié-Gonnardfe286462013-09-20 14:10:14 +02001412 * Caller: library/x509_crt.c
1413 * library/x509_csr.c
Paul Bakker4606c732013-09-15 17:04:23 +02001414 *
1415 * Requires: POLARSSL_PK_C
1416 *
1417 * Uncomment to enable generic public key parse functions.
1418 */
1419#define POLARSSL_PK_PARSE_C
1420
1421/**
1422 * \def POLARSSL_PK_WRITE_C
1423 *
Paul Bakkerf20ba4b2013-09-16 22:46:20 +02001424 * Enable the generic public (asymetric) key writer.
Paul Bakker4606c732013-09-15 17:04:23 +02001425 *
1426 * Module: library/pkwrite.c
1427 * Caller: library/x509write.c
1428 *
1429 * Requires: POLARSSL_PK_C
1430 *
1431 * Uncomment to enable generic public key write functions.
1432 */
1433#define POLARSSL_PK_WRITE_C
1434
1435/**
Paul Bakkerb0c19a42013-06-24 19:26:38 +02001436 * \def POLARSSL_PKCS5_C
1437 *
Manuel Pégourié-Gonnard09fff7e2013-09-20 13:45:36 +02001438 * Enable PKCS#5 functions.
Paul Bakkerb0c19a42013-06-24 19:26:38 +02001439 *
1440 * Module: library/pkcs5.c
1441 *
1442 * Requires: POLARSSL_MD_C
1443 *
1444 * This module adds support for the PKCS#5 functions.
1445 */
1446#define POLARSSL_PKCS5_C
1447
1448/**
Paul Bakker5690efc2011-05-26 13:16:06 +00001449 * \def POLARSSL_PKCS11_C
1450 *
Paul Bakkereb2c6582012-09-27 19:15:01 +00001451 * Enable wrapper for PKCS#11 smartcard support.
Paul Bakker5690efc2011-05-26 13:16:06 +00001452 *
Manuel Pégourié-Gonnard51be5592013-08-22 13:35:53 +02001453 * Module: library/pkcs11.c
1454 * Caller: library/pk.c
Paul Bakker5690efc2011-05-26 13:16:06 +00001455 *
Manuel Pégourié-Gonnard51be5592013-08-22 13:35:53 +02001456 * Requires: POLARSSL_PK_C
Paul Bakker5690efc2011-05-26 13:16:06 +00001457 *
Paul Bakkereb2c6582012-09-27 19:15:01 +00001458 * This module enables SSL/TLS PKCS #11 smartcard support.
Paul Bakker5690efc2011-05-26 13:16:06 +00001459 * Requires the presence of the PKCS#11 helper library (libpkcs11-helper)
Paul Bakker5690efc2011-05-26 13:16:06 +00001460 */
Paul Bakkera7ea6a52013-10-15 11:55:10 +02001461//#define POLARSSL_PKCS11_C
Paul Bakker5690efc2011-05-26 13:16:06 +00001462
1463/**
Paul Bakkerf1f21fe2013-06-24 19:17:19 +02001464 * \def POLARSSL_PKCS12_C
1465 *
Manuel Pégourié-Gonnard09fff7e2013-09-20 13:45:36 +02001466 * Enable PKCS#12 PBE functions.
Paul Bakkerf1f21fe2013-06-24 19:17:19 +02001467 * Adds algorithms for parsing PKCS#8 encrypted private keys
1468 *
1469 * Module: library/pkcs12.c
Manuel Pégourié-Gonnardfe286462013-09-20 14:10:14 +02001470 * Caller: library/pkparse.c
Paul Bakkerf1f21fe2013-06-24 19:17:19 +02001471 *
Paul Bakkerb0713c72013-06-24 19:34:08 +02001472 * Requires: POLARSSL_ASN1_PARSE_C, POLARSSL_CIPHER_C, POLARSSL_MD_C
1473 * Can use: POLARSSL_ARC4_C
Paul Bakkerf1f21fe2013-06-24 19:17:19 +02001474 *
1475 * This module enables PKCS#12 functions.
1476 */
1477#define POLARSSL_PKCS12_C
1478
1479/**
Paul Bakkerf3b86c12011-01-27 15:24:17 +00001480 * \def POLARSSL_RSA_C
1481 *
1482 * Enable the RSA public-key cryptosystem.
1483 *
Paul Bakker5121ce52009-01-03 21:22:43 +00001484 * Module: library/rsa.c
1485 * Caller: library/ssl_cli.c
1486 * library/ssl_srv.c
1487 * library/ssl_tls.c
1488 * library/x509.c
1489 *
Manuel Pégourié-Gonnard9d703732013-10-25 18:01:50 +02001490 * This module is used by the following key exchanges:
1491 * RSA, DHE-RSA, ECDHE-RSA, RSA-PSK
Paul Bakker5690efc2011-05-26 13:16:06 +00001492 *
Manuel Pégourié-Gonnard9d703732013-10-25 18:01:50 +02001493 * Requires: POLARSSL_BIGNUM_C, POLARSSL_OID_C
Paul Bakker5121ce52009-01-03 21:22:43 +00001494 */
Paul Bakker40e46942009-01-03 21:51:57 +00001495#define POLARSSL_RSA_C
Paul Bakker5121ce52009-01-03 21:22:43 +00001496
Paul Bakkerf3b86c12011-01-27 15:24:17 +00001497/**
1498 * \def POLARSSL_SHA1_C
1499 *
1500 * Enable the SHA1 cryptographic hash algorithm.
1501 *
Paul Bakker5121ce52009-01-03 21:22:43 +00001502 * Module: library/sha1.c
Manuel Pégourié-Gonnardfe286462013-09-20 14:10:14 +02001503 * Caller: library/md.c
1504 * library/ssl_cli.c
Paul Bakker5121ce52009-01-03 21:22:43 +00001505 * library/ssl_srv.c
1506 * library/ssl_tls.c
Manuel Pégourié-Gonnardfe286462013-09-20 14:10:14 +02001507 * library/x509write_crt.c
Paul Bakker5121ce52009-01-03 21:22:43 +00001508 *
1509 * This module is required for SSL/TLS and SHA1-signed certificates.
1510 */
Paul Bakker40e46942009-01-03 21:51:57 +00001511#define POLARSSL_SHA1_C
Paul Bakker5121ce52009-01-03 21:22:43 +00001512
Paul Bakkerf3b86c12011-01-27 15:24:17 +00001513/**
Paul Bakker9e36f042013-06-30 14:34:05 +02001514 * \def POLARSSL_SHA256_C
Paul Bakkerf3b86c12011-01-27 15:24:17 +00001515 *
1516 * Enable the SHA-224 and SHA-256 cryptographic hash algorithms.
Paul Bakker9e36f042013-06-30 14:34:05 +02001517 * (Used to be POLARSSL_SHA2_C)
Paul Bakkerf3b86c12011-01-27 15:24:17 +00001518 *
Paul Bakker9e36f042013-06-30 14:34:05 +02001519 * Module: library/sha256.c
Manuel Pégourié-Gonnardfe286462013-09-20 14:10:14 +02001520 * Caller: library/entropy.c
1521 * library/md.c
1522 * library/ssl_cli.c
1523 * library/ssl_srv.c
1524 * library/ssl_tls.c
Paul Bakker5121ce52009-01-03 21:22:43 +00001525 *
1526 * This module adds support for SHA-224 and SHA-256.
Paul Bakker769075d2012-11-24 11:26:46 +01001527 * This module is required for the SSL/TLS 1.2 PRF function.
Paul Bakker5121ce52009-01-03 21:22:43 +00001528 */
Paul Bakker9e36f042013-06-30 14:34:05 +02001529#define POLARSSL_SHA256_C
Paul Bakker5121ce52009-01-03 21:22:43 +00001530
Paul Bakkerf3b86c12011-01-27 15:24:17 +00001531/**
Paul Bakker9e36f042013-06-30 14:34:05 +02001532 * \def POLARSSL_SHA512_C
Paul Bakkerf3b86c12011-01-27 15:24:17 +00001533 *
1534 * Enable the SHA-384 and SHA-512 cryptographic hash algorithms.
Paul Bakker9e36f042013-06-30 14:34:05 +02001535 * (Used to be POLARSSL_SHA4_C)
Paul Bakkerf3b86c12011-01-27 15:24:17 +00001536 *
Paul Bakker9e36f042013-06-30 14:34:05 +02001537 * Module: library/sha512.c
Manuel Pégourié-Gonnardfe286462013-09-20 14:10:14 +02001538 * Caller: library/entropy.c
1539 * library/md.c
1540 * library/ssl_cli.c
1541 * library/ssl_srv.c
Paul Bakker5121ce52009-01-03 21:22:43 +00001542 *
1543 * This module adds support for SHA-384 and SHA-512.
1544 */
Paul Bakker9e36f042013-06-30 14:34:05 +02001545#define POLARSSL_SHA512_C
Paul Bakker5121ce52009-01-03 21:22:43 +00001546
Paul Bakkerf3b86c12011-01-27 15:24:17 +00001547/**
Paul Bakker0a597072012-09-25 21:55:46 +00001548 * \def POLARSSL_SSL_CACHE_C
1549 *
1550 * Enable simple SSL cache implementation.
1551 *
1552 * Module: library/ssl_cache.c
1553 * Caller:
1554 *
1555 * Requires: POLARSSL_SSL_CACHE_C
1556 */
1557#define POLARSSL_SSL_CACHE_C
1558
1559/**
Paul Bakkerf3b86c12011-01-27 15:24:17 +00001560 * \def POLARSSL_SSL_CLI_C
1561 *
1562 * Enable the SSL/TLS client code.
1563 *
Paul Bakker5121ce52009-01-03 21:22:43 +00001564 * Module: library/ssl_cli.c
1565 * Caller:
1566 *
Paul Bakker5690efc2011-05-26 13:16:06 +00001567 * Requires: POLARSSL_SSL_TLS_C
1568 *
Paul Bakker5121ce52009-01-03 21:22:43 +00001569 * This module is required for SSL/TLS client support.
1570 */
Paul Bakker40e46942009-01-03 21:51:57 +00001571#define POLARSSL_SSL_CLI_C
Paul Bakker5121ce52009-01-03 21:22:43 +00001572
Paul Bakker9a736322012-11-14 12:39:52 +00001573/**
Paul Bakkerf3b86c12011-01-27 15:24:17 +00001574 * \def POLARSSL_SSL_SRV_C
1575 *
1576 * Enable the SSL/TLS server code.
1577 *
Paul Bakker5121ce52009-01-03 21:22:43 +00001578 * Module: library/ssl_srv.c
1579 * Caller:
1580 *
Paul Bakker5690efc2011-05-26 13:16:06 +00001581 * Requires: POLARSSL_SSL_TLS_C
1582 *
Paul Bakker5121ce52009-01-03 21:22:43 +00001583 * This module is required for SSL/TLS server support.
1584 */
Paul Bakker40e46942009-01-03 21:51:57 +00001585#define POLARSSL_SSL_SRV_C
Paul Bakker5121ce52009-01-03 21:22:43 +00001586
Paul Bakkerf3b86c12011-01-27 15:24:17 +00001587/**
1588 * \def POLARSSL_SSL_TLS_C
1589 *
Paul Bakkere29ab062011-05-18 13:26:54 +00001590 * Enable the generic SSL/TLS code.
Paul Bakkerf3b86c12011-01-27 15:24:17 +00001591 *
Paul Bakker5121ce52009-01-03 21:22:43 +00001592 * Module: library/ssl_tls.c
1593 * Caller: library/ssl_cli.c
1594 * library/ssl_srv.c
1595 *
Manuel Pégourié-Gonnard1a483832013-09-20 12:29:15 +02001596 * Requires: POLARSSL_CIPHER_C, POLARSSL_MD_C
Paul Bakker577e0062013-08-28 11:57:20 +02001597 * and at least one of the POLARSSL_SSL_PROTO_* defines
Paul Bakker5690efc2011-05-26 13:16:06 +00001598 *
Paul Bakker5121ce52009-01-03 21:22:43 +00001599 * This module is required for SSL/TLS.
1600 */
Paul Bakker40e46942009-01-03 21:51:57 +00001601#define POLARSSL_SSL_TLS_C
Paul Bakker5121ce52009-01-03 21:22:43 +00001602
Paul Bakkerf3b86c12011-01-27 15:24:17 +00001603/**
Paul Bakker2466d932013-09-28 14:40:38 +02001604 * \def POLARSSL_THREADING_C
1605 *
1606 * Enable the threading abstraction layer.
1607 * By default PolarSSL assumes it is used in a non-threaded environment or that
1608 * contexts are not shared between threads. If you do intend to use contexts
1609 * between threads, you will need to enable this layer to prevent race
1610 * conditions.
1611 *
1612 * Module: library/threading.c
1613 *
1614 * This allows different threading implementations (self-implemented or
1615 * provided).
1616 *
1617 * You will have to enable either POLARSSL_THREADING_ALT,
1618 * POLARSSL_THREADING_PTHREAD or POLARSSL_THREADING_DUMMY.
1619 *
1620 * Enable this layer to allow use of mutexes within PolarSSL
Paul Bakker2466d932013-09-28 14:40:38 +02001621 */
Paul Bakkera7ea6a52013-10-15 11:55:10 +02001622//#define POLARSSL_THREADING_C
Paul Bakker2466d932013-09-28 14:40:38 +02001623
1624/**
Paul Bakkerf3b86c12011-01-27 15:24:17 +00001625 * \def POLARSSL_TIMING_C
1626 *
1627 * Enable the portable timing interface.
1628 *
Paul Bakker5121ce52009-01-03 21:22:43 +00001629 * Module: library/timing.c
1630 * Caller: library/havege.c
1631 *
1632 * This module is used by the HAVEGE random number generator.
Paul Bakkerecd54fb2013-07-03 14:48:29 +02001633 */
Paul Bakkerdcbfdcc2013-09-10 16:16:50 +02001634#define POLARSSL_TIMING_C
Paul Bakker5121ce52009-01-03 21:22:43 +00001635
Paul Bakkerf3b86c12011-01-27 15:24:17 +00001636/**
1637 * \def POLARSSL_VERSION_C
1638 *
1639 * Enable run-time version information.
1640 *
Paul Bakker0a62cd12011-01-21 11:00:08 +00001641 * Module: library/version.c
1642 *
1643 * This module provides run-time version information.
1644 */
1645#define POLARSSL_VERSION_C
1646
Paul Bakkerf3b86c12011-01-27 15:24:17 +00001647/**
Paul Bakker7c6b2c32013-09-16 13:49:26 +02001648 * \def POLARSSL_X509_USE_C
Paul Bakkerf3b86c12011-01-27 15:24:17 +00001649 *
Manuel Pégourié-Gonnard09fff7e2013-09-20 13:45:36 +02001650 * Enable X.509 core for using certificates.
Paul Bakkerf3b86c12011-01-27 15:24:17 +00001651 *
Paul Bakker7c6b2c32013-09-16 13:49:26 +02001652 * Module: library/x509.c
1653 * Caller: library/x509_crl.c
1654 * library/x509_crt.c
1655 * library/x509_csr.c
Paul Bakker5121ce52009-01-03 21:22:43 +00001656 *
Paul Bakkerc70b9822013-04-07 22:00:46 +02001657 * Requires: POLARSSL_ASN1_PARSE_C, POLARSSL_BIGNUM_C, POLARSSL_OID_C,
Paul Bakker4606c732013-09-15 17:04:23 +02001658 * POLARSSL_PK_PARSE_C
Paul Bakker5690efc2011-05-26 13:16:06 +00001659 *
Paul Bakker7c6b2c32013-09-16 13:49:26 +02001660 * This module is required for the X.509 parsing modules.
Paul Bakker5121ce52009-01-03 21:22:43 +00001661 */
Paul Bakker7c6b2c32013-09-16 13:49:26 +02001662#define POLARSSL_X509_USE_C
Paul Bakker5121ce52009-01-03 21:22:43 +00001663
Paul Bakkerf3b86c12011-01-27 15:24:17 +00001664/**
Paul Bakker7c6b2c32013-09-16 13:49:26 +02001665 * \def POLARSSL_X509_CRT_PARSE_C
Paul Bakkerbdb912d2012-02-13 23:11:30 +00001666 *
Paul Bakker7c6b2c32013-09-16 13:49:26 +02001667 * Enable X.509 certificate parsing.
Paul Bakkerbdb912d2012-02-13 23:11:30 +00001668 *
Paul Bakker7c6b2c32013-09-16 13:49:26 +02001669 * Module: library/x509_crt.c
1670 * Caller: library/ssl_cli.c
1671 * library/ssl_srv.c
1672 * library/ssl_tls.c
1673 *
1674 * Requires: POLARSSL_X509_USE_C
1675 *
1676 * This module is required for X.509 certificate parsing.
1677 */
1678#define POLARSSL_X509_CRT_PARSE_C
1679
1680/**
1681 * \def POLARSSL_X509_CRL_PARSE_C
1682 *
1683 * Enable X.509 CRL parsing.
1684 *
1685 * Module: library/x509_crl.c
1686 * Caller: library/x509_crt.c
1687 *
1688 * Requires: POLARSSL_X509_USE_C
1689 *
1690 * This module is required for X.509 CRL parsing.
1691 */
1692#define POLARSSL_X509_CRL_PARSE_C
1693
1694/**
1695 * \def POLARSSL_X509_CSR_PARSE_C
1696 *
1697 * Enable X.509 Certificate Signing Request (CSR) parsing.
1698 *
1699 * Module: library/x509_csr.c
1700 * Caller: library/x509_crt_write.c
1701 *
1702 * Requires: POLARSSL_X509_USE_C
1703 *
1704 * This module is used for reading X.509 certificate request.
1705 */
1706#define POLARSSL_X509_CSR_PARSE_C
1707
1708/**
1709 * \def POLARSSL_X509_CREATE_C
1710 *
Manuel Pégourié-Gonnard09fff7e2013-09-20 13:45:36 +02001711 * Enable X.509 core for creating certificates.
Paul Bakker7c6b2c32013-09-16 13:49:26 +02001712 *
1713 * Module: library/x509_create.c
Paul Bakkerbdb912d2012-02-13 23:11:30 +00001714 *
Paul Bakker4606c732013-09-15 17:04:23 +02001715 * Requires: POLARSSL_BIGNUM_C, POLARSSL_OID_C, POLARSSL_PK_WRITE_C
Paul Bakkerbdb912d2012-02-13 23:11:30 +00001716 *
Paul Bakker7c6b2c32013-09-16 13:49:26 +02001717 * This module is the basis for creating X.509 certificates and CSRs.
1718 */
1719#define POLARSSL_X509_CREATE_C
1720
1721/**
1722 * \def POLARSSL_X509_CRT_WRITE_C
1723 *
1724 * Enable creating X.509 certificates.
1725 *
1726 * Module: library/x509_crt_write.c
1727 *
1728 * Requires: POLARSSL_CREATE_C
1729 *
1730 * This module is required for X.509 certificate creation.
1731 */
1732#define POLARSSL_X509_CRT_WRITE_C
1733
1734/**
1735 * \def POLARSSL_X509_CSR_WRITE_C
1736 *
Manuel Pégourié-Gonnard09fff7e2013-09-20 13:45:36 +02001737 * Enable creating X.509 Certificate Signing Requests (CSR).
Paul Bakker7c6b2c32013-09-16 13:49:26 +02001738 *
1739 * Module: library/x509_csr_write.c
1740 *
1741 * Requires: POLARSSL_CREATE_C
1742 *
Paul Bakkerbdb912d2012-02-13 23:11:30 +00001743 * This module is required for X.509 certificate request writing.
1744 */
Paul Bakker7c6b2c32013-09-16 13:49:26 +02001745#define POLARSSL_X509_CSR_WRITE_C
Paul Bakkerbdb912d2012-02-13 23:11:30 +00001746
1747/**
Paul Bakkerf3b86c12011-01-27 15:24:17 +00001748 * \def POLARSSL_XTEA_C
Paul Bakker5121ce52009-01-03 21:22:43 +00001749 *
Paul Bakkerf3b86c12011-01-27 15:24:17 +00001750 * Enable the XTEA block cipher.
1751 *
Paul Bakker7a7c78f2009-01-04 18:15:48 +00001752 * Module: library/xtea.c
1753 * Caller:
1754 */
1755#define POLARSSL_XTEA_C
Manuel Pégourié-Gonnard39d2adb2012-10-31 09:26:55 +01001756
Manuel Pégourié-Gonnard09fff7e2013-09-20 13:45:36 +02001757/* \} name SECTION: PolarSSL modules */
Paul Bakker7a7c78f2009-01-04 18:15:48 +00001758
Paul Bakker9bcf16c2013-06-24 19:31:17 +02001759/**
1760 * \name SECTION: Module configuration options
1761 *
1762 * This section allows for the setting of module specific sizes and
1763 * configuration options. The default values are already present in the
1764 * relevant header files and should suffice for the regular use cases.
1765 * Our advice is to enable POLARSSL_CONFIG_OPTIONS and change values here
1766 * only if you have a good reason and know the consequences.
1767 *
1768 * If POLARSSL_CONFIG_OPTIONS is undefined here the options in the module
1769 * header file take precedence.
1770 *
1771 * Please check the respective header file for documentation on these
1772 * parameters (to prevent duplicate documentation).
1773 *
1774 * Uncomment POLARSSL_CONFIG_OPTIONS to enable using the values defined here.
1775 * \{
1776 */
1777//#define POLARSSL_CONFIG_OPTIONS /**< Enable config.h module value configuration */
1778
1779#if defined(POLARSSL_CONFIG_OPTIONS)
1780
1781// MPI / BIGNUM options
1782//
1783#define POLARSSL_MPI_WINDOW_SIZE 6 /**< Maximum windows size used. */
1784#define POLARSSL_MPI_MAX_SIZE 512 /**< Maximum number of bytes for usable MPIs. */
1785
1786// CTR_DRBG options
1787//
Paul Bakkerfb08fd22013-08-27 15:06:26 +02001788#define CTR_DRBG_ENTROPY_LEN 48 /**< Amount of entropy used per seed by default (48 with SHA-512, 32 with SHA-256) */
Paul Bakker9bcf16c2013-06-24 19:31:17 +02001789#define CTR_DRBG_RESEED_INTERVAL 10000 /**< Interval before reseed is performed by default */
1790#define CTR_DRBG_MAX_INPUT 256 /**< Maximum number of additional input bytes */
1791#define CTR_DRBG_MAX_REQUEST 1024 /**< Maximum number of requested bytes per call */
1792#define CTR_DRBG_MAX_SEED_INPUT 384 /**< Maximum size of (re)seed buffer */
1793
1794// Entropy options
1795//
1796#define ENTROPY_MAX_SOURCES 20 /**< Maximum number of sources supported */
1797#define ENTROPY_MAX_GATHER 128 /**< Maximum amount requested from entropy sources */
1798
Paul Bakker6e339b52013-07-03 13:37:05 +02001799// Memory options
1800#define MEMORY_ALIGN_MULTIPLE 4 /**< Align on multiples of this value */
1801#define POLARSSL_MEMORY_STDMALLOC malloc /**< Default allocator to use, can be undefined */
1802#define POLARSSL_MEMORY_STDFREE free /**< Default free to use, can be undefined */
1803
Paul Bakker9bcf16c2013-06-24 19:31:17 +02001804// SSL Cache options
1805//
1806#define SSL_CACHE_DEFAULT_TIMEOUT 86400 /**< 1 day */
1807#define SSL_CACHE_DEFAULT_MAX_ENTRIES 50 /**< Maximum entries in cache */
1808
1809// SSL options
1810//
1811#define SSL_MAX_CONTENT_LEN 16384 /**< Size of the input / output buffer */
Paul Bakker606b4ba2013-08-14 16:52:14 +02001812#define SSL_DEFAULT_TICKET_LIFETIME 86400 /**< Lifetime of session tickets (if enabled) */
Paul Bakker9bcf16c2013-06-24 19:31:17 +02001813
1814#endif /* POLARSSL_CONFIG_OPTIONS */
1815
1816/* \} name */
1817
Paul Bakker7ad00f92013-04-18 23:05:25 +02001818/*
1819 * Sanity checks on defines and dependencies
1820 */
Manuel Pégourié-Gonnard18dc0e22013-10-27 14:35:02 +01001821#if defined(POLARSSL_CERTS_C) && !defined(POLARSSL_PEM_PARSE_C)
1822#error "POLARSSL_CERTS_C defined, but not all prerequisites"
Paul Bakker7ad00f92013-04-18 23:05:25 +02001823#endif
1824
1825#if defined(POLARSSL_CTR_DRBG_C) && !defined(POLARSSL_AES_C)
1826#error "POLARSSL_CTR_DRBG_C defined, but not all prerequisites"
1827#endif
1828
Manuel Pégourié-Gonnard18dc0e22013-10-27 14:35:02 +01001829#if defined(POLARSSL_DHM_C) && !defined(POLARSSL_BIGNUM_C)
1830#error "POLARSSL_DHM_C defined, but not all prerequisites"
1831#endif
1832
Paul Bakker7ad00f92013-04-18 23:05:25 +02001833#if defined(POLARSSL_ECDH_C) && !defined(POLARSSL_ECP_C)
1834#error "POLARSSL_ECDH_C defined, but not all prerequisites"
1835#endif
1836
Manuel Pégourié-Gonnard4846f5e2013-08-08 14:36:15 +02001837#if defined(POLARSSL_ECDSA_C) && \
1838 ( !defined(POLARSSL_ECP_C) || \
1839 !defined(POLARSSL_ASN1_PARSE_C) || \
1840 !defined(POLARSSL_ASN1_WRITE_C) )
Paul Bakker7ad00f92013-04-18 23:05:25 +02001841#error "POLARSSL_ECDSA_C defined, but not all prerequisites"
1842#endif
1843
Manuel Pégourié-Gonnardc59c9c12013-10-27 14:04:59 +01001844#if defined(POLARSSL_ECP_C) && ( !defined(POLARSSL_BIGNUM_C) || ( \
1845 !defined(POLARSSL_ECP_DP_SECP192R1_ENABLED) && \
1846 !defined(POLARSSL_ECP_DP_SECP224R1_ENABLED) && \
1847 !defined(POLARSSL_ECP_DP_SECP256R1_ENABLED) && \
1848 !defined(POLARSSL_ECP_DP_SECP384R1_ENABLED) && \
1849 !defined(POLARSSL_ECP_DP_SECP521R1_ENABLED) && \
1850 !defined(POLARSSL_ECP_DP_BP256R1_ENABLED) && \
1851 !defined(POLARSSL_ECP_DP_BP384R1_ENABLED) && \
1852 !defined(POLARSSL_ECP_DP_BP512R1_ENABLED) ) )
Paul Bakker7ad00f92013-04-18 23:05:25 +02001853#error "POLARSSL_ECP_C defined, but not all prerequisites"
1854#endif
1855
Paul Bakkerfb08fd22013-08-27 15:06:26 +02001856#if defined(POLARSSL_ENTROPY_C) && (!defined(POLARSSL_SHA512_C) && \
1857 !defined(POLARSSL_SHA256_C))
Paul Bakker7ad00f92013-04-18 23:05:25 +02001858#error "POLARSSL_ENTROPY_C defined, but not all prerequisites"
1859#endif
Paul Bakkerfb08fd22013-08-27 15:06:26 +02001860#if defined(POLARSSL_ENTROPY_C) && defined(POLARSSL_SHA512_C) && \
1861 defined(POLARSSL_CONFIG_OPTIONS) && (CTR_DRBG_ENTROPY_LEN > 64)
1862#error "CTR_DRBG_ENTROPY_LEN value too high"
1863#endif
1864#if defined(POLARSSL_ENTROPY_C) && !defined(POLARSSL_SHA512_C) && \
1865 defined(POLARSSL_CONFIG_OPTIONS) && (CTR_DRBG_ENTROPY_LEN > 32)
1866#error "CTR_DRBG_ENTROPY_LEN value too high"
1867#endif
Paul Bakker7ad00f92013-04-18 23:05:25 +02001868
Manuel Pégourié-Gonnard7bd8a992013-10-24 13:39:39 +02001869#if defined(POLARSSL_GCM_C) && ( \
1870 !defined(POLARSSL_AES_C) && !defined(POLARSSL_CAMELLIA_C) )
Paul Bakker7ad00f92013-04-18 23:05:25 +02001871#error "POLARSSL_GCM_C defined, but not all prerequisites"
1872#endif
1873
Paul Bakkerecd54fb2013-07-03 14:48:29 +02001874#if defined(POLARSSL_HAVEGE_C) && !defined(POLARSSL_TIMING_C)
1875#error "POLARSSL_HAVEGE_C defined, but not all prerequisites"
1876#endif
1877
Paul Bakkere07f41d2013-04-19 09:08:57 +02001878#if defined(POLARSSL_KEY_EXCHANGE_DHE_PSK_ENABLED) && !defined(POLARSSL_DHM_C)
1879#error "POLARSSL_KEY_EXCHANGE_DHE_PSK_ENABLED defined, but not all prerequisites"
1880#endif
1881
Manuel Pégourié-Gonnard3ce3bbd2013-10-11 16:53:50 +02001882#if defined(POLARSSL_KEY_EXCHANGE_ECDHE_PSK_ENABLED) && \
1883 !defined(POLARSSL_ECDH_C)
1884#error "POLARSSL_KEY_EXCHANGE_ECDHE_PSK_ENABLED defined, but not all prerequisites"
1885#endif
1886
Paul Bakkere07f41d2013-04-19 09:08:57 +02001887#if defined(POLARSSL_KEY_EXCHANGE_DHE_RSA_ENABLED) && \
1888 ( !defined(POLARSSL_DHM_C) || !defined(POLARSSL_RSA_C) || \
Manuel Pégourié-Gonnardcbf3ef32013-09-23 12:20:02 +02001889 !defined(POLARSSL_X509_CRT_PARSE_C) || !defined(POLARSSL_PKCS1_V15) )
Paul Bakkere07f41d2013-04-19 09:08:57 +02001890#error "POLARSSL_KEY_EXCHANGE_DHE_RSA_ENABLED defined, but not all prerequisites"
1891#endif
1892
1893#if defined(POLARSSL_KEY_EXCHANGE_ECDHE_RSA_ENABLED) && \
1894 ( !defined(POLARSSL_ECDH_C) || !defined(POLARSSL_RSA_C) || \
Manuel Pégourié-Gonnardcbf3ef32013-09-23 12:20:02 +02001895 !defined(POLARSSL_X509_CRT_PARSE_C) || !defined(POLARSSL_PKCS1_V15) )
Paul Bakkere07f41d2013-04-19 09:08:57 +02001896#error "POLARSSL_KEY_EXCHANGE_ECDHE_RSA_ENABLED defined, but not all prerequisites"
1897#endif
1898
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +02001899#if defined(POLARSSL_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED) && \
1900 ( !defined(POLARSSL_ECDH_C) || !defined(POLARSSL_ECDSA_C) || \
Manuel Pégourié-Gonnardcbf3ef32013-09-23 12:20:02 +02001901 !defined(POLARSSL_X509_CRT_PARSE_C) )
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +02001902#error "POLARSSL_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED defined, but not all prerequisites"
1903#endif
1904
Paul Bakkere07f41d2013-04-19 09:08:57 +02001905#if defined(POLARSSL_KEY_EXCHANGE_RSA_PSK_ENABLED) && \
Paul Bakker7c6b2c32013-09-16 13:49:26 +02001906 ( !defined(POLARSSL_RSA_C) || !defined(POLARSSL_X509_CRT_PARSE_C) ||\
Manuel Pégourié-Gonnardcbf3ef32013-09-23 12:20:02 +02001907 !defined(POLARSSL_PKCS1_V15) )
Paul Bakkere07f41d2013-04-19 09:08:57 +02001908#error "POLARSSL_KEY_EXCHANGE_RSA_PSK_ENABLED defined, but not all prerequisites"
1909#endif
1910
1911#if defined(POLARSSL_KEY_EXCHANGE_RSA_ENABLED) && \
Paul Bakker7c6b2c32013-09-16 13:49:26 +02001912 ( !defined(POLARSSL_RSA_C) || !defined(POLARSSL_X509_CRT_PARSE_C) ||\
Manuel Pégourié-Gonnardcbf3ef32013-09-23 12:20:02 +02001913 !defined(POLARSSL_PKCS1_V15) )
Paul Bakkere07f41d2013-04-19 09:08:57 +02001914#error "POLARSSL_KEY_EXCHANGE_RSA_ENABLED defined, but not all prerequisites"
1915#endif
1916
Paul Bakker6e339b52013-07-03 13:37:05 +02001917#if defined(POLARSSL_MEMORY_BUFFER_ALLOC_C) && !defined(POLARSSL_MEMORY_C)
1918#error "POLARSSL_MEMORY_BUFFER_ALLOC_C defined, but not all prerequisites"
1919#endif
1920
Paul Bakker7ad00f92013-04-18 23:05:25 +02001921#if defined(POLARSSL_PBKDF2_C) && !defined(POLARSSL_MD_C)
1922#error "POLARSSL_PBKDF2_C defined, but not all prerequisites"
1923#endif
1924
Paul Bakkercff68422013-09-15 20:43:33 +02001925#if defined(POLARSSL_PEM_PARSE_C) && !defined(POLARSSL_BASE64_C)
1926#error "POLARSSL_PEM_PARSE_C defined, but not all prerequisites"
1927#endif
1928
1929#if defined(POLARSSL_PEM_WRITE_C) && !defined(POLARSSL_BASE64_C)
1930#error "POLARSSL_PEM_WRITE_C defined, but not all prerequisites"
Paul Bakker7ad00f92013-04-18 23:05:25 +02001931#endif
1932
Paul Bakker4606c732013-09-15 17:04:23 +02001933#if defined(POLARSSL_PK_PARSE_C) && !defined(POLARSSL_PK_C)
1934#error "POLARSSL_PK_PARSE_C defined, but not all prerequisites"
1935#endif
1936
1937#if defined(POLARSSL_PK_WRITE_C) && !defined(POLARSSL_PK_C)
1938#error "POLARSSL_PK_WRITE_C defined, but not all prerequisites"
1939#endif
1940
Manuel Pégourié-Gonnard51be5592013-08-22 13:35:53 +02001941#if defined(POLARSSL_PKCS11_C) && !defined(POLARSSL_PK_C)
Paul Bakker7ad00f92013-04-18 23:05:25 +02001942#error "POLARSSL_PKCS11_C defined, but not all prerequisites"
1943#endif
1944
1945#if defined(POLARSSL_RSA_C) && ( !defined(POLARSSL_BIGNUM_C) || \
1946 !defined(POLARSSL_OID_C) )
1947#error "POLARSSL_RSA_C defined, but not all prerequisites"
1948#endif
1949
Manuel Pégourié-Gonnard7c3291e2013-10-27 14:29:51 +01001950#if defined(POLARSSL_SSL_PROTO_SSL3) && ( !defined(POLARSSL_MD5_C) || \
1951 !defined(POLARSSL_SHA1_C) )
1952#error "POLARSSL_SSL_PROTO_SSL3 defined, but not all prerequisites"
1953#endif
1954
1955#if defined(POLARSSL_SSL_PROTO_TLS1) && ( !defined(POLARSSL_MD5_C) || \
1956 !defined(POLARSSL_SHA1_C) )
1957#error "POLARSSL_SSL_PROTO_TLS1 defined, but not all prerequisites"
1958#endif
1959
1960#if defined(POLARSSL_SSL_PROTO_TLS1_1) && ( !defined(POLARSSL_MD5_C) || \
1961 !defined(POLARSSL_SHA1_C) )
1962#error "POLARSSL_SSL_PROTO_TLS1_1 defined, but not all prerequisites"
1963#endif
1964
1965#if defined(POLARSSL_SSL_PROTO_TLS1_2) && ( !defined(POLARSSL_SHA1_C) && \
1966 !defined(POLARSSL_SHA256_C) && !defined(POLARSSL_SHA512_C) )
1967#error "POLARSSL_SSL_PROTO_TLS1_2 defined, but not all prerequisites"
1968#endif
1969
Paul Bakker7ad00f92013-04-18 23:05:25 +02001970#if defined(POLARSSL_SSL_CLI_C) && !defined(POLARSSL_SSL_TLS_C)
1971#error "POLARSSL_SSL_CLI_C defined, but not all prerequisites"
1972#endif
1973
Paul Bakker577e0062013-08-28 11:57:20 +02001974#if defined(POLARSSL_SSL_TLS_C) && ( !defined(POLARSSL_CIPHER_C) || \
Manuel Pégourié-Gonnard1a483832013-09-20 12:29:15 +02001975 !defined(POLARSSL_MD_C) )
Paul Bakker7ad00f92013-04-18 23:05:25 +02001976#error "POLARSSL_SSL_TLS_C defined, but not all prerequisites"
1977#endif
1978
1979#if defined(POLARSSL_SSL_SRV_C) && !defined(POLARSSL_SSL_TLS_C)
1980#error "POLARSSL_SSL_SRV_C defined, but not all prerequisites"
1981#endif
1982
Paul Bakkerd2f068e2013-08-27 21:19:20 +02001983#if defined(POLARSSL_SSL_TLS_C) && (!defined(POLARSSL_SSL_PROTO_SSL3) && \
1984 !defined(POLARSSL_SSL_PROTO_TLS1) && !defined(POLARSSL_SSL_PROTO_TLS1_1) && \
1985 !defined(POLARSSL_SSL_PROTO_TLS1_2))
1986#error "POLARSSL_SSL_TLS_C defined, but no protocols are active"
1987#endif
1988
1989#if defined(POLARSSL_SSL_TLS_C) && (defined(POLARSSL_SSL_PROTO_SSL3) && \
1990 defined(POLARSSL_SSL_PROTO_TLS1_1) && !defined(POLARSSL_SSL_PROTO_TLS1))
1991#error "Illegal protocol selection"
1992#endif
1993
1994#if defined(POLARSSL_SSL_TLS_C) && (defined(POLARSSL_SSL_PROTO_TLS1) && \
1995 defined(POLARSSL_SSL_PROTO_TLS1_2) && !defined(POLARSSL_SSL_PROTO_TLS1_1))
1996#error "Illegal protocol selection"
1997#endif
1998
1999#if defined(POLARSSL_SSL_TLS_C) && (defined(POLARSSL_SSL_PROTO_SSL3) && \
2000 defined(POLARSSL_SSL_PROTO_TLS1_2) && (!defined(POLARSSL_SSL_PROTO_TLS1) || \
2001 !defined(POLARSSL_SSL_PROTO_TLS1_1)))
2002#error "Illegal protocol selection"
2003#endif
2004
Paul Bakker59da0a42013-08-19 13:27:17 +02002005#if defined(POLARSSL_SSL_SESSION_TICKETS) && defined(POLARSSL_SSL_TLS_C) && \
Manuel Pégourié-Gonnard92cb1d32013-09-13 16:24:20 +02002006 ( !defined(POLARSSL_AES_C) || !defined(POLARSSL_SHA256_C) || \
2007 !defined(POLARSSL_CIPHER_MODE_CBC) )
Paul Bakker59da0a42013-08-19 13:27:17 +02002008#error "POLARSSL_SSL_SESSION_TICKETS_C defined, but not all prerequisites"
2009#endif
2010
Paul Bakker2466d932013-09-28 14:40:38 +02002011#if defined(POLARSSL_THREADING_DUMMY)
2012#if !defined(POLARSSL_THREADING_C) || defined(POLARSSL_THREADING_IMPL)
2013#error "POLARSSL_THREADING_DUMMY defined, but not all prerequisites"
2014#endif
2015#define POLARSSL_THREADING_IMPL
2016#endif
2017
2018#if defined(POLARSSL_THREADING_PTHREAD)
2019#if !defined(POLARSSL_THREADING_C) || defined(POLARSSL_THREADING_IMPL)
2020#error "POLARSSL_THREADING_PTHREAD defined, but not all prerequisites"
2021#endif
2022#define POLARSSL_THREADING_IMPL
2023#endif
2024
2025#if defined(POLARSSL_THREADING_ALT)
2026#if !defined(POLARSSL_THREADING_C) || defined(POLARSSL_THREADING_IMPL)
2027#error "POLARSSL_THREADING_ALT defined, but not all prerequisites"
2028#endif
2029#define POLARSSL_THREADING_IMPL
2030#endif
2031
2032#if defined(POLARSSL_THREADING_C) && !defined(POLARSSL_THREADING_IMPL)
2033#error "POLARSSL_THREADING_C defined, single threading implementation required"
2034#endif
2035#undef POLARSSL_THREADING_IMPL
2036
Paul Bakker7c6b2c32013-09-16 13:49:26 +02002037#if defined(POLARSSL_X509_USE_C) && ( !defined(POLARSSL_BIGNUM_C) || \
Paul Bakker7ad00f92013-04-18 23:05:25 +02002038 !defined(POLARSSL_OID_C) || !defined(POLARSSL_ASN1_PARSE_C) || \
Paul Bakker4606c732013-09-15 17:04:23 +02002039 !defined(POLARSSL_PK_PARSE_C) )
Paul Bakker7c6b2c32013-09-16 13:49:26 +02002040#error "POLARSSL_X509_USE_C defined, but not all prerequisites"
Paul Bakker7ad00f92013-04-18 23:05:25 +02002041#endif
2042
Paul Bakker7c6b2c32013-09-16 13:49:26 +02002043#if defined(POLARSSL_X509_CREATE_C) && ( !defined(POLARSSL_BIGNUM_C) || \
2044 !defined(POLARSSL_OID_C) || !defined(POLARSSL_ASN1_WRITE_C) || \
2045 !defined(POLARSSL_PK_WRITE_C) )
2046#error "POLARSSL_X509_CREATE_C defined, but not all prerequisites"
2047#endif
2048
2049#if defined(POLARSSL_X509_CRT_PARSE_C) && ( !defined(POLARSSL_X509_USE_C) )
2050#error "POLARSSL_X509_CRT_PARSE_C defined, but not all prerequisites"
2051#endif
2052
2053#if defined(POLARSSL_X509_CRL_PARSE_C) && ( !defined(POLARSSL_X509_USE_C) )
2054#error "POLARSSL_X509_CRL_PARSE_C defined, but not all prerequisites"
2055#endif
2056
2057#if defined(POLARSSL_X509_CSR_PARSE_C) && ( !defined(POLARSSL_X509_USE_C) )
2058#error "POLARSSL_X509_CSR_PARSE_C defined, but not all prerequisites"
2059#endif
2060
2061#if defined(POLARSSL_X509_CRT_WRITE_C) && ( !defined(POLARSSL_X509_CREATE_C) )
2062#error "POLARSSL_X509_CRT_WRITE_C defined, but not all prerequisites"
2063#endif
2064
2065#if defined(POLARSSL_X509_CSR_WRITE_C) && ( !defined(POLARSSL_X509_CREATE_C) )
2066#error "POLARSSL_X509_CSR_WRITE_C defined, but not all prerequisites"
Paul Bakker7ad00f92013-04-18 23:05:25 +02002067#endif
2068
Paul Bakker5121ce52009-01-03 21:22:43 +00002069#endif /* config.h */