diff --git a/pom.xml b/pom.xml
index 2cf587a..3764720 100644
--- a/pom.xml
+++ b/pom.xml
@@ -7,12 +7,12 @@
4.0.0
com.siemens.pki
LightweightCmpRa
- 4.0.3
+ 4.2.0_PQ
UTF-8
.
- 2.44.2
- 0.8.12
+ 2.46.1
+ 0.8.13
3.3.1
11
11
@@ -71,7 +71,7 @@
org.apache.maven.plugins
maven-surefire-plugin
- 3.5.2
+ 3.5.3
**/local/**
@@ -81,7 +81,7 @@
org.apache.maven.plugins
maven-javadoc-plugin
- 3.11.2
+ 3.11.3
com.diffplug.spotless
@@ -172,7 +172,7 @@
com.siemens.pki
CmpRaComponent
- 4.2.0
+ 4.2.0_PQ
jakarta.xml.bind
@@ -192,32 +192,32 @@
org.slf4j
slf4j-api
- 2.0.16
+ 2.0.17
org.slf4j
slf4j-simple
- 2.0.16
+ 2.0.17
org.eclipse.californium
californium-core
- 3.13.0
+ 3.14.0
com.fasterxml.jackson.jaxrs
jackson-jaxrs-yaml-provider
- 2.18.2
+ 2.20.0
com.fasterxml.jackson.core
jackson-databind
- 2.18.2
+ 2.20.0
commons-cli
commons-cli
- 1.9.0
+ 1.10.0
org.jacoco
@@ -231,7 +231,7 @@
CVE-2021-26291.-->
org.apache.maven.shared
file-management
- 3.1.0
+ 3.2.0
diff --git a/src/main/java/com/siemens/pki/lightweightcmpclient/configuration/EnrollmentContextImpl.java b/src/main/java/com/siemens/pki/lightweightcmpclient/configuration/EnrollmentContextImpl.java
index 251dbde..24832b4 100644
--- a/src/main/java/com/siemens/pki/lightweightcmpclient/configuration/EnrollmentContextImpl.java
+++ b/src/main/java/com/siemens/pki/lightweightcmpclient/configuration/EnrollmentContextImpl.java
@@ -66,7 +66,12 @@ private KeyPair createKeyPair(final String upperKeyType) throws NoSuchAlgorithmE
if (upperKeyType.startsWith("ED")) {
return KeyPairGeneratorFactory.getEdDsaKeyPairGenerator(keyType).generateKeyPair();
}
- return KeyPairGeneratorFactory.getEcKeyPairGenerator(keyType).generateKeyPair();
+ try {
+ return KeyPairGeneratorFactory.getEcKeyPairGenerator(keyType).generateKeyPair();
+ } catch (GeneralSecurityException ex) {
+ return KeyPairGeneratorFactory.getGenericKeyPairGenerator(upperKeyType)
+ .generateKeyPair();
+ }
}
@Override
diff --git a/src/main/java/com/siemens/pki/lightweightcmpclient/main/CliCmpClient.java b/src/main/java/com/siemens/pki/lightweightcmpclient/main/CliCmpClient.java
index ed1d6d2..1f8db86 100644
--- a/src/main/java/com/siemens/pki/lightweightcmpclient/main/CliCmpClient.java
+++ b/src/main/java/com/siemens/pki/lightweightcmpclient/main/CliCmpClient.java
@@ -47,11 +47,11 @@
import org.apache.commons.cli.CommandLine;
import org.apache.commons.cli.CommandLineParser;
import org.apache.commons.cli.DefaultParser;
-import org.apache.commons.cli.HelpFormatter;
import org.apache.commons.cli.Option;
import org.apache.commons.cli.OptionGroup;
import org.apache.commons.cli.Options;
import org.apache.commons.cli.ParseException;
+import org.apache.commons.cli.help.HelpFormatter;
import org.bouncycastle.asn1.cmp.PKIBody;
public class CliCmpClient {
@@ -317,7 +317,7 @@ private static int doGetCertificateRequestTemplate(final CommandLine cmd, final
}
private static int doGetCrls(final CommandLine cmd, final CmpClient client)
- throws java.text.ParseException, CRLException, IOException {
+ throws java.text.ParseException, IOException, GeneralSecurityException {
List crls = null;
if (cmd.hasOption(OPTION_oldCRL)) {
final X509CRL crl = CredentialLoader.loadCRLs(new File(cmd.getOptionValue(OPTION_oldCRL)).toURI())
@@ -376,10 +376,9 @@ public static void main(final String[] args) {
System.exit(ret);
}
- private static void printHelp() {
- final HelpFormatter formatter = new HelpFormatter();
- formatter.setOptionComparator(null);
- formatter.printHelp("java -jar path/to/CmpClient.jar", cliOptions);
+ private static void printHelp() throws IOException {
+ final HelpFormatter formatter = HelpFormatter.builder().get();
+ formatter.printHelp("java -jar path/to/CmpClient.jar", null, cliOptions, null, true);
}
public static int runClient(final String... args) {
@@ -486,7 +485,12 @@ public static int runClient(final String... args) {
return 2;
} catch (final ParseException | java.text.ParseException e) {
System.err.println("Client failed. Reason: " + e.getMessage());
- printHelp();
+ try {
+ printHelp();
+ } catch (IOException e1) {
+ // TODO Auto-generated catch block
+ e1.printStackTrace();
+ }
return 3;
} catch (final Throwable e) {
System.err.println("Client failed. Reason: " + e.getCause());
diff --git a/src/main/java/com/siemens/pki/lightweightcmpra/main/RA.java b/src/main/java/com/siemens/pki/lightweightcmpra/main/RA.java
index 23498dc..4605f0a 100644
--- a/src/main/java/com/siemens/pki/lightweightcmpra/main/RA.java
+++ b/src/main/java/com/siemens/pki/lightweightcmpra/main/RA.java
@@ -26,11 +26,14 @@
import com.siemens.pki.lightweightcmpra.downstream.DownstreamInterfaceFactory;
import com.siemens.pki.lightweightcmpra.upstream.UpstreamInterface;
import com.siemens.pki.lightweightcmpra.upstream.UpstreamInterfaceFactory;
+import java.security.Security;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
import java.util.Objects;
import java.util.function.Supplier;
+import org.bouncycastle.jce.provider.BouncyCastleProvider;
+import org.bouncycastle.pqc.jcajce.provider.BouncyCastlePQCProvider;
/**
* main class
@@ -38,6 +41,11 @@
*/
public class RA {
+ static {
+ Security.addProvider(new BouncyCastleProvider());
+ Security.addProvider(new BouncyCastlePQCProvider());
+ }
+
private static class CertProfileBodyTypeTupel {
private final String certProfile;
private final int bodyType;
diff --git a/src/test/java/com/siemens/pki/lightweightcmpclient/test/DelayedEnrollmentTestcaseBase.java b/src/test/java/com/siemens/pki/lightweightcmpclient/test/DelayedEnrollmentTestcaseBase.java
index 57eef7f..47009cf 100644
--- a/src/test/java/com/siemens/pki/lightweightcmpclient/test/DelayedEnrollmentTestcaseBase.java
+++ b/src/test/java/com/siemens/pki/lightweightcmpclient/test/DelayedEnrollmentTestcaseBase.java
@@ -32,14 +32,14 @@ public class DelayedEnrollmentTestcaseBase extends EnrollmentTestcaseBase {
@BeforeClass
public static void setupRas() throws GeneralSecurityException, InterruptedException, Exception {
- TestUtils.createDirectories("./target/CmpTest/Downstream", "./target/CmpTest/Upstream");
+ TestUtils.createDirectories("./target/CmpTest/Downstream_REV", "./target/CmpTest/Upstream_REV");
initTestbed("DelayedEnrollmentRaTestConfig.yaml", "DelayedEnrollmentLraTestConfig.yaml");
}
@AfterClass
public static void stopAllRas() {
RA.stopAllRas();
- TestUtils.removeDirectories("./target/CmpTest/Downstream", "./target/CmpTest/Upstream");
+ TestUtils.removeDirectories("./target/CmpTest/Downstream_REV", "./target/CmpTest/Upstream_REV");
}
@After
diff --git a/src/test/java/com/siemens/pki/lightweightcmpclient/test/TestEnrollmentForAllKeyTypes.java b/src/test/java/com/siemens/pki/lightweightcmpclient/test/TestEnrollmentForAllKeyTypes.java
new file mode 100644
index 0000000..fc389bb
--- /dev/null
+++ b/src/test/java/com/siemens/pki/lightweightcmpclient/test/TestEnrollmentForAllKeyTypes.java
@@ -0,0 +1,76 @@
+/*
+ * Copyright (c) 2020 Siemens AG
+ *
+ * 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.
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ */
+package com.siemens.pki.lightweightcmpclient.test;
+
+import com.siemens.pki.lightweightcmpra.main.RA;
+import java.security.GeneralSecurityException;
+import java.util.Arrays;
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.Parameterized;
+import org.junit.runners.Parameterized.Parameters;
+
+@RunWith(Parameterized.class)
+public class TestEnrollmentForAllKeyTypes extends EnrollmentTestcaseBase {
+
+ @Parameters(name = "{0}")
+ public static Iterable