Botan 3.6.0
Crypto and TLS for C&
build.h
Go to the documentation of this file.
1#ifndef BOTAN_BUILD_CONFIG_H_
2#define BOTAN_BUILD_CONFIG_H_
3
4/**
5* @file build.h
6* @brief Build configuration for Botan 3.6.0
7*
8* Automatically generated from
9* 'configure.py --with-doxygen --with-sphinx --with-build-dir=/home/jack/var/tmp/botan_website_x5yi5nt5'
10*
11* Target
12* - Compiler: g++ -fstack-protector -m64 -pthread -std=c++20 -D_REENTRANT -O3
13* - Arch: x86_64
14* - OS: linux
15*/
16
17/**
18 * @defgroup buildinfo Build Information
19 */
20
21/**
22 * @ingroup buildinfo
23 * @defgroup buildinfo_version Build version information
24 * @{
25 */
26
27/// The major version of the release
28#define BOTAN_VERSION_MAJOR 3
29/// The minor version of the release
30#define BOTAN_VERSION_MINOR 6
31/// The patch version of the release
32#define BOTAN_VERSION_PATCH 0
33
34/**
35 * Expands to an integer of the form YYYYMMDD if this is an official
36 * release, or 0 otherwise. For instance, 2.19.0, which was released
37 * on January 19, 2022, has a `BOTAN_VERSION_DATESTAMP` of 20220119.
38 */
39#define BOTAN_VERSION_DATESTAMP 0
40
41
42#define BOTAN_VERSION_RELEASE_TYPE "unreleased"
43
44/**
45 * A macro expanding to a string that is set to a revision identifier
46 * corresponding to the source, or "unknown" if this could not be
47 * determined. It is set for all official releases, and for builds that
48 * originated from within a git checkout.
49 */
50#define BOTAN_VERSION_VC_REVISION "git:76a8996c624624f5bb68fe224554cb58ad860371"
51
52/**
53 * A macro expanding to a string that is set at build time using the
54 * `--distribution-info` option. It allows a packager of the library
55 * to specify any distribution-specific patches. If no value is given
56 * at build time, the value is the string "unspecified".
57 */
58#define BOTAN_DISTRIBUTION_INFO "unspecified"
59
60/**
61 * @}
62 */
63
64/**
65 * @ingroup buildinfo
66 * @defgroup buildinfo_configuration Build configurations
67 * @{
68 */
69
70/** How many bits per limb in a BigInt */
71#define BOTAN_MP_WORD_BITS 64
72
73
74
75
76#define BOTAN_INSTALL_PREFIX R"(/usr/local)"
77#define BOTAN_INSTALL_HEADER_DIR R"(include/botan-3)"
78#define BOTAN_INSTALL_LIB_DIR R"(/usr/local/lib)"
79#define BOTAN_LIB_LINK "-ldl -lrt"
80#define BOTAN_LINK_FLAGS "-fstack-protector -m64 -pthread"
81
82#define BOTAN_SYSTEM_CERT_BUNDLE "/etc/ssl/certs/ca-certificates.crt"
83
84#ifndef BOTAN_DLL
85 #define BOTAN_DLL __attribute__((visibility("default")))
86#endif
87
88/* Target identification and feature test macros */
89
90#define BOTAN_TARGET_OS_IS_LINUX
91
92#define BOTAN_TARGET_OS_HAS_ATOMICS
93#define BOTAN_TARGET_OS_HAS_CLOCK_GETTIME
94#define BOTAN_TARGET_OS_HAS_DEV_RANDOM
95#define BOTAN_TARGET_OS_HAS_EXPLICIT_BZERO
96#define BOTAN_TARGET_OS_HAS_FILESYSTEM
97#define BOTAN_TARGET_OS_HAS_GETAUXVAL
98#define BOTAN_TARGET_OS_HAS_GETENTROPY
99#define BOTAN_TARGET_OS_HAS_GETRANDOM
100#define BOTAN_TARGET_OS_HAS_POSIX1
101#define BOTAN_TARGET_OS_HAS_POSIX_MLOCK
102#define BOTAN_TARGET_OS_HAS_PRCTL
103#define BOTAN_TARGET_OS_HAS_SOCKETS
104#define BOTAN_TARGET_OS_HAS_THREAD_LOCAL
105#define BOTAN_TARGET_OS_HAS_THREADS
106
107
108#define BOTAN_BUILD_COMPILER_IS_GCC
109
110#define BOTAN_USE_GCC_INLINE_ASM
111
112
113
114#define BOTAN_TARGET_ARCH "x86_64"
115#define BOTAN_TARGET_ARCH_IS_X86_64
116#define BOTAN_TARGET_CPU_IS_LITTLE_ENDIAN
117#define BOTAN_TARGET_CPU_IS_X86_FAMILY
118#define BOTAN_TARGET_CPU_HAS_NATIVE_64BIT
119
120#define BOTAN_TARGET_SUPPORTS_AESNI
121#define BOTAN_TARGET_SUPPORTS_AVX2
122#define BOTAN_TARGET_SUPPORTS_AVX512
123#define BOTAN_TARGET_SUPPORTS_BMI2
124#define BOTAN_TARGET_SUPPORTS_GFNI
125#define BOTAN_TARGET_SUPPORTS_RDRAND
126#define BOTAN_TARGET_SUPPORTS_RDSEED
127#define BOTAN_TARGET_SUPPORTS_SHA
128#define BOTAN_TARGET_SUPPORTS_SHA512
129#define BOTAN_TARGET_SUPPORTS_SM3
130#define BOTAN_TARGET_SUPPORTS_SM4
131#define BOTAN_TARGET_SUPPORTS_SSE2
132#define BOTAN_TARGET_SUPPORTS_SSE41
133#define BOTAN_TARGET_SUPPORTS_SSSE3
134#define BOTAN_TARGET_SUPPORTS_VAES
135
136
137
138
139
140
141/**
142 * @}
143 */
144
145/**
146 * @ingroup buildinfo
147 * @defgroup buildinfo_modules Enabled modules and API versions
148 * @{
149 */
150
151/*
152* Module availability definitions
153*/
154#define BOTAN_HAS_ADLER32 20131128
155#define BOTAN_HAS_AEAD_CCM 20131128
156#define BOTAN_HAS_AEAD_CHACHA20_POLY1305 20180807
157#define BOTAN_HAS_AEAD_EAX 20131128
158#define BOTAN_HAS_AEAD_GCM 20131128
159#define BOTAN_HAS_AEAD_MODES 20131128
160#define BOTAN_HAS_AEAD_OCB 20131128
161#define BOTAN_HAS_AEAD_SIV 20131202
162#define BOTAN_HAS_AES 20131128
163#define BOTAN_HAS_AES_CRYSTALS_XOF 20230816
164#define BOTAN_HAS_AES_NI 20131128
165#define BOTAN_HAS_AES_VAES 20240803
166#define BOTAN_HAS_AES_VPERM 20190901
167#define BOTAN_HAS_ANSI_X919_MAC 20131128
168#define BOTAN_HAS_ARGON2 20210407
169#define BOTAN_HAS_ARGON2_AVX2 20221216
170#define BOTAN_HAS_ARGON2_FMT 20210407
171#define BOTAN_HAS_ARGON2_SSSE3 20220303
172#define BOTAN_HAS_ARIA 20170415
173#define BOTAN_HAS_ASN1 20201106
174#define BOTAN_HAS_AUTO_RNG 20161126
175#define BOTAN_HAS_AUTO_SEEDING_RNG 20160821
176#define BOTAN_HAS_BASE32_CODEC 20180418
177#define BOTAN_HAS_BASE58_CODEC 20181209
178#define BOTAN_HAS_BASE64_CODEC 20131128
179#define BOTAN_HAS_BCRYPT 20131128
180#define BOTAN_HAS_BIGINT 20240529
181#define BOTAN_HAS_BIGINT_MP 20151225
182#define BOTAN_HAS_BLAKE2B 20130131
183#define BOTAN_HAS_BLAKE2BMAC 20201123
184#define BOTAN_HAS_BLAKE2S 20231028
185#define BOTAN_HAS_BLOCK_CIPHER 20131128
186#define BOTAN_HAS_BLOWFISH 20180718
187#define BOTAN_HAS_CAMELLIA 20150922
188#define BOTAN_HAS_CASCADE 20131128
189#define BOTAN_HAS_CAST 20131128
190#define BOTAN_HAS_CAST_128 20171203
191#define BOTAN_HAS_CERTSTOR_FLATFILE 20190410
192#define BOTAN_HAS_CERTSTOR_SQL 20160818
193#define BOTAN_HAS_CERTSTOR_SYSTEM 20190411
194#define BOTAN_HAS_CHACHA 20180807
195#define BOTAN_HAS_CHACHA_AVX2 20180418
196#define BOTAN_HAS_CHACHA_AVX512 20230101
197#define BOTAN_HAS_CHACHA_RNG 20170728
198#define BOTAN_HAS_CHACHA_SIMD32 20181104
199#define BOTAN_HAS_CIPHER_MODES 20180124
200#define BOTAN_HAS_CIPHER_MODE_PADDING 20131128
201#define BOTAN_HAS_CMAC 20131128
202#define BOTAN_HAS_CODEC_FILTERS 20131128
203#define BOTAN_HAS_COMB4P 20131128
204#define BOTAN_HAS_CPUID 20170917
205#define BOTAN_HAS_CRC24 20131128
206#define BOTAN_HAS_CRC32 20131128
207#define BOTAN_HAS_CRYPTO_BOX 20131128
208#define BOTAN_HAS_CSHAKE_XOF 20230911
209#define BOTAN_HAS_CTR_BE 20131128
210#define BOTAN_HAS_CURVE_25519 20170621
211#define BOTAN_HAS_CURVE_448_UTILS 20240301
212#define BOTAN_HAS_DES 20200926
213#define BOTAN_HAS_DIFFIE_HELLMAN 20131128
214#define BOTAN_HAS_DILITHIUM 20221018
215#define BOTAN_HAS_DILITHIUM_AES 20221018
216#define BOTAN_HAS_DILITHIUM_COMMON 20221018
217#define BOTAN_HAS_DILITHIUM_ROUND3 20240916
218#define BOTAN_HAS_DILITHIUM_SHAKE_XOF 20240728
219#define BOTAN_HAS_DLIES 20160713
220#define BOTAN_HAS_DL_GROUP 20131128
221#define BOTAN_HAS_DL_SCHEME 20230101
222#define BOTAN_HAS_DSA 20131128
223#define BOTAN_HAS_DYNAMIC_LOADER 20160310
224#define BOTAN_HAS_ECC_GROUP 20240531
225#define BOTAN_HAS_ECC_KEY 20190801
226#define BOTAN_HAS_ECC_PUBLIC_KEY_CRYPTO 20131128
227#define BOTAN_HAS_ECDH 20131128
228#define BOTAN_HAS_ECDSA 20131128
229#define BOTAN_HAS_ECGDSA 20160301
230#define BOTAN_HAS_ECIES 20160128
231#define BOTAN_HAS_ECKCDSA 20160413
232#define BOTAN_HAS_EC_CURVE_GFP 20240531
233#define BOTAN_HAS_EC_HASH_TO_CURVE 20210420
234#define BOTAN_HAS_ED25519 20170607
235#define BOTAN_HAS_ED448 20240223
236#define BOTAN_HAS_ELGAMAL 20131128
237#define BOTAN_HAS_EME_OAEP 20180305
238#define BOTAN_HAS_EME_PKCS1 20190426
239#define BOTAN_HAS_EME_PKCS1v15 20131128
240#define BOTAN_HAS_EME_RAW 20150313
241#define BOTAN_HAS_EMSA_PKCS1 20140118
242#define BOTAN_HAS_EMSA_PSSR 20131128
243#define BOTAN_HAS_EMSA_RAW 20131128
244#define BOTAN_HAS_EMSA_X931 20140118
245#define BOTAN_HAS_ENTROPY_SOURCE 20151120
246#define BOTAN_HAS_ENTROPY_SRC_GETENTROPY 20170327
247#define BOTAN_HAS_ENTROPY_SRC_RDSEED 20151218
248#define BOTAN_HAS_FFI 20240408
249#define BOTAN_HAS_FILTERS 20160415
250#define BOTAN_HAS_FPE_FE1 20131128
251#define BOTAN_HAS_FRODOKEM 20230801
252#define BOTAN_HAS_FRODOKEM_AES 20231103
253#define BOTAN_HAS_FRODOKEM_SHAKE 20231114
254#define BOTAN_HAS_GHASH 20201002
255#define BOTAN_HAS_GHASH_CLMUL_CPU 20201002
256#define BOTAN_HAS_GHASH_CLMUL_VPERM 20201002
257#define BOTAN_HAS_GMAC 20160207
258#define BOTAN_HAS_GOST_28147_89 20131128
259#define BOTAN_HAS_GOST_34_10_2001 20131128
260#define BOTAN_HAS_GOST_34_10_2012 20190801
261#define BOTAN_HAS_GOST_34_11 20131128
262#define BOTAN_HAS_HASH 20180112
263#define BOTAN_HAS_HASH_ID 20131128
264#define BOTAN_HAS_HEX_CODEC 20131128
265#define BOTAN_HAS_HKDF 20170927
266#define BOTAN_HAS_HMAC 20131128
267#define BOTAN_HAS_HMAC_DRBG 20140319
268#define BOTAN_HAS_HOTP 20180816
269#define BOTAN_HAS_HSS_LMS 20230925
270#define BOTAN_HAS_HTTP_UTIL 20171003
271#define BOTAN_HAS_IDEA 20131128
272#define BOTAN_HAS_IDEA_SSE2 20131128
273#define BOTAN_HAS_ISO_9796 20161121
274#define BOTAN_HAS_KDF1 20131128
275#define BOTAN_HAS_KDF1_18033 20160128
276#define BOTAN_HAS_KDF2 20131128
277#define BOTAN_HAS_KDF_BASE 20131128
278#define BOTAN_HAS_KECCAK 20131128
279#define BOTAN_HAS_KECCAK_PERM 20230613
280#define BOTAN_HAS_KECCAK_PERM_BMI2 20230612
281#define BOTAN_HAS_KMAC 20230601
282#define BOTAN_HAS_KUZNYECHIK 20230820
283#define BOTAN_HAS_KYBER 20220107
284#define BOTAN_HAS_KYBER_90S 20220107
285#define BOTAN_HAS_KYBER_COMMON 20220107
286#define BOTAN_HAS_KYBER_ROUND3 20240117
287#define BOTAN_HAS_LION 20131128
288#define BOTAN_HAS_LOCKING_ALLOCATOR 20131128
289#define BOTAN_HAS_MAC 20150626
290#define BOTAN_HAS_MCELIECE 20150922
291#define BOTAN_HAS_MD4 20131128
292#define BOTAN_HAS_MD5 20131128
293#define BOTAN_HAS_MDX_HASH_FUNCTION 20131128
294#define BOTAN_HAS_MEM_POOL 20180309
295#define BOTAN_HAS_MGF1 20140118
296#define BOTAN_HAS_ML_DSA 20240729
297#define BOTAN_HAS_ML_KEM 20240821
298#define BOTAN_HAS_MODES 20150626
299#define BOTAN_HAS_MODE_CBC 20131128
300#define BOTAN_HAS_MODE_CFB 20131128
301#define BOTAN_HAS_MODE_XTS 20131128
302#define BOTAN_HAS_NIST_KEYWRAP 20171119
303#define BOTAN_HAS_NOEKEON 20131128
304#define BOTAN_HAS_NOEKEON_SIMD 20160903
305#define BOTAN_HAS_NUMBERTHEORY 20201108
306#define BOTAN_HAS_OCSP 20201106
307#define BOTAN_HAS_OFB 20131128
308#define BOTAN_HAS_PARALLEL_HASH 20131128
309#define BOTAN_HAS_PASSHASH9 20131128
310#define BOTAN_HAS_PASSWORD_HASHING 20210419
311#define BOTAN_HAS_PBKDF 20180902
312#define BOTAN_HAS_PBKDF2 20180902
313#define BOTAN_HAS_PBKDF_BCRYPT 20190531
314#define BOTAN_HAS_PCURVES 20240404
315#define BOTAN_HAS_PCURVES_BRAINPOOL256R1 20240608
316#define BOTAN_HAS_PCURVES_BRAINPOOL384R1 20240608
317#define BOTAN_HAS_PCURVES_BRAINPOOL512R1 20240608
318#define BOTAN_HAS_PCURVES_FRP256V1 20240608
319#define BOTAN_HAS_PCURVES_IMPL 20240714
320#define BOTAN_HAS_PCURVES_NUMSP512D1 20240723
321#define BOTAN_HAS_PCURVES_SECP192R1 20240709
322#define BOTAN_HAS_PCURVES_SECP224R1 20240716
323#define BOTAN_HAS_PCURVES_SECP256K1 20240608
324#define BOTAN_HAS_PCURVES_SECP256R1 20240608
325#define BOTAN_HAS_PCURVES_SECP384R1 20240608
326#define BOTAN_HAS_PCURVES_SECP521R1 20240608
327#define BOTAN_HAS_PCURVES_SM2P256V1 20240608
328#define BOTAN_HAS_PEM_CODEC 20131128
329#define BOTAN_HAS_PGP_S2K 20170527
330#define BOTAN_HAS_PIPE_UNIXFD_IO 20131128
331#define BOTAN_HAS_PKCS11 20160219
332#define BOTAN_HAS_PKCS5_PBES2 20141119
333#define BOTAN_HAS_PK_PADDING 20131128
334#define BOTAN_HAS_POLY1305 20141227
335#define BOTAN_HAS_POLY_DBL 20170927
336#define BOTAN_HAS_PQCRYSTALS 20240228
337#define BOTAN_HAS_PROCESSOR_RNG 20200508
338#define BOTAN_HAS_PSK_DB 20171119
339#define BOTAN_HAS_PUBLIC_KEY_CRYPTO 20131128
340#define BOTAN_HAS_RAW_HASH_FN 20230221
341#define BOTAN_HAS_RC4 20131128
342#define BOTAN_HAS_RFC3394_KEYWRAP 20131128
343#define BOTAN_HAS_RFC4880 20210407
344#define BOTAN_HAS_RFC6979_GENERATOR 20140321
345#define BOTAN_HAS_RIPEMD_160 20131128
346#define BOTAN_HAS_ROUGHTIME 20190220
347#define BOTAN_HAS_RSA 20160730
348#define BOTAN_HAS_SALSA20 20171114
349#define BOTAN_HAS_SCRYPT 20180902
350#define BOTAN_HAS_SEED 20131128
351#define BOTAN_HAS_SERPENT 20131128
352#define BOTAN_HAS_SERPENT_AVX2 20180824
353#define BOTAN_HAS_SERPENT_AVX512 20230101
354#define BOTAN_HAS_SERPENT_SIMD 20160903
355#define BOTAN_HAS_SHA1 20131128
356#define BOTAN_HAS_SHA1_SSE2 20160803
357#define BOTAN_HAS_SHA1_X86_SHA_NI 20170518
358#define BOTAN_HAS_SHA2_32 20131128
359#define BOTAN_HAS_SHA2_32_X86 20170518
360#define BOTAN_HAS_SHA2_32_X86_BMI2 20180526
361#define BOTAN_HAS_SHA2_64 20131128
362#define BOTAN_HAS_SHA2_64_BMI2 20190117
363#define BOTAN_HAS_SHA3 20161018
364#define BOTAN_HAS_SHACAL2 20170813
365#define BOTAN_HAS_SHACAL2_AVX2 20180826
366#define BOTAN_HAS_SHACAL2_SIMD 20170813
367#define BOTAN_HAS_SHACAL2_X86 20170814
368#define BOTAN_HAS_SHAKE 20161009
369#define BOTAN_HAS_SHAKE_CIPHER 20161018
370#define BOTAN_HAS_SHAKE_XOF 20230815
371#define BOTAN_HAS_SIMD_32 20131128
372#define BOTAN_HAS_SIMD_AVX2 20180824
373#define BOTAN_HAS_SIMD_AVX512 20230101
374#define BOTAN_HAS_SIPHASH 20150110
375#define BOTAN_HAS_SKEIN_512 20131128
376#define BOTAN_HAS_SLH_DSA_WITH_SHA2 20240806
377#define BOTAN_HAS_SLH_DSA_WITH_SHAKE 20240808
378#define BOTAN_HAS_SM2 20180801
379#define BOTAN_HAS_SM3 20170402
380#define BOTAN_HAS_SM4 20170716
381#define BOTAN_HAS_SM4_GFNI 20240803
382#define BOTAN_HAS_SOCKETS 20171216
383#define BOTAN_HAS_SODIUM_API 20190615
384#define BOTAN_HAS_SP800_108 20160128
385#define BOTAN_HAS_SP800_56A 20170501
386#define BOTAN_HAS_SP800_56C 20160211
387#define BOTAN_HAS_SPHINCS_PLUS_COMMON 20230426
388#define BOTAN_HAS_SPHINCS_PLUS_SHA2_BASE 20240807
389#define BOTAN_HAS_SPHINCS_PLUS_SHAKE_BASE 20240809
390#define BOTAN_HAS_SPHINCS_PLUS_WITH_SHA2 20230531
391#define BOTAN_HAS_SPHINCS_PLUS_WITH_SHAKE 20230531
392#define BOTAN_HAS_SRP6 20161017
393#define BOTAN_HAS_STATEFUL_RNG 20160819
394#define BOTAN_HAS_STREAM_CIPHER 20131128
395#define BOTAN_HAS_STREEBOG 20170623
396#define BOTAN_HAS_SYSTEM_RNG 20141202
397#define BOTAN_HAS_THREAD_UTILS 20190922
398#define BOTAN_HAS_THREEFISH_512 20131224
399#define BOTAN_HAS_THRESHOLD_SECRET_SHARING 20131128
400#define BOTAN_HAS_TLS 20201128
401#define BOTAN_HAS_TLS_12 20210608
402#define BOTAN_HAS_TLS_13 20210721
403#define BOTAN_HAS_TLS_13_PQC 20230919
404#define BOTAN_HAS_TLS_CBC 20161008
405#define BOTAN_HAS_TLS_SESSION_MANAGER_SQL_DB 20141219
406#define BOTAN_HAS_TLS_V12_PRF 20131128
407#define BOTAN_HAS_TOTP 20180816
408#define BOTAN_HAS_TREE_HASH 20231006
409#define BOTAN_HAS_TRUNCATED_HASH 20230215
410#define BOTAN_HAS_TWOFISH 20131128
411#define BOTAN_HAS_UTIL_FUNCTIONS 20180903
412#define BOTAN_HAS_UUID 20180930
413#define BOTAN_HAS_WHIRLPOOL 20131128
414#define BOTAN_HAS_X25519 20240412
415#define BOTAN_HAS_X448 20240219
416#define BOTAN_HAS_X509 20201106
417#define BOTAN_HAS_X509_CERTIFICATES 20201106
418#define BOTAN_HAS_X942_PRF 20131128
419#define BOTAN_HAS_XMD 20240404
420#define BOTAN_HAS_XMSS_RFC8391 20201101
421#define BOTAN_HAS_XOF 20230815
422#define BOTAN_HAS_ZFEC 20211211
423#define BOTAN_HAS_ZFEC_SSE2 20211211
424#define BOTAN_HAS_ZFEC_VPERM 20211211
425
426
427/**
428 * @}
429 */
430
431/**
432 * @addtogroup buildinfo_configuration
433 * @{
434 */
435
436/** Local/misc configuration options (if any) follow */
437
438
439/*
440* Things you can edit (but probably shouldn't)
441*/
442
443/** How much to allocate for a buffer of no particular size */
444#define BOTAN_DEFAULT_BUFFER_SIZE 4096
445
446#if defined(BOTAN_HAS_VALGRIND) || defined(BOTAN_ENABLE_DEBUG_ASSERTS)
447 /**
448 * @brief Prohibits access to unused memory pages in Botan's memory pool
449 *
450 * If BOTAN_MEM_POOL_USE_MMU_PROTECTIONS is defined, the Memory_Pool
451 * class used for mlock'ed memory will use OS calls to set page
452 * permissions so as to prohibit access to pages on the free list, then
453 * enable read/write access when the page is set to be used. This will
454 * turn (some) use after free bugs into a crash.
455 *
456 * The additional syscalls have a substantial performance impact, which
457 * is why this option is not enabled by default. It is used when built for
458 * running in valgrind or debug assertions are enabled.
459 */
460 #define BOTAN_MEM_POOL_USE_MMU_PROTECTIONS
461#endif
462
463#if defined(BOTAN_HAS_VALGRIND)
464 /**
465 * If `BOTAN_CT_POISON_ENABLED` is defined, then the `CT::poison` and
466 * `CT::unpoison` functions have an effect and do not just compile to no-ops.
467 *
468 * At the moment that is only the case when building with valgrind support. We
469 * could potentially add support for other tools in the future.
470 */
471 #define BOTAN_CT_POISON_ENABLED
472#endif
473
474/**
475* If enabled uses memset via volatile function pointer to zero memory,
476* otherwise does a byte at a time write via a volatile pointer.
477*/
478#define BOTAN_USE_VOLATILE_MEMSET_FOR_ZERO 1
479
480/**
481* Normally blinding is performed by choosing a random starting point (plus
482* its inverse, of a form appropriate to the algorithm being blinded), and
483* then choosing new blinding operands by successive squaring of both
484* values. This is much faster than computing a new starting point but
485* introduces some possible corelation
486*
487* To avoid possible leakage problems in long-running processes, the blinder
488* periodically reinitializes the sequence. This value specifies how often
489* a new sequence should be started.
490*/
491#define BOTAN_BLINDING_REINIT_INTERVAL 64
492
493/**
494* Userspace RNGs like HMAC_DRBG will reseed after a specified number
495* of outputs are generated. Set to zero to disable automatic reseeding.
496*/
497#define BOTAN_RNG_DEFAULT_RESEED_INTERVAL 1024
498
499/** Number of entropy bits polled for reseeding userspace RNGs like HMAC_DRBG */
500#define BOTAN_RNG_RESEED_POLL_BITS 256
501
502#define BOTAN_RNG_RESEED_DEFAULT_TIMEOUT std::chrono::milliseconds(50)
503
504/**
505* Specifies (in order) the list of entropy sources that will be used
506* to seed an in-memory RNG.
507*/
508#define BOTAN_ENTROPY_DEFAULT_SOURCES \
509 { "rdseed", "hwrng", "getentropy", "system_rng", "system_stats" }
510
511/** Multiplier on a block cipher's native parallelism */
512#define BOTAN_BLOCK_CIPHER_PAR_MULT 4
513
514/**
515 * @}
516 */
517
518/* Check for a common build problem */
519
520#if defined(BOTAN_TARGET_ARCH_IS_X86_64) && ((defined(_MSC_VER) && !defined(_WIN64)) || \
521 (defined(__clang__) && !defined(__x86_64__)) || \
522 (defined(__GNUG__) && !defined(__x86_64__)))
523 #error "Trying to compile Botan configured as x86_64 with non-x86_64 compiler."
524#endif
525
526#if defined(BOTAN_TARGET_ARCH_IS_X86_32) && ((defined(_MSC_VER) && defined(_WIN64)) || \
527 (defined(__clang__) && !defined(__i386__)) || \
528 (defined(__GNUG__) && !defined(__i386__)))
529
530 #error "Trying to compile Botan configured as x86_32 with non-x86_32 compiler."
531#endif
532
533#endif