• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2 By default wolfSSL has a very conservative configuration that can result in
3 connections to servers failing due to certificate or algorithm problems.
4 To remedy this issue for libcurl I've generated this options file that
5 build-wolfssl will copy to the wolfSSL include directories and will result in
6 maximum compatibility.
7 
8 These are the configure options that were used to build wolfSSL v3.11.0 in
9 mingw and generate the options in this file:
10 
11 C_EXTRA_FLAGS="\
12   -Wno-attributes \
13   -Wno-unused-but-set-variable \
14   -DFP_MAX_BITS=16384 \
15   -DTFM_TIMING_RESISTANT \
16   -DWOLFSSL_STATIC_DH \
17   -DWOLFSSL_STATIC_RSA \
18   " \
19 ./configure --prefix=/usr/local \
20   --disable-jobserver \
21   --enable-aesgcm \
22   --enable-alpn \
23   --enable-certgen \
24   --enable-des3 \
25   --enable-dh \
26   --enable-dsa \
27   --enable-ecc \
28   --enable-eccshamir \
29   --enable-fastmath \
30   --enable-opensslextra \
31   --enable-ripemd \
32   --enable-sessioncerts \
33   --enable-sha512 \
34   --enable-sni \
35   --enable-sslv3 \
36   --enable-supportedcurves \
37   --enable-testcert \
38   > config.out 2>&1
39 
40 Two generated options HAVE_THREAD_LS and _POSIX_THREADS were removed since they
41 are inapplicable for our Visual Studio build. Currently thread local storage is
42 only used by the Fixed Point cache ECC which we're not enabling. However even
43 if we later may decide to enable the cache it will fallback on mutexes when
44 thread local storage is not available. wolfSSL is using __declspec(thread) to
45 create the thread local storage and that could be a problem for LoadLibrary.
46 
47 Regarding the options that were added via C_EXTRA_FLAGS:
48 
49 FP_MAX_BITS=16384
50 https://www.yassl.com/forums/topic423-cacertorgs-ca-cert-verify-failed-but-withdisablefastmath-it-works.html
51 "Since root.crt uses a 4096-bit RSA key, you'll need to increase the fastmath
52 buffer size.  You can do this using the define:
53 FP_MAX_BITS and setting it to 8192."
54 
55 TFM_TIMING_RESISTANT
56 https://wolfssl.com/wolfSSL/Docs-wolfssl-manual-2-building-wolfssl.html
57 From section 2.4.5 Increasing Performance, USE_FAST_MATH:
58 "Because the stack memory usage can be larger when using fastmath, we recommend
59 defining TFM_TIMING_RESISTANT as well when using this option."
60 
61 WOLFSSL_STATIC_DH:    Allow TLS_ECDH_ ciphers
62 WOLFSSL_STATIC_RSA:   Allow TLS_RSA_ ciphers
63 https://github.com/wolfSSL/wolfssl/blob/v3.6.6/README.md#note-1
64 Static key cipher suites are deprecated and disabled by default since v3.6.6.
65 */
66 
67 /* wolfssl options.h
68  * generated from configure options
69  *
70  * Copyright (C) 2006-2015 wolfSSL Inc.
71  *
72  * This file is part of wolfSSL. (formerly known as CyaSSL)
73  *
74  */
75 
76 #ifndef WOLFSSL_OPTIONS_H
77 #define WOLFSSL_OPTIONS_H
78 
79 
80 #ifdef __cplusplus
81 extern "C" {
82 #endif
83 
84 #undef  FP_MAX_BITS
85 #define FP_MAX_BITS 16384
86 
87 #undef  TFM_TIMING_RESISTANT
88 #define TFM_TIMING_RESISTANT
89 
90 #undef  WOLFSSL_STATIC_DH
91 #define WOLFSSL_STATIC_DH
92 
93 #undef  WOLFSSL_STATIC_RSA
94 #define WOLFSSL_STATIC_RSA
95 
96 #undef  OPENSSL_EXTRA
97 #define OPENSSL_EXTRA
98 
99 /*
100 The commented out defines below are the equivalent of --enable-tls13.
101 Uncomment them to build wolfSSL with TLS 1.3 support as of v3.11.1-tls13-beta.
102 This is for experimenting only, afaict TLS 1.3 support doesn't appear to be
103 functioning correctly yet. https://github.com/wolfSSL/wolfssl/pull/943
104 
105 #undef  WC_RSA_PSS
106 #define WC_RSA_PSS
107 
108 #undef  WOLFSSL_TLS13
109 #define WOLFSSL_TLS13
110 
111 #undef  HAVE_TLS_EXTENSIONS
112 #define HAVE_TLS_EXTENSIONS
113 
114 #undef  HAVE_FFDHE_2048
115 #define HAVE_FFDHE_2048
116 
117 #undef  HAVE_HKDF
118 #define HAVE_HKDF
119 */
120 
121 #undef  TFM_TIMING_RESISTANT
122 #define TFM_TIMING_RESISTANT
123 
124 #undef  ECC_TIMING_RESISTANT
125 #define ECC_TIMING_RESISTANT
126 
127 #undef  WC_RSA_BLINDING
128 #define WC_RSA_BLINDING
129 
130 #undef  HAVE_AESGCM
131 #define HAVE_AESGCM
132 
133 #undef  WOLFSSL_RIPEMD
134 #define WOLFSSL_RIPEMD
135 
136 #undef  WOLFSSL_SHA512
137 #define WOLFSSL_SHA512
138 
139 #undef  WOLFSSL_SHA384
140 #define WOLFSSL_SHA384
141 
142 #undef  SESSION_CERTS
143 #define SESSION_CERTS
144 
145 #undef  WOLFSSL_CERT_GEN
146 #define WOLFSSL_CERT_GEN
147 
148 #undef  HAVE_ECC
149 #define HAVE_ECC
150 
151 #undef  TFM_ECC256
152 #define TFM_ECC256
153 
154 #undef  ECC_SHAMIR
155 #define ECC_SHAMIR
156 
157 #undef  WOLFSSL_ALLOW_SSLV3
158 #define WOLFSSL_ALLOW_SSLV3
159 
160 #undef  NO_RC4
161 #define NO_RC4
162 
163 #undef  NO_HC128
164 #define NO_HC128
165 
166 #undef  NO_RABBIT
167 #define NO_RABBIT
168 
169 #undef  HAVE_POLY1305
170 #define HAVE_POLY1305
171 
172 #undef  HAVE_ONE_TIME_AUTH
173 #define HAVE_ONE_TIME_AUTH
174 
175 #undef  HAVE_CHACHA
176 #define HAVE_CHACHA
177 
178 #undef  HAVE_HASHDRBG
179 #define HAVE_HASHDRBG
180 
181 #undef  HAVE_TLS_EXTENSIONS
182 #define HAVE_TLS_EXTENSIONS
183 
184 #undef  HAVE_SNI
185 #define HAVE_SNI
186 
187 #undef  HAVE_TLS_EXTENSIONS
188 #define HAVE_TLS_EXTENSIONS
189 
190 #undef  HAVE_ALPN
191 #define HAVE_ALPN
192 
193 #undef  HAVE_TLS_EXTENSIONS
194 #define HAVE_TLS_EXTENSIONS
195 
196 #undef  HAVE_SUPPORTED_CURVES
197 #define HAVE_SUPPORTED_CURVES
198 
199 #undef  HAVE_EXTENDED_MASTER
200 #define HAVE_EXTENDED_MASTER
201 
202 #undef  WOLFSSL_TEST_CERT
203 #define WOLFSSL_TEST_CERT
204 
205 #undef  NO_PSK
206 #define NO_PSK
207 
208 #undef  NO_MD4
209 #define NO_MD4
210 
211 #undef  USE_FAST_MATH
212 #define USE_FAST_MATH
213 
214 #undef  WC_NO_ASYNC_THREADING
215 #define WC_NO_ASYNC_THREADING
216 
217 
218 #ifdef __cplusplus
219 }
220 #endif
221 
222 
223 #endif /* WOLFSSL_OPTIONS_H */
224