From 1e5c2de3a4aafb476070478b27a18caf9efc051b Mon Sep 17 00:00:00 2001 From: Thomas <> Date: Mon, 8 May 2023 17:24:41 +0200 Subject: feat(core): add in-line method to KeyStoreFactory The keystore type 'inline' can be used to build a keystore by using PEM encoded certificate and key files. Example: pkcs12:keystore?private=certs/key.pem&cert=certs/certificate.pem --- .../test/credentials/EaafKeyStoreFactoryTest.java | 83 ++++++++++++++++++++++ 1 file changed, 83 insertions(+) (limited to 'eaaf_core_utils/src/test/java/at/gv/egiz/eaaf/core/test/credentials/EaafKeyStoreFactoryTest.java') diff --git a/eaaf_core_utils/src/test/java/at/gv/egiz/eaaf/core/test/credentials/EaafKeyStoreFactoryTest.java b/eaaf_core_utils/src/test/java/at/gv/egiz/eaaf/core/test/credentials/EaafKeyStoreFactoryTest.java index 3e82c510..932beb31 100644 --- a/eaaf_core_utils/src/test/java/at/gv/egiz/eaaf/core/test/credentials/EaafKeyStoreFactoryTest.java +++ b/eaaf_core_utils/src/test/java/at/gv/egiz/eaaf/core/test/credentials/EaafKeyStoreFactoryTest.java @@ -1,5 +1,8 @@ package at.gv.egiz.eaaf.core.test.credentials; +import static org.junit.Assert.assertThrows; +import static org.junit.jupiter.api.Assertions.assertEquals; + import java.security.Key; import java.security.KeyStore; import java.security.KeyStoreException; @@ -383,6 +386,86 @@ public class EaafKeyStoreFactoryTest { } + @Test + @DirtiesContext(methodMode = MethodMode.BEFORE_METHOD) + public void inlineKeyStoreMissingPath() throws EaafException { + final EaafKeyStoreFactory keyStoreFactory = context.getBean(EaafKeyStoreFactory.class); + Assert.assertFalse("HSM Facade state wrong", keyStoreFactory.isHsmFacadeInitialized()); + + final KeyStoreConfiguration keyStoreConfig = new KeyStoreConfiguration(); + keyStoreConfig.setKeyStoreType(KeyStoreType.INLINE); + + EaafConfigurationException error = assertThrows("wrong exception", EaafConfigurationException.class, + () -> keyStoreConfig.validate()); + assertEquals("internal.keystore.07", error.getErrorId(), "wrong errorcode"); + + } + + @Test + @DirtiesContext(methodMode = MethodMode.BEFORE_METHOD) + public void inlineKeyStoreSuccess() throws EaafException { + final EaafKeyStoreFactory keyStoreFactory = context.getBean(EaafKeyStoreFactory.class); + Assert.assertFalse("HSM Facade state wrong", keyStoreFactory.isHsmFacadeInitialized()); + + final KeyStoreConfiguration keyStoreConfig = new KeyStoreConfiguration(); + keyStoreConfig.setKeyStoreType(KeyStoreType.INLINE); + keyStoreConfig.setSoftKeyStoreFilePath( + "pkcs12:keystore?private=src/test/resources/data/certs/privateKey.pem" + + "&cert=src/test/resources/data/certs/selfSignedCertificate.pem" + + "&cert=src/test/resources/data/certs/issuingCa.pem&cert=certs/BRZStammCA201.pem"); + + keyStoreConfig.validate(); + + final Pair keyStore = keyStoreFactory.buildNewKeyStore(keyStoreConfig); + Assert.assertNotNull("KeyStore is null", keyStore); + Assert.assertNotNull("KeyStore is null", keyStore.getFirst()); + Assert.assertNull("KeyStore is null", keyStore.getSecond()); + + } + + @Test + @DirtiesContext(methodMode = MethodMode.BEFORE_METHOD) + public void inlineKeyStoreEccSuccess() throws EaafException { + final EaafKeyStoreFactory keyStoreFactory = context.getBean(EaafKeyStoreFactory.class); + Assert.assertFalse("HSM Facade state wrong", keyStoreFactory.isHsmFacadeInitialized()); + + final KeyStoreConfiguration keyStoreConfig = new KeyStoreConfiguration(); + keyStoreConfig.setKeyStoreType(KeyStoreType.INLINE); + keyStoreConfig.setSoftKeyStoreFilePath( + "pkcs12:keystore?private=src/test/resources/data/certs/privateEcKey.pem" + + "&cert=src/test/resources/data/certs/selfSignedEcCertificate.pem" + + "&cert=src/test/resources/data/certs/issuingCa.pem&cert=certs/BRZStammCA201.pem"); + + keyStoreConfig.validate(); + + final Pair keyStore = keyStoreFactory.buildNewKeyStore(keyStoreConfig); + Assert.assertNotNull("KeyStore is null", keyStore); + Assert.assertNotNull("KeyStore is null", keyStore.getFirst()); + Assert.assertNull("KeyStore is null", keyStore.getSecond()); + + } + + @Test + @DirtiesContext(methodMode = MethodMode.BEFORE_METHOD) + public void inlineKeyStoreWrongKeys() throws EaafException { + final EaafKeyStoreFactory keyStoreFactory = context.getBean(EaafKeyStoreFactory.class); + Assert.assertFalse("HSM Facade state wrong", keyStoreFactory.isHsmFacadeInitialized()); + + final KeyStoreConfiguration keyStoreConfig = new KeyStoreConfiguration(); + keyStoreConfig.setKeyStoreType(KeyStoreType.INLINE); + keyStoreConfig.setSoftKeyStoreFilePath( + "pkcs12:keystore?private=src/test/resources/data/certs/privateNotExist.pem" + + "&cert=src/test/resources/data/certs/selfSignedCertificate.pem" + + "&cert=src/test/resources/data/certs/issuingCa.pem&cert=certs/BRZStammCA201.pem"); + + keyStoreConfig.validate(); + + EaafConfigurationException error = assertThrows("wrong exception", EaafConfigurationException.class, + () -> keyStoreFactory.buildNewKeyStore(keyStoreConfig)); + assertEquals("internal.keystore.15", error.getErrorId(), "wrong errorcode"); + + } + @Test @DirtiesContext(methodMode = MethodMode.BEFORE_METHOD) public void symmetricSoftwareKeyWithOutConfig() { -- cgit v1.2.3