/* * Copyright (C) 2012 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.motorolamobility.studio.android.certmanager.core; import java.io.File; import java.io.IOException; import java.security.KeyPair; import java.security.KeyStore; import java.security.KeyStore.PrivateKeyEntry; import java.security.KeyStoreException; import java.security.NoSuchAlgorithmException; import java.security.cert.CertificateException; import java.security.cert.X509Certificate; import java.util.HashMap; import java.util.Map; import junit.framework.TestCase; import org.bouncycastle.operator.OperatorCreationException; import org.junit.Test; import com.motorolamobility.studio.android.certmanager.exception.InvalidPasswordException; import com.motorolamobility.studio.android.certmanager.exception.KeyStoreManagerException; import com.motorolamobility.studio.android.certmanager.ui.model.CertificateDetailsInfo; public class KeyStoreUtilsTest extends TestCase { File keyStoreFile = null; private String passwd; /* (non-Javadoc) * @see junit.framework.TestCase#setUp() */ @Override protected void setUp() throws Exception { keyStoreFile = File.createTempFile("testKeystore", ".tmp"); passwd = "passwd"; super.setUp(); } @Test public void testCreateKeystore() { KeyStore keyStore = null; try { keyStore = KeyStoreUtils.createKeystore(keyStoreFile, passwd.toCharArray()); } catch (KeyStoreManagerException e) { assert (false); } catch (InvalidPasswordException e) { assert (false); } assert (keyStore != null); assert (keyStoreFile.length() > 0); } @Test public void testLoadKeyStore() { try { KeyStore keyStore = KeyStoreUtils.loadKeystore(keyStoreFile, passwd.toCharArray(), "JKS"); keyStore.aliases(); } catch (KeyStoreException e) { assert false; } catch (KeyStoreManagerException e) { assert false; } catch (InvalidPasswordException e) { assert false; } } @Test public void testCreateCertificate() { try { KeyStore keyStore = KeyStoreUtils.loadKeystore(keyStoreFile, passwd.toCharArray(), "JKS"); KeyPair keyPair = KeyStoreUtils.genKeyPair(); X509Certificate x509Certificate = KeyStoreUtils.createX509Certificate(keyPair, new CertificateDetailsInfo("test", "nome", "org", "orgUn", "testUni", "country", "Estate", "30", "")); PrivateKeyEntry privateKeyEntry = KeyStoreUtils.createPrivateKeyEntry(keyPair, x509Certificate); KeyStoreUtils.addEntry(keyStore, passwd.toCharArray(), keyStoreFile, "aliasTest", privateKeyEntry, "aliaspass".toCharArray()); } catch (Exception e) { assert (false); } } @Test public void testChangePasswd() { KeyStore keyStore = null; try { keyStore = KeyStoreUtils.loadKeystore(keyStoreFile, passwd.toCharArray()); } catch (KeyStoreManagerException e) { assert false; } catch (InvalidPasswordException e) { assert false; } File keyStoreFile2 = new File(keyStoreFile + "_2"); try { KeyStoreUtils.changeKeystorePasswd(keyStore, keyStoreFile2, passwd.toCharArray(), "newPasswd2".toCharArray()); } catch (KeyStoreManagerException e) { assert (false); } assert (keyStore != null); assert (keyStoreFile2.length() > 0); } @Test public void testChangeKsType() { try { KeyStoreUtils.createKeystore(keyStoreFile, "JKS", passwd.toCharArray()); KeyStoreUtils.changeKeyStoreType(keyStoreFile, passwd.toCharArray(), "JKS", "JCEKS", new HashMap<String, String>(0)); } catch (KeyStoreManagerException e) { e.printStackTrace(); } catch (InvalidPasswordException e) { e.printStackTrace(); } } @Test public void testImportKeys() { File keyStoreFile1 = new File(keyStoreFile.getAbsolutePath() + "_import"); try { KeyStoreUtils.createKeystore(keyStoreFile1, "pass1".toCharArray()); } catch (KeyStoreManagerException e) { e.printStackTrace(); } catch (InvalidPasswordException e) { e.printStackTrace(); } try { KeyStore keyStore = KeyStoreUtils.loadKeystore(keyStoreFile, passwd.toCharArray(), "JKS"); KeyPair keyPair = KeyStoreUtils.genKeyPair(); X509Certificate x509Certificate = KeyStoreUtils.createX509Certificate(keyPair, new CertificateDetailsInfo("test", "nome", "org", "orgUn", "testUni", "country", "Estate", "30", "")); PrivateKeyEntry privateKeyEntry = KeyStoreUtils.createPrivateKeyEntry(keyPair, x509Certificate); KeyStoreUtils.addEntry(keyStore, passwd.toCharArray(), keyStoreFile, "aliasTest", privateKeyEntry, passwd.toCharArray()); keyStore = KeyStoreUtils.loadKeystore(keyStoreFile, passwd.toCharArray(), "JKS"); Map<String, String> aliases = new HashMap<String, String>(1); aliases.put("aliasTest", passwd); // KeyStoreUtils.importKeys(keyStore1, keyStoreFile1, "pass1".toCharArray(), keyStore, keyStoreFile1 // passwd.toCharArray(), aliases); } catch (KeyStoreManagerException e) { e.printStackTrace(); } catch (InvalidPasswordException e) { e.printStackTrace(); } catch (NoSuchAlgorithmException e) { e.printStackTrace(); } catch (OperatorCreationException e) { e.printStackTrace(); } catch (CertificateException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } }