2 * Copyright (c) 2016, 2017 Inocybe Technologies. and others. All rights reserved.
4 * This program and the accompanying materials are made available under the
5 * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6 * and is available at http://www.eclipse.org/legal/epl-v10.html
9 package org.opendaylight.aaa.cert.test;
11 import static org.junit.Assert.assertNotNull;
12 import static org.junit.Assert.assertTrue;
14 import java.security.Security;
15 import java.util.concurrent.ExecutionException;
16 import org.bouncycastle.jce.provider.BouncyCastleProvider;
17 import org.junit.Test;
18 import org.junit.runner.RunWith;
19 import org.opendaylight.aaa.cert.impl.AaaCertProvider;
20 import org.opendaylight.aaa.cert.impl.KeyStoreConstant;
21 import org.opendaylight.yang.gen.v1.urn.opendaylight.yang.aaa.cert.rev151126.aaa.cert.service.config.CtlKeystore;
22 import org.opendaylight.yang.gen.v1.urn.opendaylight.yang.aaa.cert.rev151126.aaa.cert.service.config.CtlKeystoreBuilder;
23 import org.opendaylight.yang.gen.v1.urn.opendaylight.yang.aaa.cert.rev151126.aaa.cert.service.config.TrustKeystore;
24 import org.opendaylight.yang.gen.v1.urn.opendaylight.yang.aaa.cert.rev151126.aaa.cert.service.config.TrustKeystoreBuilder;
25 import org.powermock.core.classloader.annotations.PowerMockIgnore;
26 import org.powermock.modules.junit4.PowerMockRunner;
28 @RunWith(PowerMockRunner.class)
29 @PowerMockIgnore("javax.xml.*")
30 public class AaaCertProviderTest {
32 private static AaaCertProvider aaaCertProv;
33 private static CtlKeystore ctlKeyStore;
34 private static TrustKeystore trustKeyStore;
36 private final String dummyAlias = TestUtils.dummyAlias;
37 private final String dummyCert = TestUtils.dummyCert;
40 public void testCertificate() throws InterruptedException, ExecutionException {
42 String name = "CN=ODL, OU=Dev, O=LinuxFoundation, L=QC Montreal, C=CA";
43 Security.addProvider(new BouncyCastleProvider());
44 ctlKeyStore = new CtlKeystoreBuilder()
47 .setName("ctlTest.jks")
48 .setStorePassword("passWord")
49 .setValidity(KeyStoreConstant.DEFAULT_VALIDITY)
50 .setKeyAlg(KeyStoreConstant.DEFAULT_KEY_ALG)
51 .setKeysize(KeyStoreConstant.DEFAULT_KEY_SIZE)
52 .setSignAlg(KeyStoreConstant.DEFAULT_SIGN_ALG)
54 trustKeyStore = new TrustKeystoreBuilder()
55 .setName("trustTest.jks")
56 .setStorePassword("passWord")
58 aaaCertProv = new AaaCertProvider(ctlKeyStore, trustKeyStore);
61 final CtlKeystore ctl = aaaCertProv.getOdlKeyStoreInfo();
63 assertTrue(ctl.equals(ctlKeyStore));
65 // getTrustKeyStoreInfo
66 final TrustKeystore trust = aaaCertProv.getTrustKeyStoreInfo();
68 assertTrue(trust.equals(trustKeyStore));
71 boolean result = aaaCertProv.createKeyStores();
73 assertNotNull(aaaCertProv.getODLKeyStore());
74 assertNotNull(aaaCertProv.getTrustKeyStore());
76 // genODLCertificateReq
77 String cert = aaaCertProv.genODLKeyStoreCertificateReq(true);
78 assertTrue(cert != null && !cert.isEmpty());
79 assertTrue(cert.contains(KeyStoreConstant.BEGIN_CERTIFICATE_REQUEST));
80 cert = aaaCertProv.genODLKeyStoreCertificateReq(false);
81 assertTrue(!cert.contains(KeyStoreConstant.BEGIN_CERTIFICATE_REQUEST));
83 // genODLCertificateReqWithPassword
84 cert = aaaCertProv.genODLKeyStoreCertificateReq(ctlKeyStore.getStorePassword(), true);
85 assertTrue(cert != null && !cert.isEmpty());
86 assertTrue(cert.contains(KeyStoreConstant.BEGIN_CERTIFICATE_REQUEST));
89 cert = aaaCertProv.getODLKeyStoreCertificate(true);
90 assertTrue(cert != null && !cert.isEmpty());
91 assertTrue(cert.contains(KeyStoreConstant.END_CERTIFICATE));
92 cert = aaaCertProv.getODLKeyStoreCertificate(false);
93 assertTrue(!cert.contains(KeyStoreConstant.END_CERTIFICATE));
95 // getODLCerticateWithPassword
96 cert = aaaCertProv.getODLKeyStoreCertificate(ctlKeyStore.getStorePassword(), true);
97 assertTrue(cert != null && !cert.isEmpty());
98 assertTrue(cert.contains(KeyStoreConstant.END_CERTIFICATE));
100 // addCertificateTrustStore
101 result = aaaCertProv.addCertificateTrustStore(dummyAlias, dummyCert);
103 cert = aaaCertProv.getCertificateTrustStore(dummyAlias, true);
104 assertTrue(cert != null && !cert.isEmpty());
106 // addCertificateTrustStoreWithPassword
107 result = aaaCertProv.addCertificateTrustStore(trustKeyStore.getStorePassword(), dummyAlias, dummyCert);
109 cert = aaaCertProv.getCertificateTrustStore(dummyAlias, true);
110 assertTrue(cert != null && !cert.isEmpty());
112 // getCertificateTrustStore
113 cert = aaaCertProv.getCertificateTrustStore(dummyAlias, true);
114 assertTrue(cert != null && !cert.isEmpty());
115 cert = aaaCertProv.getCertificateTrustStore(dummyAlias, false);
116 assertTrue(!cert.contains(KeyStoreConstant.END_CERTIFICATE));
118 // getCertificateWithPasswordTrusStore
119 cert = aaaCertProv.getCertificateTrustStore(trustKeyStore.getStorePassword(), dummyAlias, true);
120 assertTrue(cert != null && !cert.isEmpty());