@@ -64,10 +64,110 @@ JNIEXPORT jint JNICALL Java_com_wolfssl_WolfSSL_init
6464 (void )jenv ;
6565 (void )jcl ;
6666
67+ int ret = 0 ;
68+
6769#ifdef WC_RNG_SEED_CB
68- wc_SetSeed_Cb (wc_GenerateSeed );
70+ ret = wc_SetSeed_Cb (wc_GenerateSeed );
71+ if (ret != 0 ) {
72+ printf ("wc_SetSeed_Cb() failed" );
73+ }
6974#endif
70- return (jint )wolfSSL_Init ();
75+
76+ #if defined(HAVE_FIPS ) && defined(HAVE_FIPS_VERSION ) && (HAVE_FIPS_VERSION == 5 )
77+ /* run FIPS 140-3 conditional algorithm self tests early to prevent
78+ * multi threaded issues later on */
79+ if (ret == 0 ) {
80+ ret = wc_RunCast_fips (FIPS_CAST_AES_CBC );
81+ if (ret != 0 ) {
82+ printf ("AES-CBC CAST failed" );
83+ }
84+ }
85+ if (ret == 0 ) {
86+ ret = wc_RunCast_fips (FIPS_CAST_AES_GCM );
87+ if (ret != 0 ) {
88+ printf ("AES-GCM CAST failed" );
89+ }
90+ }
91+ if (ret == 0 ) {
92+ ret = wc_RunCast_fips (FIPS_CAST_HMAC_SHA1 );
93+ if (ret != 0 ) {
94+ printf ("HMAC-SHA1 CAST failed" );
95+ }
96+ }
97+ if (ret == 0 ) {
98+ ret = wc_RunCast_fips (FIPS_CAST_HMAC_SHA2_256 );
99+ if (ret != 0 ) {
100+ printf ("HMAC-SHA2-256 CAST failed" );
101+ }
102+ }
103+ if (ret == 0 ) {
104+ ret = wc_RunCast_fips (FIPS_CAST_HMAC_SHA2_512 );
105+ if (ret != 0 ) {
106+ printf ("HMAC-SHA2-512 CAST failed" );
107+ }
108+ }
109+
110+ if (ret == 0 ) {
111+ ret = wc_RunCast_fips (FIPS_CAST_HMAC_SHA3_256 );
112+ if (ret != 0 ) {
113+ printf ("HMAC-SHA3-256 CAST failed" );
114+ }
115+ }
116+ if (ret == 0 ) {
117+ ret = wc_RunCast_fips (FIPS_CAST_DRBG );
118+ if (ret != 0 ) {
119+ printf ("Hash_DRBG CAST failed" );
120+ }
121+ }
122+ if (ret == 0 ) {
123+ ret = wc_RunCast_fips (FIPS_CAST_RSA_SIGN_PKCS1v15 );
124+ if (ret != 0 ) {
125+ printf ("RSA sign CAST failed" );
126+ }
127+ }
128+ if (ret == 0 ) {
129+ ret = wc_RunCast_fips (FIPS_CAST_ECC_PRIMITIVE_Z );
130+ if (ret != 0 ) {
131+ printf ("ECC Primitive Z CAST failed" );
132+ }
133+ }
134+ if (ret == 0 ) {
135+ ret = wc_RunCast_fips (FIPS_CAST_DH_PRIMITIVE_Z );
136+ if (ret != 0 ) {
137+ printf ("DH Primitive Z CAST failed" );
138+ }
139+ }
140+ if (ret == 0 ) {
141+ ret = wc_RunCast_fips (FIPS_CAST_ECDSA );
142+ if (ret != 0 ) {
143+ printf ("ECDSA CAST failed" );
144+ }
145+ }
146+ if (ret == 0 ) {
147+ ret = wc_RunCast_fips (FIPS_CAST_KDF_TLS12 );
148+ if (ret != 0 ) {
149+ printf ("KDF TLSv1.2 CAST failed" );
150+ }
151+ }
152+ if (ret == 0 ) {
153+ ret = wc_RunCast_fips (FIPS_CAST_KDF_TLS13 );
154+ if (ret != 0 ) {
155+ printf ("KDF TLSv1.3 CAST failed" );
156+ }
157+ }
158+ if (ret == 0 ) {
159+ ret = wc_RunCast_fips (FIPS_CAST_KDF_SSH );
160+ if (ret != 0 ) {
161+ printf ("KDF SSHv2.0 CAST failed" );
162+ }
163+ }
164+ #endif
165+
166+ if (ret == 0 ) {
167+ return (jint )wolfSSL_Init ();
168+ } else {
169+ return (jint )WOLFSSL_FAILURE ;
170+ }
71171}
72172
73173/* used in unit tests */
0 commit comments