Skip to content

Commit 925bf80

Browse files
Merge pull request #247 from cconlon/fipsRunAllCasts
JNI/JSSE: call wc_RunAllCast_fips() for FIPS builds when available
2 parents e138599 + 501150e commit 925bf80

File tree

1 file changed

+50
-6
lines changed

1 file changed

+50
-6
lines changed

native/com_wolfssl_WolfSSL.c

Lines changed: 50 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -86,95 +86,139 @@ JNIEXPORT jint JNICALL Java_com_wolfssl_WolfSSL_init
8686
}
8787
#endif
8888

89-
#if defined(HAVE_FIPS) && defined(HAVE_FIPS_VERSION) && (HAVE_FIPS_VERSION == 5)
89+
#if defined(HAVE_FIPS) && defined(HAVE_FIPS_VERSION) && \
90+
(HAVE_FIPS_VERSION >= 6)
91+
92+
ret = wc_RunAllCast_fips();
93+
if (ret != 0) {
94+
printf("FIPS CASTs failed to run");
95+
}
96+
97+
#elif defined(HAVE_FIPS) && defined(HAVE_FIPS_VERSION) && \
98+
(HAVE_FIPS_VERSION == 5)
99+
90100
/* run FIPS 140-3 conditional algorithm self tests early to prevent
91101
* multi threaded issues later on */
102+
#if !defined(NO_AES) && !defined(NO_AES_CBC)
92103
if (ret == 0) {
93104
ret = wc_RunCast_fips(FIPS_CAST_AES_CBC);
94105
if (ret != 0) {
95106
printf("AES-CBC CAST failed");
96107
}
97108
}
109+
#endif
110+
#ifdef HAVE_AESGCM
98111
if (ret == 0) {
99112
ret = wc_RunCast_fips(FIPS_CAST_AES_GCM);
100113
if (ret != 0) {
101114
printf("AES-GCM CAST failed");
102115
}
103116
}
117+
#endif
118+
#ifndef NO_SHA
104119
if (ret == 0) {
105120
ret = wc_RunCast_fips(FIPS_CAST_HMAC_SHA1);
106121
if (ret != 0) {
107122
printf("HMAC-SHA1 CAST failed");
108123
}
109124
}
125+
#endif
126+
/* the only non-optional CAST */
110127
if (ret == 0) {
111128
ret = wc_RunCast_fips(FIPS_CAST_HMAC_SHA2_256);
112129
if (ret != 0) {
113130
printf("HMAC-SHA2-256 CAST failed");
114131
}
115132
}
133+
#ifdef WOLFSSL_SHA512
116134
if (ret == 0) {
117135
ret = wc_RunCast_fips(FIPS_CAST_HMAC_SHA2_512);
118136
if (ret != 0) {
119137
printf("HMAC-SHA2-512 CAST failed");
120138
}
121139
}
122-
140+
#endif
141+
#ifdef WOLFSSL_SHA3
123142
if (ret == 0) {
124143
ret = wc_RunCast_fips(FIPS_CAST_HMAC_SHA3_256);
125144
if (ret != 0) {
126145
printf("HMAC-SHA3-256 CAST failed");
127146
}
128147
}
148+
#endif
149+
#ifdef HAVE_HASHDRBG
129150
if (ret == 0) {
130151
ret = wc_RunCast_fips(FIPS_CAST_DRBG);
131152
if (ret != 0) {
132153
printf("Hash_DRBG CAST failed");
133154
}
134155
}
156+
#endif
157+
#ifndef NO_RSA
135158
if (ret == 0) {
136159
ret = wc_RunCast_fips(FIPS_CAST_RSA_SIGN_PKCS1v15);
137160
if (ret != 0) {
138161
printf("RSA sign CAST failed");
139162
}
140163
}
164+
#endif
165+
#if defined(HAVE_ECC_CDH) && defined(HAVE_ECC_CDH_CAST)
141166
if (ret == 0) {
142-
ret = wc_RunCast_fips(FIPS_CAST_ECC_PRIMITIVE_Z);
167+
ret = wc_RunCast_fips(FIPS_CAST_ECC_CDH);
143168
if (ret != 0) {
144-
printf("ECC Primitive Z CAST failed");
169+
printf("ECC CDH CAST failed");
145170
}
146171
}
172+
#endif
173+
#ifdef HAVE_ECC_DHE
147174
if (ret == 0) {
148-
ret = wc_RunCast_fips(FIPS_CAST_DH_PRIMITIVE_Z);
175+
ret = wc_RunCast_fips(FIPS_CAST_ECC_PRIMITIVE_Z);
149176
if (ret != 0) {
150-
printf("DH Primitive Z CAST failed");
177+
printf("ECC Primitive Z CAST failed");
151178
}
152179
}
180+
#endif
181+
#ifdef HAVE_ECC
153182
if (ret == 0) {
154183
ret = wc_RunCast_fips(FIPS_CAST_ECDSA);
155184
if (ret != 0) {
156185
printf("ECDSA CAST failed");
157186
}
158187
}
188+
#endif
189+
#ifndef NO_DH
190+
if (ret == 0) {
191+
ret = wc_RunCast_fips(FIPS_CAST_DH_PRIMITIVE_Z);
192+
if (ret != 0) {
193+
printf("DH Primitive Z CAST failed");
194+
}
195+
}
196+
#endif
197+
#ifdef WOLFSSL_HAVE_PRF
159198
if (ret == 0) {
160199
ret = wc_RunCast_fips(FIPS_CAST_KDF_TLS12);
161200
if (ret != 0) {
162201
printf("KDF TLSv1.2 CAST failed");
163202
}
164203
}
204+
#endif
205+
#if defined(WOLFSSL_HAVE_PRF) && defined(WOLFSSL_TLS13)
165206
if (ret == 0) {
166207
ret = wc_RunCast_fips(FIPS_CAST_KDF_TLS13);
167208
if (ret != 0) {
168209
printf("KDF TLSv1.3 CAST failed");
169210
}
170211
}
212+
#endif
213+
#ifdef WOLFSSL_WOLFSSH
171214
if (ret == 0) {
172215
ret = wc_RunCast_fips(FIPS_CAST_KDF_SSH);
173216
if (ret != 0) {
174217
printf("KDF SSHv2.0 CAST failed");
175218
}
176219
}
177220
#endif
221+
#endif /* HAVE_FIPS && HAVE_FIPS_VERSION == 5 */
178222

179223
if (ret == 0) {
180224
return (jint)wolfSSL_Init();

0 commit comments

Comments
 (0)