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();

Reply via email to