| /* |
| * Copyright (c) 2003, 2006, Oracle and/or its affiliates. All rights reserved. |
| * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
| * |
| * This code is free software; you can redistribute it and/or modify it |
| * under the terms of the GNU General Public License version 2 only, as |
| * published by the Free Software Foundation. |
| * |
| * This code is distributed in the hope that it will be useful, but WITHOUT |
| * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
| * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
| * version 2 for more details (a copy is included in the LICENSE file that |
| * accompanied this code). |
| * |
| * You should have received a copy of the GNU General Public License version |
| * 2 along with this work; if not, write to the Free Software Foundation, |
| * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. |
| * |
| * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA |
| * or visit www.oracle.com if you need additional information or have any |
| * questions. |
| */ |
| |
| import java.io.*; |
| import java.util.*; |
| import java.lang.reflect.*; |
| |
| import java.security.KeyStore; |
| import java.security.KeyStoreException; |
| import java.security.KeyFactory; |
| import java.security.KeyPairGenerator; |
| import java.security.KeyPair; |
| import java.security.SecureRandom; |
| import java.security.AuthProvider; |
| import java.security.PrivateKey; |
| import java.security.Provider; |
| import java.security.ProviderException; |
| import java.security.Signature; |
| import java.security.Security; |
| |
| import java.security.cert.*; |
| import java.security.spec.*; |
| import java.security.interfaces.*; |
| |
| import javax.crypto.SecretKey; |
| |
| import javax.security.auth.Subject; |
| import javax.security.auth.login.LoginException; |
| |
| import com.sun.security.auth.module.*; |
| import com.sun.security.auth.callback.*; |
| |
| |
| public class Basic extends PKCS11Test { |
| |
| private static final char SEP = File.separatorChar; |
| |
| private static String DIR = System.getProperty("DIR"); |
| private static char[] tokenPwd; |
| private static final char[] ibuttonPwd = |
| new char[0]; |
| private static final char[] activcardPwd = |
| new char[] { '1', '1', '2', '2', '3', '3' }; |
| private static final char[] nssPwd = |
| new char[] { 't', 'e', 's', 't', '1', '2' }; |
| private static final char[] solarisPwd = |
| new char[] { 'p', 'i', 'n' }; |
| private static final char[] sca1000Pwd = |
| new char[] { 'p', 'a', 's', 's', 'w', 'o', 'r', 'd' }; |
| private static final char[] sPwd = { 'f', 'o', 'o' }; |
| |
| private static SecretKey sk1; |
| private static SecretKey sk2; |
| private static SecretKey sk3; |
| private static SecretKey sk4; |
| |
| private static RSAPrivateCrtKey pk1; |
| private static PrivateKey pk2; |
| private static PrivateKey pk3; |
| |
| private static Certificate[] chain1; |
| private static Certificate[] chain2; |
| private static Certificate[] chain3; |
| private static Certificate[] chain4; |
| |
| private static X509Certificate randomCert; |
| |
| private static KeyStore ks; |
| private static final String KS_TYPE = "PKCS11"; |
| private static Provider provider; |
| |
| private static class FooEntry implements KeyStore.Entry { } |
| |
| private static class P11SecretKey implements SecretKey { |
| String alg; |
| int length; |
| public P11SecretKey(String alg, int length) { |
| this.alg = alg; |
| this.length = length; |
| } |
| public String getAlgorithm() { return alg; } |
| public String getFormat() { return "raw"; } |
| public byte[] getEncoded() { return new byte[length/8]; } |
| } |
| |
| public static void main(String[] args) throws Exception { |
| main(new Basic()); |
| } |
| |
| public void main(Provider p) throws Exception { |
| |
| this.provider = p; |
| |
| // get private keys |
| KeyFactory kf = KeyFactory.getInstance("RSA", "SunJSSE"); |
| KeyFactory dsaKf = KeyFactory.getInstance("DSA", "SUN"); |
| |
| ObjectInputStream ois1 = new ObjectInputStream |
| (new FileInputStream(new File(DIR, "pk1.key"))); |
| byte[] keyBytes = (byte[])ois1.readObject(); |
| ois1.close(); |
| PrivateKey tmpKey = |
| kf.generatePrivate(new PKCS8EncodedKeySpec(keyBytes)); |
| pk1 = (RSAPrivateCrtKey)tmpKey; |
| |
| ObjectInputStream ois2 = new ObjectInputStream |
| (new FileInputStream(new File(DIR, "pk2.key"))); |
| keyBytes = (byte[])ois2.readObject(); |
| ois2.close(); |
| pk2 = kf.generatePrivate(new PKCS8EncodedKeySpec(keyBytes)); |
| |
| ObjectInputStream ois3 = new ObjectInputStream |
| (new FileInputStream(new File(DIR, "pk3.key"))); |
| keyBytes = (byte[])ois3.readObject(); |
| pk3 = kf.generatePrivate(new PKCS8EncodedKeySpec(keyBytes)); |
| ois3.close(); |
| |
| // get cert chains for private keys |
| CertificateFactory cf = CertificateFactory.getInstance("X.509", "SUN"); |
| Certificate caCert = (X509Certificate)cf.generateCertificate |
| (new FileInputStream(new File(DIR, "ca.cert"))); |
| Certificate ca2Cert = (X509Certificate)cf.generateCertificate |
| (new FileInputStream(new File(DIR, "ca2.cert"))); |
| Certificate pk1cert = (X509Certificate)cf.generateCertificate |
| (new FileInputStream(new File(DIR, "pk1.cert"))); |
| Certificate pk1cert2 = (X509Certificate)cf.generateCertificate |
| (new FileInputStream(new File(DIR, "pk1.cert2"))); |
| Certificate pk2cert = (X509Certificate)cf.generateCertificate |
| (new FileInputStream(new File(DIR, "pk2.cert"))); |
| Certificate pk3cert = (X509Certificate)cf.generateCertificate |
| (new FileInputStream(new File(DIR, "pk3.cert"))); |
| chain1 = new Certificate[] { pk1cert, caCert }; |
| chain2 = new Certificate[] { pk2cert, caCert }; |
| chain3 = new Certificate[] { pk3cert, caCert }; |
| chain4 = new Certificate[] { pk1cert2, ca2Cert }; |
| |
| // create secret keys |
| sk1 = new P11SecretKey("DES", 64); |
| sk2 = new P11SecretKey("DESede", 192); |
| sk3 = new P11SecretKey("AES", 128); |
| sk4 = new P11SecretKey("RC4", 128); |
| |
| // read randomCert |
| randomCert = (X509Certificate)cf.generateCertificate |
| (new FileInputStream(new File(DIR, "random.cert"))); |
| |
| doTest(); |
| } |
| |
| private static void doTest() throws Exception { |
| |
| String token = System.getProperty("TOKEN"); |
| String test = System.getProperty("TEST"); |
| |
| if (token == null || token.length() == 0) { |
| throw new Exception("token arg required"); |
| } |
| if (test == null || test.length() == 0) { |
| throw new Exception("test arg required"); |
| } |
| |
| if ("ibutton".equals(token)) { |
| tokenPwd = ibuttonPwd; |
| } else if ("activcard".equals(token)) { |
| tokenPwd = activcardPwd; |
| } else if ("nss".equals(token)) { |
| tokenPwd = nssPwd; |
| } else if ("sca1000".equals(token)) { |
| tokenPwd = sca1000Pwd; |
| } else if ("solaris".equals(token)) { |
| tokenPwd = solarisPwd; |
| } |
| |
| if ("list".equals(test)) { |
| Basic.list(); |
| } else if ("basic".equals(test)) { |
| |
| int testnum = 1; |
| |
| if ("ibutton".equals(token)) { |
| // pkey and setAttribute |
| testnum = Basic.pkey(testnum); |
| testnum = Basic.setAttribute(testnum); |
| } else if ("activcard".equals(token)) { |
| // sign |
| testnum = Basic.signAlias(testnum, null); |
| } else if ("nss".equals(token)) { |
| // setAttribute, pkey, sign |
| testnum = Basic.setAttribute(testnum); |
| testnum = Basic.pkey(testnum); |
| testnum = Basic.sign(testnum); |
| testnum = Basic.copy(testnum); |
| } else if ("solaris".equals(token)) { |
| testnum = Basic.setAttribute(testnum); |
| testnum = Basic.pkey(testnum); |
| testnum = Basic.sign(testnum); |
| testnum = Basic.skey(testnum); |
| testnum = Basic.copy(testnum); |
| } else if ("sca1000".equals(token)) { |
| // setAttribute, pkey, sign, skey, copy |
| testnum = Basic.setAttribute(testnum); |
| testnum = Basic.pkey(testnum); |
| testnum = Basic.sign(testnum); |
| testnum = Basic.skey(testnum); |
| testnum = Basic.copy(testnum); |
| } |
| |
| } else if ("pkey".equals(test)) { |
| Basic.pkey(1); |
| } else if ("skey".equals(test)) { |
| Basic.skey(1); |
| } else if ("setAttribute".equals(test)) { |
| Basic.setAttribute(1); |
| } else if ("copy".equals(test)) { |
| Basic.copy(1); |
| } else if ("sign".equals(test)) { |
| Basic.sign(1); |
| } else if ("module".equals(test)) { |
| Basic.module(); |
| } else if ("nss-extended".equals(test)) { |
| |
| // this only works if NSS_TEST is set to true in P11KeyStore.java |
| |
| int testnum = 1; |
| testnum = Basic.setAttribute(testnum); |
| testnum = Basic.pkey(testnum); |
| testnum = Basic.sign(testnum); |
| testnum = Basic.extended(testnum); |
| } else { |
| System.out.println("unrecognized command"); |
| } |
| } |
| |
| private static int sign(int testnum) throws Exception { |
| if (ks == null) { |
| ks = KeyStore.getInstance(KS_TYPE, provider); |
| ks.load(null, tokenPwd); |
| } |
| if (!ks.containsAlias("pk1")) { |
| ks.setKeyEntry("pk1", pk1, null, chain1); |
| } |
| System.out.println("test " + testnum++ + " passed"); |
| |
| return signAlias(testnum, "pk1"); |
| } |
| |
| private static int signAlias(int testnum, String alias) throws Exception { |
| |
| if (ks == null) { |
| ks = KeyStore.getInstance(KS_TYPE, provider); |
| ks.load(null, tokenPwd); |
| } |
| |
| if (alias == null) { |
| Enumeration enu = ks.aliases(); |
| if (enu.hasMoreElements()) { |
| alias = (String)enu.nextElement(); |
| } |
| } |
| |
| PrivateKey pkey = (PrivateKey)ks.getKey(alias, null); |
| if ("RSA".equals(pkey.getAlgorithm())) { |
| System.out.println("got [" + alias + "] signing key: " + pkey); |
| } else { |
| throw new SecurityException |
| ("expected RSA, got " + pkey.getAlgorithm()); |
| } |
| |
| Signature s = Signature.getInstance("MD5WithRSA", ks.getProvider()); |
| s.initSign(pkey); |
| System.out.println("initialized signature object with key"); |
| s.update("hello".getBytes()); |
| System.out.println("signature object updated with [hello] bytes"); |
| |
| byte[] signed = s.sign(); |
| System.out.println("received signature " + signed.length + |
| " bytes in length"); |
| |
| Signature v = Signature.getInstance("MD5WithRSA", ks.getProvider()); |
| v.initVerify(ks.getCertificate(alias)); |
| v.update("hello".getBytes()); |
| v.verify(signed); |
| System.out.println("signature verified"); |
| System.out.println("test " + testnum++ + " passed"); |
| |
| return testnum; |
| } |
| |
| private static int copy(int testnum) throws Exception { |
| |
| if (ks == null) { |
| ks = KeyStore.getInstance(KS_TYPE, provider); |
| ks.load(null, tokenPwd); |
| } |
| |
| KeyFactory kf = KeyFactory.getInstance("RSA", provider); |
| PrivateKey pkSession = (PrivateKey)kf.translateKey(pk3); |
| System.out.println("pkSession = " + pkSession); |
| ks.setKeyEntry("pkSession", pkSession, null, chain3); |
| |
| KeyStore.PrivateKeyEntry pke = |
| (KeyStore.PrivateKeyEntry)ks.getEntry("pkSession", null); |
| System.out.println("pkSession = " + pke.getPrivateKey()); |
| Certificate[] chain = pke.getCertificateChain(); |
| if (chain.length != chain3.length) { |
| throw new SecurityException("received chain not correct length"); |
| } |
| for (int i = 0; i < chain.length; i++) { |
| if (!chain[i].equals(chain3[i])) { |
| throw new SecurityException("received chain not equal"); |
| } |
| } |
| |
| System.out.println("test " + testnum++ + " passed"); |
| |
| return testnum; |
| } |
| |
| private static void list() throws Exception { |
| int testnum = 1; |
| |
| ks = KeyStore.getInstance(KS_TYPE, provider); |
| |
| // check instance |
| if (ks.getProvider() instanceof java.security.AuthProvider) { |
| System.out.println("keystore provider instance of AuthProvider"); |
| System.out.println("test " + testnum++ + " passed"); |
| } else { |
| throw new SecurityException("did not get AuthProvider KeyStore"); |
| } |
| |
| // load |
| ks.load(null, tokenPwd); |
| System.out.println("test " + testnum++ + " passed"); |
| |
| // aliases |
| Enumeration enu = ks.aliases(); |
| int count = 0; |
| while (enu.hasMoreElements()) { |
| count++; |
| System.out.println("alias " + |
| count + |
| " = " + |
| (String)enu.nextElement()); |
| } |
| } |
| |
| private static void module() throws Exception { |
| |
| // perform Security.addProvider of P11 provider |
| ProviderLoader.go(System.getProperty("CUSTOM_P11_CONFIG")); |
| |
| String KS_PROVIDER = "SunPKCS11-" + System.getProperty("TOKEN"); |
| |
| KeyStoreLoginModule m = new KeyStoreLoginModule(); |
| Subject s = new Subject(); |
| Map options = new HashMap(); |
| options.put("keyStoreURL", "NONE"); |
| options.put("keyStoreType", KS_TYPE); |
| options.put("keyStoreProvider", KS_PROVIDER); |
| options.put("debug", "true"); |
| m.initialize(s, new TextCallbackHandler(), new HashMap(), options); |
| m.login(); |
| m.commit(); |
| System.out.println("authenticated subject = " + s); |
| m.logout(); |
| System.out.println("authenticated subject = " + s); |
| } |
| |
| /** |
| * SCA1000 does not handle extended secret key tests |
| * . Blowfish (CKR_TEMPLATE_INCOMPLETE) |
| * . AES (CKR_TEMPLATE_INCOMPLETE) |
| * . RC4 (CKR_ATTRIBUTE_TYPE_INVALID) |
| * so do this instead |
| */ |
| private static int skey(int testnum) throws Exception { |
| if (ks == null) { |
| ks = KeyStore.getInstance(KS_TYPE, provider); |
| ks.load(null, tokenPwd); |
| } |
| |
| // delete all old aliases |
| Enumeration enu = ks.aliases(); |
| int count = 0; |
| while (enu.hasMoreElements()) { |
| String next = (String)enu.nextElement(); |
| ks.deleteEntry(next); |
| System.out.println("deleted entry for: " + next); |
| } |
| |
| // set good ske 1 |
| ks.setKeyEntry("sk1", sk1, null, null); |
| System.out.println("test " + testnum++ + " passed"); |
| |
| // set good ske 2 |
| ks.setKeyEntry("sk2", sk2, null, null); |
| System.out.println("test " + testnum++ + " passed"); |
| |
| // getEntry good ske 1 |
| KeyStore.SecretKeyEntry ske = |
| (KeyStore.SecretKeyEntry)ks.getEntry("sk1", null); |
| if ("DES".equals(ske.getSecretKey().getAlgorithm())) { |
| System.out.println("test " + testnum++ + " passed"); |
| } else { |
| throw new SecurityException |
| ("expected DES, got " + ske.getSecretKey().getAlgorithm()); |
| } |
| |
| // getEntry good ske 2 |
| ske = (KeyStore.SecretKeyEntry)ks.getEntry("sk2", null); |
| if ("DESede".equals(ske.getSecretKey().getAlgorithm())) { |
| System.out.println("test " + testnum++ + " passed"); |
| } else { |
| throw new SecurityException |
| ("expected DESede, got " + ske.getSecretKey().getAlgorithm()); |
| } |
| |
| // getKey good ske 1 |
| SecretKey skey = (SecretKey)ks.getKey("sk1", null); |
| if ("DES".equals(skey.getAlgorithm())) { |
| System.out.println("test " + testnum++ + " passed"); |
| } else { |
| throw new SecurityException |
| ("expected DES, got " + skey.getAlgorithm()); |
| } |
| |
| // getKey good ske 2 |
| skey = (SecretKey)ks.getKey("sk2", null); |
| if ("DESede".equals(skey.getAlgorithm())) { |
| System.out.println("test " + testnum++ + " passed"); |
| } else { |
| throw new SecurityException |
| ("expected DESede, got " + skey.getAlgorithm()); |
| } |
| |
| // aliases |
| enu = ks.aliases(); |
| count = 0; |
| while (enu.hasMoreElements()) { |
| count++; |
| System.out.println("alias " + |
| count + |
| " = " + |
| (String)enu.nextElement()); |
| } |
| if (count == 2) { |
| System.out.println("test " + testnum++ + " passed"); |
| } else { |
| throw new SecurityException("expected 2 aliases"); |
| } |
| |
| // size |
| if (ks.size() == 2) { |
| System.out.println("test " + testnum++ + " passed"); |
| } else { |
| throw new SecurityException("expected size 2"); |
| } |
| |
| // isCertificateEntry sk1 |
| if (!ks.isCertificateEntry("sk1")) { |
| System.out.println("test " + testnum++ + " passed"); |
| } else { |
| throw new SecurityException("expected ske"); |
| } |
| |
| // isKeyEntry sk1 |
| if (ks.isKeyEntry("sk1")) { |
| System.out.println("test " + testnum++ + " passed"); |
| } else { |
| throw new SecurityException("expected ske"); |
| } |
| |
| // entryInstanceOf sk2 |
| if (ks.entryInstanceOf("sk2", KeyStore.SecretKeyEntry.class)) { |
| System.out.println("test " + testnum++ + " passed"); |
| } else { |
| throw new SecurityException("expected ske"); |
| } |
| |
| return testnum; |
| } |
| |
| private static int setAttribute(int testnum) throws Exception { |
| |
| if (ks == null) { |
| ks = KeyStore.getInstance(KS_TYPE, provider); |
| ks.load(null, tokenPwd); |
| } |
| |
| if (!ks.containsAlias("pk1")) { |
| // set good pke 1 |
| ks.setKeyEntry("pk1", pk1, null, chain1); |
| System.out.println("test " + testnum++ + " passed"); |
| } |
| |
| // delete all old aliases except pk1 |
| Enumeration enu = ks.aliases(); |
| int count = 0; |
| while (enu.hasMoreElements()) { |
| String next = (String)enu.nextElement(); |
| if (!"pk1".equals(next)) { |
| ks.deleteEntry(next); |
| System.out.println("deleted entry for: " + next); |
| } |
| } |
| |
| KeyStore.PrivateKeyEntry pke = |
| (KeyStore.PrivateKeyEntry)ks.getEntry("pk1", null); |
| System.out.println("pk1 = " + pke.getPrivateKey()); |
| Certificate[] chain = pke.getCertificateChain(); |
| if (chain.length != chain1.length) { |
| throw new SecurityException("received chain not correct length"); |
| } |
| for (int i = 0; i < chain.length; i++) { |
| if (!chain[i].equals(chain1[i])) { |
| throw new SecurityException("received chain not equal"); |
| } |
| } |
| System.out.println("test " + testnum++ + " passed"); |
| |
| /** |
| * test change alias only |
| */ |
| |
| // test C_SetAttribute |
| PrivateKey pkey = pke.getPrivateKey(); |
| ks.setEntry("pk1SA", |
| new KeyStore.PrivateKeyEntry(pkey, chain1), |
| null); |
| System.out.println("test " + testnum++ + " passed"); |
| |
| // aliases |
| enu = ks.aliases(); |
| count = 0; |
| String newAlias = null; |
| while (enu.hasMoreElements()) { |
| count++; |
| newAlias = (String)enu.nextElement(); |
| System.out.println("alias " + |
| count + |
| " = " + |
| newAlias); |
| } |
| if (count == 1 && "pk1SA".equals(newAlias)) { |
| System.out.println("test " + testnum++ + " passed"); |
| } else { |
| throw new SecurityException("expected 1 alias"); |
| } |
| |
| // size |
| if (ks.size() == 1) { |
| System.out.println("test " + testnum++ + " passed"); |
| } else { |
| throw new SecurityException("expected size 1"); |
| } |
| |
| pke = (KeyStore.PrivateKeyEntry)ks.getEntry("pk1", null); |
| if (pke != null) { |
| throw new SecurityException("expected not to find pk1"); |
| } |
| System.out.println("test " + testnum++ + " passed"); |
| |
| pke = (KeyStore.PrivateKeyEntry)ks.getEntry("pk1SA", null); |
| System.out.println("pk1SA = " + pke.getPrivateKey()); |
| chain = pke.getCertificateChain(); |
| if (chain.length != chain1.length) { |
| throw new SecurityException("received chain not correct length"); |
| } |
| for (int i = 0; i < chain.length; i++) { |
| if (!chain[i].equals(chain1[i])) { |
| throw new SecurityException("received chain not equal"); |
| } |
| } |
| System.out.println("test " + testnum++ + " passed"); |
| |
| /** |
| * test change cert chain |
| */ |
| |
| pkey = pke.getPrivateKey(); |
| ks.setEntry("pk1SA-2", |
| new KeyStore.PrivateKeyEntry(pkey, chain4), |
| null); |
| System.out.println("test " + testnum++ + " passed"); |
| |
| // aliases |
| enu = ks.aliases(); |
| count = 0; |
| newAlias = null; |
| while (enu.hasMoreElements()) { |
| count++; |
| newAlias = (String)enu.nextElement(); |
| System.out.println("alias " + |
| count + |
| " = " + |
| newAlias); |
| } |
| if (count == 1 && "pk1SA-2".equals(newAlias)) { |
| System.out.println("test " + testnum++ + " passed"); |
| } else { |
| throw new SecurityException("expected 1 alias"); |
| } |
| |
| // size |
| if (ks.size() == 1) { |
| System.out.println("test " + testnum++ + " passed"); |
| } else { |
| throw new SecurityException("expected size 1"); |
| } |
| |
| pke = (KeyStore.PrivateKeyEntry)ks.getEntry("pk1SA", null); |
| if (pke != null) { |
| throw new SecurityException("expected not to find pk1SA"); |
| } |
| System.out.println("test " + testnum++ + " passed"); |
| |
| pke = (KeyStore.PrivateKeyEntry)ks.getEntry("pk1SA-2", null); |
| System.out.println("pk1SA-2 = " + pke.getPrivateKey()); |
| chain = pke.getCertificateChain(); |
| if (chain.length != chain4.length) { |
| throw new SecurityException("received chain not correct length"); |
| } |
| for (int i = 0; i < chain.length; i++) { |
| if (!chain[i].equals(chain4[i])) { |
| throw new SecurityException("received chain not equal"); |
| } |
| } |
| System.out.println("test " + testnum++ + " passed"); |
| |
| return testnum; |
| } |
| |
| private static int pkey(int testnum) throws Exception { |
| |
| if (ks == null) { |
| ks = KeyStore.getInstance(KS_TYPE, provider); |
| ks.load(null, tokenPwd); |
| System.out.println("test " + testnum++ + " passed"); |
| } |
| |
| // check instance |
| if (ks.getProvider() instanceof java.security.AuthProvider) { |
| System.out.println("keystore provider instance of AuthProvider"); |
| System.out.println("test " + testnum++ + " passed"); |
| } else { |
| throw new SecurityException("did not get AuthProvider KeyStore"); |
| } |
| |
| // delete all old aliases |
| Enumeration enu = ks.aliases(); |
| int count = 0; |
| while (enu.hasMoreElements()) { |
| String next = (String)enu.nextElement(); |
| ks.deleteEntry(next); |
| System.out.println("deleted entry for: " + next); |
| } |
| |
| // set good pke 1 |
| ks.setKeyEntry("pk1", pk1, null, chain1); |
| System.out.println("test " + testnum++ + " passed"); |
| |
| // set good pke 2 |
| ks.setEntry("pk2", |
| new KeyStore.PrivateKeyEntry(pk2, chain2), |
| null); |
| System.out.println("test " + testnum++ + " passed"); |
| |
| // getEntry good pke 1 |
| KeyStore.PrivateKeyEntry pke = |
| (KeyStore.PrivateKeyEntry)ks.getEntry("pk1", null); |
| System.out.println("pk1 = " + pke.getPrivateKey()); |
| Certificate[] chain = pke.getCertificateChain(); |
| if (chain.length != chain1.length) { |
| throw new SecurityException("received chain not correct length"); |
| } |
| for (int i = 0; i < chain.length; i++) { |
| if (!chain[i].equals(chain1[i])) { |
| throw new SecurityException("received chain not equal"); |
| } |
| } |
| |
| // getKey good pke 1 |
| PrivateKey pkey = (PrivateKey)ks.getKey("pk1", null); |
| System.out.println("pk1 = " + pkey); |
| if ("RSA".equals(pkey.getAlgorithm())) { |
| System.out.println("test " + testnum++ + " passed"); |
| } else { |
| throw new SecurityException |
| ("expected RSA, got " + pkey.getAlgorithm()); |
| } |
| |
| // getCertificate chain chain 1 |
| chain = ks.getCertificateChain("pk1"); |
| if (chain.length != chain1.length) { |
| throw new SecurityException("received chain not correct length"); |
| } |
| for (int i = 0; i < chain.length; i++) { |
| if (!chain[i].equals(chain1[i])) { |
| throw new SecurityException("received chain not equal"); |
| } |
| } |
| System.out.println("test " + testnum++ + " passed"); |
| |
| // getEntry good pke 2 |
| pke = (KeyStore.PrivateKeyEntry)ks.getEntry("pk2", null); |
| if ("RSA".equals(pke.getPrivateKey().getAlgorithm())) { |
| System.out.println("test " + testnum++ + " passed"); |
| } else { |
| throw new SecurityException |
| ("expected RSA, got " + pke.getPrivateKey().getAlgorithm()); |
| } |
| System.out.println("pk2 = " + pke.getPrivateKey()); |
| chain = pke.getCertificateChain(); |
| if (chain.length != chain2.length) { |
| throw new SecurityException("received chain not correct length"); |
| } |
| for (int i = 0; i < chain.length; i++) { |
| if (!chain[i].equals(chain2[i])) { |
| throw new SecurityException("received chain not equal"); |
| } |
| } |
| |
| // getKey good pke 2 |
| pkey = (PrivateKey)ks.getKey("pk2", null); |
| if ("RSA".equals(pkey.getAlgorithm())) { |
| System.out.println("test " + testnum++ + " passed"); |
| } else { |
| throw new SecurityException |
| ("expected RSA, got " + pkey.getAlgorithm()); |
| } |
| |
| // getCertificate chain chain 2 |
| chain = ks.getCertificateChain("pk2"); |
| if (chain.length != chain2.length) { |
| throw new SecurityException("received chain not correct length"); |
| } |
| for (int i = 0; i < chain.length; i++) { |
| if (!chain[i].equals(chain2[i])) { |
| throw new SecurityException("received chain not equal"); |
| } |
| } |
| System.out.println("test " + testnum++ + " passed"); |
| |
| // aliases |
| enu = ks.aliases(); |
| count = 0; |
| while (enu.hasMoreElements()) { |
| count++; |
| System.out.println("alias " + |
| count + |
| " = " + |
| (String)enu.nextElement()); |
| } |
| if (count == 2) { |
| System.out.println("test " + testnum++ + " passed"); |
| } else { |
| throw new SecurityException("expected 2 aliases"); |
| } |
| |
| // size |
| if (ks.size() == 2) { |
| System.out.println("test " + testnum++ + " passed"); |
| } else { |
| throw new SecurityException("expected size 2"); |
| } |
| |
| // getCertificate |
| if (ks.getCertificate("pk1").equals(chain1[0])) { |
| System.out.println("test " + testnum++ + " passed"); |
| } else { |
| throw new SecurityException("expected certificate pk1 end entity"); |
| } |
| |
| // containsAlias |
| if (ks.containsAlias("pk1") && ks.containsAlias("pk2") && |
| !ks.containsAlias("foobar") && |
| !ks.containsAlias("pk1.2") && !ks.containsAlias("pk2.2")) { |
| System.out.println("test " + testnum++ + " passed"); |
| } else { |
| throw new SecurityException("unexpected aliases encountered"); |
| } |
| |
| // isKeyEntry |
| if (ks.isKeyEntry("pk1") && ks.isKeyEntry("pk2") && |
| !ks.isKeyEntry("foobar")) { |
| System.out.println("test " + testnum++ + " passed"); |
| } else { |
| throw new SecurityException("isKeyEntry failed"); |
| } |
| |
| // isCertificateEntry |
| if (!ks.isCertificateEntry("foobar") && |
| !ks.isCertificateEntry("pk1") && !ks.isCertificateEntry("pk2")) { |
| System.out.println("test " + testnum++ + " passed"); |
| } else { |
| throw new SecurityException("isCertificateEntry failed"); |
| } |
| |
| // getCertificateAlias |
| if (ks.getCertificateAlias(chain1[0]).equals("pk1") && |
| ks.getCertificateAlias(chain2[0]).equals("pk2") && |
| ks.getCertificateAlias(randomCert) == null) { |
| System.out.println("test " + testnum++ + " passed"); |
| } else { |
| throw new SecurityException("getCertificateAlias failed"); |
| } |
| |
| if (ks.entryInstanceOf("pk1", KeyStore.PrivateKeyEntry.class) && |
| ks.entryInstanceOf("pk2", KeyStore.PrivateKeyEntry.class) && |
| !ks.entryInstanceOf("pk1", KeyStore.TrustedCertificateEntry.class) && |
| !ks.entryInstanceOf("pk2", KeyStore.TrustedCertificateEntry.class) && |
| !ks.entryInstanceOf("foobar", KeyStore.TrustedCertificateEntry.class) && |
| !ks.entryInstanceOf("foobar", KeyStore.PrivateKeyEntry.class)) { |
| System.out.println("test " + testnum++ + " passed"); |
| } else { |
| throw new SecurityException("entryInstanceOf failed"); |
| } |
| |
| ks.deleteEntry("pk2"); |
| if (ks.containsAlias("pk1") && !ks.containsAlias("pk2")) { |
| System.out.println("test " + testnum++ + " passed"); |
| } else { |
| throw new SecurityException("deleteEntry failed"); |
| } |
| |
| // getEntry good pke 1 |
| pke = (KeyStore.PrivateKeyEntry)ks.getEntry("pk1", null); |
| System.out.println("pk1 = " + pke.getPrivateKey()); |
| chain = pke.getCertificateChain(); |
| if (chain.length != chain1.length) { |
| throw new SecurityException("received chain not correct length"); |
| } |
| for (int i = 0; i < chain.length; i++) { |
| if (!chain[i].equals(chain1[i])) { |
| throw new SecurityException("received chain not equal"); |
| } |
| } |
| System.out.println("test " + testnum++ + " passed"); |
| |
| // aliases |
| enu = ks.aliases(); |
| count = 0; |
| while (enu.hasMoreElements()) { |
| count++; |
| System.out.println("alias " + |
| count + |
| " = " + |
| (String)enu.nextElement()); |
| } |
| if (count == 1) { |
| System.out.println("test " + testnum++ + " passed"); |
| } else { |
| throw new SecurityException("expected 1 alias"); |
| } |
| |
| // size |
| if (ks.size() == 1) { |
| System.out.println("test " + testnum++ + " passed"); |
| } else { |
| throw new SecurityException("expected size 1"); |
| } |
| |
| return testnum; |
| } |
| |
| private static int extended(int testnum) throws Exception { |
| |
| // setEntry unknown entry type |
| try { |
| ks.setEntry("foo", new FooEntry(), null); |
| throw new SecurityException("setEntry should have failed"); |
| } catch (KeyStoreException kse) { |
| System.out.println("test " + testnum++ + " passed"); |
| } |
| |
| // getEntry random foo |
| if (ks.getEntry("foo", null) != null) { |
| throw new SecurityException("expected null entry"); |
| } else { |
| System.out.println("test " + testnum++ + " passed"); |
| } |
| |
| // set good ske 1 |
| ks.setKeyEntry("sk1", sk1, null, null); |
| System.out.println("test " + testnum++ + " passed"); |
| |
| // set good ske 2 |
| ks.setKeyEntry("sk2", sk2, null, null); |
| System.out.println("test " + testnum++ + " passed"); |
| |
| // set good ske 3 |
| ks.setEntry("sk3", |
| new KeyStore.SecretKeyEntry(sk3), |
| null); |
| System.out.println("test " + testnum++ + " passed"); |
| |
| // set good ske 4 |
| ks.setEntry("sk4", |
| new KeyStore.SecretKeyEntry(sk4), |
| null); |
| System.out.println("test " + testnum++ + " passed"); |
| |
| // getEntry good ske 1 |
| KeyStore.SecretKeyEntry ske = |
| (KeyStore.SecretKeyEntry)ks.getEntry("sk1", null); |
| if ("DES".equals(ske.getSecretKey().getAlgorithm())) { |
| System.out.println("test " + testnum++ + " passed"); |
| } else { |
| throw new SecurityException |
| ("expected DES, got " + ske.getSecretKey().getAlgorithm()); |
| } |
| |
| // getEntry good ske 2 |
| ske = (KeyStore.SecretKeyEntry)ks.getEntry("sk2", null); |
| if ("DESede".equals(ske.getSecretKey().getAlgorithm())) { |
| System.out.println("test " + testnum++ + " passed"); |
| } else { |
| throw new SecurityException |
| ("expected DESede, got " + ske.getSecretKey().getAlgorithm()); |
| } |
| |
| // getEntry good ske 3 |
| ske = (KeyStore.SecretKeyEntry)ks.getEntry("sk3", null); |
| if ("AES".equals(ske.getSecretKey().getAlgorithm())) { |
| System.out.println("test " + testnum++ + " passed"); |
| } else { |
| throw new SecurityException |
| ("expected AES, got " + ske.getSecretKey().getAlgorithm()); |
| } |
| |
| // getEntry good ske 4 |
| ske = (KeyStore.SecretKeyEntry)ks.getEntry("sk4", null); |
| if ("ARCFOUR".equals(ske.getSecretKey().getAlgorithm())) { |
| System.out.println("test " + testnum++ + " passed"); |
| } else { |
| throw new SecurityException |
| ("expected ARCFOUR, got " + ske.getSecretKey().getAlgorithm()); |
| } |
| |
| // getKey good ske 1 |
| SecretKey skey = (SecretKey)ks.getKey("sk1", null); |
| if ("DES".equals(skey.getAlgorithm())) { |
| System.out.println("test " + testnum++ + " passed"); |
| } else { |
| throw new SecurityException |
| ("expected DES, got " + skey.getAlgorithm()); |
| } |
| |
| // getKey good ske 2 |
| skey = (SecretKey)ks.getKey("sk2", null); |
| if ("DESede".equals(skey.getAlgorithm())) { |
| System.out.println("test " + testnum++ + " passed"); |
| } else { |
| throw new SecurityException |
| ("expected DESede, got " + skey.getAlgorithm()); |
| } |
| |
| // getKey good ske 3 |
| skey = (SecretKey)ks.getKey("sk3", null); |
| if ("AES".equals(skey.getAlgorithm())) { |
| System.out.println("test " + testnum++ + " passed"); |
| } else { |
| throw new SecurityException |
| ("expected AES, got " + skey.getAlgorithm()); |
| } |
| |
| // getKey good ske 4 |
| skey = (SecretKey)ks.getKey("sk4", null); |
| if ("ARCFOUR".equals(skey.getAlgorithm())) { |
| System.out.println("test " + testnum++ + " passed"); |
| } else { |
| throw new SecurityException |
| ("expected ARCFOUR, got " + skey.getAlgorithm()); |
| } |
| |
| // aliases |
| Enumeration enu = ks.aliases(); |
| int count = 0; |
| while (enu.hasMoreElements()) { |
| count++; |
| System.out.println("alias " + |
| count + |
| " = " + |
| (String)enu.nextElement()); |
| } |
| if (count == 5) { |
| System.out.println("test " + testnum++ + " passed"); |
| } else { |
| throw new SecurityException("expected 5 aliases"); |
| } |
| |
| // size |
| if (ks.size() == 5) { |
| System.out.println("test " + testnum++ + " passed"); |
| } else { |
| throw new SecurityException("expected size 5"); |
| } |
| |
| // set good pke 2 |
| ks.setEntry("pk2", |
| new KeyStore.PrivateKeyEntry(pk2, chain2), |
| null); |
| System.out.println("test " + testnum++ + " passed"); |
| |
| // set good pke 3 |
| ks.setEntry("pk3", |
| new KeyStore.PrivateKeyEntry(pk3, chain3), |
| null); |
| System.out.println("test " + testnum++ + " passed"); |
| |
| // getEntry good pke 1 |
| KeyStore.PrivateKeyEntry pke = |
| (KeyStore.PrivateKeyEntry)ks.getEntry("pk1", null); |
| System.out.println("pk1 = " + pke.getPrivateKey()); |
| Certificate[] chain = pke.getCertificateChain(); |
| if (chain.length != chain1.length) { |
| throw new SecurityException("received chain not correct length"); |
| } |
| for (int i = 0; i < chain.length; i++) { |
| if (!chain[i].equals(chain1[i])) { |
| throw new SecurityException("received chain not equal"); |
| } |
| } |
| |
| // getEntry good pke 2 |
| pke = (KeyStore.PrivateKeyEntry)ks.getEntry("pk2", null); |
| System.out.println("pk2 = " + pke.getPrivateKey()); |
| chain = pke.getCertificateChain(); |
| if (chain.length != chain2.length) { |
| throw new SecurityException("received chain not correct length"); |
| } |
| for (int i = 0; i < chain.length; i++) { |
| if (!chain[i].equals(chain2[i])) { |
| throw new SecurityException("received chain not equal"); |
| } |
| } |
| |
| // getEntry good pke 3 |
| pke = (KeyStore.PrivateKeyEntry)ks.getEntry("pk3", null); |
| System.out.println("pk3 = " + pke.getPrivateKey()); |
| chain = pke.getCertificateChain(); |
| if (chain.length != chain3.length) { |
| throw new SecurityException("received chain not correct length"); |
| } |
| for (int i = 0; i < chain.length; i++) { |
| if (!chain[i].equals(chain3[i])) { |
| throw new SecurityException("received chain not equal"); |
| } |
| } |
| |
| // getKey good pke 1 |
| PrivateKey pkey = (PrivateKey)ks.getKey("pk1", null); |
| if ("RSA".equals(pkey.getAlgorithm())) { |
| System.out.println("test " + testnum++ + " passed"); |
| } else { |
| throw new SecurityException |
| ("expected RSA, got " + pkey.getAlgorithm()); |
| } |
| |
| // getCertificate chain chain 1 |
| chain = ks.getCertificateChain("pk1"); |
| if (chain.length != chain1.length) { |
| throw new SecurityException("received chain not correct length"); |
| } |
| for (int i = 0; i < chain.length; i++) { |
| if (!chain[i].equals(chain1[i])) { |
| throw new SecurityException("received chain not equal"); |
| } |
| } |
| |
| // getKey good pke 2 |
| pkey = (PrivateKey)ks.getKey("pk2", null); |
| if ("RSA".equals(pkey.getAlgorithm())) { |
| System.out.println("test " + testnum++ + " passed"); |
| } else { |
| throw new SecurityException |
| ("expected RSA, got " + pkey.getAlgorithm()); |
| } |
| |
| // getCertificate chain chain 2 |
| chain = ks.getCertificateChain("pk2"); |
| if (chain.length != chain2.length) { |
| throw new SecurityException("received chain not correct length"); |
| } |
| for (int i = 0; i < chain.length; i++) { |
| if (!chain[i].equals(chain2[i])) { |
| throw new SecurityException("received chain not equal"); |
| } |
| } |
| |
| // getKey good pke 3 |
| pkey = (PrivateKey)ks.getKey("pk3", null); |
| if ("RSA".equals(pkey.getAlgorithm())) { |
| System.out.println("test " + testnum++ + " passed"); |
| } else { |
| throw new SecurityException |
| ("expected RSA, got " + pkey.getAlgorithm()); |
| } |
| |
| // getCertificate chain chain 3 |
| chain = ks.getCertificateChain("pk3"); |
| if (chain.length != chain3.length) { |
| throw new SecurityException("received chain not correct length"); |
| } |
| for (int i = 0; i < chain.length; i++) { |
| if (!chain[i].equals(chain3[i])) { |
| throw new SecurityException("received chain not equal"); |
| } |
| } |
| |
| // aliases |
| enu = ks.aliases(); |
| count = 0; |
| while (enu.hasMoreElements()) { |
| count++; |
| System.out.println("alias " + |
| count + |
| " = " + |
| (String)enu.nextElement()); |
| } |
| if (count == 7) { |
| System.out.println("test " + testnum++ + " passed"); |
| } else { |
| throw new SecurityException("expected 7 aliases"); |
| } |
| |
| // size |
| if (ks.size() == 7) { |
| System.out.println("test " + testnum++ + " passed"); |
| } else { |
| throw new SecurityException("expected size 7"); |
| } |
| |
| // getCertificate good chain 1 |
| if (ks.getCertificate("pk1").equals(chain1[0])) { |
| System.out.println("test " + testnum++ + " passed"); |
| } else { |
| throw new SecurityException("retrieved cert not equal"); |
| } |
| |
| // getCertificate good chain 3 |
| if (ks.getCertificate("pk3").equals(chain3[0])) { |
| System.out.println("test " + testnum++ + " passed"); |
| } else { |
| throw new SecurityException("retrieved cert not equal"); |
| } |
| |
| // getKey good ske 1 |
| skey = (SecretKey)ks.getKey("sk1", null); |
| if ("DES".equals(skey.getAlgorithm())) { |
| System.out.println("test " + testnum++ + " passed"); |
| } else { |
| throw new SecurityException |
| ("expected DES, got " + skey.getAlgorithm()); |
| } |
| |
| // getKey good ske 4 |
| skey = (SecretKey)ks.getKey("sk4", null); |
| if ("ARCFOUR".equals(skey.getAlgorithm())) { |
| System.out.println("test " + testnum++ + " passed"); |
| } else { |
| throw new SecurityException |
| ("expected ARCFOUR, got " + skey.getAlgorithm()); |
| } |
| |
| // getKey good pke 1 |
| pkey = (PrivateKey)ks.getKey("pk1", null); |
| if ("RSA".equals(pkey.getAlgorithm())) { |
| System.out.println("test " + testnum++ + " passed"); |
| } else { |
| throw new SecurityException |
| ("expected RSA, got " + pkey.getAlgorithm()); |
| } |
| |
| // getKey good pke 3 |
| pkey = (PrivateKey)ks.getKey("pk3", null); |
| if ("RSA".equals(pkey.getAlgorithm())) { |
| System.out.println("test " + testnum++ + " passed"); |
| } else { |
| throw new SecurityException |
| ("expected RSA, got " + pkey.getAlgorithm()); |
| } |
| |
| // contains alias |
| if (!ks.containsAlias("pk1") || |
| !ks.containsAlias("pk2") || |
| !ks.containsAlias("pk3") || |
| !ks.containsAlias("sk1") || |
| !ks.containsAlias("sk2") || |
| !ks.containsAlias("sk3") || |
| !ks.containsAlias("sk4")) { |
| throw new SecurityException("did not contain all aliases"); |
| } |
| System.out.println("test " + testnum++ + " passed"); |
| |
| // getCertificateAlias pk1 |
| if (ks.getCertificateAlias(chain1[0]).equals("pk1")) { |
| System.out.println("test " + testnum++ + " passed"); |
| } else { |
| throw new SecurityException("expected cert pk1"); |
| } |
| |
| // getCertificateAlias pk3 |
| if (ks.getCertificateAlias(chain3[0]).equals("pk3")) { |
| System.out.println("test " + testnum++ + " passed"); |
| } else { |
| throw new SecurityException("expected cert pk3"); |
| } |
| |
| // isCertificateEntry pk1 |
| if (!ks.isCertificateEntry("pk1")) { |
| System.out.println("test " + testnum++ + " passed"); |
| } else { |
| throw new SecurityException("expected pke"); |
| } |
| |
| // isCertificateEntry pk3 |
| if (!ks.isCertificateEntry("pk3")) { |
| System.out.println("test " + testnum++ + " passed"); |
| } else { |
| throw new SecurityException("expected pke"); |
| } |
| |
| // isCertificateEntry sk1 |
| if (!ks.isCertificateEntry("sk1")) { |
| System.out.println("test " + testnum++ + " passed"); |
| } else { |
| throw new SecurityException("expected ske"); |
| } |
| |
| // isCertificateEntry sk4 |
| if (!ks.isCertificateEntry("sk4")) { |
| System.out.println("test " + testnum++ + " passed"); |
| } else { |
| throw new SecurityException("expected ske"); |
| } |
| |
| // isKeyEntry pk1 |
| if (ks.isKeyEntry("pk1")) { |
| System.out.println("test " + testnum++ + " passed"); |
| } else { |
| throw new SecurityException("expected pke"); |
| } |
| |
| // isKeyEntry pk3 |
| if (ks.isKeyEntry("pk3")) { |
| System.out.println("test " + testnum++ + " passed"); |
| } else { |
| throw new SecurityException("expected pke"); |
| } |
| |
| // isKeyEntry sk1 |
| if (ks.isKeyEntry("sk1")) { |
| System.out.println("test " + testnum++ + " passed"); |
| } else { |
| throw new SecurityException("expected ske"); |
| } |
| |
| // isKeyEntry sk4 |
| if (ks.isKeyEntry("sk4")) { |
| System.out.println("test " + testnum++ + " passed"); |
| } else { |
| throw new SecurityException("expected ske"); |
| } |
| |
| // isCertificateEntry random foo |
| if (!ks.isCertificateEntry("foo")) { |
| System.out.println("test " + testnum++ + " passed"); |
| } else { |
| throw new SecurityException("expected foo"); |
| } |
| |
| // isKeyEntry random foo |
| if (!ks.isKeyEntry("foo")) { |
| System.out.println("test " + testnum++ + " passed"); |
| } else { |
| throw new SecurityException("expected foo"); |
| } |
| |
| // entryInstanceOf pk1 |
| if (!ks.entryInstanceOf |
| ("pk1", KeyStore.TrustedCertificateEntry.class)) { |
| System.out.println("test " + testnum++ + " passed"); |
| } else { |
| throw new SecurityException("expected tce"); |
| } |
| |
| // entryInstanceOf pk3 |
| if (!ks.entryInstanceOf |
| ("pk3", KeyStore.TrustedCertificateEntry.class)) { |
| System.out.println("test " + testnum++ + " passed"); |
| } else { |
| throw new SecurityException("expected tce"); |
| } |
| |
| // entryInstanceOf sk1 |
| if (!ks.entryInstanceOf |
| ("sk1", KeyStore.TrustedCertificateEntry.class)) { |
| System.out.println("test " + testnum++ + " passed"); |
| } else { |
| throw new SecurityException("expected tce"); |
| } |
| |
| // entryInstanceOf sk4 |
| if (!ks.entryInstanceOf |
| ("sk4", KeyStore.TrustedCertificateEntry.class)) { |
| System.out.println("test " + testnum++ + " passed"); |
| } else { |
| throw new SecurityException("expected tce"); |
| } |
| |
| // entryInstanceOf pk1 |
| if (ks.entryInstanceOf("pk1", KeyStore.PrivateKeyEntry.class)) { |
| System.out.println("test " + testnum++ + " passed"); |
| } else { |
| throw new SecurityException("expected pke"); |
| } |
| |
| // entryInstanceOf pk3 |
| if (ks.entryInstanceOf("pk3", KeyStore.PrivateKeyEntry.class)) { |
| System.out.println("test " + testnum++ + " passed"); |
| } else { |
| throw new SecurityException("expected pke"); |
| } |
| |
| // entryInstanceOf sk1 |
| if (!ks.entryInstanceOf("sk1", KeyStore.PrivateKeyEntry.class)) { |
| System.out.println("test " + testnum++ + " passed"); |
| } else { |
| throw new SecurityException("expected pke"); |
| } |
| |
| // entryInstanceOf sk4 |
| if (!ks.entryInstanceOf("sk4", KeyStore.PrivateKeyEntry.class)) { |
| System.out.println("test " + testnum++ + " passed"); |
| } else { |
| throw new SecurityException("expected pke"); |
| } |
| |
| // entryInstanceOf sk1 |
| if (ks.entryInstanceOf("sk1", KeyStore.SecretKeyEntry.class)) { |
| System.out.println("test " + testnum++ + " passed"); |
| } else { |
| throw new SecurityException("expected ske"); |
| } |
| |
| // entryInstanceOf sk4 |
| if (ks.entryInstanceOf("sk4", KeyStore.SecretKeyEntry.class)) { |
| System.out.println("test " + testnum++ + " passed"); |
| } else { |
| throw new SecurityException("expected ske"); |
| } |
| |
| // entryInstanceOf pk1 |
| if (!ks.entryInstanceOf("pk1", KeyStore.SecretKeyEntry.class)) { |
| System.out.println("test " + testnum++ + " passed"); |
| } else { |
| throw new SecurityException("expected ske"); |
| } |
| |
| // entryInstanceOf pk3 |
| if (!ks.entryInstanceOf("pk3", KeyStore.SecretKeyEntry.class)) { |
| System.out.println("test " + testnum++ + " passed"); |
| } else { |
| throw new SecurityException("expected ske"); |
| } |
| |
| // getEntry random foobar |
| if (ks.getEntry("foobar", null) != null) { |
| throw new SecurityException("expected null entry"); |
| } else { |
| System.out.println("test " + testnum++ + " passed"); |
| } |
| |
| // deleteEntry |
| ks.deleteEntry("pk1"); |
| ks.deleteEntry("pk3"); |
| ks.deleteEntry("sk2"); |
| ks.deleteEntry("sk3"); |
| System.out.println("test " + testnum++ + " passed"); |
| |
| // aliases |
| enu = ks.aliases(); |
| count = 0; |
| while (enu.hasMoreElements()) { |
| count++; |
| System.out.println("alias " + |
| count + |
| " = " + |
| (String)enu.nextElement()); |
| } |
| if (count == 3) { |
| System.out.println("test " + testnum++ + " passed"); |
| } else { |
| throw new SecurityException("expected 3 aliases"); |
| } |
| |
| // size |
| if (ks.size() == 3) { |
| System.out.println("test " + testnum++ + " passed"); |
| } else { |
| throw new SecurityException("expected size 6"); |
| } |
| |
| // entryInstanceOf sk1 |
| if (!ks.entryInstanceOf("sk1", KeyStore.PrivateKeyEntry.class)) { |
| System.out.println("test " + testnum++ + " passed"); |
| } else { |
| throw new SecurityException("expected pke"); |
| } |
| |
| // entryInstanceOf sk4 |
| if (!ks.entryInstanceOf("sk4", KeyStore.PrivateKeyEntry.class)) { |
| System.out.println("test " + testnum++ + " passed"); |
| } else { |
| throw new SecurityException("expected pke"); |
| } |
| |
| // entryInstanceOf pk2 |
| if (ks.entryInstanceOf("pk2", KeyStore.PrivateKeyEntry.class)) { |
| System.out.println("test " + testnum++ + " passed"); |
| } else { |
| throw new SecurityException("expected pke"); |
| } |
| System.out.println("test " + testnum++ + " passed"); |
| |
| return testnum; |
| } |
| } |