This is an automated email from the ASF dual-hosted git repository. acosentino pushed a commit to branch main in repository https://gitbox.apache.org/repos/asf/camel.git
The following commit(s) were added to refs/heads/main by this push: new 9f8605b19f9 CAMEL-22016 - Camel-PQC: Check if BC and BCPQC Bouncycastle Providers are installed before installing or removing (#17864) 9f8605b19f9 is described below commit 9f8605b19f90ae14a0375ee56a3967d3e9831bc6 Author: Andrea Cosentino <anco...@gmail.com> AuthorDate: Thu Apr 24 17:58:24 2025 +0200 CAMEL-22016 - Camel-PQC: Check if BC and BCPQC Bouncycastle Providers are installed before installing or removing (#17864) Signed-off-by: Andrea Cosentino <anco...@gmail.com> --- .../org/apache/camel/component/pqc/PQCEndpoint.java | 17 +++++++++++++---- .../component/pqc/crypto/PQCDefaultFalconMaterial.java | 8 ++++++++ .../component/pqc/crypto/PQCDefaultLMSMaterial.java | 15 +++++++++------ .../component/pqc/crypto/PQCDefaultMLDSAMaterial.java | 16 +++++++++------- .../component/pqc/crypto/PQCDefaultPicnicMaterial.java | 8 ++++++++ .../component/pqc/crypto/PQCDefaultRainbowMaterial.java | 8 ++++++++ .../component/pqc/crypto/PQCDefaultSLHDSAMaterial.java | 16 +++++++++------- .../component/pqc/crypto/PQCDefaultXMSSMaterial.java | 16 +++++++++------- .../pqc/crypto/kem/PQCDefaultBIKEMaterial.java | 8 ++++++++ .../pqc/crypto/kem/PQCDefaultCMCEMaterial.java | 8 ++++++++ .../pqc/crypto/kem/PQCDefaultFRODOMaterial.java | 8 ++++++++ .../component/pqc/crypto/kem/PQCDefaultHQCMaterial.java | 8 ++++++++ .../pqc/crypto/kem/PQCDefaultMLKEMMaterial.java | 8 ++++++++ .../pqc/crypto/kem/PQCDefaultNTRULPRimeMaterial.java | 8 ++++++++ .../pqc/crypto/kem/PQCDefaultNTRUMaterial.java | 8 ++++++++ .../pqc/crypto/kem/PQCDefaultSABERMaterial.java | 8 ++++++++ 16 files changed, 137 insertions(+), 31 deletions(-) diff --git a/components/camel-pqc/src/main/java/org/apache/camel/component/pqc/PQCEndpoint.java b/components/camel-pqc/src/main/java/org/apache/camel/component/pqc/PQCEndpoint.java index a5c8d1689ea..235813f35ca 100644 --- a/components/camel-pqc/src/main/java/org/apache/camel/component/pqc/PQCEndpoint.java +++ b/components/camel-pqc/src/main/java/org/apache/camel/component/pqc/PQCEndpoint.java @@ -27,6 +27,7 @@ import org.apache.camel.spi.UriEndpoint; import org.apache.camel.spi.UriParam; import org.apache.camel.support.DefaultEndpoint; import org.bouncycastle.jce.provider.BouncyCastleProvider; +import org.bouncycastle.pqc.jcajce.provider.BouncyCastlePQCProvider; /** * Post Quantum Computing Signature and Verification component. @@ -62,14 +63,22 @@ public class PQCEndpoint extends DefaultEndpoint { @Override public void doStart() throws Exception { super.doStart(); - Security.addProvider(new BouncyCastleProvider()); - Security.addProvider(new BouncyCastleProvider()); + if (Security.getProvider(BouncyCastleProvider.PROVIDER_NAME) == null) { + Security.addProvider(new BouncyCastleProvider()); + } + if (Security.getProvider(BouncyCastlePQCProvider.PROVIDER_NAME) == null) { + Security.addProvider(new BouncyCastlePQCProvider()); + } } @Override public void doStop() throws Exception { - Security.removeProvider("BC"); - Security.removeProvider("BCPQC"); + if (Security.getProvider(BouncyCastleProvider.PROVIDER_NAME) != null) { + Security.removeProvider(BouncyCastleProvider.PROVIDER_NAME); + } + if (Security.getProvider(BouncyCastlePQCProvider.PROVIDER_NAME) != null) { + Security.removeProvider(BouncyCastlePQCProvider.PROVIDER_NAME); + } super.doStop(); } diff --git a/components/camel-pqc/src/main/java/org/apache/camel/component/pqc/crypto/PQCDefaultFalconMaterial.java b/components/camel-pqc/src/main/java/org/apache/camel/component/pqc/crypto/PQCDefaultFalconMaterial.java index 79fc840bf9b..14babb2a3e8 100644 --- a/components/camel-pqc/src/main/java/org/apache/camel/component/pqc/crypto/PQCDefaultFalconMaterial.java +++ b/components/camel-pqc/src/main/java/org/apache/camel/component/pqc/crypto/PQCDefaultFalconMaterial.java @@ -19,6 +19,8 @@ package org.apache.camel.component.pqc.crypto; import java.security.*; import org.apache.camel.component.pqc.PQCSignatureAlgorithms; +import org.bouncycastle.jce.provider.BouncyCastleProvider; +import org.bouncycastle.pqc.jcajce.provider.BouncyCastlePQCProvider; import org.bouncycastle.pqc.jcajce.spec.FalconParameterSpec; public class PQCDefaultFalconMaterial { @@ -26,6 +28,12 @@ public class PQCDefaultFalconMaterial { public static final Signature signer; static { + if (Security.getProvider(BouncyCastleProvider.PROVIDER_NAME) == null) { + Security.addProvider(new BouncyCastleProvider()); + } + if (Security.getProvider(BouncyCastlePQCProvider.PROVIDER_NAME) == null) { + Security.addProvider(new BouncyCastlePQCProvider()); + } KeyPairGenerator generator; try { generator = prepareKeyPair(); diff --git a/components/camel-pqc/src/main/java/org/apache/camel/component/pqc/crypto/PQCDefaultLMSMaterial.java b/components/camel-pqc/src/main/java/org/apache/camel/component/pqc/crypto/PQCDefaultLMSMaterial.java index 9863700d317..7fea9b06469 100644 --- a/components/camel-pqc/src/main/java/org/apache/camel/component/pqc/crypto/PQCDefaultLMSMaterial.java +++ b/components/camel-pqc/src/main/java/org/apache/camel/component/pqc/crypto/PQCDefaultLMSMaterial.java @@ -16,16 +16,13 @@ */ package org.apache.camel.component.pqc.crypto; -import java.security.InvalidAlgorithmParameterException; -import java.security.KeyPair; -import java.security.KeyPairGenerator; -import java.security.NoSuchAlgorithmException; -import java.security.NoSuchProviderException; -import java.security.Signature; +import java.security.*; import org.apache.camel.component.pqc.PQCSignatureAlgorithms; +import org.bouncycastle.jce.provider.BouncyCastleProvider; import org.bouncycastle.pqc.crypto.lms.LMOtsParameters; import org.bouncycastle.pqc.crypto.lms.LMSigParameters; +import org.bouncycastle.pqc.jcajce.provider.BouncyCastlePQCProvider; import org.bouncycastle.pqc.jcajce.spec.LMSKeyGenParameterSpec; public class PQCDefaultLMSMaterial { @@ -33,6 +30,12 @@ public class PQCDefaultLMSMaterial { public static final Signature signer; static { + if (Security.getProvider(BouncyCastleProvider.PROVIDER_NAME) == null) { + Security.addProvider(new BouncyCastleProvider()); + } + if (Security.getProvider(BouncyCastlePQCProvider.PROVIDER_NAME) == null) { + Security.addProvider(new BouncyCastlePQCProvider()); + } KeyPairGenerator generator; try { generator = prepareKeyPair(); diff --git a/components/camel-pqc/src/main/java/org/apache/camel/component/pqc/crypto/PQCDefaultMLDSAMaterial.java b/components/camel-pqc/src/main/java/org/apache/camel/component/pqc/crypto/PQCDefaultMLDSAMaterial.java index df61680f877..43a3e2e9d5d 100644 --- a/components/camel-pqc/src/main/java/org/apache/camel/component/pqc/crypto/PQCDefaultMLDSAMaterial.java +++ b/components/camel-pqc/src/main/java/org/apache/camel/component/pqc/crypto/PQCDefaultMLDSAMaterial.java @@ -16,22 +16,24 @@ */ package org.apache.camel.component.pqc.crypto; -import java.security.InvalidAlgorithmParameterException; -import java.security.KeyPair; -import java.security.KeyPairGenerator; -import java.security.NoSuchAlgorithmException; -import java.security.NoSuchProviderException; -import java.security.SecureRandom; -import java.security.Signature; +import java.security.*; import org.apache.camel.component.pqc.PQCSignatureAlgorithms; import org.bouncycastle.jcajce.spec.MLDSAParameterSpec; +import org.bouncycastle.jce.provider.BouncyCastleProvider; +import org.bouncycastle.pqc.jcajce.provider.BouncyCastlePQCProvider; public class PQCDefaultMLDSAMaterial { public static final KeyPair keyPair; public static final Signature signer; static { + if (Security.getProvider(BouncyCastleProvider.PROVIDER_NAME) == null) { + Security.addProvider(new BouncyCastleProvider()); + } + if (Security.getProvider(BouncyCastlePQCProvider.PROVIDER_NAME) == null) { + Security.addProvider(new BouncyCastlePQCProvider()); + } KeyPairGenerator generator; try { generator = prepareKeyPair(); diff --git a/components/camel-pqc/src/main/java/org/apache/camel/component/pqc/crypto/PQCDefaultPicnicMaterial.java b/components/camel-pqc/src/main/java/org/apache/camel/component/pqc/crypto/PQCDefaultPicnicMaterial.java index ac79b22add9..fc1ac44859a 100644 --- a/components/camel-pqc/src/main/java/org/apache/camel/component/pqc/crypto/PQCDefaultPicnicMaterial.java +++ b/components/camel-pqc/src/main/java/org/apache/camel/component/pqc/crypto/PQCDefaultPicnicMaterial.java @@ -19,6 +19,8 @@ package org.apache.camel.component.pqc.crypto; import java.security.*; import org.apache.camel.component.pqc.PQCSignatureAlgorithms; +import org.bouncycastle.jce.provider.BouncyCastleProvider; +import org.bouncycastle.pqc.jcajce.provider.BouncyCastlePQCProvider; import org.bouncycastle.pqc.jcajce.spec.PicnicParameterSpec; public class PQCDefaultPicnicMaterial { @@ -26,6 +28,12 @@ public class PQCDefaultPicnicMaterial { public static final Signature signer; static { + if (Security.getProvider(BouncyCastleProvider.PROVIDER_NAME) == null) { + Security.addProvider(new BouncyCastleProvider()); + } + if (Security.getProvider(BouncyCastlePQCProvider.PROVIDER_NAME) == null) { + Security.addProvider(new BouncyCastlePQCProvider()); + } KeyPairGenerator generator; try { generator = prepareKeyPair(); diff --git a/components/camel-pqc/src/main/java/org/apache/camel/component/pqc/crypto/PQCDefaultRainbowMaterial.java b/components/camel-pqc/src/main/java/org/apache/camel/component/pqc/crypto/PQCDefaultRainbowMaterial.java index cb173db50f7..4deb98e30f8 100644 --- a/components/camel-pqc/src/main/java/org/apache/camel/component/pqc/crypto/PQCDefaultRainbowMaterial.java +++ b/components/camel-pqc/src/main/java/org/apache/camel/component/pqc/crypto/PQCDefaultRainbowMaterial.java @@ -19,6 +19,8 @@ package org.apache.camel.component.pqc.crypto; import java.security.*; import org.apache.camel.component.pqc.PQCSignatureAlgorithms; +import org.bouncycastle.jce.provider.BouncyCastleProvider; +import org.bouncycastle.pqc.jcajce.provider.BouncyCastlePQCProvider; import org.bouncycastle.pqc.jcajce.spec.RainbowParameterSpec; public class PQCDefaultRainbowMaterial { @@ -26,6 +28,12 @@ public class PQCDefaultRainbowMaterial { public static final Signature signer; static { + if (Security.getProvider(BouncyCastleProvider.PROVIDER_NAME) == null) { + Security.addProvider(new BouncyCastleProvider()); + } + if (Security.getProvider(BouncyCastlePQCProvider.PROVIDER_NAME) == null) { + Security.addProvider(new BouncyCastlePQCProvider()); + } KeyPairGenerator generator; try { generator = prepareKeyPair(); diff --git a/components/camel-pqc/src/main/java/org/apache/camel/component/pqc/crypto/PQCDefaultSLHDSAMaterial.java b/components/camel-pqc/src/main/java/org/apache/camel/component/pqc/crypto/PQCDefaultSLHDSAMaterial.java index ba89b3ffb2d..cea2a53bde9 100644 --- a/components/camel-pqc/src/main/java/org/apache/camel/component/pqc/crypto/PQCDefaultSLHDSAMaterial.java +++ b/components/camel-pqc/src/main/java/org/apache/camel/component/pqc/crypto/PQCDefaultSLHDSAMaterial.java @@ -16,22 +16,24 @@ */ package org.apache.camel.component.pqc.crypto; -import java.security.InvalidAlgorithmParameterException; -import java.security.KeyPair; -import java.security.KeyPairGenerator; -import java.security.NoSuchAlgorithmException; -import java.security.NoSuchProviderException; -import java.security.SecureRandom; -import java.security.Signature; +import java.security.*; import org.apache.camel.component.pqc.PQCSignatureAlgorithms; import org.bouncycastle.jcajce.spec.SLHDSAParameterSpec; +import org.bouncycastle.jce.provider.BouncyCastleProvider; +import org.bouncycastle.pqc.jcajce.provider.BouncyCastlePQCProvider; public class PQCDefaultSLHDSAMaterial { public static final KeyPair keyPair; public static final Signature signer; static { + if (Security.getProvider(BouncyCastleProvider.PROVIDER_NAME) == null) { + Security.addProvider(new BouncyCastleProvider()); + } + if (Security.getProvider(BouncyCastlePQCProvider.PROVIDER_NAME) == null) { + Security.addProvider(new BouncyCastlePQCProvider()); + } KeyPairGenerator generator; try { generator = prepareKeyPair(); diff --git a/components/camel-pqc/src/main/java/org/apache/camel/component/pqc/crypto/PQCDefaultXMSSMaterial.java b/components/camel-pqc/src/main/java/org/apache/camel/component/pqc/crypto/PQCDefaultXMSSMaterial.java index f00b19d3413..4398cd47a79 100644 --- a/components/camel-pqc/src/main/java/org/apache/camel/component/pqc/crypto/PQCDefaultXMSSMaterial.java +++ b/components/camel-pqc/src/main/java/org/apache/camel/component/pqc/crypto/PQCDefaultXMSSMaterial.java @@ -16,15 +16,11 @@ */ package org.apache.camel.component.pqc.crypto; -import java.security.InvalidAlgorithmParameterException; -import java.security.KeyPair; -import java.security.KeyPairGenerator; -import java.security.NoSuchAlgorithmException; -import java.security.NoSuchProviderException; -import java.security.SecureRandom; -import java.security.Signature; +import java.security.*; import org.apache.camel.component.pqc.PQCSignatureAlgorithms; +import org.bouncycastle.jce.provider.BouncyCastleProvider; +import org.bouncycastle.pqc.jcajce.provider.BouncyCastlePQCProvider; import org.bouncycastle.pqc.jcajce.spec.XMSSParameterSpec; public class PQCDefaultXMSSMaterial { @@ -32,6 +28,12 @@ public class PQCDefaultXMSSMaterial { public static final Signature signer; static { + if (Security.getProvider(BouncyCastleProvider.PROVIDER_NAME) == null) { + Security.addProvider(new BouncyCastleProvider()); + } + if (Security.getProvider(BouncyCastlePQCProvider.PROVIDER_NAME) == null) { + Security.addProvider(new BouncyCastlePQCProvider()); + } KeyPairGenerator generator; try { generator = prepareKeyPair(); diff --git a/components/camel-pqc/src/main/java/org/apache/camel/component/pqc/crypto/kem/PQCDefaultBIKEMaterial.java b/components/camel-pqc/src/main/java/org/apache/camel/component/pqc/crypto/kem/PQCDefaultBIKEMaterial.java index 30402200646..30f82ffb59a 100644 --- a/components/camel-pqc/src/main/java/org/apache/camel/component/pqc/crypto/kem/PQCDefaultBIKEMaterial.java +++ b/components/camel-pqc/src/main/java/org/apache/camel/component/pqc/crypto/kem/PQCDefaultBIKEMaterial.java @@ -21,6 +21,8 @@ import java.security.*; import javax.crypto.KeyGenerator; import org.apache.camel.component.pqc.PQCKeyEncapsulationAlgorithms; +import org.bouncycastle.jce.provider.BouncyCastleProvider; +import org.bouncycastle.pqc.jcajce.provider.BouncyCastlePQCProvider; import org.bouncycastle.pqc.jcajce.spec.BIKEParameterSpec; public class PQCDefaultBIKEMaterial { @@ -30,6 +32,12 @@ public class PQCDefaultBIKEMaterial { public static final KeyPairGenerator generator; static { + if (Security.getProvider(BouncyCastleProvider.PROVIDER_NAME) == null) { + Security.addProvider(new BouncyCastleProvider()); + } + if (Security.getProvider(BouncyCastlePQCProvider.PROVIDER_NAME) == null) { + Security.addProvider(new BouncyCastlePQCProvider()); + } try { generator = prepareKeyPair(); keyPair = generator.generateKeyPair(); diff --git a/components/camel-pqc/src/main/java/org/apache/camel/component/pqc/crypto/kem/PQCDefaultCMCEMaterial.java b/components/camel-pqc/src/main/java/org/apache/camel/component/pqc/crypto/kem/PQCDefaultCMCEMaterial.java index b42b88ece7c..0ff1cf71c70 100644 --- a/components/camel-pqc/src/main/java/org/apache/camel/component/pqc/crypto/kem/PQCDefaultCMCEMaterial.java +++ b/components/camel-pqc/src/main/java/org/apache/camel/component/pqc/crypto/kem/PQCDefaultCMCEMaterial.java @@ -21,6 +21,8 @@ import java.security.*; import javax.crypto.KeyGenerator; import org.apache.camel.component.pqc.PQCKeyEncapsulationAlgorithms; +import org.bouncycastle.jce.provider.BouncyCastleProvider; +import org.bouncycastle.pqc.jcajce.provider.BouncyCastlePQCProvider; import org.bouncycastle.pqc.jcajce.spec.CMCEParameterSpec; public class PQCDefaultCMCEMaterial { @@ -30,6 +32,12 @@ public class PQCDefaultCMCEMaterial { public static final KeyPairGenerator generator; static { + if (Security.getProvider(BouncyCastleProvider.PROVIDER_NAME) == null) { + Security.addProvider(new BouncyCastleProvider()); + } + if (Security.getProvider(BouncyCastlePQCProvider.PROVIDER_NAME) == null) { + Security.addProvider(new BouncyCastlePQCProvider()); + } try { generator = prepareKeyPair(); keyPair = generator.generateKeyPair(); diff --git a/components/camel-pqc/src/main/java/org/apache/camel/component/pqc/crypto/kem/PQCDefaultFRODOMaterial.java b/components/camel-pqc/src/main/java/org/apache/camel/component/pqc/crypto/kem/PQCDefaultFRODOMaterial.java index f0f76f40914..0d940431e1d 100644 --- a/components/camel-pqc/src/main/java/org/apache/camel/component/pqc/crypto/kem/PQCDefaultFRODOMaterial.java +++ b/components/camel-pqc/src/main/java/org/apache/camel/component/pqc/crypto/kem/PQCDefaultFRODOMaterial.java @@ -21,6 +21,8 @@ import java.security.*; import javax.crypto.KeyGenerator; import org.apache.camel.component.pqc.PQCKeyEncapsulationAlgorithms; +import org.bouncycastle.jce.provider.BouncyCastleProvider; +import org.bouncycastle.pqc.jcajce.provider.BouncyCastlePQCProvider; import org.bouncycastle.pqc.jcajce.spec.FrodoParameterSpec; public class PQCDefaultFRODOMaterial { @@ -30,6 +32,12 @@ public class PQCDefaultFRODOMaterial { public static final KeyPairGenerator generator; static { + if (Security.getProvider(BouncyCastleProvider.PROVIDER_NAME) == null) { + Security.addProvider(new BouncyCastleProvider()); + } + if (Security.getProvider(BouncyCastlePQCProvider.PROVIDER_NAME) == null) { + Security.addProvider(new BouncyCastlePQCProvider()); + } try { generator = prepareKeyPair(); keyPair = generator.generateKeyPair(); diff --git a/components/camel-pqc/src/main/java/org/apache/camel/component/pqc/crypto/kem/PQCDefaultHQCMaterial.java b/components/camel-pqc/src/main/java/org/apache/camel/component/pqc/crypto/kem/PQCDefaultHQCMaterial.java index fcc81dbd40c..7564f8d16b8 100644 --- a/components/camel-pqc/src/main/java/org/apache/camel/component/pqc/crypto/kem/PQCDefaultHQCMaterial.java +++ b/components/camel-pqc/src/main/java/org/apache/camel/component/pqc/crypto/kem/PQCDefaultHQCMaterial.java @@ -21,6 +21,8 @@ import java.security.*; import javax.crypto.KeyGenerator; import org.apache.camel.component.pqc.PQCKeyEncapsulationAlgorithms; +import org.bouncycastle.jce.provider.BouncyCastleProvider; +import org.bouncycastle.pqc.jcajce.provider.BouncyCastlePQCProvider; import org.bouncycastle.pqc.jcajce.spec.HQCParameterSpec; public class PQCDefaultHQCMaterial { @@ -30,6 +32,12 @@ public class PQCDefaultHQCMaterial { public static final KeyPairGenerator generator; static { + if (Security.getProvider(BouncyCastleProvider.PROVIDER_NAME) == null) { + Security.addProvider(new BouncyCastleProvider()); + } + if (Security.getProvider(BouncyCastlePQCProvider.PROVIDER_NAME) == null) { + Security.addProvider(new BouncyCastlePQCProvider()); + } try { generator = prepareKeyPair(); keyPair = generator.generateKeyPair(); diff --git a/components/camel-pqc/src/main/java/org/apache/camel/component/pqc/crypto/kem/PQCDefaultMLKEMMaterial.java b/components/camel-pqc/src/main/java/org/apache/camel/component/pqc/crypto/kem/PQCDefaultMLKEMMaterial.java index a79fb075e8b..51eb6cdd814 100644 --- a/components/camel-pqc/src/main/java/org/apache/camel/component/pqc/crypto/kem/PQCDefaultMLKEMMaterial.java +++ b/components/camel-pqc/src/main/java/org/apache/camel/component/pqc/crypto/kem/PQCDefaultMLKEMMaterial.java @@ -22,6 +22,8 @@ import javax.crypto.KeyGenerator; import org.apache.camel.component.pqc.PQCKeyEncapsulationAlgorithms; import org.bouncycastle.jcajce.spec.MLKEMParameterSpec; +import org.bouncycastle.jce.provider.BouncyCastleProvider; +import org.bouncycastle.pqc.jcajce.provider.BouncyCastlePQCProvider; public class PQCDefaultMLKEMMaterial { @@ -30,6 +32,12 @@ public class PQCDefaultMLKEMMaterial { public static final KeyPairGenerator generator; static { + if (Security.getProvider(BouncyCastleProvider.PROVIDER_NAME) == null) { + Security.addProvider(new BouncyCastleProvider()); + } + if (Security.getProvider(BouncyCastlePQCProvider.PROVIDER_NAME) == null) { + Security.addProvider(new BouncyCastlePQCProvider()); + } try { generator = prepareKeyPair(); keyPair = generator.generateKeyPair(); diff --git a/components/camel-pqc/src/main/java/org/apache/camel/component/pqc/crypto/kem/PQCDefaultNTRULPRimeMaterial.java b/components/camel-pqc/src/main/java/org/apache/camel/component/pqc/crypto/kem/PQCDefaultNTRULPRimeMaterial.java index 7b72e5a3309..57627562c18 100644 --- a/components/camel-pqc/src/main/java/org/apache/camel/component/pqc/crypto/kem/PQCDefaultNTRULPRimeMaterial.java +++ b/components/camel-pqc/src/main/java/org/apache/camel/component/pqc/crypto/kem/PQCDefaultNTRULPRimeMaterial.java @@ -21,6 +21,8 @@ import java.security.*; import javax.crypto.KeyGenerator; import org.apache.camel.component.pqc.PQCKeyEncapsulationAlgorithms; +import org.bouncycastle.jce.provider.BouncyCastleProvider; +import org.bouncycastle.pqc.jcajce.provider.BouncyCastlePQCProvider; import org.bouncycastle.pqc.jcajce.spec.NTRULPRimeParameterSpec; public class PQCDefaultNTRULPRimeMaterial { @@ -30,6 +32,12 @@ public class PQCDefaultNTRULPRimeMaterial { public static final KeyPairGenerator generator; static { + if (Security.getProvider(BouncyCastleProvider.PROVIDER_NAME) == null) { + Security.addProvider(new BouncyCastleProvider()); + } + if (Security.getProvider(BouncyCastlePQCProvider.PROVIDER_NAME) == null) { + Security.addProvider(new BouncyCastlePQCProvider()); + } try { generator = prepareKeyPair(); keyPair = generator.generateKeyPair(); diff --git a/components/camel-pqc/src/main/java/org/apache/camel/component/pqc/crypto/kem/PQCDefaultNTRUMaterial.java b/components/camel-pqc/src/main/java/org/apache/camel/component/pqc/crypto/kem/PQCDefaultNTRUMaterial.java index 9cf117d8dc2..32bd4cd58f1 100644 --- a/components/camel-pqc/src/main/java/org/apache/camel/component/pqc/crypto/kem/PQCDefaultNTRUMaterial.java +++ b/components/camel-pqc/src/main/java/org/apache/camel/component/pqc/crypto/kem/PQCDefaultNTRUMaterial.java @@ -21,6 +21,8 @@ import java.security.*; import javax.crypto.KeyGenerator; import org.apache.camel.component.pqc.PQCKeyEncapsulationAlgorithms; +import org.bouncycastle.jce.provider.BouncyCastleProvider; +import org.bouncycastle.pqc.jcajce.provider.BouncyCastlePQCProvider; import org.bouncycastle.pqc.jcajce.spec.NTRUParameterSpec; public class PQCDefaultNTRUMaterial { @@ -30,6 +32,12 @@ public class PQCDefaultNTRUMaterial { public static final KeyPairGenerator generator; static { + if (Security.getProvider(BouncyCastleProvider.PROVIDER_NAME) == null) { + Security.addProvider(new BouncyCastleProvider()); + } + if (Security.getProvider(BouncyCastlePQCProvider.PROVIDER_NAME) == null) { + Security.addProvider(new BouncyCastlePQCProvider()); + } try { generator = prepareKeyPair(); keyPair = generator.generateKeyPair(); diff --git a/components/camel-pqc/src/main/java/org/apache/camel/component/pqc/crypto/kem/PQCDefaultSABERMaterial.java b/components/camel-pqc/src/main/java/org/apache/camel/component/pqc/crypto/kem/PQCDefaultSABERMaterial.java index b6dfe5d2f9b..0fb9d1d1523 100644 --- a/components/camel-pqc/src/main/java/org/apache/camel/component/pqc/crypto/kem/PQCDefaultSABERMaterial.java +++ b/components/camel-pqc/src/main/java/org/apache/camel/component/pqc/crypto/kem/PQCDefaultSABERMaterial.java @@ -21,6 +21,8 @@ import java.security.*; import javax.crypto.KeyGenerator; import org.apache.camel.component.pqc.PQCKeyEncapsulationAlgorithms; +import org.bouncycastle.jce.provider.BouncyCastleProvider; +import org.bouncycastle.pqc.jcajce.provider.BouncyCastlePQCProvider; import org.bouncycastle.pqc.jcajce.spec.SABERParameterSpec; public class PQCDefaultSABERMaterial { @@ -30,6 +32,12 @@ public class PQCDefaultSABERMaterial { public static final KeyPairGenerator generator; static { + if (Security.getProvider(BouncyCastleProvider.PROVIDER_NAME) == null) { + Security.addProvider(new BouncyCastleProvider()); + } + if (Security.getProvider(BouncyCastlePQCProvider.PROVIDER_NAME) == null) { + Security.addProvider(new BouncyCastlePQCProvider()); + } try { generator = prepareKeyPair(); keyPair = generator.generateKeyPair();