@@ -22,13 +22,16 @@ const FIPS_ENABLE_ERROR_STRING = 'OpenSSL error when trying to enable FIPS:';
2222const  CNF_FIPS_ON  =  fixtures . path ( 'openssl_fips_enabled.cnf' ) ; 
2323const  CNF_FIPS_OFF  =  fixtures . path ( 'openssl_fips_disabled.cnf' ) ; 
2424
25+ const  kNoFailure  =  0 ; 
26+ const  kGenericUserError  =  1 ; 
27+ 
2528let  num_children_ok  =  0 ; 
2629
2730function  sharedOpenSSL ( )  { 
2831 return  process . config . variables . node_shared_openssl ; 
2932} 
3033
31- function  testHelper ( stream ,  args ,  expectedOutput ,  cmd ,  env )  { 
34+ function  testHelper ( stream ,  args ,  expectedStatus ,   expectedOutput ,  cmd ,  env )  { 
3235 const  fullArgs  =  args . concat ( [ '-e' ,  `console.log(${ cmd }  )` ] ) ; 
3336 const  child  =  spawnSync ( process . execPath ,  fullArgs ,  { 
3437 cwd : path . dirname ( process . execPath ) , 
@@ -55,6 +58,7 @@ function testHelper(stream, args, expectedOutput, cmd, env) {
5558 // Normal path where we expect either FIPS enabled or disabled. 
5659 assert . strictEqual ( getFipsValue ,  expectedOutput ) ; 
5760 } 
61+  assert . strictEqual ( child . status ,  expectedStatus ) ; 
5862 childOk ( child ) ; 
5963 } 
6064
@@ -65,6 +69,7 @@ function testHelper(stream, args, expectedOutput, cmd, env) {
6569testHelper ( 
6670 testFipsCrypto ( )  ? 'stdout'  : 'stderr' , 
6771 [ '--enable-fips' ] , 
72+  testFipsCrypto ( )  ? kNoFailure  : kGenericUserError , 
6873 testFipsCrypto ( )  ? FIPS_ENABLED  : FIPS_ENABLE_ERROR_STRING , 
6974 'process.versions' , 
7075 process . env ) ; 
@@ -73,6 +78,7 @@ testHelper(
7378testHelper ( 
7479 testFipsCrypto ( )  ? 'stdout'  : 'stderr' , 
7580 [ '--force-fips' ] , 
81+  testFipsCrypto ( )  ? kNoFailure  : kGenericUserError , 
7682 testFipsCrypto ( )  ? FIPS_ENABLED  : FIPS_ENABLE_ERROR_STRING , 
7783 'process.versions' , 
7884 process . env ) ; 
@@ -84,6 +90,7 @@ if (!sharedOpenSSL()) {
8490 testHelper ( 
8591 'stdout' , 
8692 [ ] , 
93+  kNoFailure , 
8794 FIPS_DISABLED , 
8895 'require("crypto").getFips()' , 
8996 {  ...process . env ,  'OPENSSL_CONF' : ' '  } ) ; 
@@ -93,6 +100,7 @@ if (!sharedOpenSSL()) {
93100testHelper ( 
94101 'stderr' , 
95102 [ ] , 
103+  kGenericUserError , 
96104 'Calling crypto.setFips() is not supported in workers' , 
97105 'new worker_threads.Worker(\'require("crypto").setFips(true);\', { eval: true })' , 
98106 process . env ) ; 
@@ -119,6 +127,7 @@ if (!sharedOpenSSL() && !common.hasOpenSSL3) {
119127 testHelper ( 
120128 'stdout' , 
121129 [ `--openssl-config=${ CNF_FIPS_ON }  ` ] , 
130+  kNoFailure , 
122131 testFipsCrypto ( )  ? FIPS_ENABLED  : FIPS_DISABLED , 
123132 'require("crypto").getFips()' , 
124133 process . env ) ; 
@@ -127,6 +136,7 @@ if (!sharedOpenSSL() && !common.hasOpenSSL3) {
127136 testHelper ( 
128137 'stdout' , 
129138 [ ] , 
139+  kNoFailure , 
130140 testFipsCrypto ( )  ? FIPS_ENABLED  : FIPS_DISABLED , 
131141 'require("crypto").getFips()' , 
132142 Object . assign ( { } ,  process . env ,  {  'OPENSSL_CONF' : CNF_FIPS_ON  } ) ) ; 
@@ -135,6 +145,7 @@ if (!sharedOpenSSL() && !common.hasOpenSSL3) {
135145 testHelper ( 
136146 'stdout' , 
137147 [ `--openssl-config=${ CNF_FIPS_ON }  ` ] , 
148+  kNoFailure , 
138149 testFipsCrypto ( )  ? FIPS_ENABLED  : FIPS_DISABLED , 
139150 'require("crypto").getFips()' , 
140151 Object . assign ( { } ,  process . env ,  {  'OPENSSL_CONF' : CNF_FIPS_OFF  } ) ) ; 
@@ -148,6 +159,7 @@ if (!common.hasOpenSSL3) {
148159 testHelper ( 
149160 'stdout' , 
150161 [ `--openssl-config=${ CNF_FIPS_OFF }  ` ] , 
162+  kNoFailure , 
151163 FIPS_DISABLED , 
152164 'require("crypto").getFips()' , 
153165 Object . assign ( { } ,  process . env ,  {  'OPENSSL_CONF' : CNF_FIPS_ON  } ) ) ; 
@@ -156,20 +168,23 @@ if (!common.hasOpenSSL3) {
156168 testHelper ( 
157169 testFipsCrypto ( )  ? 'stdout'  : 'stderr' , 
158170 [ '--enable-fips' ,  `--openssl-config=${ CNF_FIPS_OFF }  ` ] , 
171+  testFipsCrypto ( )  ? kNoFailure  : kGenericUserError , 
159172 testFipsCrypto ( )  ? FIPS_ENABLED  : FIPS_UNSUPPORTED_ERROR_STRING , 
160173 'require("crypto").getFips()' , 
161174 process . env ) ; 
162175 // --force-fips should take precedence over OpenSSL config file 
163176 testHelper ( 
164177 testFipsCrypto ( )  ? 'stdout'  : 'stderr' , 
165178 [ '--force-fips' ,  `--openssl-config=${ CNF_FIPS_OFF }  ` ] , 
179+  testFipsCrypto ( )  ? kNoFailure  : kGenericUserError , 
166180 testFipsCrypto ( )  ? FIPS_ENABLED  : FIPS_UNSUPPORTED_ERROR_STRING , 
167181 'require("crypto").getFips()' , 
168182 process . env ) ; 
169183 // --enable-fips should turn FIPS mode on 
170184 testHelper ( 
171185 testFipsCrypto ( )  ? 'stdout'  : 'stderr' , 
172186 [ '--enable-fips' ] , 
187+  testFipsCrypto ( )  ? kNoFailure  : kGenericUserError , 
173188 testFipsCrypto ( )  ? FIPS_ENABLED  : FIPS_UNSUPPORTED_ERROR_STRING , 
174189 'require("crypto").getFips()' , 
175190 process . env ) ; 
@@ -178,6 +193,7 @@ if (!common.hasOpenSSL3) {
178193 testHelper ( 
179194 testFipsCrypto ( )  ? 'stdout'  : 'stderr' , 
180195 [ '--force-fips' ] , 
196+  testFipsCrypto ( )  ? kNoFailure  : kGenericUserError , 
181197 testFipsCrypto ( )  ? FIPS_ENABLED  : FIPS_UNSUPPORTED_ERROR_STRING , 
182198 'require("crypto").getFips()' , 
183199 process . env ) ; 
@@ -186,6 +202,7 @@ if (!common.hasOpenSSL3) {
186202 testHelper ( 
187203 testFipsCrypto ( )  ? 'stdout'  : 'stderr' , 
188204 [ '--enable-fips' ] , 
205+  testFipsCrypto ( )  ? kNoFailure  : kGenericUserError , 
189206 testFipsCrypto ( )  ? FIPS_ENABLED  : FIPS_UNSUPPORTED_ERROR_STRING , 
190207 'require("crypto").getFips()' , 
191208 Object . assign ( { } ,  process . env ,  {  'OPENSSL_CONF' : CNF_FIPS_OFF  } ) ) ; 
@@ -194,6 +211,7 @@ if (!common.hasOpenSSL3) {
194211 testHelper ( 
195212 testFipsCrypto ( )  ? 'stdout'  : 'stderr' , 
196213 [ '--force-fips' ] , 
214+  testFipsCrypto ( )  ? kNoFailure  : kGenericUserError , 
197215 testFipsCrypto ( )  ? FIPS_ENABLED  : FIPS_UNSUPPORTED_ERROR_STRING , 
198216 'require("crypto").getFips()' , 
199217 Object . assign ( { } ,  process . env ,  {  'OPENSSL_CONF' : CNF_FIPS_OFF  } ) ) ; 
@@ -202,6 +220,7 @@ if (!common.hasOpenSSL3) {
202220 testHelper ( 
203221 testFipsCrypto ( )  ? 'stdout'  : 'stderr' , 
204222 [ ] , 
223+  testFipsCrypto ( )  ? kNoFailure  : kGenericUserError , 
205224 testFipsCrypto ( )  ? FIPS_ENABLED  : FIPS_UNSUPPORTED_ERROR_STRING , 
206225 '(require("crypto").setFips(true),'  + 
207226 'require("crypto").getFips())' , 
@@ -211,6 +230,7 @@ if (!common.hasOpenSSL3) {
211230 testHelper ( 
212231 testFipsCrypto ( )  ? 'stdout'  : 'stderr' , 
213232 [ ] , 
233+  testFipsCrypto ( )  ? kNoFailure  : kGenericUserError , 
214234 testFipsCrypto ( )  ? FIPS_DISABLED  : FIPS_UNSUPPORTED_ERROR_STRING , 
215235 '(require("crypto").setFips(true),'  + 
216236 'require("crypto").setFips(false),'  + 
@@ -221,6 +241,7 @@ if (!common.hasOpenSSL3) {
221241 testHelper ( 
222242 testFipsCrypto ( )  ? 'stdout'  : 'stderr' , 
223243 [ `--openssl-config=${ CNF_FIPS_OFF }  ` ] , 
244+  testFipsCrypto ( )  ? kNoFailure  : kGenericUserError , 
224245 testFipsCrypto ( )  ? FIPS_ENABLED  : FIPS_UNSUPPORTED_ERROR_STRING , 
225246 '(require("crypto").setFips(true),'  + 
226247 'require("crypto").getFips())' , 
@@ -230,6 +251,7 @@ if (!common.hasOpenSSL3) {
230251 testHelper ( 
231252 'stdout' , 
232253 [ `--openssl-config=${ CNF_FIPS_ON }  ` ] , 
254+  kNoFailure , 
233255 FIPS_DISABLED , 
234256 '(require("crypto").setFips(false),'  + 
235257 'require("crypto").getFips())' , 
@@ -239,6 +261,7 @@ if (!common.hasOpenSSL3) {
239261 testHelper ( 
240262 testFipsCrypto ( )  ? 'stdout'  : 'stderr' , 
241263 [ '--enable-fips' ] , 
264+  testFipsCrypto ( )  ? kNoFailure  : kGenericUserError , 
242265 testFipsCrypto ( )  ? FIPS_DISABLED  : FIPS_UNSUPPORTED_ERROR_STRING , 
243266 '(require("crypto").setFips(false),'  + 
244267 'require("crypto").getFips())' , 
@@ -248,6 +271,7 @@ if (!common.hasOpenSSL3) {
248271 testHelper ( 
249272 'stderr' , 
250273 [ '--force-fips' ] , 
274+  kGenericUserError , 
251275 testFipsCrypto ( )  ? FIPS_ERROR_STRING2  : FIPS_UNSUPPORTED_ERROR_STRING , 
252276 'require("crypto").setFips(false)' , 
253277 process . env ) ; 
@@ -256,6 +280,7 @@ if (!common.hasOpenSSL3) {
256280 testHelper ( 
257281 testFipsCrypto ( )  ? 'stdout'  : 'stderr' , 
258282 [ '--force-fips' ] , 
283+  testFipsCrypto ( )  ? kNoFailure  : kGenericUserError , 
259284 testFipsCrypto ( )  ? FIPS_ENABLED  : FIPS_UNSUPPORTED_ERROR_STRING , 
260285 '(require("crypto").setFips(true),'  + 
261286 'require("crypto").getFips())' , 
@@ -265,6 +290,7 @@ if (!common.hasOpenSSL3) {
265290 testHelper ( 
266291 'stderr' , 
267292 [ '--force-fips' ,  '--enable-fips' ] , 
293+  kGenericUserError , 
268294 testFipsCrypto ( )  ? FIPS_ERROR_STRING2  : FIPS_UNSUPPORTED_ERROR_STRING , 
269295 'require("crypto").setFips(false)' , 
270296 process . env ) ; 
@@ -273,6 +299,7 @@ if (!common.hasOpenSSL3) {
273299 testHelper ( 
274300 'stderr' , 
275301 [ '--enable-fips' ,  '--force-fips' ] , 
302+  kGenericUserError , 
276303 testFipsCrypto ( )  ? FIPS_ERROR_STRING2  : FIPS_UNSUPPORTED_ERROR_STRING , 
277304 'require("crypto").setFips(false)' , 
278305 process . env ) ; 
0 commit comments