/***********************************************************************************
*
* Copyright (c) 2015 Kamil Baczkowicz
*
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* and Eclipse Distribution License v1.0 which accompany this distribution.
*
* The Eclipse Public License is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* The Eclipse Distribution License is available at
* http://www.eclipse.org/org/documents/edl-v10.php.
*
* Contributors:
*
* Kamil Baczkowicz - initial API and implementation and/or initial documentation
*
*/
package pl.baczkowicz.spy.security;
import java.io.IOException;
import java.security.KeyStoreException;
import java.security.NoSuchAlgorithmException;
import java.security.Security;
import java.security.cert.CertificateException;
import org.bouncycastle.jce.provider.BouncyCastleProvider;
import org.junit.Test;
import pl.baczkowicz.spy.common.generated.KeyStoreTypeEnum;
public class SecureSocketUtilsTest
{
@Test
public void testGetKeyStoreInstance() throws KeyStoreException
{
SecureSocketUtils.getKeyStoreInstance(KeyStoreTypeEnum.DEFAULT);
}
@Test
public void testGetKeyStoreInstanceBaseTypes() throws KeyStoreException
{
SecureSocketUtils.getKeyStoreInstance(KeyStoreTypeEnum.JKS);
SecureSocketUtils.getKeyStoreInstance(KeyStoreTypeEnum.JCEKS);
SecureSocketUtils.getKeyStoreInstance(KeyStoreTypeEnum.PKCS_12);
}
@Test
public void testGetKeyStoreInstanceBKSType() throws KeyStoreException
{
// Try by supplying a provider
SecureSocketUtils.getKeyStoreInstance(KeyStoreTypeEnum.BKS, new BouncyCastleProvider());
// Try be registering a provider
Security.addProvider(new BouncyCastleProvider());
SecureSocketUtils.getKeyStoreInstance(KeyStoreTypeEnum.BKS);
}
@Test
public void testLoadingDefaultKeyStore() throws KeyStoreException, NoSuchAlgorithmException, CertificateException, IOException
{
SecureSocketUtils.loadKeystore("src/test/resources/keystores/public_brokers.jks", "mqtt-spy", KeyStoreTypeEnum.DEFAULT);
}
@Test (expected = IOException.class)
public void testInvalidFormatForDefaultType() throws KeyStoreException, NoSuchAlgorithmException, CertificateException, IOException
{
SecureSocketUtils.loadKeystore("src/test/resources/keystores/public_brokers.jceks", "mqtt-spy", KeyStoreTypeEnum.DEFAULT);
}
@Test
public void testLoadingKeyStoreForType() throws KeyStoreException, NoSuchAlgorithmException, CertificateException, IOException
{
SecureSocketUtils.loadKeystore("src/test/resources/keystores/public_brokers.jks", "mqtt-spy", KeyStoreTypeEnum.JKS);
SecureSocketUtils.loadKeystore("src/test/resources/keystores/public_brokers.jceks", "mqtt-spy", KeyStoreTypeEnum.JCEKS);
SecureSocketUtils.loadKeystore("src/test/resources/keystores/public_brokers.p12", "mqtt-spy", KeyStoreTypeEnum.PKCS_12);
}
@Test
public void testLoadingBksKeyStore() throws KeyStoreException, NoSuchAlgorithmException, CertificateException, IOException
{
Security.addProvider(new BouncyCastleProvider());
SecureSocketUtils.loadKeystore("src/test/resources/keystores/public_brokers.bks", "mqtt-spy", KeyStoreTypeEnum.BKS);
}
@Test
public void testLoadingKeyStores() throws KeyStoreException, NoSuchAlgorithmException, CertificateException, IOException
{
testKeyStore("src/test/resources/keystores/public_brokers.jks");
testKeyStore("src/test/resources/keystores/public_brokers.jceks");
testKeyStore("src/test/resources/keystores/public_brokers.p12");
Security.addProvider(new BouncyCastleProvider());
testKeyStore("src/test/resources/keystores/public_brokers.bks");
}
private void testKeyStore(final String name) throws KeyStoreException, NoSuchAlgorithmException, CertificateException, IOException
{
SecureSocketUtils.loadKeystore(name, "mqtt-spy", SecureSocketUtils.getTypeFromFilename(name));
}
}