Package io.apigee.trireme.crypto.crypto.test

Source Code of io.apigee.trireme.crypto.crypto.test.KeyStoreTest

package io.apigee.trireme.crypto.crypto.test;

import io.apigee.trireme.core.internal.CryptoException;
import io.apigee.trireme.core.internal.CryptoService;
import io.apigee.trireme.crypto.CryptoServiceImpl;
import io.apigee.trireme.crypto.TriremeProvider;
import io.apigee.trireme.crypto.ProviderLoader;
import org.junit.BeforeClass;
import org.junit.Test;

import static org.junit.Assert.*;

import java.io.IOException;
import java.io.InputStream;
import java.security.GeneralSecurityException;
import java.security.KeyPair;
import java.security.KeyStore;
import java.security.KeyStoreException;
import java.security.NoSuchProviderException;
import java.security.Provider;
import java.security.Security;
import java.security.cert.Certificate;

public class KeyStoreTest
{
    private static CryptoService service;

    @BeforeClass
    public static void init()
    {
        ProviderLoader.get().ensureLoaded();
        service = new CryptoServiceImpl();
    }

    @Test
    public void testCreateProvider()
        throws KeyStoreException, NoSuchProviderException
    {
        KeyStore ks = KeyStore.getInstance(TriremeProvider.ALGORITHM, TriremeProvider.NAME);
        assertNotNull(ks);
    }

    @Test
    public void testEnumerateProviders()
    {
        boolean foundIt = false;

        for (Provider p : Security.getProviders()) {
            if (TriremeProvider.NAME.equals(p.getName())) {
                for (Provider.Service s : p.getServices()) {
                    if ("KeyStore".equals(s.getType())) {
                        foundIt = true;
                    }
                }
            }
        }
        assertTrue(foundIt);
    }

    @Test
    public void testLoadRsaKey()
        throws IOException, CryptoException, GeneralSecurityException
    {
        final String ALIAS = "key";
        KeyStore ks = KeyStore.getInstance(TriremeProvider.ALGORITHM, TriremeProvider.NAME);
        ks.load(null, null);

        InputStream is = PemReadTest.class.getResourceAsStream("/rsakeypair.pem");
        KeyPair kp = service.readKeyPair("RSA", is, null);
        InputStream is2 = PemReadTest.class.getResourceAsStream("/rsacert.pem");
        Certificate cert = service.readCertificate(is2);
        ks.setKeyEntry(ALIAS, kp.getPrivate(), null, new Certificate[] { cert });

        assertTrue(ks.containsAlias(ALIAS));
        assertEquals(kp.getPrivate(), ks.getKey(ALIAS, null));
        assertTrue(ks.isKeyEntry(ALIAS));
        assertFalse(ks.isCertificateEntry(ALIAS));
    }

    @Test
    public void testLoadRsaCert()
        throws IOException, CryptoException, GeneralSecurityException
    {
        final String ALIAS = "cert";
        KeyStore ks = KeyStore.getInstance(TriremeProvider.ALGORITHM, TriremeProvider.NAME);
        ks.load(null, null);

        InputStream is2 = PemReadTest.class.getResourceAsStream("/rsacert.pem");
        Certificate cert = service.readCertificate(is2);
        ks.setCertificateEntry(ALIAS, cert);

        assertTrue(ks.containsAlias(ALIAS));
        assertTrue(ks.isCertificateEntry(ALIAS));
        assertFalse(ks.isKeyEntry(ALIAS));
        assertEquals(ks.getCertificate(ALIAS), cert);
    }
}
TOP

Related Classes of io.apigee.trireme.crypto.crypto.test.KeyStoreTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.