From e5e6b59c1971f64da1015487204096f609f36441 Mon Sep 17 00:00:00 2001 From: "sandeep.konchady%sun.com" Date: Mon, 14 Nov 2005 23:23:13 +0000 Subject: [PATCH] Bugzilla bug: 310491 Added System.exit(0) and System.exit(1) where appropriate. Also removed references to deprecated code and deprecated the test SigTest.java. This is now replaced by JCASigTest.java. sr=Glen.Beasley --- .../jss/org/mozilla/jss/tests/CloseDBs.java | 20 ++- .../mozilla/jss/tests/GenerateTestCert.java | 8 +- .../org/mozilla/jss/tests/JSS_SSLClient.java | 2 + .../org/mozilla/jss/tests/JSS_SSLServer.java | 2 + .../mozilla/jss/tests/JSS_SelfServServer.java | 2 +- .../jss/org/mozilla/jss/tests/ListCerts.java | 1 + .../jss/org/mozilla/jss/tests/PK10Gen.java | 1 + security/jss/org/mozilla/jss/tests/SDR.java | 1 + .../jss/org/mozilla/jss/tests/SelfTest.java | 1 - .../jss/org/mozilla/jss/tests/SigTest.java | 12 +- .../jss/org/mozilla/jss/tests/TestKeyGen.java | 139 ++++++++++++------ .../jss/org/mozilla/jss/tests/VerifyCert.java | 10 +- security/jss/org/mozilla/jss/tests/all.pl | 43 ++++-- 13 files changed, 176 insertions(+), 66 deletions(-) diff --git a/security/jss/org/mozilla/jss/tests/CloseDBs.java b/security/jss/org/mozilla/jss/tests/CloseDBs.java index f6ea4a8864bb..e7b2f3b7589e 100644 --- a/security/jss/org/mozilla/jss/tests/CloseDBs.java +++ b/security/jss/org/mozilla/jss/tests/CloseDBs.java @@ -40,6 +40,7 @@ import org.mozilla.jss.crypto.*; import org.mozilla.jss.CryptoManager; import java.util.Enumeration; import java.math.BigInteger; +import java.security.PrivateKey; public final class CloseDBs extends org.mozilla.jss.DatabaseCloser { @@ -62,7 +63,7 @@ public final class CloseDBs extends org.mozilla.jss.DatabaseCloser { Enumeration tokens = manager.getAllTokens(); CryptoStore store; X509Certificate certs[]; - PrivateKey keys[]; + java.security.PrivateKey keys[]; while(tokens.hasMoreElements()) { CryptoToken token = (CryptoToken) tokens.nextElement(); store = token.getCryptoStore(); @@ -76,16 +77,27 @@ public final class CloseDBs extends org.mozilla.jss.DatabaseCloser { keys = store.getPrivateKeys(); System.out.println("Keys:"); - for(i=0; i < keys.length; i++) { - System.out.println( new BigInteger( keys[i].getUniqueID() ) ); + try { + for(i=0; i < keys.length; i++) { + System.out.println(new BigInteger(keys[i].getEncoded())); + } + } catch (Exception ex) { + System.out.println(ex.getMessage()); } } System.out.println("Closing databases..."); - (new CloseDBs()).closeDatabases(); + try { + (new CloseDBs()).closeDatabases(); + } catch (Exception ex) { + System.out.println(ex.getMessage()); + System.exit(1); + } System.out.println("Databases are closed."); + System.exit(0); } catch(Exception e) { e.printStackTrace(); + System.exit(1); } } } diff --git a/security/jss/org/mozilla/jss/tests/GenerateTestCert.java b/security/jss/org/mozilla/jss/tests/GenerateTestCert.java index 73ac2af58e11..3d6e82711a79 100755 --- a/security/jss/org/mozilla/jss/tests/GenerateTestCert.java +++ b/security/jss/org/mozilla/jss/tests/GenerateTestCert.java @@ -63,7 +63,13 @@ public class GenerateTestCert { * Main method for testing and generating cert pairs. */ public static void main(String[] args) throws Exception { - (new GenerateTestCert()).doIt(args); + if( args.length > 0 ) + (new GenerateTestCert()).doIt(args); + else + System.out.println("USAGE: " + + "java org.mozilla.jss.tests.GenerateTestCert " + + " \n"); + System.exit(0); } /** diff --git a/security/jss/org/mozilla/jss/tests/JSS_SSLClient.java b/security/jss/org/mozilla/jss/tests/JSS_SSLClient.java index 98661acb7a10..9e720ad21341 100755 --- a/security/jss/org/mozilla/jss/tests/JSS_SSLClient.java +++ b/security/jss/org/mozilla/jss/tests/JSS_SSLClient.java @@ -405,6 +405,7 @@ public class JSS_SSLClient { } catch (Exception ex) { System.out.println("Exception caught " + ex.getMessage()); ex.printStackTrace(); + System.exit(1); } // Set EOF to null to trigger server socket close jssTest.setCipher(testCipher); @@ -452,6 +453,7 @@ public class JSS_SSLClient { } catch (Exception ex) { System.out.println(ex.getMessage()); ex.printStackTrace(); + System.exit(1); } } } diff --git a/security/jss/org/mozilla/jss/tests/JSS_SSLServer.java b/security/jss/org/mozilla/jss/tests/JSS_SSLServer.java index c236f627dba1..885535f82eee 100755 --- a/security/jss/org/mozilla/jss/tests/JSS_SSLServer.java +++ b/security/jss/org/mozilla/jss/tests/JSS_SSLServer.java @@ -81,6 +81,8 @@ public class JSS_SSLServer { System.out.println("Thread Interrupted, exiting normally ...\n"); System.exit(0); } catch (Exception ex) { + System.out.println(ex.getMessage()); + System.exit(1); } } diff --git a/security/jss/org/mozilla/jss/tests/JSS_SelfServServer.java b/security/jss/org/mozilla/jss/tests/JSS_SelfServServer.java index e1d64d4b7123..db5ca5ebfa2b 100755 --- a/security/jss/org/mozilla/jss/tests/JSS_SelfServServer.java +++ b/security/jss/org/mozilla/jss/tests/JSS_SelfServServer.java @@ -165,7 +165,7 @@ public class JSS_SelfServServer { if ( Constants.debug_level >= 3 ) System.out.println ("Server created socket"); - //serverSock.setSoTimeout(120 * 1000); + //serverSock.setSoTimeout(5000); // Set timeout for 5 sec serverSock.requireClientAuth (true, true); serverSock.setServerCertNickname (fServerCertNick); if ( Constants.debug_level >= 3 ) diff --git a/security/jss/org/mozilla/jss/tests/ListCerts.java b/security/jss/org/mozilla/jss/tests/ListCerts.java index 03e4f464c82e..777138632ef3 100644 --- a/security/jss/org/mozilla/jss/tests/ListCerts.java +++ b/security/jss/org/mozilla/jss/tests/ListCerts.java @@ -68,6 +68,7 @@ public class ListCerts { } catch( Exception e ) { e.printStackTrace(); + System.exit(1); } } } diff --git a/security/jss/org/mozilla/jss/tests/PK10Gen.java b/security/jss/org/mozilla/jss/tests/PK10Gen.java index a0a799706c1f..96dfeccd4606 100644 --- a/security/jss/org/mozilla/jss/tests/PK10Gen.java +++ b/security/jss/org/mozilla/jss/tests/PK10Gen.java @@ -104,6 +104,7 @@ public class PK10Gen { System.out.println("exception caught in PK10Gen: " + e.getMessage()); e.printStackTrace(); + System.exit(1); } } } diff --git a/security/jss/org/mozilla/jss/tests/SDR.java b/security/jss/org/mozilla/jss/tests/SDR.java index a800cf70dc61..0bcabe3807d1 100644 --- a/security/jss/org/mozilla/jss/tests/SDR.java +++ b/security/jss/org/mozilla/jss/tests/SDR.java @@ -81,6 +81,7 @@ public class SDR { } catch(Exception e) { e.printStackTrace(); + System.exit(1); } } diff --git a/security/jss/org/mozilla/jss/tests/SelfTest.java b/security/jss/org/mozilla/jss/tests/SelfTest.java index 9f97c681aa71..4f5709b0737d 100644 --- a/security/jss/org/mozilla/jss/tests/SelfTest.java +++ b/security/jss/org/mozilla/jss/tests/SelfTest.java @@ -51,7 +51,6 @@ public class SelfTest { CryptoToken intTok; CryptoManager manager; Password pass1=null, pass2=null; - KeyPairGenerator keyPairGenerator; java.security.KeyPair keyPair; java.util.Enumeration items; char[] passchar1 = {'f', 'o', 'o', 'b', 'a', 'r'}; diff --git a/security/jss/org/mozilla/jss/tests/SigTest.java b/security/jss/org/mozilla/jss/tests/SigTest.java index 0e510e7f4888..f7c2ec4d475d 100644 --- a/security/jss/org/mozilla/jss/tests/SigTest.java +++ b/security/jss/org/mozilla/jss/tests/SigTest.java @@ -43,13 +43,16 @@ * one of the internal tokens: * Internal Crypto Services Token * Internal Key Storage Token (keys stored in key3.db) + * + * @see org.mozilla.jss.tests.JCASigTest + * @deprecated Use the JCA interface instead */ package org.mozilla.jss.tests; import org.mozilla.jss.crypto.*; -import org.mozilla.jss.crypto.Signature; -import org.mozilla.jss.crypto.KeyPairGenerator; +import java.security.Signature; +import java.security.KeyPairGenerator; import java.security.*; import java.security.cert.X509Certificate; import java.io.*; @@ -102,13 +105,12 @@ public class SigTest { token = manager.getTokenByName(tokenname); // Generate an RSA keypair - kpgen = token.getKeyPairGenerator(KeyPairAlgorithm.RSA); + kpgen = KeyPairGenerator.getInstance("RSA"); kpgen.initialize(1024); keyPair = kpgen.genKeyPair(); // RSA MD5 - signer = token.getSignatureContext( - SignatureAlgorithm.RSASignatureWithMD5Digest); + signer = Signature.getInstance("MD5withRSA"); System.out.println("Created a signing context"); signer.initSign( (org.mozilla.jss.crypto.PrivateKey)keyPair.getPrivate()); diff --git a/security/jss/org/mozilla/jss/tests/TestKeyGen.java b/security/jss/org/mozilla/jss/tests/TestKeyGen.java index 00365b1c4537..fe0f254fecfb 100644 --- a/security/jss/org/mozilla/jss/tests/TestKeyGen.java +++ b/security/jss/org/mozilla/jss/tests/TestKeyGen.java @@ -103,57 +103,112 @@ public class TestKeyGen { java.security.KeyPairGenerator.getInstance("RSA", "Mozilla-JSS"); // 512-bit RSA with default exponent - kpg.initialize(512); - keyPair = kpg.genKeyPair(); - Assert._assert( keyPair.getPublic() instanceof RSAPublicKey); - rsaPubKey = (RSAPublicKey) keyPair.getPublic(); - System.out.println("Generated 512-bit RSA KeyPair!"); - System.out.println("Modulus: "+rsaPubKey.getModulus()); - System.out.println("Exponent: "+rsaPubKey.getPublicExponent()); + System.out.println("Generating 512-bit RSA KeyPair!"); + for (int cntr=0; cntr<5; cntr++ ) { + try { + kpg.initialize(512); + keyPair = kpg.genKeyPair(); + Assert._assert( keyPair.getPublic() instanceof RSAPublicKey); + rsaPubKey = (RSAPublicKey) keyPair.getPublic(); + System.out.println("Generated 512-bit RSA KeyPair!"); + System.out.println("Modulus: "+rsaPubKey.getModulus()); + System.out.println("Exponent: "+rsaPubKey.getPublicExponent()); + break; + } catch (org.mozilla.jss.crypto.TokenRuntimeException TRExRSA512) { + if (cntr==5) { + System.out.println("Generation of 512-bit RSA KeyPair Failed\n"); + TRExRSA512.printStackTrace(); + } + } + } // 1024-bit RSA with default exponent - kpg.initialize(1024); - keyPair = kpg.genKeyPair(); - Assert._assert( keyPair.getPublic() instanceof RSAPublicKey); - rsaPubKey = (RSAPublicKey) keyPair.getPublic(); - System.out.println("Generated 1024-bit RSA KeyPair!"); - System.out.println("Modulus: "+rsaPubKey.getModulus()); - System.out.println("Exponent: "+rsaPubKey.getPublicExponent()); + System.out.println("Generating 1024-bit RSA KeyPair!"); + for (int cntr=0; cntr<5; cntr++ ) { + try { + kpg.initialize(1024); + keyPair = kpg.genKeyPair(); + Assert._assert( keyPair.getPublic() instanceof RSAPublicKey); + rsaPubKey = (RSAPublicKey) keyPair.getPublic(); + System.out.println("Generated 1024-bit RSA KeyPair!"); + System.out.println("Modulus: "+rsaPubKey.getModulus()); + System.out.println("Exponent: "+rsaPubKey.getPublicExponent()); + break; + } catch (org.mozilla.jss.crypto.TokenRuntimeException TRExRSA1024) { + if (cntr==5) { + System.out.println("Generation of 1024-bit RSA KeyPair Failed\n"); + TRExRSA1024.printStackTrace(); + } + } + } // 512-bit RSA with exponent = 3 - rsaParams = new RSAParameterSpec(512, BigInteger.valueOf(3)); - kpg.initialize(rsaParams); - keyPair = kpg.genKeyPair(); - Assert._assert( keyPair.getPublic() instanceof RSAPublicKey); - rsaPubKey = (RSAPublicKey) keyPair.getPublic(); - System.out.println("Generated 512-bit RSA KeyPair with public exponent=3!"); - System.out.println("Modulus: "+rsaPubKey.getModulus()); - System.out.println("Exponent: "+rsaPubKey.getPublicExponent()); + System.out.println("Generating 512-bit RSA KeyPair with public exponent=3!"); + for (int cntr=0; cntr<5; cntr++ ) { + try { + rsaParams = new RSAParameterSpec(512, BigInteger.valueOf(3)); + kpg.initialize(rsaParams); + keyPair = kpg.genKeyPair(); + Assert._assert( keyPair.getPublic() instanceof RSAPublicKey); + rsaPubKey = (RSAPublicKey) keyPair.getPublic(); + System.out.println("Generated 512-bit RSA KeyPair with public exponent=3!"); + System.out.println("Modulus: "+rsaPubKey.getModulus()); + System.out.println("Exponent: "+rsaPubKey.getPublicExponent()); + break; + } catch (org.mozilla.jss.crypto.TokenRuntimeException TRExRSA512Exp3) { + if (cntr==5) { + System.out.println("Generation of 512-bit RSA KeyPair with public exponent=3 Failed\n"); + TRExRSA512Exp3.printStackTrace(); + } + } + } // 512-bit DSA + System.out.println("Generating 512-bit DSA KeyPair!"); kpg = java.security.KeyPairGenerator.getInstance("DSA", "Mozilla-JSS"); - kpg.initialize(512); - keyPair = kpg.genKeyPair(); - Assert._assert( keyPair.getPublic() instanceof DSAPublicKey); - dsaPubKey = (DSAPublicKey) keyPair.getPublic(); - System.out.println("Generated 512-bit DSA KeyPair!"); - dsaParams = dsaPubKey.getParams(); - System.out.println("P: "+dsaParams.getP()); - System.out.println("Q: "+dsaParams.getQ()); - System.out.println("G: "+dsaParams.getG()); - System.out.println("Y: "+dsaPubKey.getY()); + for (int cntr=0; cntr<5; cntr++ ) { + try { + kpg.initialize(512); + keyPair = kpg.genKeyPair(); + Assert._assert( keyPair.getPublic() instanceof DSAPublicKey); + dsaPubKey = (DSAPublicKey) keyPair.getPublic(); + System.out.println("Generated 512-bit DSA KeyPair!"); + dsaParams = dsaPubKey.getParams(); + System.out.println("P: "+dsaParams.getP()); + System.out.println("Q: "+dsaParams.getQ()); + System.out.println("G: "+dsaParams.getG()); + System.out.println("Y: "+dsaPubKey.getY()); + break; + } catch (org.mozilla.jss.crypto.TokenRuntimeException TRExDSA512) { + if (cntr==5) { + System.out.println("Generation of 512-bit DSA KeyPair Failed\n"); + TRExDSA512.printStackTrace(); + } + } + } // 1024-bit DSA, passing in PQG params - kpg.initialize(PK11KeyPairGenerator.PQG1024); - keyPair = kpg.genKeyPair(); - Assert._assert( keyPair.getPublic() instanceof DSAPublicKey); - dsaPubKey = (DSAPublicKey) keyPair.getPublic(); - System.out.println("Generated 1024-bit DSA KeyPair with PQG params!"); - dsaParams = dsaPubKey.getParams(); - System.out.println("P: "+dsaParams.getP()); - System.out.println("Q: "+dsaParams.getQ()); - System.out.println("G: "+dsaParams.getG()); - System.out.println("Y: "+dsaPubKey.getY()); + System.out.println("Generating 1024-bit DSA KeyPair with PQG params!"); + for (int cntr=0; cntr<5; cntr++ ) { + try { + kpg.initialize(PK11KeyPairGenerator.PQG1024); + keyPair = kpg.genKeyPair(); + Assert._assert( keyPair.getPublic() instanceof DSAPublicKey); + dsaPubKey = (DSAPublicKey) keyPair.getPublic(); + System.out.println("Generated 1024-bit DSA KeyPair with PQG params!"); + dsaParams = dsaPubKey.getParams(); + System.out.println("P: "+dsaParams.getP()); + System.out.println("Q: "+dsaParams.getQ()); + System.out.println("G: "+dsaParams.getG()); + System.out.println("Y: "+dsaPubKey.getY()); + break; + } catch (org.mozilla.jss.crypto.TokenRuntimeException TRExDSA1024) { + if (cntr==5) { + System.out.println("Generation of 1024-bit DSA KeyPair with PQG params Failed\n"); + TRExDSA1024.printStackTrace(); + } + } + } System.out.println("TestKeyGen passed"); System.exit(0); diff --git a/security/jss/org/mozilla/jss/tests/VerifyCert.java b/security/jss/org/mozilla/jss/tests/VerifyCert.java index 706900d9f504..74222ccdfbf6 100644 --- a/security/jss/org/mozilla/jss/tests/VerifyCert.java +++ b/security/jss/org/mozilla/jss/tests/VerifyCert.java @@ -69,6 +69,7 @@ public class VerifyCert { // cert.verify(); } catch (Exception ex) { ex.printStackTrace(); + System.exit(1); } } @@ -82,7 +83,7 @@ public class VerifyCert { " " + "\n"); System.out.println("Note: and " + - " are optional.\n But if used, " + + " are optional.\n But if used, " + "both Url/nickname must be specified."); } @@ -135,6 +136,7 @@ public class VerifyCert { } catch ( Exception e ) { e.printStackTrace(); + System.exit(1); } } @@ -165,7 +167,8 @@ public class VerifyCert { if (usageList.isEmpty()) { System.out.println("The certificate is not valid."); } else { - System.out.println("The certificate is valid for the following usages:\n"); + System.out.println("The certificate is valid for " + + "the following usages:\n"); Iterator iterateUsage = usageList.iterator(); while (iterateUsage.hasNext()) { System.out.println(" " @@ -202,7 +205,8 @@ public class VerifyCert { if (usageList.isEmpty()) { System.out.println("The certificate is not valid."); } else { - System.out.println("The certificate is valid for the following usages:\n"); + System.out.println("The certificate is valid for the " + + "following usages:\n"); Iterator iterateUsage = usageList.iterator(); while (iterateUsage.hasNext()) { System.out.println(" " + diff --git a/security/jss/org/mozilla/jss/tests/all.pl b/security/jss/org/mozilla/jss/tests/all.pl index 9658dad9e4e1..c049ef5a109a 100644 --- a/security/jss/org/mozilla/jss/tests/all.pl +++ b/security/jss/org/mozilla/jss/tests/all.pl @@ -294,15 +294,6 @@ $result >>=8; $result and print "HMACTest returned $result\n"; print_case_result ($result,"HMACTest"); - -# test signing -# -print "============= test signing\n"; -$result = system("$java org.mozilla.jss.tests.SigTest $testdir " . - "\"$signingToken\" $pwfile"); $result >>=8; -$result and print "SigTest returned $result\n"; -print_case_result ($result,"Signing"); - # test JCA Sig Test # print "============= test Mozilla-JSS SigatureSPI JCASigTest\n"; @@ -327,6 +318,24 @@ $result=system("$java org.mozilla.jss.tests.GenerateTestCert $testdir $pwfile"); $result >>=8; $result and print "Generate known cert pair for testing returned $result\n"; +# +# List cert by certnick +# +print "============= List cert by certnick\n"; +$result = system("$java org.mozilla.jss.tests.ListCerts $testdir JSSCATestCert"); +$result >>=8; +$result and print "List cert by certnick returned $result\n"; +print_case_result ($result,"List cert by certnick"); + +# +# Verify cert by certnick +# +print "============= Verify cert by certnick\n"; +$result = system("$java org.mozilla.jss.tests.VerifyCert $testdir $pwfile JSSCATestCert"); +$result >>=8; +$result and print "Verify cert by certnick returned $result\n"; +print_case_result ($result,"Verify cert by certnick"); + # # Create keystore.pfx from generated cert db # for "JSSCATestCert" @@ -335,6 +344,15 @@ $result = system("$nss_lib_dir/../bin/pk12util$exe_suffix -o $testdir/keystore.p $result >>=8; $result and print "Convert PKCS11 to PKCS12 returned $result\n"; +# +# TestSDR Test +# +print "============= TestSDR Test\n"; +$result = system("$java org.mozilla.jss.tests.TestSDR $testdir $pwfile"); +$result >>=8; +$result and print "TestSDR test returned $result\n"; +print_case_result ($result,"TestSDR test"); + # # Start JSSE server # @@ -453,3 +471,10 @@ print "JSSTEST_SUITE: $testpass / $testrun\n"; my $rate = $testpass / $testrun * 100; printf "JSSTEST_RATE: %.0f %\n",$rate; +if ($testpass ne $testrun) { + printf "Test Status: FAILURE\n"; + system("false"); +} else { + printf "Test Status: SUCCESS\n"; + system("true"); +}