Skip to content

Commit 92fcd08

Browse files
committed
More Options
1. When setting the disable options, unset them first. Avoids duplicate definition warnings. 2. Regrouped some of the bulk disable options. 3. Detect when a complete set of an algorithm is disabled, and set the bulk disable option for it.
1 parent b7f073f commit 92fcd08

1 file changed

Lines changed: 64 additions & 25 deletions

File tree

wolfssh/internal.h

Lines changed: 64 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -66,13 +66,34 @@ extern "C" {
6666
* the derived options and any override options leave wolfSSH without
6767
* at least one algorithm to use, throw an error. */
6868

69+
#ifdef NO_RSA
70+
#undef WOLFSSH_NO_RSA
71+
#define WOLFSSH_NO_RSA
72+
#endif
73+
74+
#ifndef HAVE_ECC
75+
#undef WOLFSSH_NO_ECDSA
76+
#define WOLFSSH_NO_ECDSA
77+
#undef WOLFSSH_NO_ECDHE
78+
#define WOLFSSH_NO_ECDHE
79+
#endif
80+
81+
#ifdef NO_DH
82+
#undef WOLFSSH_NO_DH
83+
#define WOLFSSH_NO_DH
84+
#endif
85+
86+
6987
#if defined(NO_HMAC) || defined(NO_SHA)
88+
#undef WOLFSSH_NO_HMAC_SHA1
7089
#define WOLFSSH_NO_HMAC_SHA1
7190
#endif
7291
#if defined(NO_HMAC) || defined(NO_SHA)
92+
#undef WOLFSSH_NO_HMAC_SHA1_96
7393
#define WOLFSSH_NO_HMAC_SHA1_96
7494
#endif
7595
#if defined(NO_HMAC) || defined(NO_SHA256)
96+
#undef WOLFSSH_NO_HMAC_SHA2_256
7697
#define WOLFSSH_NO_HMAC_SHA2_256
7798
#endif
7899
#if defined(WOLFSSH_NO_HMAC_SHA1) && \
@@ -82,35 +103,33 @@ extern "C" {
82103
#endif
83104

84105

85-
#ifdef WOLFSSH_NO_DH
106+
#if defined(WOLFSSH_NO_DH) || defined(NO_SHA)
86107
#undef WOLFSSH_NO_DH_GROUP1_SHA1
87108
#define WOLFSSH_NO_DH_GROUP1_SHA1
88-
#undef WOLFSSH_NO_DH_GROUP14_SHA1
89-
#define WOLFSSH_NO_DH_GROUP14_SHA1
90-
#undef WOLFSSH_NO_DH_GEX_SHA256
91-
#define WOLFSSH_NO_DH_GEX_SHA256
92-
#endif
93-
94-
#if defined(NO_DH) || defined(NO_SHA)
95-
#define WOLFSSH_NO_DH_GROUP1_SHA1
96109
#endif
97-
#if defined(NO_DH) || defined(NO_SHA)
110+
#if defined(WOLFSSH_NO_DH) || defined(NO_SHA)
111+
#undef WOLFSSH_NO_DH_GROUP14_SHA1
98112
#define WOLFSSH_NO_DH_GROUP14_SHA1
99113
#endif
100-
#if defined(NO_DH) || defined(NO_SHA256)
114+
#if defined(WOLFSSH_NO_DH) || defined(NO_SHA256)
115+
#undef WOLFSSH_NO_DH_GEX_SHA256
101116
#define WOLFSSH_NO_DH_GEX_SHA256
102117
#endif
103-
#if !defined(HAVE_ECC) || defined(NO_SHA256) || defined(NO_ECC256)
118+
#if defined(WOLFSSH_NO_ECDHE) || defined(NO_SHA256) || defined(NO_ECC256)
119+
#undef WOLFSSH_NO_ECDH_SHA2_NISTP256
104120
#define WOLFSSH_NO_ECDH_SHA2_NISTP256
105121
#endif
106-
#if !defined(HAVE_ECC) || !defined(WOLFSSL_SHA384) || !defined(HAVE_ECC384)
122+
#if defined(WOLFSSH_NO_ECDHE) || !defined(WOLFSSL_SHA384) || !defined(HAVE_ECC384)
123+
#undef WOLFSSH_NO_ECDH_SHA2_NISTP384
107124
#define WOLFSSH_NO_ECDH_SHA2_NISTP384
108125
#endif
109-
#if !defined(HAVE_ECC) || !defined(WOLFSSL_SHA512) || !defined(HAVE_ECC521)
126+
#if defined(WOLFSSH_NO_ECDHE) || !defined(WOLFSSL_SHA512) || !defined(HAVE_ECC521)
127+
#undef WOLFSSH_NO_ECDH_SHA2_NISTP521
110128
#define WOLFSSH_NO_ECDH_SHA2_NISTP521
111129
#endif
112130
#if !defined(HAVE_ED25519) || defined(NO_SHA256) || 1
113131
/* ED25519 isn't supported yet. Force disabled. */
132+
#undef WOLFSSH_NO_ECDH_SHA2_ED25519
114133
#define WOLFSSH_NO_ECDH_SHA2_ED25519
115134
#endif
116135

@@ -127,28 +146,33 @@ extern "C" {
127146
#if defined(WOLFSSH_NO_DH_GROUP1_SHA1) && \
128147
defined(WOLFSSH_NO_DH_GROUP14_SHA1) && \
129148
defined(WOLFSSH_NO_DH_GEX_SHA256)
149+
#undef WOLFSSH_NO_DH
130150
#define WOLFSSH_NO_DH
131151
#endif
132-
133-
134-
#ifdef NO_RSA
135-
#define WOLFSSH_NO_RSA
136-
#endif
137-
#ifndef HAVE_ECC
138-
#define WOLFSSH_NO_ECDSA
152+
#if defined(WOLFSSH_NO_ECDH_SHA2_NISTP256) && \
153+
defined(WOLFSSH_NO_ECDH_SHA2_NISTP384) && \
154+
defined(WOLFSSH_NO_ECDH_SHA2_NISTP521)
155+
#undef WOLFSSH_NO_ECDHE
139156
#define WOLFSSH_NO_ECDHE
140157
#endif
141158

142-
#if defined(NO_RSA) || defined(NO_SHA)
159+
#if defined(WOLFSSH_NO_RSA) || defined(NO_SHA)
160+
#undef WOLFSSH_NO_SSH_RSA_SHA1
143161
#define WOLFSSH_NO_SSH_RSA_SHA1
144162
#endif
145-
#if !defined(HAVE_ECC) || defined(NO_SHA256) || defined(NO_ECC256)
163+
#if defined(WOLFSSH_NO_ECDSA) || \
164+
defined(NO_SHA256) || defined(NO_ECC256)
165+
#undef WOLFSSH_NO_ECDSA_SHA2_NISTP256
146166
#define WOLFSSH_NO_ECDSA_SHA2_NISTP256
147167
#endif
148-
#if !defined(HAVE_ECC) || !defined(WOLFSSL_SHA384) || !defined(HAVE_ECC384)
168+
#if defined(WOLFSSH_NO_ECDSA) || \
169+
!defined(WOLFSSL_SHA384) || !defined(HAVE_ECC384)
170+
#undef WOLFSSH_NO_ECDSA_SHA2_NISTP384
149171
#define WOLFSSH_NO_ECDSA_SHA2_NISTP384
150172
#endif
151-
#if !defined(HAVE_ECC) || !defined(WOLFSSL_SHA512) || !defined(HAVE_ECC521)
173+
#if defined(WOLFSSH_NO_ECDSA) || \
174+
!defined(WOLFSSL_SHA512) || !defined(HAVE_ECC521)
175+
#undef WOLFSSH_NO_ECDSA_SHA2_NISTP521
152176
#define WOLFSSH_NO_ECDSA_SHA2_NISTP521
153177
#endif
154178
#if defined(WOLFSSH_NO_SHA_RSA_SHA1) && \
@@ -158,19 +182,33 @@ extern "C" {
158182
#error "You need at least one signing algorithm."
159183
#endif
160184

185+
#ifdef WOLFSSH_NO_SHA_RSA_SHA1
186+
#undef WOLFSSH_NO_RSA
187+
#define WOLFSSH_NO_RSA
188+
#endif
189+
#if defined(WOLFSSH_NO_ECDSA_SHA2_NISTP256) && \
190+
defined(WOLFSSH_NO_ECDSA_SHA2_NISTP384) && \
191+
defined(WOLFSSH_NO_ECDSA_SHA2_NISTP521)
192+
#undef WOLFSSH_NO_ECDSA
193+
#define WOLFSSH_NO_ECDSA
194+
#endif
195+
161196

162197
#ifdef WOLFSSH_NO_AEAD
163198
#undef WOLFSSH_NO_AES_GCM
164199
#define WOLFSSH_NO_AES_GCM
165200
#endif
166201

167202
#if defined(NO_AES) || !defined(HAVE_AES_CBC)
203+
#undef WOLFSSH_NO_AES_CBC
168204
#define WOLFSSH_NO_AES_CBC
169205
#endif
170206
#if defined(NO_AES) || !defined(WOLFSSL_AES_COUNTER)
207+
#undef WOLFSSH_NO_AES_CTR
171208
#define WOLFSSH_NO_AES_CTR
172209
#endif
173210
#if defined(NO_AES) || !defined(HAVE_AESGCM)
211+
#undef WOLFSSH_NO_AES_GCM
174212
#define WOLFSSH_NO_AES_GCM
175213
#endif
176214

@@ -181,6 +219,7 @@ extern "C" {
181219
#endif
182220

183221
#if defined(WOLFSSH_NO_AES_GCM)
222+
#undef WOLFSSH_NO_AEAD
184223
#define WOLFSSH_NO_AEAD
185224
#endif
186225

0 commit comments

Comments
 (0)