blob: a631a4a90030de3f87d9ac6bf12f0744dc5031f8 [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/**
Paul Bakker05decb22013-08-15 13:33:48 +0200646 * \def POLARSSL_SSL_MAX_FRAGMENT_LENGTH
647 *
Manuel Pégourié-Gonnard09fff7e2013-09-20 13:45:36 +0200648 * Enable support for RFC 6066 max_fragment_length extension in SSL.
Paul Bakker05decb22013-08-15 13:33:48 +0200649 *
650 * Comment this macro to disable support for the max_fragment_length extension
651 */
652#define POLARSSL_SSL_MAX_FRAGMENT_LENGTH
653
654/**
Paul Bakkerd2f068e2013-08-27 21:19:20 +0200655 * \def POLARSSL_SSL_PROTO_SSL3
656 *
Manuel Pégourié-Gonnard09fff7e2013-09-20 13:45:36 +0200657 * Enable support for SSL 3.0.
Paul Bakkerd2f068e2013-08-27 21:19:20 +0200658 *
659 * Requires: POLARSSL_MD5_C
660 * POLARSSL_SHA1_C
661 *
662 * Comment this macro to disable support for SSL 3.0
663 */
664#define POLARSSL_SSL_PROTO_SSL3
665
666/**
667 * \def POLARSSL_SSL_PROTO_TLS1
668 *
Manuel Pégourié-Gonnard09fff7e2013-09-20 13:45:36 +0200669 * Enable support for TLS 1.0.
Paul Bakkerd2f068e2013-08-27 21:19:20 +0200670 *
671 * Requires: POLARSSL_MD5_C
672 * POLARSSL_SHA1_C
673 *
674 * Comment this macro to disable support for TLS 1.0
675 */
676#define POLARSSL_SSL_PROTO_TLS1
677
678/**
679 * \def POLARSSL_SSL_PROTO_TLS1_1
680 *
Manuel Pégourié-Gonnard09fff7e2013-09-20 13:45:36 +0200681 * Enable support for TLS 1.1.
Paul Bakkerd2f068e2013-08-27 21:19:20 +0200682 *
683 * Requires: POLARSSL_MD5_C
684 * POLARSSL_SHA1_C
685 *
686 * Comment this macro to disable support for TLS 1.1
687 */
688#define POLARSSL_SSL_PROTO_TLS1_1
689
690/**
691 * \def POLARSSL_SSL_PROTO_TLS1_2
692 *
Manuel Pégourié-Gonnard09fff7e2013-09-20 13:45:36 +0200693 * Enable support for TLS 1.2.
Paul Bakkerd2f068e2013-08-27 21:19:20 +0200694 *
Manuel Pégourié-Gonnard7c3291e2013-10-27 14:29:51 +0100695 * Requires: POLARSSL_SHA1_C or POLARSSL_SHA256_C or POLARSSL_SHA512_C
Paul Bakkerd2f068e2013-08-27 21:19:20 +0200696 * (Depends on ciphersuites)
697 *
698 * Comment this macro to disable support for TLS 1.2
699 */
700#define POLARSSL_SSL_PROTO_TLS1_2
701
702/**
Paul Bakkera503a632013-08-14 13:48:06 +0200703 * \def POLARSSL_SSL_SESSION_TICKETS
704 *
Manuel Pégourié-Gonnard09fff7e2013-09-20 13:45:36 +0200705 * Enable support for RFC 5077 session tickets in SSL.
Paul Bakkera503a632013-08-14 13:48:06 +0200706 *
707 * Requires: POLARSSL_AES_C
708 * POLARSSL_SHA256_C
Manuel Pégourié-Gonnard92cb1d32013-09-13 16:24:20 +0200709 * POLARSSL_CIPHER_MODE_CBC
Paul Bakkera503a632013-08-14 13:48:06 +0200710 *
711 * Comment this macro to disable support for SSL session tickets
712 */
713#define POLARSSL_SSL_SESSION_TICKETS
714
715/**
Paul Bakker0be444a2013-08-27 21:55:01 +0200716 * \def POLARSSL_SSL_SERVER_NAME_INDICATION
717 *
Manuel Pégourié-Gonnard09fff7e2013-09-20 13:45:36 +0200718 * Enable support for RFC 6066 server name indication (SNI) in SSL.
Paul Bakker0be444a2013-08-27 21:55:01 +0200719 *
720 * Comment this macro to disable support for server name indication in SSL
721 */
722#define POLARSSL_SSL_SERVER_NAME_INDICATION
723
724/**
Paul Bakker1f2bc622013-08-15 13:45:55 +0200725 * \def POLARSSL_SSL_TRUNCATED_HMAC
726 *
Manuel Pégourié-Gonnard09fff7e2013-09-20 13:45:36 +0200727 * Enable support for RFC 6066 truncated HMAC in SSL.
Paul Bakker1f2bc622013-08-15 13:45:55 +0200728 *
729 * Comment this macro to disable support for truncated HMAC in SSL
730 */
731#define POLARSSL_SSL_TRUNCATED_HMAC
732
733/**
Paul Bakker2466d932013-09-28 14:40:38 +0200734 * \def POLARSSL_THREADING_ALT
735 *
736 * Provide your own alternate threading implementation.
737 *
738 * Requires: POLARSSL_THREADING_C
739 *
740 * Uncomment this to allow your own alternate threading implementation.
Paul Bakker2466d932013-09-28 14:40:38 +0200741 */
Paul Bakkera7ea6a52013-10-15 11:55:10 +0200742//#define POLARSSL_THREADING_ALT
Paul Bakker2466d932013-09-28 14:40:38 +0200743
744/**
745 * \def POLARSSL_THREADING_DUMMY
746 *
747 * Provide a dummy threading implementation.
Paul Bakker6838bd12013-09-30 13:56:38 +0200748 * Warning: If you use this, all claims of thread-safety in the documentation
749 * are void!
Paul Bakker2466d932013-09-28 14:40:38 +0200750 *
751 * Requires: POLARSSL_THREADING_C
752 *
753 * Uncomment this to enable code to compile like with threading enabled
Paul Bakker2466d932013-09-28 14:40:38 +0200754 */
Paul Bakkera7ea6a52013-10-15 11:55:10 +0200755//#define POLARSSL_THREADING_DUMMY
Paul Bakker2466d932013-09-28 14:40:38 +0200756
757/**
758 * \def POLARSSL_THREADING_PTHREAD
759 *
760 * Enable the pthread wrapper layer for the threading layer.
761 *
762 * Requires: POLARSSL_THREADING_C
763 *
764 * Uncomment this to enable pthread mutexes.
Paul Bakker2466d932013-09-28 14:40:38 +0200765 */
Paul Bakkera7ea6a52013-10-15 11:55:10 +0200766//#define POLARSSL_THREADING_PTHREAD
Paul Bakker2466d932013-09-28 14:40:38 +0200767
768/**
Paul Bakkerc27c4e22013-09-23 15:01:36 +0200769 * \def POLARSSL_X509_ALLOW_EXTENSIONS_NON_V3
770 *
771 * If set, the X509 parser will not break-off when parsing an X509 certificate
772 * and encountering an extension in a v1 or v2 certificate.
773 *
774 * Uncomment to prevent an error.
Paul Bakkerc27c4e22013-09-23 15:01:36 +0200775 */
Paul Bakkera7ea6a52013-10-15 11:55:10 +0200776//#define POLARSSL_X509_ALLOW_EXTENSIONS_NON_V3
Paul Bakkerc27c4e22013-09-23 15:01:36 +0200777
778/**
Paul Bakker5c721f92011-07-27 16:51:09 +0000779 * \def POLARSSL_X509_ALLOW_UNSUPPORTED_CRITICAL_EXTENSION
780 *
781 * If set, the X509 parser will not break-off when parsing an X509 certificate
782 * and encountering an unknown critical extension.
783 *
784 * Uncomment to prevent an error.
Paul Bakker5c721f92011-07-27 16:51:09 +0000785 */
Paul Bakkera7ea6a52013-10-15 11:55:10 +0200786//#define POLARSSL_X509_ALLOW_UNSUPPORTED_CRITICAL_EXTENSION
Paul Bakker2770fbd2012-07-03 13:30:23 +0000787
788/**
789 * \def POLARSSL_ZLIB_SUPPORT
790 *
791 * If set, the SSL/TLS module uses ZLIB to support compression and
792 * decompression of packet data.
793 *
794 * Used in: library/ssl_tls.c
795 * library/ssl_cli.c
796 * library/ssl_srv.c
797 *
798 * This feature requires zlib library and headers to be present.
799 *
800 * Uncomment to enable use of ZLIB
Paul Bakker2770fbd2012-07-03 13:30:23 +0000801 */
Paul Bakkera7ea6a52013-10-15 11:55:10 +0200802//#define POLARSSL_ZLIB_SUPPORT
Manuel Pégourié-Gonnard09fff7e2013-09-20 13:45:36 +0200803/* \} name SECTION: PolarSSL feature support */
Paul Bakker0a62cd12011-01-21 11:00:08 +0000804
Paul Bakkerf3b86c12011-01-27 15:24:17 +0000805/**
Paul Bakker0a62cd12011-01-21 11:00:08 +0000806 * \name SECTION: PolarSSL modules
807 *
808 * This section enables or disables entire modules in PolarSSL
809 * \{
810 */
Paul Bakker5121ce52009-01-03 21:22:43 +0000811
Paul Bakkerf3b86c12011-01-27 15:24:17 +0000812/**
813 * \def POLARSSL_AES_C
814 *
815 * Enable the AES block cipher.
816 *
Paul Bakker5121ce52009-01-03 21:22:43 +0000817 * Module: library/aes.c
818 * Caller: library/ssl_tls.c
Paul Bakker96743fc2011-02-12 14:30:57 +0000819 * library/pem.c
Paul Bakker6083fd22011-12-03 21:45:14 +0000820 * library/ctr_drbg.c
Paul Bakker5121ce52009-01-03 21:22:43 +0000821 *
Paul Bakker645ce3a2012-10-31 12:32:41 +0000822 * This module enables the following ciphersuites (if other requisites are
823 * enabled as well):
Manuel Pégourié-Gonnard9d703732013-10-25 18:01:50 +0200824 * TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384
825 * TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
826 * TLS_DHE_RSA_WITH_AES_256_GCM_SHA384
827 * TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384
828 * TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384
Paul Bakker645ce3a2012-10-31 12:32:41 +0000829 * TLS_DHE_RSA_WITH_AES_256_CBC_SHA256
Manuel Pégourié-Gonnard9d703732013-10-25 18:01:50 +0200830 * TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA
Paul Bakker41c83d32013-03-20 14:39:14 +0100831 * TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA
Manuel Pégourié-Gonnard9d703732013-10-25 18:01:50 +0200832 * TLS_DHE_RSA_WITH_AES_256_CBC_SHA
833 * TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
834 * TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
835 * TLS_DHE_RSA_WITH_AES_128_GCM_SHA256
836 * TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256
837 * TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256
838 * TLS_DHE_RSA_WITH_AES_128_CBC_SHA256
839 * TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA
840 * TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA
841 * TLS_DHE_RSA_WITH_AES_128_CBC_SHA
842 * TLS_DHE_PSK_WITH_AES_256_GCM_SHA384
843 * TLS_ECDHE_PSK_WITH_AES_256_CBC_SHA384
844 * TLS_DHE_PSK_WITH_AES_256_CBC_SHA384
845 * TLS_ECDHE_PSK_WITH_AES_256_CBC_SHA
846 * TLS_DHE_PSK_WITH_AES_256_CBC_SHA
847 * TLS_DHE_PSK_WITH_AES_128_GCM_SHA256
848 * TLS_ECDHE_PSK_WITH_AES_128_CBC_SHA256
849 * TLS_DHE_PSK_WITH_AES_128_CBC_SHA256
850 * TLS_ECDHE_PSK_WITH_AES_128_CBC_SHA
851 * TLS_DHE_PSK_WITH_AES_128_CBC_SHA
852 * TLS_RSA_WITH_AES_256_GCM_SHA384
853 * TLS_RSA_WITH_AES_256_CBC_SHA256
854 * TLS_RSA_WITH_AES_256_CBC_SHA
855 * TLS_RSA_WITH_AES_128_GCM_SHA256
856 * TLS_RSA_WITH_AES_128_CBC_SHA256
857 * TLS_RSA_WITH_AES_128_CBC_SHA
858 * TLS_RSA_PSK_WITH_AES_256_GCM_SHA384
859 * TLS_RSA_PSK_WITH_AES_256_CBC_SHA384
860 * TLS_RSA_PSK_WITH_AES_256_CBC_SHA
861 * TLS_RSA_PSK_WITH_AES_128_GCM_SHA256
862 * TLS_RSA_PSK_WITH_AES_128_CBC_SHA256
863 * TLS_RSA_PSK_WITH_AES_128_CBC_SHA
864 * TLS_PSK_WITH_AES_256_GCM_SHA384
865 * TLS_PSK_WITH_AES_256_CBC_SHA384
Paul Bakkerd4a56ec2013-04-16 18:05:29 +0200866 * TLS_PSK_WITH_AES_256_CBC_SHA
Manuel Pégourié-Gonnard9d703732013-10-25 18:01:50 +0200867 * TLS_PSK_WITH_AES_128_GCM_SHA256
868 * TLS_PSK_WITH_AES_128_CBC_SHA256
869 * TLS_PSK_WITH_AES_128_CBC_SHA
Paul Bakker6deb37e2013-02-19 13:17:08 +0100870 *
Paul Bakkercff68422013-09-15 20:43:33 +0200871 * PEM_PARSE uses AES for decrypting encrypted keys.
Paul Bakker5121ce52009-01-03 21:22:43 +0000872 */
Paul Bakker40e46942009-01-03 21:51:57 +0000873#define POLARSSL_AES_C
Paul Bakker5121ce52009-01-03 21:22:43 +0000874
Paul Bakkerf3b86c12011-01-27 15:24:17 +0000875/**
876 * \def POLARSSL_ARC4_C
877 *
878 * Enable the ARCFOUR stream cipher.
879 *
Paul Bakker5121ce52009-01-03 21:22:43 +0000880 * Module: library/arc4.c
881 * Caller: library/ssl_tls.c
882 *
Paul Bakker41c83d32013-03-20 14:39:14 +0100883 * This module enables the following ciphersuites (if other requisites are
884 * enabled as well):
Manuel Pégourié-Gonnard9d703732013-10-25 18:01:50 +0200885 * TLS_ECDHE_ECDSA_WITH_RC4_128_SHA
Paul Bakker41c83d32013-03-20 14:39:14 +0100886 * TLS_ECDHE_RSA_WITH_RC4_128_SHA
Manuel Pégourié-Gonnard9d703732013-10-25 18:01:50 +0200887 * TLS_ECDHE_PSK_WITH_RC4_128_SHA
888 * TLS_DHE_PSK_WITH_RC4_128_SHA
889 * TLS_RSA_WITH_RC4_128_SHA
890 * TLS_RSA_WITH_RC4_128_MD5
891 * TLS_RSA_PSK_WITH_RC4_128_SHA
Paul Bakkerd4a56ec2013-04-16 18:05:29 +0200892 * TLS_PSK_WITH_RC4_128_SHA
Paul Bakker5121ce52009-01-03 21:22:43 +0000893 */
Paul Bakker40e46942009-01-03 21:51:57 +0000894#define POLARSSL_ARC4_C
Paul Bakker5121ce52009-01-03 21:22:43 +0000895
Paul Bakkerf3b86c12011-01-27 15:24:17 +0000896/**
Paul Bakkerefc30292011-11-10 14:43:23 +0000897 * \def POLARSSL_ASN1_PARSE_C
898 *
899 * Enable the generic ASN1 parser.
900 *
901 * Module: library/asn1.c
Manuel Pégourié-Gonnardfe286462013-09-20 14:10:14 +0200902 * Caller: library/x509.c
903 * library/dhm.c
904 * library/pkcs12.c
905 * library/pkcs5.c
906 * library/pkparse.c
Paul Bakkerefc30292011-11-10 14:43:23 +0000907 */
908#define POLARSSL_ASN1_PARSE_C
909
910/**
Paul Bakkerbdb912d2012-02-13 23:11:30 +0000911 * \def POLARSSL_ASN1_WRITE_C
912 *
913 * Enable the generic ASN1 writer.
914 *
915 * Module: library/asn1write.c
Manuel Pégourié-Gonnardfe286462013-09-20 14:10:14 +0200916 * Caller: library/ecdsa.c
917 * library/pkwrite.c
918 * library/x509_create.c
919 * library/x509write_crt.c
920 * library/x509write_csr.c
Paul Bakkerbdb912d2012-02-13 23:11:30 +0000921 */
922#define POLARSSL_ASN1_WRITE_C
923
924/**
Paul Bakkerf3b86c12011-01-27 15:24:17 +0000925 * \def POLARSSL_BASE64_C
926 *
927 * Enable the Base64 module.
928 *
Paul Bakker5121ce52009-01-03 21:22:43 +0000929 * Module: library/base64.c
Paul Bakker5690efc2011-05-26 13:16:06 +0000930 * Caller: library/pem.c
Paul Bakker5121ce52009-01-03 21:22:43 +0000931 *
Paul Bakker5690efc2011-05-26 13:16:06 +0000932 * This module is required for PEM support (required by X.509).
Paul Bakker5121ce52009-01-03 21:22:43 +0000933 */
Paul Bakker40e46942009-01-03 21:51:57 +0000934#define POLARSSL_BASE64_C
Paul Bakker5121ce52009-01-03 21:22:43 +0000935
Paul Bakkerf3b86c12011-01-27 15:24:17 +0000936/**
937 * \def POLARSSL_BIGNUM_C
938 *
Paul Bakker9a736322012-11-14 12:39:52 +0000939 * Enable the multi-precision integer library.
Paul Bakkerf3b86c12011-01-27 15:24:17 +0000940 *
Paul Bakker5121ce52009-01-03 21:22:43 +0000941 * Module: library/bignum.c
942 * Caller: library/dhm.c
Manuel Pégourié-Gonnardfe286462013-09-20 14:10:14 +0200943 * library/ecp.c
Paul Bakker5121ce52009-01-03 21:22:43 +0000944 * library/rsa.c
945 * library/ssl_tls.c
Paul Bakker5121ce52009-01-03 21:22:43 +0000946 *
947 * This module is required for RSA and DHM support.
948 */
Paul Bakker40e46942009-01-03 21:51:57 +0000949#define POLARSSL_BIGNUM_C
Paul Bakker5121ce52009-01-03 21:22:43 +0000950
Paul Bakkerf3b86c12011-01-27 15:24:17 +0000951/**
Paul Bakkera9379c02012-07-04 11:02:11 +0000952 * \def POLARSSL_BLOWFISH_C
953 *
954 * Enable the Blowfish block cipher.
955 *
956 * Module: library/blowfish.c
957 */
958#define POLARSSL_BLOWFISH_C
959
960/**
Paul Bakkerf3b86c12011-01-27 15:24:17 +0000961 * \def POLARSSL_CAMELLIA_C
962 *
963 * Enable the Camellia block cipher.
964 *
Paul Bakker38119b12009-01-10 23:31:23 +0000965 * Module: library/camellia.c
Paul Bakker13e2dfe2009-07-28 07:18:38 +0000966 * Caller: library/ssl_tls.c
Paul Bakker38119b12009-01-10 23:31:23 +0000967 *
Paul Bakker645ce3a2012-10-31 12:32:41 +0000968 * This module enables the following ciphersuites (if other requisites are
969 * enabled as well):
Manuel Pégourié-Gonnard9d703732013-10-25 18:01:50 +0200970 * TLS_ECDHE_ECDSA_WITH_CAMELLIA_256_GCM_SHA384
971 * TLS_ECDHE_RSA_WITH_CAMELLIA_256_GCM_SHA384
972 * TLS_DHE_RSA_WITH_CAMELLIA_256_GCM_SHA384
973 * TLS_ECDHE_ECDSA_WITH_CAMELLIA_256_CBC_SHA384
974 * TLS_ECDHE_RSA_WITH_CAMELLIA_256_CBC_SHA384
Paul Bakker645ce3a2012-10-31 12:32:41 +0000975 * TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA256
Manuel Pégourié-Gonnard9d703732013-10-25 18:01:50 +0200976 * TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA
977 * TLS_ECDHE_ECDSA_WITH_CAMELLIA_128_GCM_SHA256
978 * TLS_ECDHE_RSA_WITH_CAMELLIA_128_GCM_SHA256
979 * TLS_DHE_RSA_WITH_CAMELLIA_128_GCM_SHA256
980 * TLS_ECDHE_ECDSA_WITH_CAMELLIA_128_CBC_SHA256
981 * TLS_ECDHE_RSA_WITH_CAMELLIA_128_CBC_SHA256
982 * TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA256
983 * TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA
984 * TLS_DHE_PSK_WITH_CAMELLIA_256_GCM_SHA384
985 * TLS_ECDHE_PSK_WITH_CAMELLIA_256_CBC_SHA384
986 * TLS_DHE_PSK_WITH_CAMELLIA_256_CBC_SHA384
987 * TLS_DHE_PSK_WITH_CAMELLIA_128_GCM_SHA256
988 * TLS_DHE_PSK_WITH_CAMELLIA_128_CBC_SHA256
989 * TLS_ECDHE_PSK_WITH_CAMELLIA_128_CBC_SHA256
990 * TLS_RSA_WITH_CAMELLIA_256_GCM_SHA384
991 * TLS_RSA_WITH_CAMELLIA_256_CBC_SHA256
992 * TLS_RSA_WITH_CAMELLIA_256_CBC_SHA
993 * TLS_RSA_WITH_CAMELLIA_128_GCM_SHA256
994 * TLS_RSA_WITH_CAMELLIA_128_CBC_SHA256
995 * TLS_RSA_WITH_CAMELLIA_128_CBC_SHA
996 * TLS_RSA_PSK_WITH_CAMELLIA_256_GCM_SHA384
997 * TLS_RSA_PSK_WITH_CAMELLIA_256_CBC_SHA384
998 * TLS_RSA_PSK_WITH_CAMELLIA_128_GCM_SHA256
999 * TLS_RSA_PSK_WITH_CAMELLIA_128_CBC_SHA256
1000 * TLS_PSK_WITH_CAMELLIA_256_GCM_SHA384
1001 * TLS_PSK_WITH_CAMELLIA_256_CBC_SHA384
1002 * TLS_PSK_WITH_CAMELLIA_128_GCM_SHA256
1003 * TLS_PSK_WITH_CAMELLIA_128_CBC_SHA256
Paul Bakker38119b12009-01-10 23:31:23 +00001004 */
1005#define POLARSSL_CAMELLIA_C
1006
Paul Bakkerf3b86c12011-01-27 15:24:17 +00001007/**
1008 * \def POLARSSL_CERTS_C
1009 *
1010 * Enable the test certificates.
1011 *
Paul Bakker5121ce52009-01-03 21:22:43 +00001012 * Module: library/certs.c
1013 * Caller:
1014 *
Manuel Pégourié-Gonnard18dc0e22013-10-27 14:35:02 +01001015 * Requires: POLARSSL_PEM_PARSE_C
1016 *
Paul Bakker5121ce52009-01-03 21:22:43 +00001017 * This module is used for testing (ssl_client/server).
1018 */
Paul Bakker40e46942009-01-03 21:51:57 +00001019#define POLARSSL_CERTS_C
Paul Bakker5121ce52009-01-03 21:22:43 +00001020
Paul Bakkerf3b86c12011-01-27 15:24:17 +00001021/**
1022 * \def POLARSSL_CIPHER_C
1023 *
1024 * Enable the generic cipher layer.
1025 *
Paul Bakker8123e9d2011-01-06 15:37:30 +00001026 * Module: library/cipher.c
Paul Bakker04784f52013-08-19 13:30:57 +02001027 * Caller: library/ssl_tls.c
Paul Bakker8123e9d2011-01-06 15:37:30 +00001028 *
1029 * Uncomment to enable generic cipher wrappers.
1030 */
1031#define POLARSSL_CIPHER_C
1032
Paul Bakkerf3b86c12011-01-27 15:24:17 +00001033/**
Paul Bakker0e04d0e2011-11-27 14:46:59 +00001034 * \def POLARSSL_CTR_DRBG_C
1035 *
Manuel Pégourié-Gonnard09fff7e2013-09-20 13:45:36 +02001036 * Enable the CTR_DRBG AES-256-based random generator.
Paul Bakker0e04d0e2011-11-27 14:46:59 +00001037 *
1038 * Module: library/ctr_drbg.c
1039 * Caller:
1040 *
Paul Bakker6083fd22011-12-03 21:45:14 +00001041 * Requires: POLARSSL_AES_C
1042 *
Paul Bakker0e04d0e2011-11-27 14:46:59 +00001043 * This module provides the CTR_DRBG AES-256 random number generator.
1044 */
1045#define POLARSSL_CTR_DRBG_C
1046
1047/**
Paul Bakkerf3b86c12011-01-27 15:24:17 +00001048 * \def POLARSSL_DEBUG_C
1049 *
1050 * Enable the debug functions.
1051 *
Paul Bakker5121ce52009-01-03 21:22:43 +00001052 * Module: library/debug.c
1053 * Caller: library/ssl_cli.c
1054 * library/ssl_srv.c
1055 * library/ssl_tls.c
1056 *
1057 * This module provides debugging functions.
1058 */
Paul Bakker40e46942009-01-03 21:51:57 +00001059#define POLARSSL_DEBUG_C
Paul Bakker5121ce52009-01-03 21:22:43 +00001060
Paul Bakkerf3b86c12011-01-27 15:24:17 +00001061/**
1062 * \def POLARSSL_DES_C
1063 *
1064 * Enable the DES block cipher.
1065 *
Paul Bakker5121ce52009-01-03 21:22:43 +00001066 * Module: library/des.c
Paul Bakker6deb37e2013-02-19 13:17:08 +01001067 * Caller: library/pem.c
1068 * library/ssl_tls.c
Paul Bakker5121ce52009-01-03 21:22:43 +00001069 *
Paul Bakker645ce3a2012-10-31 12:32:41 +00001070 * This module enables the following ciphersuites (if other requisites are
1071 * enabled as well):
Manuel Pégourié-Gonnard9d703732013-10-25 18:01:50 +02001072 * TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA
Paul Bakker41c83d32013-03-20 14:39:14 +01001073 * TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA
Manuel Pégourié-Gonnard9d703732013-10-25 18:01:50 +02001074 * TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA
1075 * TLS_ECDHE_PSK_WITH_3DES_EDE_CBC_SHA
1076 * TLS_DHE_PSK_WITH_3DES_EDE_CBC_SHA
1077 * TLS_RSA_WITH_3DES_EDE_CBC_SHA
1078 * TLS_RSA_PSK_WITH_3DES_EDE_CBC_SHA
Paul Bakkerd4a56ec2013-04-16 18:05:29 +02001079 * TLS_PSK_WITH_3DES_EDE_CBC_SHA
Paul Bakker6deb37e2013-02-19 13:17:08 +01001080 *
Paul Bakkercff68422013-09-15 20:43:33 +02001081 * PEM_PARSE uses DES/3DES for decrypting encrypted keys.
Paul Bakker5121ce52009-01-03 21:22:43 +00001082 */
Paul Bakker40e46942009-01-03 21:51:57 +00001083#define POLARSSL_DES_C
Paul Bakker5121ce52009-01-03 21:22:43 +00001084
Paul Bakkerf3b86c12011-01-27 15:24:17 +00001085/**
1086 * \def POLARSSL_DHM_C
1087 *
Manuel Pégourié-Gonnard9d703732013-10-25 18:01:50 +02001088 * Enable the Diffie-Hellman-Merkle module.
Paul Bakkerf3b86c12011-01-27 15:24:17 +00001089 *
Paul Bakker5121ce52009-01-03 21:22:43 +00001090 * Module: library/dhm.c
1091 * Caller: library/ssl_cli.c
1092 * library/ssl_srv.c
1093 *
Manuel Pégourié-Gonnard9d703732013-10-25 18:01:50 +02001094 * This module is used by the following key exchanges:
1095 * DHE-RSA, DHE-PSK
Paul Bakker5121ce52009-01-03 21:22:43 +00001096 */
Paul Bakker40e46942009-01-03 21:51:57 +00001097#define POLARSSL_DHM_C
Paul Bakker5121ce52009-01-03 21:22:43 +00001098
Paul Bakkerf3b86c12011-01-27 15:24:17 +00001099/**
Paul Bakkerd589a0d2013-03-13 16:30:17 +01001100 * \def POLARSSL_ECDH_C
1101 *
1102 * Enable the elliptic curve Diffie-Hellman library.
1103 *
1104 * Module: library/ecdh.c
Paul Bakker41c83d32013-03-20 14:39:14 +01001105 * Caller: library/ssl_cli.c
1106 * library/ssl_srv.c
1107 *
Manuel Pégourié-Gonnard9d703732013-10-25 18:01:50 +02001108 * This module is used by the following key exchanges:
1109 * ECDHE-ECDSA, ECDHE-RSA, DHE-PSK
Paul Bakkerd589a0d2013-03-13 16:30:17 +01001110 *
1111 * Requires: POLARSSL_ECP_C
1112 */
1113#define POLARSSL_ECDH_C
1114
1115/**
1116 * \def POLARSSL_ECDSA_C
1117 *
1118 * Enable the elliptic curve DSA library.
1119 *
1120 * Module: library/ecdsa.c
1121 * Caller:
1122 *
Manuel Pégourié-Gonnard9d703732013-10-25 18:01:50 +02001123 * This module is used by the following key exchanges:
1124 * ECDHE-ECDSA
1125 *
Manuel Pégourié-Gonnard4846f5e2013-08-08 14:36:15 +02001126 * Requires: POLARSSL_ECP_C, POLARSSL_ASN1_WRITE_C, POLARSSL_ASN1_PARSE_C
Paul Bakkerd589a0d2013-03-13 16:30:17 +01001127 */
1128#define POLARSSL_ECDSA_C
1129
1130/**
1131 * \def POLARSSL_ECP_C
1132 *
1133 * Enable the elliptic curve over GF(p) library.
1134 *
1135 * Module: library/ecp.c
1136 * Caller: library/ecdh.c
1137 * library/ecdsa.c
1138 *
Manuel Pégourié-Gonnardb8012fc2013-10-10 15:40:49 +02001139 * Requires: POLARSSL_BIGNUM_C and at least one POLARSSL_ECP_DP_XXX_ENABLED
Paul Bakkerd589a0d2013-03-13 16:30:17 +01001140 */
1141#define POLARSSL_ECP_C
1142
1143/**
Paul Bakker6083fd22011-12-03 21:45:14 +00001144 * \def POLARSSL_ENTROPY_C
1145 *
1146 * Enable the platform-specific entropy code.
1147 *
1148 * Module: library/entropy.c
1149 * Caller:
1150 *
Paul Bakker9e36f042013-06-30 14:34:05 +02001151 * Requires: POLARSSL_SHA512_C
Paul Bakker6083fd22011-12-03 21:45:14 +00001152 *
1153 * This module provides a generic entropy pool
1154 */
1155#define POLARSSL_ENTROPY_C
1156
1157/**
Paul Bakker9d781402011-05-09 16:17:09 +00001158 * \def POLARSSL_ERROR_C
1159 *
1160 * Enable error code to error string conversion.
1161 *
1162 * Module: library/error.c
1163 * Caller:
1164 *
1165 * This module enables err_strerror().
1166 */
1167#define POLARSSL_ERROR_C
1168
1169/**
Paul Bakker89e80c92012-03-20 13:50:09 +00001170 * \def POLARSSL_GCM_C
1171 *
Manuel Pégourié-Gonnard09fff7e2013-09-20 13:45:36 +02001172 * Enable the Galois/Counter Mode (GCM) for AES.
Paul Bakker89e80c92012-03-20 13:50:09 +00001173 *
1174 * Module: library/gcm.c
1175 *
Manuel Pégourié-Gonnard7bd8a992013-10-24 13:39:39 +02001176 * Requires: POLARSSL_AES_C or POLARSSL_CAMELLIA_C
Paul Bakker645ce3a2012-10-31 12:32:41 +00001177 *
Manuel Pégourié-Gonnard9d703732013-10-25 18:01:50 +02001178 * This module enables the AES-GCM and CAMELLIA-GCM ciphersuites, if other
1179 * requisites are enabled as well.
Paul Bakker89e80c92012-03-20 13:50:09 +00001180 */
1181#define POLARSSL_GCM_C
1182
1183/**
Paul Bakkerf3b86c12011-01-27 15:24:17 +00001184 * \def POLARSSL_HAVEGE_C
1185 *
1186 * Enable the HAVEGE random generator.
1187 *
Paul Bakker2a844242013-06-24 13:01:53 +02001188 * Warning: the HAVEGE random generator is not suitable for virtualized
1189 * environments
1190 *
1191 * Warning: the HAVEGE random generator is dependent on timing and specific
1192 * processor traits. It is therefore not advised to use HAVEGE as
1193 * your applications primary random generator or primary entropy pool
1194 * input. As a secondary input to your entropy pool, it IS able add
1195 * the (limited) extra entropy it provides.
1196 *
Paul Bakker5121ce52009-01-03 21:22:43 +00001197 * Module: library/havege.c
1198 * Caller:
1199 *
Paul Bakker5690efc2011-05-26 13:16:06 +00001200 * Requires: POLARSSL_TIMING_C
1201 *
Paul Bakker2a844242013-06-24 13:01:53 +02001202 * Uncomment to enable the HAVEGE random generator.
Paul Bakker2a844242013-06-24 13:01:53 +02001203 */
Paul Bakkera7ea6a52013-10-15 11:55:10 +02001204//#define POLARSSL_HAVEGE_C
Paul Bakker5121ce52009-01-03 21:22:43 +00001205
Paul Bakkerf3b86c12011-01-27 15:24:17 +00001206/**
1207 * \def POLARSSL_MD_C
1208 *
1209 * Enable the generic message digest layer.
1210 *
Paul Bakker17373852011-01-06 14:20:01 +00001211 * Module: library/md.c
1212 * Caller:
1213 *
1214 * Uncomment to enable generic message digest wrappers.
1215 */
1216#define POLARSSL_MD_C
1217
Paul Bakkerf3b86c12011-01-27 15:24:17 +00001218/**
1219 * \def POLARSSL_MD2_C
1220 *
Manuel Pégourié-Gonnard09fff7e2013-09-20 13:45:36 +02001221 * Enable the MD2 hash algorithm.
Paul Bakkerf3b86c12011-01-27 15:24:17 +00001222 *
Paul Bakker5121ce52009-01-03 21:22:43 +00001223 * Module: library/md2.c
Manuel Pégourié-Gonnardfe286462013-09-20 14:10:14 +02001224 * Caller:
Paul Bakker5121ce52009-01-03 21:22:43 +00001225 *
1226 * Uncomment to enable support for (rare) MD2-signed X.509 certs.
Paul Bakker6506aff2009-07-28 20:52:02 +00001227 */
Paul Bakkera7ea6a52013-10-15 11:55:10 +02001228//#define POLARSSL_MD2_C
Paul Bakker5121ce52009-01-03 21:22:43 +00001229
Paul Bakkerf3b86c12011-01-27 15:24:17 +00001230/**
1231 * \def POLARSSL_MD4_C
1232 *
Manuel Pégourié-Gonnard09fff7e2013-09-20 13:45:36 +02001233 * Enable the MD4 hash algorithm.
Paul Bakkerf3b86c12011-01-27 15:24:17 +00001234 *
Paul Bakker5121ce52009-01-03 21:22:43 +00001235 * Module: library/md4.c
Manuel Pégourié-Gonnardfe286462013-09-20 14:10:14 +02001236 * Caller:
Paul Bakker5121ce52009-01-03 21:22:43 +00001237 *
1238 * Uncomment to enable support for (rare) MD4-signed X.509 certs.
Paul Bakker6506aff2009-07-28 20:52:02 +00001239 */
Paul Bakkera7ea6a52013-10-15 11:55:10 +02001240//#define POLARSSL_MD4_C
Paul Bakker5121ce52009-01-03 21:22:43 +00001241
Paul Bakkerf3b86c12011-01-27 15:24:17 +00001242/**
1243 * \def POLARSSL_MD5_C
1244 *
Manuel Pégourié-Gonnard09fff7e2013-09-20 13:45:36 +02001245 * Enable the MD5 hash algorithm.
Paul Bakkerf3b86c12011-01-27 15:24:17 +00001246 *
Paul Bakker5121ce52009-01-03 21:22:43 +00001247 * Module: library/md5.c
Manuel Pégourié-Gonnardfe286462013-09-20 14:10:14 +02001248 * Caller: library/md.c
1249 * library/pem.c
Paul Bakker6deb37e2013-02-19 13:17:08 +01001250 * library/ssl_tls.c
Paul Bakker5121ce52009-01-03 21:22:43 +00001251 *
1252 * This module is required for SSL/TLS and X.509.
Paul Bakkercff68422013-09-15 20:43:33 +02001253 * PEM_PARSE uses MD5 for decrypting encrypted keys.
Paul Bakker5121ce52009-01-03 21:22:43 +00001254 */
Paul Bakker40e46942009-01-03 21:51:57 +00001255#define POLARSSL_MD5_C
Paul Bakker5121ce52009-01-03 21:22:43 +00001256
Paul Bakkerf3b86c12011-01-27 15:24:17 +00001257/**
Paul Bakker6e339b52013-07-03 13:37:05 +02001258 * \def POLARSSL_MEMORY_C
1259 *
1260 * Enable the memory allocation layer.
1261 * By default PolarSSL uses the system-provided malloc() and free().
1262 * (As long as POLARSSL_MEMORY_STDMALLOC and POLARSSL_MEMORY_STDFREE
1263 * are defined and unmodified)
1264 *
1265 * This allows different allocators (self-implemented or provided)
1266 *
1267 * Enable this layer to allow use of alternative memory allocators.
Paul Bakker6e339b52013-07-03 13:37:05 +02001268 */
Paul Bakkera7ea6a52013-10-15 11:55:10 +02001269//#define POLARSSL_MEMORY_C
Paul Bakker6e339b52013-07-03 13:37:05 +02001270
1271/**
Manuel Pégourié-Gonnard09fff7e2013-09-20 13:45:36 +02001272 * \def POLARSSL_MEMORY_BUFFER_ALLOC_C
1273 *
1274 * Enable the buffer allocator implementation that makes use of a (stack)
1275 * based buffer to 'allocate' dynamic memory. (replaces malloc() and free()
1276 * calls)
Paul Bakker6e339b52013-07-03 13:37:05 +02001277 *
1278 * Module: library/memory_buffer_alloc.c
1279 *
1280 * Requires: POLARSSL_MEMORY_C
1281 *
1282 * Enable this module to enable the buffer memory allocator.
Paul Bakker6e339b52013-07-03 13:37:05 +02001283 */
Paul Bakkera7ea6a52013-10-15 11:55:10 +02001284//#define POLARSSL_MEMORY_BUFFER_ALLOC_C
Paul Bakker6e339b52013-07-03 13:37:05 +02001285
1286/**
Paul Bakkerf3b86c12011-01-27 15:24:17 +00001287 * \def POLARSSL_NET_C
1288 *
1289 * Enable the TCP/IP networking routines.
1290 *
Paul Bakker5121ce52009-01-03 21:22:43 +00001291 * Module: library/net.c
Paul Bakker5121ce52009-01-03 21:22:43 +00001292 *
1293 * This module provides TCP/IP networking routines.
1294 */
Paul Bakker40e46942009-01-03 21:51:57 +00001295#define POLARSSL_NET_C
Paul Bakker5121ce52009-01-03 21:22:43 +00001296
Paul Bakkerf3b86c12011-01-27 15:24:17 +00001297/**
Paul Bakkerc70b9822013-04-07 22:00:46 +02001298 * \def POLARSSL_OID_C
1299 *
Manuel Pégourié-Gonnard09fff7e2013-09-20 13:45:36 +02001300 * Enable the OID database.
Paul Bakkerc70b9822013-04-07 22:00:46 +02001301 *
1302 * Module: library/oid.c
Manuel Pégourié-Gonnardfe286462013-09-20 14:10:14 +02001303 * Caller: library/asn1write.c
1304 * library/pkcs5.c
1305 * library/pkparse.c
1306 * library/pkwrite.c
1307 * library/rsa.c
1308 * library/x509.c
1309 * library/x509_create.c
1310 * library/x509_crl.c
1311 * library/x509_crt.c
1312 * library/x509_csr.c
1313 * library/x509write_crt.c
1314 * library/x509write_csr.c
Paul Bakkerc70b9822013-04-07 22:00:46 +02001315 *
1316 * This modules translates between OIDs and internal values.
1317 */
1318#define POLARSSL_OID_C
1319
1320/**
Paul Bakkerf3b86c12011-01-27 15:24:17 +00001321 * \def POLARSSL_PADLOCK_C
1322 *
1323 * Enable VIA Padlock support on x86.
1324 *
Paul Bakker5121ce52009-01-03 21:22:43 +00001325 * Module: library/padlock.c
1326 * Caller: library/aes.c
1327 *
1328 * This modules adds support for the VIA PadLock on x86.
1329 */
Paul Bakker40e46942009-01-03 21:51:57 +00001330#define POLARSSL_PADLOCK_C
Paul Bakker5121ce52009-01-03 21:22:43 +00001331
Paul Bakkerf3b86c12011-01-27 15:24:17 +00001332/**
Paul Bakkerf518b162012-08-23 13:03:18 +00001333 * \def POLARSSL_PBKDF2_C
1334 *
Manuel Pégourié-Gonnard09fff7e2013-09-20 13:45:36 +02001335 * Enable PKCS#5 PBKDF2 key derivation function.
Paul Bakkerb0c19a42013-06-24 19:26:38 +02001336 * DEPRECATED: Use POLARSSL_PKCS5_C instead
Paul Bakkerf518b162012-08-23 13:03:18 +00001337 *
1338 * Module: library/pbkdf2.c
1339 *
Paul Bakkerb0c19a42013-06-24 19:26:38 +02001340 * Requires: POLARSSL_PKCS5_C
Paul Bakkerf518b162012-08-23 13:03:18 +00001341 *
1342 * This module adds support for the PKCS#5 PBKDF2 key derivation function.
Paul Bakkerf518b162012-08-23 13:03:18 +00001343 */
Paul Bakker370e90c2013-04-08 15:19:43 +02001344#define POLARSSL_PBKDF2_C
Paul Bakkerf518b162012-08-23 13:03:18 +00001345
1346/**
Paul Bakkercff68422013-09-15 20:43:33 +02001347 * \def POLARSSL_PEM_PARSE_C
Paul Bakker96743fc2011-02-12 14:30:57 +00001348 *
Manuel Pégourié-Gonnard09fff7e2013-09-20 13:45:36 +02001349 * Enable PEM decoding / parsing.
Paul Bakker96743fc2011-02-12 14:30:57 +00001350 *
1351 * Module: library/pem.c
Manuel Pégourié-Gonnardfe286462013-09-20 14:10:14 +02001352 * Caller: library/dhm.c
Paul Bakkercff68422013-09-15 20:43:33 +02001353 * library/pkparse.c
Manuel Pégourié-Gonnardfe286462013-09-20 14:10:14 +02001354 * library/x509_crl.c
1355 * library/x509_crt.c
1356 * library/x509_csr.c
Paul Bakker96743fc2011-02-12 14:30:57 +00001357 *
Paul Bakker5690efc2011-05-26 13:16:06 +00001358 * Requires: POLARSSL_BASE64_C
1359 *
Paul Bakkercff68422013-09-15 20:43:33 +02001360 * This modules adds support for decoding / parsing PEM files.
Paul Bakker96743fc2011-02-12 14:30:57 +00001361 */
Paul Bakkercff68422013-09-15 20:43:33 +02001362#define POLARSSL_PEM_PARSE_C
1363
1364/**
1365 * \def POLARSSL_PEM_WRITE_C
1366 *
Manuel Pégourié-Gonnard09fff7e2013-09-20 13:45:36 +02001367 * Enable PEM encoding / writing.
Paul Bakkercff68422013-09-15 20:43:33 +02001368 *
1369 * Module: library/pem.c
Manuel Pégourié-Gonnardfe286462013-09-20 14:10:14 +02001370 * Caller: library/pkwrite.c
1371 * library/x509write_crt.c
1372 * library/x509write_csr.c
Paul Bakkercff68422013-09-15 20:43:33 +02001373 *
1374 * Requires: POLARSSL_BASE64_C
1375 *
1376 * This modules adds support for encoding / writing PEM files.
1377 */
1378#define POLARSSL_PEM_WRITE_C
Paul Bakker96743fc2011-02-12 14:30:57 +00001379
1380/**
Manuel Pégourié-Gonnardc40b4c32013-08-22 13:29:31 +02001381 * \def POLARSSL_PK_C
1382 *
1383 * Enable the generic public (asymetric) key layer.
1384 *
1385 * Module: library/pk.c
Manuel Pégourié-Gonnard1a483832013-09-20 12:29:15 +02001386 * Caller: library/ssl_tls.c
Manuel Pégourié-Gonnardc40b4c32013-08-22 13:29:31 +02001387 * library/ssl_cli.c
1388 * library/ssl_srv.c
1389 *
Manuel Pégourié-Gonnard1a483832013-09-20 12:29:15 +02001390 * Requires: POLARSSL_RSA_C or POLARSSL_ECP_C
1391 *
Manuel Pégourié-Gonnardc40b4c32013-08-22 13:29:31 +02001392 * Uncomment to enable generic public key wrappers.
1393 */
1394#define POLARSSL_PK_C
1395
1396/**
Paul Bakker4606c732013-09-15 17:04:23 +02001397 * \def POLARSSL_PK_PARSE_C
1398 *
1399 * Enable the generic public (asymetric) key parser.
1400 *
1401 * Module: library/pkparse.c
Manuel Pégourié-Gonnardfe286462013-09-20 14:10:14 +02001402 * Caller: library/x509_crt.c
1403 * library/x509_csr.c
Paul Bakker4606c732013-09-15 17:04:23 +02001404 *
1405 * Requires: POLARSSL_PK_C
1406 *
1407 * Uncomment to enable generic public key parse functions.
1408 */
1409#define POLARSSL_PK_PARSE_C
1410
1411/**
1412 * \def POLARSSL_PK_WRITE_C
1413 *
Paul Bakkerf20ba4b2013-09-16 22:46:20 +02001414 * Enable the generic public (asymetric) key writer.
Paul Bakker4606c732013-09-15 17:04:23 +02001415 *
1416 * Module: library/pkwrite.c
1417 * Caller: library/x509write.c
1418 *
1419 * Requires: POLARSSL_PK_C
1420 *
1421 * Uncomment to enable generic public key write functions.
1422 */
1423#define POLARSSL_PK_WRITE_C
1424
1425/**
Paul Bakkerb0c19a42013-06-24 19:26:38 +02001426 * \def POLARSSL_PKCS5_C
1427 *
Manuel Pégourié-Gonnard09fff7e2013-09-20 13:45:36 +02001428 * Enable PKCS#5 functions.
Paul Bakkerb0c19a42013-06-24 19:26:38 +02001429 *
1430 * Module: library/pkcs5.c
1431 *
1432 * Requires: POLARSSL_MD_C
1433 *
1434 * This module adds support for the PKCS#5 functions.
1435 */
1436#define POLARSSL_PKCS5_C
1437
1438/**
Paul Bakker5690efc2011-05-26 13:16:06 +00001439 * \def POLARSSL_PKCS11_C
1440 *
Paul Bakkereb2c6582012-09-27 19:15:01 +00001441 * Enable wrapper for PKCS#11 smartcard support.
Paul Bakker5690efc2011-05-26 13:16:06 +00001442 *
Manuel Pégourié-Gonnard51be5592013-08-22 13:35:53 +02001443 * Module: library/pkcs11.c
1444 * Caller: library/pk.c
Paul Bakker5690efc2011-05-26 13:16:06 +00001445 *
Manuel Pégourié-Gonnard51be5592013-08-22 13:35:53 +02001446 * Requires: POLARSSL_PK_C
Paul Bakker5690efc2011-05-26 13:16:06 +00001447 *
Paul Bakkereb2c6582012-09-27 19:15:01 +00001448 * This module enables SSL/TLS PKCS #11 smartcard support.
Paul Bakker5690efc2011-05-26 13:16:06 +00001449 * Requires the presence of the PKCS#11 helper library (libpkcs11-helper)
Paul Bakker5690efc2011-05-26 13:16:06 +00001450 */
Paul Bakkera7ea6a52013-10-15 11:55:10 +02001451//#define POLARSSL_PKCS11_C
Paul Bakker5690efc2011-05-26 13:16:06 +00001452
1453/**
Paul Bakkerf1f21fe2013-06-24 19:17:19 +02001454 * \def POLARSSL_PKCS12_C
1455 *
Manuel Pégourié-Gonnard09fff7e2013-09-20 13:45:36 +02001456 * Enable PKCS#12 PBE functions.
Paul Bakkerf1f21fe2013-06-24 19:17:19 +02001457 * Adds algorithms for parsing PKCS#8 encrypted private keys
1458 *
1459 * Module: library/pkcs12.c
Manuel Pégourié-Gonnardfe286462013-09-20 14:10:14 +02001460 * Caller: library/pkparse.c
Paul Bakkerf1f21fe2013-06-24 19:17:19 +02001461 *
Paul Bakkerb0713c72013-06-24 19:34:08 +02001462 * Requires: POLARSSL_ASN1_PARSE_C, POLARSSL_CIPHER_C, POLARSSL_MD_C
1463 * Can use: POLARSSL_ARC4_C
Paul Bakkerf1f21fe2013-06-24 19:17:19 +02001464 *
1465 * This module enables PKCS#12 functions.
1466 */
1467#define POLARSSL_PKCS12_C
1468
1469/**
Paul Bakkerf3b86c12011-01-27 15:24:17 +00001470 * \def POLARSSL_RSA_C
1471 *
1472 * Enable the RSA public-key cryptosystem.
1473 *
Paul Bakker5121ce52009-01-03 21:22:43 +00001474 * Module: library/rsa.c
1475 * Caller: library/ssl_cli.c
1476 * library/ssl_srv.c
1477 * library/ssl_tls.c
1478 * library/x509.c
1479 *
Manuel Pégourié-Gonnard9d703732013-10-25 18:01:50 +02001480 * This module is used by the following key exchanges:
1481 * RSA, DHE-RSA, ECDHE-RSA, RSA-PSK
Paul Bakker5690efc2011-05-26 13:16:06 +00001482 *
Manuel Pégourié-Gonnard9d703732013-10-25 18:01:50 +02001483 * Requires: POLARSSL_BIGNUM_C, POLARSSL_OID_C
Paul Bakker5121ce52009-01-03 21:22:43 +00001484 */
Paul Bakker40e46942009-01-03 21:51:57 +00001485#define POLARSSL_RSA_C
Paul Bakker5121ce52009-01-03 21:22:43 +00001486
Paul Bakkerf3b86c12011-01-27 15:24:17 +00001487/**
1488 * \def POLARSSL_SHA1_C
1489 *
1490 * Enable the SHA1 cryptographic hash algorithm.
1491 *
Paul Bakker5121ce52009-01-03 21:22:43 +00001492 * Module: library/sha1.c
Manuel Pégourié-Gonnardfe286462013-09-20 14:10:14 +02001493 * Caller: library/md.c
1494 * library/ssl_cli.c
Paul Bakker5121ce52009-01-03 21:22:43 +00001495 * library/ssl_srv.c
1496 * library/ssl_tls.c
Manuel Pégourié-Gonnardfe286462013-09-20 14:10:14 +02001497 * library/x509write_crt.c
Paul Bakker5121ce52009-01-03 21:22:43 +00001498 *
1499 * This module is required for SSL/TLS and SHA1-signed certificates.
1500 */
Paul Bakker40e46942009-01-03 21:51:57 +00001501#define POLARSSL_SHA1_C
Paul Bakker5121ce52009-01-03 21:22:43 +00001502
Paul Bakkerf3b86c12011-01-27 15:24:17 +00001503/**
Paul Bakker9e36f042013-06-30 14:34:05 +02001504 * \def POLARSSL_SHA256_C
Paul Bakkerf3b86c12011-01-27 15:24:17 +00001505 *
1506 * Enable the SHA-224 and SHA-256 cryptographic hash algorithms.
Paul Bakker9e36f042013-06-30 14:34:05 +02001507 * (Used to be POLARSSL_SHA2_C)
Paul Bakkerf3b86c12011-01-27 15:24:17 +00001508 *
Paul Bakker9e36f042013-06-30 14:34:05 +02001509 * Module: library/sha256.c
Manuel Pégourié-Gonnardfe286462013-09-20 14:10:14 +02001510 * Caller: library/entropy.c
1511 * library/md.c
1512 * library/ssl_cli.c
1513 * library/ssl_srv.c
1514 * library/ssl_tls.c
Paul Bakker5121ce52009-01-03 21:22:43 +00001515 *
1516 * This module adds support for SHA-224 and SHA-256.
Paul Bakker769075d2012-11-24 11:26:46 +01001517 * This module is required for the SSL/TLS 1.2 PRF function.
Paul Bakker5121ce52009-01-03 21:22:43 +00001518 */
Paul Bakker9e36f042013-06-30 14:34:05 +02001519#define POLARSSL_SHA256_C
Paul Bakker5121ce52009-01-03 21:22:43 +00001520
Paul Bakkerf3b86c12011-01-27 15:24:17 +00001521/**
Paul Bakker9e36f042013-06-30 14:34:05 +02001522 * \def POLARSSL_SHA512_C
Paul Bakkerf3b86c12011-01-27 15:24:17 +00001523 *
1524 * Enable the SHA-384 and SHA-512 cryptographic hash algorithms.
Paul Bakker9e36f042013-06-30 14:34:05 +02001525 * (Used to be POLARSSL_SHA4_C)
Paul Bakkerf3b86c12011-01-27 15:24:17 +00001526 *
Paul Bakker9e36f042013-06-30 14:34:05 +02001527 * Module: library/sha512.c
Manuel Pégourié-Gonnardfe286462013-09-20 14:10:14 +02001528 * Caller: library/entropy.c
1529 * library/md.c
1530 * library/ssl_cli.c
1531 * library/ssl_srv.c
Paul Bakker5121ce52009-01-03 21:22:43 +00001532 *
1533 * This module adds support for SHA-384 and SHA-512.
1534 */
Paul Bakker9e36f042013-06-30 14:34:05 +02001535#define POLARSSL_SHA512_C
Paul Bakker5121ce52009-01-03 21:22:43 +00001536
Paul Bakkerf3b86c12011-01-27 15:24:17 +00001537/**
Paul Bakker0a597072012-09-25 21:55:46 +00001538 * \def POLARSSL_SSL_CACHE_C
1539 *
1540 * Enable simple SSL cache implementation.
1541 *
1542 * Module: library/ssl_cache.c
1543 * Caller:
1544 *
1545 * Requires: POLARSSL_SSL_CACHE_C
1546 */
1547#define POLARSSL_SSL_CACHE_C
1548
1549/**
Paul Bakkerf3b86c12011-01-27 15:24:17 +00001550 * \def POLARSSL_SSL_CLI_C
1551 *
1552 * Enable the SSL/TLS client code.
1553 *
Paul Bakker5121ce52009-01-03 21:22:43 +00001554 * Module: library/ssl_cli.c
1555 * Caller:
1556 *
Paul Bakker5690efc2011-05-26 13:16:06 +00001557 * Requires: POLARSSL_SSL_TLS_C
1558 *
Paul Bakker5121ce52009-01-03 21:22:43 +00001559 * This module is required for SSL/TLS client support.
1560 */
Paul Bakker40e46942009-01-03 21:51:57 +00001561#define POLARSSL_SSL_CLI_C
Paul Bakker5121ce52009-01-03 21:22:43 +00001562
Paul Bakker9a736322012-11-14 12:39:52 +00001563/**
Paul Bakkerf3b86c12011-01-27 15:24:17 +00001564 * \def POLARSSL_SSL_SRV_C
1565 *
1566 * Enable the SSL/TLS server code.
1567 *
Paul Bakker5121ce52009-01-03 21:22:43 +00001568 * Module: library/ssl_srv.c
1569 * Caller:
1570 *
Paul Bakker5690efc2011-05-26 13:16:06 +00001571 * Requires: POLARSSL_SSL_TLS_C
1572 *
Paul Bakker5121ce52009-01-03 21:22:43 +00001573 * This module is required for SSL/TLS server support.
1574 */
Paul Bakker40e46942009-01-03 21:51:57 +00001575#define POLARSSL_SSL_SRV_C
Paul Bakker5121ce52009-01-03 21:22:43 +00001576
Paul Bakkerf3b86c12011-01-27 15:24:17 +00001577/**
1578 * \def POLARSSL_SSL_TLS_C
1579 *
Paul Bakkere29ab062011-05-18 13:26:54 +00001580 * Enable the generic SSL/TLS code.
Paul Bakkerf3b86c12011-01-27 15:24:17 +00001581 *
Paul Bakker5121ce52009-01-03 21:22:43 +00001582 * Module: library/ssl_tls.c
1583 * Caller: library/ssl_cli.c
1584 * library/ssl_srv.c
1585 *
Manuel Pégourié-Gonnard1a483832013-09-20 12:29:15 +02001586 * Requires: POLARSSL_CIPHER_C, POLARSSL_MD_C
Paul Bakker577e0062013-08-28 11:57:20 +02001587 * and at least one of the POLARSSL_SSL_PROTO_* defines
Paul Bakker5690efc2011-05-26 13:16:06 +00001588 *
Paul Bakker5121ce52009-01-03 21:22:43 +00001589 * This module is required for SSL/TLS.
1590 */
Paul Bakker40e46942009-01-03 21:51:57 +00001591#define POLARSSL_SSL_TLS_C
Paul Bakker5121ce52009-01-03 21:22:43 +00001592
Paul Bakkerf3b86c12011-01-27 15:24:17 +00001593/**
Paul Bakker2466d932013-09-28 14:40:38 +02001594 * \def POLARSSL_THREADING_C
1595 *
1596 * Enable the threading abstraction layer.
1597 * By default PolarSSL assumes it is used in a non-threaded environment or that
1598 * contexts are not shared between threads. If you do intend to use contexts
1599 * between threads, you will need to enable this layer to prevent race
1600 * conditions.
1601 *
1602 * Module: library/threading.c
1603 *
1604 * This allows different threading implementations (self-implemented or
1605 * provided).
1606 *
1607 * You will have to enable either POLARSSL_THREADING_ALT,
1608 * POLARSSL_THREADING_PTHREAD or POLARSSL_THREADING_DUMMY.
1609 *
1610 * Enable this layer to allow use of mutexes within PolarSSL
Paul Bakker2466d932013-09-28 14:40:38 +02001611 */
Paul Bakkera7ea6a52013-10-15 11:55:10 +02001612//#define POLARSSL_THREADING_C
Paul Bakker2466d932013-09-28 14:40:38 +02001613
1614/**
Paul Bakkerf3b86c12011-01-27 15:24:17 +00001615 * \def POLARSSL_TIMING_C
1616 *
1617 * Enable the portable timing interface.
1618 *
Paul Bakker5121ce52009-01-03 21:22:43 +00001619 * Module: library/timing.c
1620 * Caller: library/havege.c
1621 *
1622 * This module is used by the HAVEGE random number generator.
Paul Bakkerecd54fb2013-07-03 14:48:29 +02001623 */
Paul Bakkerdcbfdcc2013-09-10 16:16:50 +02001624#define POLARSSL_TIMING_C
Paul Bakker5121ce52009-01-03 21:22:43 +00001625
Paul Bakkerf3b86c12011-01-27 15:24:17 +00001626/**
1627 * \def POLARSSL_VERSION_C
1628 *
1629 * Enable run-time version information.
1630 *
Paul Bakker0a62cd12011-01-21 11:00:08 +00001631 * Module: library/version.c
1632 *
1633 * This module provides run-time version information.
1634 */
1635#define POLARSSL_VERSION_C
1636
Paul Bakkerf3b86c12011-01-27 15:24:17 +00001637/**
Paul Bakker7c6b2c32013-09-16 13:49:26 +02001638 * \def POLARSSL_X509_USE_C
Paul Bakkerf3b86c12011-01-27 15:24:17 +00001639 *
Manuel Pégourié-Gonnard09fff7e2013-09-20 13:45:36 +02001640 * Enable X.509 core for using certificates.
Paul Bakkerf3b86c12011-01-27 15:24:17 +00001641 *
Paul Bakker7c6b2c32013-09-16 13:49:26 +02001642 * Module: library/x509.c
1643 * Caller: library/x509_crl.c
1644 * library/x509_crt.c
1645 * library/x509_csr.c
Paul Bakker5121ce52009-01-03 21:22:43 +00001646 *
Paul Bakkerc70b9822013-04-07 22:00:46 +02001647 * Requires: POLARSSL_ASN1_PARSE_C, POLARSSL_BIGNUM_C, POLARSSL_OID_C,
Paul Bakker4606c732013-09-15 17:04:23 +02001648 * POLARSSL_PK_PARSE_C
Paul Bakker5690efc2011-05-26 13:16:06 +00001649 *
Paul Bakker7c6b2c32013-09-16 13:49:26 +02001650 * This module is required for the X.509 parsing modules.
Paul Bakker5121ce52009-01-03 21:22:43 +00001651 */
Paul Bakker7c6b2c32013-09-16 13:49:26 +02001652#define POLARSSL_X509_USE_C
Paul Bakker5121ce52009-01-03 21:22:43 +00001653
Paul Bakkerf3b86c12011-01-27 15:24:17 +00001654/**
Paul Bakker7c6b2c32013-09-16 13:49:26 +02001655 * \def POLARSSL_X509_CRT_PARSE_C
Paul Bakkerbdb912d2012-02-13 23:11:30 +00001656 *
Paul Bakker7c6b2c32013-09-16 13:49:26 +02001657 * Enable X.509 certificate parsing.
Paul Bakkerbdb912d2012-02-13 23:11:30 +00001658 *
Paul Bakker7c6b2c32013-09-16 13:49:26 +02001659 * Module: library/x509_crt.c
1660 * Caller: library/ssl_cli.c
1661 * library/ssl_srv.c
1662 * library/ssl_tls.c
1663 *
1664 * Requires: POLARSSL_X509_USE_C
1665 *
1666 * This module is required for X.509 certificate parsing.
1667 */
1668#define POLARSSL_X509_CRT_PARSE_C
1669
1670/**
1671 * \def POLARSSL_X509_CRL_PARSE_C
1672 *
1673 * Enable X.509 CRL parsing.
1674 *
1675 * Module: library/x509_crl.c
1676 * Caller: library/x509_crt.c
1677 *
1678 * Requires: POLARSSL_X509_USE_C
1679 *
1680 * This module is required for X.509 CRL parsing.
1681 */
1682#define POLARSSL_X509_CRL_PARSE_C
1683
1684/**
1685 * \def POLARSSL_X509_CSR_PARSE_C
1686 *
1687 * Enable X.509 Certificate Signing Request (CSR) parsing.
1688 *
1689 * Module: library/x509_csr.c
1690 * Caller: library/x509_crt_write.c
1691 *
1692 * Requires: POLARSSL_X509_USE_C
1693 *
1694 * This module is used for reading X.509 certificate request.
1695 */
1696#define POLARSSL_X509_CSR_PARSE_C
1697
1698/**
1699 * \def POLARSSL_X509_CREATE_C
1700 *
Manuel Pégourié-Gonnard09fff7e2013-09-20 13:45:36 +02001701 * Enable X.509 core for creating certificates.
Paul Bakker7c6b2c32013-09-16 13:49:26 +02001702 *
1703 * Module: library/x509_create.c
Paul Bakkerbdb912d2012-02-13 23:11:30 +00001704 *
Paul Bakker4606c732013-09-15 17:04:23 +02001705 * Requires: POLARSSL_BIGNUM_C, POLARSSL_OID_C, POLARSSL_PK_WRITE_C
Paul Bakkerbdb912d2012-02-13 23:11:30 +00001706 *
Paul Bakker7c6b2c32013-09-16 13:49:26 +02001707 * This module is the basis for creating X.509 certificates and CSRs.
1708 */
1709#define POLARSSL_X509_CREATE_C
1710
1711/**
1712 * \def POLARSSL_X509_CRT_WRITE_C
1713 *
1714 * Enable creating X.509 certificates.
1715 *
1716 * Module: library/x509_crt_write.c
1717 *
1718 * Requires: POLARSSL_CREATE_C
1719 *
1720 * This module is required for X.509 certificate creation.
1721 */
1722#define POLARSSL_X509_CRT_WRITE_C
1723
1724/**
1725 * \def POLARSSL_X509_CSR_WRITE_C
1726 *
Manuel Pégourié-Gonnard09fff7e2013-09-20 13:45:36 +02001727 * Enable creating X.509 Certificate Signing Requests (CSR).
Paul Bakker7c6b2c32013-09-16 13:49:26 +02001728 *
1729 * Module: library/x509_csr_write.c
1730 *
1731 * Requires: POLARSSL_CREATE_C
1732 *
Paul Bakkerbdb912d2012-02-13 23:11:30 +00001733 * This module is required for X.509 certificate request writing.
1734 */
Paul Bakker7c6b2c32013-09-16 13:49:26 +02001735#define POLARSSL_X509_CSR_WRITE_C
Paul Bakkerbdb912d2012-02-13 23:11:30 +00001736
1737/**
Paul Bakkerf3b86c12011-01-27 15:24:17 +00001738 * \def POLARSSL_XTEA_C
Paul Bakker5121ce52009-01-03 21:22:43 +00001739 *
Paul Bakkerf3b86c12011-01-27 15:24:17 +00001740 * Enable the XTEA block cipher.
1741 *
Paul Bakker7a7c78f2009-01-04 18:15:48 +00001742 * Module: library/xtea.c
1743 * Caller:
1744 */
1745#define POLARSSL_XTEA_C
Manuel Pégourié-Gonnard39d2adb2012-10-31 09:26:55 +01001746
Manuel Pégourié-Gonnard09fff7e2013-09-20 13:45:36 +02001747/* \} name SECTION: PolarSSL modules */
Paul Bakker7a7c78f2009-01-04 18:15:48 +00001748
Paul Bakker9bcf16c2013-06-24 19:31:17 +02001749/**
1750 * \name SECTION: Module configuration options
1751 *
1752 * This section allows for the setting of module specific sizes and
1753 * configuration options. The default values are already present in the
1754 * relevant header files and should suffice for the regular use cases.
1755 * Our advice is to enable POLARSSL_CONFIG_OPTIONS and change values here
1756 * only if you have a good reason and know the consequences.
1757 *
1758 * If POLARSSL_CONFIG_OPTIONS is undefined here the options in the module
1759 * header file take precedence.
1760 *
1761 * Please check the respective header file for documentation on these
1762 * parameters (to prevent duplicate documentation).
1763 *
1764 * Uncomment POLARSSL_CONFIG_OPTIONS to enable using the values defined here.
1765 * \{
1766 */
1767//#define POLARSSL_CONFIG_OPTIONS /**< Enable config.h module value configuration */
1768
1769#if defined(POLARSSL_CONFIG_OPTIONS)
1770
1771// MPI / BIGNUM options
1772//
1773#define POLARSSL_MPI_WINDOW_SIZE 6 /**< Maximum windows size used. */
1774#define POLARSSL_MPI_MAX_SIZE 512 /**< Maximum number of bytes for usable MPIs. */
1775
1776// CTR_DRBG options
1777//
Paul Bakkerfb08fd22013-08-27 15:06:26 +02001778#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 +02001779#define CTR_DRBG_RESEED_INTERVAL 10000 /**< Interval before reseed is performed by default */
1780#define CTR_DRBG_MAX_INPUT 256 /**< Maximum number of additional input bytes */
1781#define CTR_DRBG_MAX_REQUEST 1024 /**< Maximum number of requested bytes per call */
1782#define CTR_DRBG_MAX_SEED_INPUT 384 /**< Maximum size of (re)seed buffer */
1783
1784// Entropy options
1785//
1786#define ENTROPY_MAX_SOURCES 20 /**< Maximum number of sources supported */
1787#define ENTROPY_MAX_GATHER 128 /**< Maximum amount requested from entropy sources */
1788
Paul Bakker6e339b52013-07-03 13:37:05 +02001789// Memory options
1790#define MEMORY_ALIGN_MULTIPLE 4 /**< Align on multiples of this value */
1791#define POLARSSL_MEMORY_STDMALLOC malloc /**< Default allocator to use, can be undefined */
1792#define POLARSSL_MEMORY_STDFREE free /**< Default free to use, can be undefined */
1793
Paul Bakker9bcf16c2013-06-24 19:31:17 +02001794// SSL Cache options
1795//
1796#define SSL_CACHE_DEFAULT_TIMEOUT 86400 /**< 1 day */
1797#define SSL_CACHE_DEFAULT_MAX_ENTRIES 50 /**< Maximum entries in cache */
1798
1799// SSL options
1800//
1801#define SSL_MAX_CONTENT_LEN 16384 /**< Size of the input / output buffer */
Paul Bakker606b4ba2013-08-14 16:52:14 +02001802#define SSL_DEFAULT_TICKET_LIFETIME 86400 /**< Lifetime of session tickets (if enabled) */
Paul Bakker9bcf16c2013-06-24 19:31:17 +02001803
1804#endif /* POLARSSL_CONFIG_OPTIONS */
1805
1806/* \} name */
1807
Paul Bakker7ad00f92013-04-18 23:05:25 +02001808/*
1809 * Sanity checks on defines and dependencies
1810 */
Manuel Pégourié-Gonnard18dc0e22013-10-27 14:35:02 +01001811#if defined(POLARSSL_CERTS_C) && !defined(POLARSSL_PEM_PARSE_C)
1812#error "POLARSSL_CERTS_C defined, but not all prerequisites"
Paul Bakker7ad00f92013-04-18 23:05:25 +02001813#endif
1814
1815#if defined(POLARSSL_CTR_DRBG_C) && !defined(POLARSSL_AES_C)
1816#error "POLARSSL_CTR_DRBG_C defined, but not all prerequisites"
1817#endif
1818
Manuel Pégourié-Gonnard18dc0e22013-10-27 14:35:02 +01001819#if defined(POLARSSL_DHM_C) && !defined(POLARSSL_BIGNUM_C)
1820#error "POLARSSL_DHM_C defined, but not all prerequisites"
1821#endif
1822
Paul Bakker7ad00f92013-04-18 23:05:25 +02001823#if defined(POLARSSL_ECDH_C) && !defined(POLARSSL_ECP_C)
1824#error "POLARSSL_ECDH_C defined, but not all prerequisites"
1825#endif
1826
Manuel Pégourié-Gonnard4846f5e2013-08-08 14:36:15 +02001827#if defined(POLARSSL_ECDSA_C) && \
1828 ( !defined(POLARSSL_ECP_C) || \
1829 !defined(POLARSSL_ASN1_PARSE_C) || \
1830 !defined(POLARSSL_ASN1_WRITE_C) )
Paul Bakker7ad00f92013-04-18 23:05:25 +02001831#error "POLARSSL_ECDSA_C defined, but not all prerequisites"
1832#endif
1833
Manuel Pégourié-Gonnardc59c9c12013-10-27 14:04:59 +01001834#if defined(POLARSSL_ECP_C) && ( !defined(POLARSSL_BIGNUM_C) || ( \
1835 !defined(POLARSSL_ECP_DP_SECP192R1_ENABLED) && \
1836 !defined(POLARSSL_ECP_DP_SECP224R1_ENABLED) && \
1837 !defined(POLARSSL_ECP_DP_SECP256R1_ENABLED) && \
1838 !defined(POLARSSL_ECP_DP_SECP384R1_ENABLED) && \
1839 !defined(POLARSSL_ECP_DP_SECP521R1_ENABLED) && \
1840 !defined(POLARSSL_ECP_DP_BP256R1_ENABLED) && \
1841 !defined(POLARSSL_ECP_DP_BP384R1_ENABLED) && \
1842 !defined(POLARSSL_ECP_DP_BP512R1_ENABLED) ) )
Paul Bakker7ad00f92013-04-18 23:05:25 +02001843#error "POLARSSL_ECP_C defined, but not all prerequisites"
1844#endif
1845
Paul Bakkerfb08fd22013-08-27 15:06:26 +02001846#if defined(POLARSSL_ENTROPY_C) && (!defined(POLARSSL_SHA512_C) && \
1847 !defined(POLARSSL_SHA256_C))
Paul Bakker7ad00f92013-04-18 23:05:25 +02001848#error "POLARSSL_ENTROPY_C defined, but not all prerequisites"
1849#endif
Paul Bakkerfb08fd22013-08-27 15:06:26 +02001850#if defined(POLARSSL_ENTROPY_C) && defined(POLARSSL_SHA512_C) && \
1851 defined(POLARSSL_CONFIG_OPTIONS) && (CTR_DRBG_ENTROPY_LEN > 64)
1852#error "CTR_DRBG_ENTROPY_LEN value too high"
1853#endif
1854#if defined(POLARSSL_ENTROPY_C) && !defined(POLARSSL_SHA512_C) && \
1855 defined(POLARSSL_CONFIG_OPTIONS) && (CTR_DRBG_ENTROPY_LEN > 32)
1856#error "CTR_DRBG_ENTROPY_LEN value too high"
1857#endif
Paul Bakker7ad00f92013-04-18 23:05:25 +02001858
Manuel Pégourié-Gonnard7bd8a992013-10-24 13:39:39 +02001859#if defined(POLARSSL_GCM_C) && ( \
1860 !defined(POLARSSL_AES_C) && !defined(POLARSSL_CAMELLIA_C) )
Paul Bakker7ad00f92013-04-18 23:05:25 +02001861#error "POLARSSL_GCM_C defined, but not all prerequisites"
1862#endif
1863
Paul Bakkerecd54fb2013-07-03 14:48:29 +02001864#if defined(POLARSSL_HAVEGE_C) && !defined(POLARSSL_TIMING_C)
1865#error "POLARSSL_HAVEGE_C defined, but not all prerequisites"
1866#endif
1867
Paul Bakkere07f41d2013-04-19 09:08:57 +02001868#if defined(POLARSSL_KEY_EXCHANGE_DHE_PSK_ENABLED) && !defined(POLARSSL_DHM_C)
1869#error "POLARSSL_KEY_EXCHANGE_DHE_PSK_ENABLED defined, but not all prerequisites"
1870#endif
1871
Manuel Pégourié-Gonnard3ce3bbd2013-10-11 16:53:50 +02001872#if defined(POLARSSL_KEY_EXCHANGE_ECDHE_PSK_ENABLED) && \
1873 !defined(POLARSSL_ECDH_C)
1874#error "POLARSSL_KEY_EXCHANGE_ECDHE_PSK_ENABLED defined, but not all prerequisites"
1875#endif
1876
Paul Bakkere07f41d2013-04-19 09:08:57 +02001877#if defined(POLARSSL_KEY_EXCHANGE_DHE_RSA_ENABLED) && \
1878 ( !defined(POLARSSL_DHM_C) || !defined(POLARSSL_RSA_C) || \
Manuel Pégourié-Gonnardcbf3ef32013-09-23 12:20:02 +02001879 !defined(POLARSSL_X509_CRT_PARSE_C) || !defined(POLARSSL_PKCS1_V15) )
Paul Bakkere07f41d2013-04-19 09:08:57 +02001880#error "POLARSSL_KEY_EXCHANGE_DHE_RSA_ENABLED defined, but not all prerequisites"
1881#endif
1882
1883#if defined(POLARSSL_KEY_EXCHANGE_ECDHE_RSA_ENABLED) && \
1884 ( !defined(POLARSSL_ECDH_C) || !defined(POLARSSL_RSA_C) || \
Manuel Pégourié-Gonnardcbf3ef32013-09-23 12:20:02 +02001885 !defined(POLARSSL_X509_CRT_PARSE_C) || !defined(POLARSSL_PKCS1_V15) )
Paul Bakkere07f41d2013-04-19 09:08:57 +02001886#error "POLARSSL_KEY_EXCHANGE_ECDHE_RSA_ENABLED defined, but not all prerequisites"
1887#endif
1888
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +02001889#if defined(POLARSSL_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED) && \
1890 ( !defined(POLARSSL_ECDH_C) || !defined(POLARSSL_ECDSA_C) || \
Manuel Pégourié-Gonnardcbf3ef32013-09-23 12:20:02 +02001891 !defined(POLARSSL_X509_CRT_PARSE_C) )
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +02001892#error "POLARSSL_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED defined, but not all prerequisites"
1893#endif
1894
Paul Bakkere07f41d2013-04-19 09:08:57 +02001895#if defined(POLARSSL_KEY_EXCHANGE_RSA_PSK_ENABLED) && \
Paul Bakker7c6b2c32013-09-16 13:49:26 +02001896 ( !defined(POLARSSL_RSA_C) || !defined(POLARSSL_X509_CRT_PARSE_C) ||\
Manuel Pégourié-Gonnardcbf3ef32013-09-23 12:20:02 +02001897 !defined(POLARSSL_PKCS1_V15) )
Paul Bakkere07f41d2013-04-19 09:08:57 +02001898#error "POLARSSL_KEY_EXCHANGE_RSA_PSK_ENABLED defined, but not all prerequisites"
1899#endif
1900
1901#if defined(POLARSSL_KEY_EXCHANGE_RSA_ENABLED) && \
Paul Bakker7c6b2c32013-09-16 13:49:26 +02001902 ( !defined(POLARSSL_RSA_C) || !defined(POLARSSL_X509_CRT_PARSE_C) ||\
Manuel Pégourié-Gonnardcbf3ef32013-09-23 12:20:02 +02001903 !defined(POLARSSL_PKCS1_V15) )
Paul Bakkere07f41d2013-04-19 09:08:57 +02001904#error "POLARSSL_KEY_EXCHANGE_RSA_ENABLED defined, but not all prerequisites"
1905#endif
1906
Paul Bakker6e339b52013-07-03 13:37:05 +02001907#if defined(POLARSSL_MEMORY_BUFFER_ALLOC_C) && !defined(POLARSSL_MEMORY_C)
1908#error "POLARSSL_MEMORY_BUFFER_ALLOC_C defined, but not all prerequisites"
1909#endif
1910
Paul Bakker7ad00f92013-04-18 23:05:25 +02001911#if defined(POLARSSL_PBKDF2_C) && !defined(POLARSSL_MD_C)
1912#error "POLARSSL_PBKDF2_C defined, but not all prerequisites"
1913#endif
1914
Paul Bakkercff68422013-09-15 20:43:33 +02001915#if defined(POLARSSL_PEM_PARSE_C) && !defined(POLARSSL_BASE64_C)
1916#error "POLARSSL_PEM_PARSE_C defined, but not all prerequisites"
1917#endif
1918
1919#if defined(POLARSSL_PEM_WRITE_C) && !defined(POLARSSL_BASE64_C)
1920#error "POLARSSL_PEM_WRITE_C defined, but not all prerequisites"
Paul Bakker7ad00f92013-04-18 23:05:25 +02001921#endif
1922
Paul Bakker4606c732013-09-15 17:04:23 +02001923#if defined(POLARSSL_PK_PARSE_C) && !defined(POLARSSL_PK_C)
1924#error "POLARSSL_PK_PARSE_C defined, but not all prerequisites"
1925#endif
1926
1927#if defined(POLARSSL_PK_WRITE_C) && !defined(POLARSSL_PK_C)
1928#error "POLARSSL_PK_WRITE_C defined, but not all prerequisites"
1929#endif
1930
Manuel Pégourié-Gonnard51be5592013-08-22 13:35:53 +02001931#if defined(POLARSSL_PKCS11_C) && !defined(POLARSSL_PK_C)
Paul Bakker7ad00f92013-04-18 23:05:25 +02001932#error "POLARSSL_PKCS11_C defined, but not all prerequisites"
1933#endif
1934
1935#if defined(POLARSSL_RSA_C) && ( !defined(POLARSSL_BIGNUM_C) || \
1936 !defined(POLARSSL_OID_C) )
1937#error "POLARSSL_RSA_C defined, but not all prerequisites"
1938#endif
1939
Manuel Pégourié-Gonnard7c3291e2013-10-27 14:29:51 +01001940#if defined(POLARSSL_SSL_PROTO_SSL3) && ( !defined(POLARSSL_MD5_C) || \
1941 !defined(POLARSSL_SHA1_C) )
1942#error "POLARSSL_SSL_PROTO_SSL3 defined, but not all prerequisites"
1943#endif
1944
1945#if defined(POLARSSL_SSL_PROTO_TLS1) && ( !defined(POLARSSL_MD5_C) || \
1946 !defined(POLARSSL_SHA1_C) )
1947#error "POLARSSL_SSL_PROTO_TLS1 defined, but not all prerequisites"
1948#endif
1949
1950#if defined(POLARSSL_SSL_PROTO_TLS1_1) && ( !defined(POLARSSL_MD5_C) || \
1951 !defined(POLARSSL_SHA1_C) )
1952#error "POLARSSL_SSL_PROTO_TLS1_1 defined, but not all prerequisites"
1953#endif
1954
1955#if defined(POLARSSL_SSL_PROTO_TLS1_2) && ( !defined(POLARSSL_SHA1_C) && \
1956 !defined(POLARSSL_SHA256_C) && !defined(POLARSSL_SHA512_C) )
1957#error "POLARSSL_SSL_PROTO_TLS1_2 defined, but not all prerequisites"
1958#endif
1959
Paul Bakker7ad00f92013-04-18 23:05:25 +02001960#if defined(POLARSSL_SSL_CLI_C) && !defined(POLARSSL_SSL_TLS_C)
1961#error "POLARSSL_SSL_CLI_C defined, but not all prerequisites"
1962#endif
1963
Paul Bakker577e0062013-08-28 11:57:20 +02001964#if defined(POLARSSL_SSL_TLS_C) && ( !defined(POLARSSL_CIPHER_C) || \
Manuel Pégourié-Gonnard1a483832013-09-20 12:29:15 +02001965 !defined(POLARSSL_MD_C) )
Paul Bakker7ad00f92013-04-18 23:05:25 +02001966#error "POLARSSL_SSL_TLS_C defined, but not all prerequisites"
1967#endif
1968
1969#if defined(POLARSSL_SSL_SRV_C) && !defined(POLARSSL_SSL_TLS_C)
1970#error "POLARSSL_SSL_SRV_C defined, but not all prerequisites"
1971#endif
1972
Paul Bakkerd2f068e2013-08-27 21:19:20 +02001973#if defined(POLARSSL_SSL_TLS_C) && (!defined(POLARSSL_SSL_PROTO_SSL3) && \
1974 !defined(POLARSSL_SSL_PROTO_TLS1) && !defined(POLARSSL_SSL_PROTO_TLS1_1) && \
1975 !defined(POLARSSL_SSL_PROTO_TLS1_2))
1976#error "POLARSSL_SSL_TLS_C defined, but no protocols are active"
1977#endif
1978
1979#if defined(POLARSSL_SSL_TLS_C) && (defined(POLARSSL_SSL_PROTO_SSL3) && \
1980 defined(POLARSSL_SSL_PROTO_TLS1_1) && !defined(POLARSSL_SSL_PROTO_TLS1))
1981#error "Illegal protocol selection"
1982#endif
1983
1984#if defined(POLARSSL_SSL_TLS_C) && (defined(POLARSSL_SSL_PROTO_TLS1) && \
1985 defined(POLARSSL_SSL_PROTO_TLS1_2) && !defined(POLARSSL_SSL_PROTO_TLS1_1))
1986#error "Illegal protocol selection"
1987#endif
1988
1989#if defined(POLARSSL_SSL_TLS_C) && (defined(POLARSSL_SSL_PROTO_SSL3) && \
1990 defined(POLARSSL_SSL_PROTO_TLS1_2) && (!defined(POLARSSL_SSL_PROTO_TLS1) || \
1991 !defined(POLARSSL_SSL_PROTO_TLS1_1)))
1992#error "Illegal protocol selection"
1993#endif
1994
Paul Bakker59da0a42013-08-19 13:27:17 +02001995#if defined(POLARSSL_SSL_SESSION_TICKETS) && defined(POLARSSL_SSL_TLS_C) && \
Manuel Pégourié-Gonnard92cb1d32013-09-13 16:24:20 +02001996 ( !defined(POLARSSL_AES_C) || !defined(POLARSSL_SHA256_C) || \
1997 !defined(POLARSSL_CIPHER_MODE_CBC) )
Paul Bakker59da0a42013-08-19 13:27:17 +02001998#error "POLARSSL_SSL_SESSION_TICKETS_C defined, but not all prerequisites"
1999#endif
2000
Paul Bakker2466d932013-09-28 14:40:38 +02002001#if defined(POLARSSL_THREADING_DUMMY)
2002#if !defined(POLARSSL_THREADING_C) || defined(POLARSSL_THREADING_IMPL)
2003#error "POLARSSL_THREADING_DUMMY defined, but not all prerequisites"
2004#endif
2005#define POLARSSL_THREADING_IMPL
2006#endif
2007
2008#if defined(POLARSSL_THREADING_PTHREAD)
2009#if !defined(POLARSSL_THREADING_C) || defined(POLARSSL_THREADING_IMPL)
2010#error "POLARSSL_THREADING_PTHREAD defined, but not all prerequisites"
2011#endif
2012#define POLARSSL_THREADING_IMPL
2013#endif
2014
2015#if defined(POLARSSL_THREADING_ALT)
2016#if !defined(POLARSSL_THREADING_C) || defined(POLARSSL_THREADING_IMPL)
2017#error "POLARSSL_THREADING_ALT defined, but not all prerequisites"
2018#endif
2019#define POLARSSL_THREADING_IMPL
2020#endif
2021
2022#if defined(POLARSSL_THREADING_C) && !defined(POLARSSL_THREADING_IMPL)
2023#error "POLARSSL_THREADING_C defined, single threading implementation required"
2024#endif
2025#undef POLARSSL_THREADING_IMPL
2026
Paul Bakker7c6b2c32013-09-16 13:49:26 +02002027#if defined(POLARSSL_X509_USE_C) && ( !defined(POLARSSL_BIGNUM_C) || \
Paul Bakker7ad00f92013-04-18 23:05:25 +02002028 !defined(POLARSSL_OID_C) || !defined(POLARSSL_ASN1_PARSE_C) || \
Paul Bakker4606c732013-09-15 17:04:23 +02002029 !defined(POLARSSL_PK_PARSE_C) )
Paul Bakker7c6b2c32013-09-16 13:49:26 +02002030#error "POLARSSL_X509_USE_C defined, but not all prerequisites"
Paul Bakker7ad00f92013-04-18 23:05:25 +02002031#endif
2032
Paul Bakker7c6b2c32013-09-16 13:49:26 +02002033#if defined(POLARSSL_X509_CREATE_C) && ( !defined(POLARSSL_BIGNUM_C) || \
2034 !defined(POLARSSL_OID_C) || !defined(POLARSSL_ASN1_WRITE_C) || \
2035 !defined(POLARSSL_PK_WRITE_C) )
2036#error "POLARSSL_X509_CREATE_C defined, but not all prerequisites"
2037#endif
2038
2039#if defined(POLARSSL_X509_CRT_PARSE_C) && ( !defined(POLARSSL_X509_USE_C) )
2040#error "POLARSSL_X509_CRT_PARSE_C defined, but not all prerequisites"
2041#endif
2042
2043#if defined(POLARSSL_X509_CRL_PARSE_C) && ( !defined(POLARSSL_X509_USE_C) )
2044#error "POLARSSL_X509_CRL_PARSE_C defined, but not all prerequisites"
2045#endif
2046
2047#if defined(POLARSSL_X509_CSR_PARSE_C) && ( !defined(POLARSSL_X509_USE_C) )
2048#error "POLARSSL_X509_CSR_PARSE_C defined, but not all prerequisites"
2049#endif
2050
2051#if defined(POLARSSL_X509_CRT_WRITE_C) && ( !defined(POLARSSL_X509_CREATE_C) )
2052#error "POLARSSL_X509_CRT_WRITE_C defined, but not all prerequisites"
2053#endif
2054
2055#if defined(POLARSSL_X509_CSR_WRITE_C) && ( !defined(POLARSSL_X509_CREATE_C) )
2056#error "POLARSSL_X509_CSR_WRITE_C defined, but not all prerequisites"
Paul Bakker7ad00f92013-04-18 23:05:25 +02002057#endif
2058
Paul Bakker5121ce52009-01-03 21:22:43 +00002059#endif /* config.h */