]>
Commit | Line | Data |
---|---|---|
1 | # perl script to run OpenSSL tests | |
2 | ||
3 | ||
4 | my $base_path = "\\openssl"; | |
5 | ||
6 | my $output_path = "$base_path\\test_out"; | |
7 | my $cert_path = "$base_path\\certs"; | |
8 | my $test_path = "$base_path\\test"; | |
9 | my $app_path = "$base_path\\apps"; | |
10 | ||
11 | my $tmp_cert = "$output_path\\cert.tmp"; | |
12 | my $OpenSSL_config = "$app_path\\openssl.cnf"; | |
13 | my $log_file = "$output_path\\tests.log"; | |
14 | ||
15 | my $pause = 0; | |
16 | ||
17 | ||
18 | # process the command line args to see if they wanted us to pause | |
19 | # between executing each command | |
20 | foreach $i (@ARGV) | |
21 | { | |
22 | if ($i =~ /^-p$/) | |
23 | { $pause=1; } | |
24 | } | |
25 | ||
26 | ||
27 | ||
28 | main(); | |
29 | ||
30 | ||
31 | ############################################################################ | |
32 | sub main() | |
33 | { | |
34 | # delete all the output files in the output directory | |
35 | unlink <$output_path\\*.*>; | |
36 | ||
37 | # open the main log file | |
38 | open(OUT, ">$log_file") || die "unable to open $log_file\n"; | |
39 | ||
40 | ||
41 | algorithm_tests(); | |
42 | encryption_tests(); | |
43 | pem_tests(); | |
44 | verify_tests(); | |
45 | ca_tests(); | |
46 | ssl_tests(); | |
47 | ||
48 | close(OUT); | |
49 | ||
50 | print("\nCompleted running tests.\n\n"); | |
51 | print("Check log file for errors: $log_file\n"); | |
52 | } | |
53 | ||
54 | ############################################################################ | |
55 | sub algorithm_tests | |
56 | { | |
57 | my $i; | |
58 | my $outFile; | |
59 | my @tests = ( rsa_test, destest, ideatest, bftest, shatest, sha1test, | |
60 | md5test, dsatest, md2test, mdc2test, rc2test, rc4test, randtest, | |
61 | dhtest, exptest ); | |
62 | ||
63 | print( "\nRUNNING CRYPTO ALGORITHM TESTS:\n\n"); | |
64 | ||
65 | print( OUT "\n========================================================\n"); | |
66 | print( OUT "CRYPTO ALGORITHM TESTS:\n\n"); | |
67 | ||
68 | foreach $i (@tests) | |
69 | { | |
70 | if (-e "$base_path\\$i.nlm") | |
71 | { | |
72 | $outFile = "$output_path\\$i.out"; | |
73 | system("$i > $outFile"); | |
74 | log_desc("Test: $i\.nlm:"); | |
75 | log_output("", $outFile ); | |
76 | } | |
77 | else | |
78 | { | |
79 | log_desc("Test: $i\.nlm: file not found"); | |
80 | } | |
81 | } | |
82 | } | |
83 | ||
84 | ############################################################################ | |
85 | sub encryption_tests | |
86 | { | |
87 | my $i; | |
88 | my $outFile; | |
89 | my @enc_tests = ( "enc", "rc4", "des-cfb", "des-ede-cfb", "des-ede3-cfb", | |
90 | "des-ofb", "des-ede-ofb", "des-ede3-ofb", | |
91 | "des-ecb", "des-ede", "des-ede3", "des-cbc", | |
92 | "des-ede-cbc", "des-ede3-cbc", "idea-ecb", "idea-cfb", | |
93 | "idea-ofb", "idea-cbc", "rc2-ecb", "rc2-cfb", | |
94 | "rc2-ofb", "rc2-cbc", "bf-ecb", "bf-cfb", | |
95 | "bf-ofb", "bf-cbc" ); | |
96 | ||
97 | my $input = "$base_path\\do_tests.pl"; | |
98 | my $cipher = "$output_path\\cipher.out"; | |
99 | my $clear = "$output_path\\clear.out"; | |
100 | ||
101 | print( "\nRUNNING ENCRYPTION & DECRYPTION TESTS:\n\n"); | |
102 | ||
103 | print( OUT "\n========================================================\n"); | |
104 | print( OUT "FILE ENCRYPTION & DECRYPTION TESTS:\n\n"); | |
105 | ||
106 | foreach $i (@enc_tests) | |
107 | { | |
108 | log_desc("Testing: $i"); | |
109 | ||
110 | # do encryption | |
111 | $outFile = "$output_path\\enc.out"; | |
112 | system("openssl2 $i -e -bufsize 113 -k test -in $input -out $cipher > $outFile" ); | |
113 | log_output("Encrypting: $input --> $cipher", $outFile); | |
114 | ||
115 | # do decryption | |
116 | $outFile = "$output_path\\dec.out"; | |
117 | system("openssl2 $i -d -bufsize 157 -k test -in $cipher -out $clear > $outFile"); | |
118 | log_output("Decrypting: $cipher --> $clear", $outFile); | |
119 | ||
120 | # compare files | |
121 | $x = compare_files( $input, $clear, 1); | |
122 | if ( $x == 0 ) | |
123 | { | |
124 | print( "SUCCESS - files match: $input, $clear\n"); | |
125 | print( OUT "SUCCESS - files match: $input, $clear\n"); | |
126 | } | |
127 | else | |
128 | { | |
129 | print( "ERROR: files don't match\n"); | |
130 | print( OUT "ERROR: files don't match\n"); | |
131 | } | |
132 | ||
133 | do_wait(); | |
134 | ||
135 | # Now do the same encryption but use Base64 | |
136 | ||
137 | # do encryption B64 | |
138 | $outFile = "$output_path\\B64enc.out"; | |
139 | system("openssl2 $i -a -e -bufsize 113 -k test -in $input -out $cipher > $outFile"); | |
140 | log_output("Encrypting(B64): $cipher --> $clear", $outFile); | |
141 | ||
142 | # do decryption B64 | |
143 | $outFile = "$output_path\\B64dec.out"; | |
144 | system("openssl2 $i -a -d -bufsize 157 -k test -in $cipher -out $clear > $outFile"); | |
145 | log_output("Decrypting(B64): $cipher --> $clear", $outFile); | |
146 | ||
147 | # compare files | |
148 | $x = compare_files( $input, $clear, 1); | |
149 | if ( $x == 0 ) | |
150 | { | |
151 | print( "SUCCESS - files match: $input, $clear\n"); | |
152 | print( OUT "SUCCESS - files match: $input, $clear\n"); | |
153 | } | |
154 | else | |
155 | { | |
156 | print( "ERROR: files don't match\n"); | |
157 | print( OUT "ERROR: files don't match\n"); | |
158 | } | |
159 | ||
160 | do_wait(); | |
161 | ||
162 | } # end foreach | |
163 | ||
164 | # delete the temporary files | |
165 | unlink($cipher); | |
166 | unlink($clear); | |
167 | } | |
168 | ||
169 | ||
170 | ############################################################################ | |
171 | sub pem_tests | |
172 | { | |
173 | my $i; | |
174 | my $tmp_out; | |
175 | my $outFile = "$output_path\\pem.out"; | |
176 | ||
177 | my %pem_tests = ( | |
178 | "crl" => "testcrl.pem", | |
179 | "pkcs7" => "testp7.pem", | |
180 | "req" => "testreq2.pem", | |
181 | "rsa" => "testrsa.pem", | |
182 | "x509" => "testx509.pem", | |
183 | "x509" => "v3-cert1.pem", | |
184 | "sess_id" => "testsid.pem" ); | |
185 | ||
186 | ||
187 | print( "\nRUNNING PEM TESTS:\n\n"); | |
188 | ||
189 | print( OUT "\n========================================================\n"); | |
190 | print( OUT "PEM TESTS:\n\n"); | |
191 | ||
192 | foreach $i (keys(%pem_tests)) | |
193 | { | |
194 | log_desc( "Testing: $i"); | |
195 | ||
196 | my $input = "$test_path\\$pem_tests{$i}"; | |
197 | ||
198 | $tmp_out = "$output_path\\$pem_tests{$i}"; | |
199 | ||
200 | if ($i ne "req" ) | |
201 | { | |
202 | system("openssl2 $i -in $input -out $tmp_out > $outFile"); | |
203 | log_output( "openssl2 $i -in $input -out $tmp_out", $outFile); | |
204 | } | |
205 | else | |
206 | { | |
207 | system("openssl2 $i -in $input -out $tmp_out -config $OpenSSL_config > $outFile"); | |
208 | log_output( "openssl2 $i -in $input -out $tmp_out -config $OpenSSL_config", $outFile ); | |
209 | } | |
210 | ||
211 | $x = compare_files( $input, $tmp_out); | |
212 | if ( $x == 0 ) | |
213 | { | |
214 | print( "SUCCESS - files match: $input, $tmp_out\n"); | |
215 | print( OUT "SUCCESS - files match: $input, $tmp_out\n"); | |
216 | } | |
217 | else | |
218 | { | |
219 | print( "ERROR: files don't match\n"); | |
220 | print( OUT "ERROR: files don't match\n"); | |
221 | } | |
222 | do_wait(); | |
223 | ||
224 | } # end foreach | |
225 | } | |
226 | ||
227 | ||
228 | ############################################################################ | |
229 | sub verify_tests | |
230 | { | |
231 | my $i; | |
232 | my $outFile = "$output_path\\verify.out"; | |
233 | ||
234 | my @cert_files = <$cert_path\\*.pem>; | |
235 | ||
236 | print( "\nRUNNING VERIFY TESTS:\n\n"); | |
237 | ||
238 | print( OUT "\n========================================================\n"); | |
239 | print( OUT "VERIFY TESTS:\n\n"); | |
240 | ||
241 | make_tmp_cert_file(); | |
242 | ||
243 | foreach $i (@cert_files) | |
244 | { | |
245 | system("openssl2 verify -CAfile $tmp_cert $i >$outFile"); | |
246 | log_desc("Verifying cert: $i"); | |
247 | log_output("openssl2 verify -CAfile $tmp_cert $i", $outFile); | |
248 | } | |
249 | } | |
250 | ||
251 | ||
252 | ############################################################################ | |
253 | sub ssl_tests | |
254 | { | |
255 | my $outFile = "$output_path\\ssl_tst.out"; | |
256 | my($CAcert) = "$output_path\\certCA.ss"; | |
257 | my($Ukey) = "$output_path\\keyU.ss"; | |
258 | my($Ucert) = "$output_path\\certU.ss"; | |
259 | my($ssltest)= "ssltest -key $Ukey -cert $Ucert -c_key $Ukey -c_cert $Ucert -CAfile $CAcert"; | |
260 | ||
261 | print( "\nRUNNING SSL TESTS:\n\n"); | |
262 | ||
263 | print( OUT "\n========================================================\n"); | |
264 | print( OUT "SSL TESTS:\n\n"); | |
265 | ||
266 | system("ssltest -ssl2 >$outFile"); | |
267 | log_desc("Testing sslv2:"); | |
268 | log_output("ssltest -ssl2", $outFile); | |
269 | ||
270 | system("$ssltest -ssl2 -server_auth >$outFile"); | |
271 | log_desc("Testing sslv2 with server authentication:"); | |
272 | log_output("$ssltest -ssl2 -server_auth", $outFile); | |
273 | ||
274 | system("$ssltest -ssl2 -client_auth >$outFile"); | |
275 | log_desc("Testing sslv2 with client authentication:"); | |
276 | log_output("$ssltest -ssl2 -client_auth", $outFile); | |
277 | ||
278 | system("$ssltest -ssl2 -server_auth -client_auth >$outFile"); | |
279 | log_desc("Testing sslv2 with both client and server authentication:"); | |
280 | log_output("$ssltest -ssl2 -server_auth -client_auth", $outFile); | |
281 | ||
282 | system("ssltest -ssl3 >$outFile"); | |
283 | log_desc("Testing sslv3:"); | |
284 | log_output("ssltest -ssl3", $outFile); | |
285 | ||
286 | system("$ssltest -ssl3 -server_auth >$outFile"); | |
287 | log_desc("Testing sslv3 with server authentication:"); | |
288 | log_output("$ssltest -ssl3 -server_auth", $outFile); | |
289 | ||
290 | system("$ssltest -ssl3 -client_auth >$outFile"); | |
291 | log_desc("Testing sslv3 with client authentication:"); | |
292 | log_output("$ssltest -ssl3 -client_auth", $outFile); | |
293 | ||
294 | system("$ssltest -ssl3 -server_auth -client_auth >$outFile"); | |
295 | log_desc("Testing sslv3 with both client and server authentication:"); | |
296 | log_output("$ssltest -ssl3 -server_auth -client_auth", $outFile); | |
297 | ||
298 | system("ssltest >$outFile"); | |
299 | log_desc("Testing sslv2/sslv3:"); | |
300 | log_output("ssltest", $outFile); | |
301 | ||
302 | system("$ssltest -server_auth >$outFile"); | |
303 | log_desc("Testing sslv2/sslv3 with server authentication:"); | |
304 | log_output("$ssltest -server_auth", $outFile); | |
305 | ||
306 | system("$ssltest -client_auth >$outFile"); | |
307 | log_desc("Testing sslv2/sslv3 with client authentication:"); | |
308 | log_output("$ssltest -client_auth ", $outFile); | |
309 | ||
310 | system("$ssltest -server_auth -client_auth >$outFile"); | |
311 | log_desc("Testing sslv2/sslv3 with both client and server authentication:"); | |
312 | log_output("$ssltest -server_auth -client_auth", $outFile); | |
313 | ||
314 | system("ssltest -bio_pair -ssl2 >$outFile"); | |
315 | log_desc("Testing sslv2 via BIO pair:"); | |
316 | log_output("ssltest -bio_pair -ssl2", $outFile); | |
317 | ||
318 | system("ssltest -bio_pair -dhe1024dsa -v >$outFile"); | |
319 | log_desc("Testing sslv2/sslv3 with 1024 bit DHE via BIO pair:"); | |
320 | log_output("ssltest -bio_pair -dhe1024dsa -v", $outFile); | |
321 | ||
322 | system("$ssltest -bio_pair -ssl2 -server_auth >$outFile"); | |
323 | log_desc("Testing sslv2 with server authentication via BIO pair:"); | |
324 | log_output("$ssltest -bio_pair -ssl2 -server_auth", $outFile); | |
325 | ||
326 | system("$ssltest -bio_pair -ssl2 -client_auth >$outFile"); | |
327 | log_desc("Testing sslv2 with client authentication via BIO pair:"); | |
328 | log_output("$ssltest -bio_pair -ssl2 -client_auth", $outFile); | |
329 | ||
330 | system("$ssltest -bio_pair -ssl2 -server_auth -client_auth >$outFile"); | |
331 | log_desc("Testing sslv2 with both client and server authentication via BIO pair:"); | |
332 | log_output("$ssltest -bio_pair -ssl2 -server_auth -client_auth", $outFile); | |
333 | ||
334 | system("ssltest -bio_pair -ssl3 >$outFile"); | |
335 | log_desc("Testing sslv3 via BIO pair:"); | |
336 | log_output("ssltest -bio_pair -ssl3", $outFile); | |
337 | ||
338 | system("$ssltest -bio_pair -ssl3 -server_auth >$outFile"); | |
339 | log_desc("Testing sslv3 with server authentication via BIO pair:"); | |
340 | log_output("$ssltest -bio_pair -ssl3 -server_auth", $outFile); | |
341 | ||
342 | system("$ssltest -bio_pair -ssl3 -client_auth >$outFile"); | |
343 | log_desc("Testing sslv3 with client authentication via BIO pair:"); | |
344 | log_output("$ssltest -bio_pair -ssl3 -client_auth", $outFile); | |
345 | ||
346 | system("$ssltest -bio_pair -ssl3 -server_auth -client_auth >$outFile"); | |
347 | log_desc("Testing sslv3 with both client and server authentication via BIO pair:"); | |
348 | log_output("$ssltest -bio_pair -ssl3 -server_auth -client_auth", $outFile); | |
349 | ||
350 | system("ssltest -bio_pair >$outFile"); | |
351 | log_desc("Testing sslv2/sslv3 via BIO pair:"); | |
352 | log_output("ssltest -bio_pair", $outFile); | |
353 | ||
354 | system("$ssltest -bio_pair -server_auth >$outFile"); | |
355 | log_desc("Testing sslv2/sslv3 with server authentication via BIO pair:"); | |
356 | log_output("$ssltest -bio_pair -server_auth", $outFile); | |
357 | ||
358 | system("$ssltest -bio_pair -client_auth >$outFile"); | |
359 | log_desc("Testing sslv2/sslv3 with client authentication via BIO pair:"); | |
360 | log_output("$ssltest -bio_pair -client_auth", $outFile); | |
361 | ||
362 | system("$ssltest -bio_pair -server_auth -client_auth >$outFile"); | |
363 | log_desc("Testing sslv2/sslv3 with both client and server authentication via BIO pair:"); | |
364 | log_output("$ssltest -bio_pair -server_auth -client_auth", $outFile); | |
365 | } | |
366 | ||
367 | ||
368 | ############################################################################ | |
369 | sub ca_tests | |
370 | { | |
371 | my $outFile = "$output_path\\ca_tst.out"; | |
372 | ||
373 | my($CAkey) = "$output_path\\keyCA.ss"; | |
374 | my($CAcert) = "$output_path\\certCA.ss"; | |
375 | my($CAserial) = "$output_path\\certCA.srl"; | |
376 | my($CAreq) = "$output_path\\reqCA.ss"; | |
377 | my($CAreq2) = "$output_path\\req2CA.ss"; | |
378 | ||
379 | my($CAconf) = "$test_path\\CAss.cnf"; | |
380 | ||
381 | my($Uconf) = "$test_path\\Uss.cnf"; | |
382 | ||
383 | my($Ukey) = "$output_path\\keyU.ss"; | |
384 | my($Ureq) = "$output_path\\reqU.ss"; | |
385 | my($Ucert) = "$output_path\\certU.ss"; | |
386 | ||
387 | print( "\nRUNNING CA TESTS:\n\n"); | |
388 | ||
389 | print( OUT "\n========================================================\n"); | |
390 | print( OUT "CA TESTS:\n"); | |
391 | ||
392 | system("openssl2 req -config $CAconf -out $CAreq -keyout $CAkey -new >$outFile"); | |
393 | log_desc("Make a certificate request using req:"); | |
394 | log_output("openssl2 req -config $CAconf -out $CAreq -keyout $CAkey -new", $outFile); | |
395 | ||
396 | system("openssl2 x509 -CAcreateserial -in $CAreq -days 30 -req -out $CAcert -signkey $CAkey >$outFile"); | |
397 | log_desc("Convert the certificate request into a self signed certificate using x509:"); | |
398 | log_output("openssl2 x509 -CAcreateserial -in $CAreq -days 30 -req -out $CAcert -signkey $CAkey", $outFile); | |
399 | ||
400 | system("openssl2 x509 -in $CAcert -x509toreq -signkey $CAkey -out $CAreq2 >$outFile"); | |
401 | log_desc("Convert a certificate into a certificate request using 'x509':"); | |
402 | log_output("openssl2 x509 -in $CAcert -x509toreq -signkey $CAkey -out $CAreq2", $outFile); | |
403 | ||
404 | system("openssl2 req -config $OpenSSL_config -verify -in $CAreq -noout >$outFile"); | |
405 | log_output("openssl2 req -config $OpenSSL_config -verify -in $CAreq -noout", $outFile); | |
406 | ||
407 | system("openssl2 req -config $OpenSSL_config -verify -in $CAreq2 -noout >$outFile"); | |
408 | log_output( "openssl2 req -config $OpenSSL_config -verify -in $CAreq2 -noout", $outFile); | |
409 | ||
410 | system("openssl2 verify -CAfile $CAcert $CAcert >$outFile"); | |
411 | log_output("openssl2 verify -CAfile $CAcert $CAcert", $outFile); | |
412 | ||
413 | system("openssl2 req -config $Uconf -out $Ureq -keyout $Ukey -new >$outFile"); | |
414 | log_desc("Make another certificate request using req:"); | |
415 | log_output("openssl2 req -config $Uconf -out $Ureq -keyout $Ukey -new", $outFile); | |
416 | ||
417 | system("openssl2 x509 -CAcreateserial -in $Ureq -days 30 -req -out $Ucert -CA $CAcert -CAkey $CAkey -CAserial $CAserial >$outFile"); | |
418 | log_desc("Sign certificate request with the just created CA via x509:"); | |
419 | log_output("openssl2 x509 -CAcreateserial -in $Ureq -days 30 -req -out $Ucert -CA $CAcert -CAkey $CAkey -CAserial $CAserial", $outFile); | |
420 | ||
421 | system("openssl2 verify -CAfile $CAcert $Ucert >$outFile"); | |
422 | log_output("openssl2 verify -CAfile $CAcert $Ucert", $outFile); | |
423 | ||
424 | system("openssl2 x509 -subject -issuer -startdate -enddate -noout -in $Ucert >$outFile"); | |
425 | log_desc("Certificate details"); | |
426 | log_output("openssl2 x509 -subject -issuer -startdate -enddate -noout -in $Ucert", $outFile); | |
427 | ||
428 | print(OUT "-- \n"); | |
429 | print(OUT "The generated CA certificate is $CAcert\n"); | |
430 | print(OUT "The generated CA private key is $CAkey\n"); | |
431 | print(OUT "The current CA signing serial number is in $CAserial\n"); | |
432 | ||
433 | print(OUT "The generated user certificate is $Ucert\n"); | |
434 | print(OUT "The generated user private key is $Ukey\n"); | |
435 | print(OUT "--\n"); | |
436 | } | |
437 | ||
438 | ############################################################################ | |
439 | sub log_output( $ $ ) | |
440 | { | |
441 | my( $desc, $file ) = @_; | |
442 | my($error) = 0; | |
443 | my($key); | |
444 | my($msg); | |
445 | ||
446 | if ($desc) | |
447 | { | |
448 | print("$desc\n"); | |
449 | print(OUT "$desc\n"); | |
450 | } | |
451 | ||
452 | # loop waiting for test program to complete | |
453 | while ( stat($file) == 0) | |
454 | { print(". "); sleep(1); } | |
455 | ||
456 | ||
457 | # copy test output to log file | |
458 | open(IN, "<$file"); | |
459 | while (<IN>) | |
460 | { | |
461 | print(OUT $_); | |
462 | if ( $_ =~ /ERROR/ ) | |
463 | { | |
464 | $error = 1; | |
465 | } | |
466 | } | |
467 | # close and delete the temporary test output file | |
468 | close(IN); | |
469 | unlink($file); | |
470 | ||
471 | if ( $error == 0 ) | |
472 | { | |
473 | $msg = "Test Succeeded"; | |
474 | } | |
475 | else | |
476 | { | |
477 | $msg = "Test Failed"; | |
478 | } | |
479 | ||
480 | print(OUT "$msg\n"); | |
481 | ||
482 | if ($pause) | |
483 | { | |
484 | print("$msg - press ENTER to continue..."); | |
485 | $key = getc; | |
486 | print("\n"); | |
487 | } | |
488 | ||
489 | # Several of the testing scripts run a loop loading the | |
490 | # same NLM with different options. | |
491 | # On slow NetWare machines there appears to be some delay in the | |
492 | # OS actually unloading the test nlms and the OS complains about. | |
493 | # the NLM already being loaded. This additional pause is to | |
494 | # to help provide a little more time for unloading before trying to | |
495 | # load again. | |
496 | sleep(1); | |
497 | } | |
498 | ||
499 | ||
500 | ############################################################################ | |
501 | sub log_desc( $ ) | |
502 | { | |
503 | my( $desc ) = @_; | |
504 | ||
505 | print("\n"); | |
506 | print("$desc\n"); | |
507 | ||
508 | print(OUT "\n"); | |
509 | print(OUT "$desc\n"); | |
510 | print(OUT "======================================\n"); | |
511 | } | |
512 | ||
513 | ############################################################################ | |
514 | sub compare_files( $ $ $ ) | |
515 | { | |
516 | my( $file1, $file2, $binary ) = @_; | |
517 | my( $n1, $n2, $b1, $b2 ); | |
518 | my($ret) = 1; | |
519 | ||
520 | open(IN0, $file1) || die "\nunable to open $file1\n"; | |
521 | open(IN1, $file2) || die "\nunable to open $file2\n"; | |
522 | ||
523 | if ($binary) | |
524 | { | |
525 | binmode IN0; | |
526 | binmode IN1; | |
527 | } | |
528 | ||
529 | for (;;) | |
530 | { | |
531 | $n1 = read(IN0, $b1, 512); | |
532 | $n2 = read(IN1, $b2, 512); | |
533 | ||
534 | if ($n1 != $n2) {last;} | |
535 | if ($b1 != $b2) {last;} | |
536 | ||
537 | if ($n1 == 0) | |
538 | { | |
539 | $ret = 0; | |
540 | last; | |
541 | } | |
542 | } | |
543 | close(IN0); | |
544 | close(IN1); | |
545 | return($ret); | |
546 | } | |
547 | ||
548 | ############################################################################ | |
549 | sub do_wait() | |
550 | { | |
551 | my($key); | |
552 | ||
553 | if ($pause) | |
554 | { | |
555 | print("Press ENTER to continue..."); | |
556 | $key = getc; | |
557 | print("\n"); | |
558 | } | |
559 | } | |
560 | ||
561 | ||
562 | ############################################################################ | |
563 | sub make_tmp_cert_file() | |
564 | { | |
565 | my @cert_files = <$cert_path\\*.pem>; | |
566 | ||
567 | # delete the file if it already exists | |
568 | unlink($tmp_cert); | |
569 | ||
570 | open( TMP_CERT, ">$tmp_cert") || die "\nunable to open $tmp_cert\n"; | |
571 | ||
572 | print("building temporary cert file\n"); | |
573 | ||
574 | # create a temporary cert file that contains all the certs | |
575 | foreach $i (@cert_files) | |
576 | { | |
577 | open( IN_CERT, $i ) || die "\nunable to open $i\n"; | |
578 | ||
579 | for(;;) | |
580 | { | |
581 | $n = sysread(IN_CERT, $data, 1024); | |
582 | ||
583 | if ($n == 0) | |
584 | { | |
585 | close(IN_CERT); | |
586 | last; | |
587 | }; | |
588 | ||
589 | syswrite(TMP_CERT, $data, $n); | |
590 | } | |
591 | } | |
592 | ||
593 | close( TMP_CERT ); | |
594 | } |