This is an automated email from the ASF dual-hosted git repository. davsclaus pushed a commit to branch fix/bc-1.85-algorithm-renames in repository https://gitbox.apache.org/repos/asf/camel.git
commit de562b499bb476144ef9b063065dbd672ebf23a1 Author: Claus Ibsen <[email protected]> AuthorDate: Mon Jul 13 11:00:49 2026 +0200 chore: Adapt camel-pqc to Bouncy Castle 1.85 algorithm renames Bouncy Castle 1.85 removed the pre-standardization PQC algorithm names (DILITHIUM, KYBER, SPHINCSPLUS) from the BCPQC provider, replacing them with the NIST standardized names (ML-DSA, ML-KEM, SLH-DSA) in the main BC provider. Update the PQC enum values and default parameter specs to use the new names while keeping the Camel enum constants unchanged for backward compatibility. Users with signatureAlgorithm=DILITHIUM in their routes will continue to work transparently. Co-Authored-By: Claude Opus 4.6 <[email protected]> Signed-off-by: Claus Ibsen <[email protected]> --- .../pqc/PQCKeyEncapsulationAlgorithms.java | 2 +- .../component/pqc/PQCSignatureAlgorithms.java | 4 +-- .../pqc/crypto/PQCDefaultDILITHIUMMaterial.java | 5 +-- .../pqc/crypto/PQCDefaultSPHINCSPLUSMaterial.java | 4 +-- .../pqc/crypto/kem/PQCDefaultKYBERMaterial.java | 4 +-- .../AwsSecretsManagerKeyLifecycleManager.java | 14 ++++----- .../lifecycle/FileBasedKeyLifecycleManager.java | 14 ++++----- .../HashicorpVaultKeyLifecycleManager.java | 14 ++++----- .../pqc/AwsSecretsManagerKeyLifecycleIT.java | 22 ++++++------- .../pqc/HashicorpVaultKeyLifecycleIT.java | 22 ++++++------- .../component/pqc/PQCEndToEndIntegrationTest.java | 16 +++++----- .../pqc/PQCKYBERGenerateEncapsulationAESTest.java | 4 +-- .../pqc/PQCKeyLifecycleIntegrationTest.java | 24 +++++++-------- .../camel/component/pqc/PQCKeyLifecycleTest.java | 36 +++++++++++----------- .../component/pqc/PQCKeyStatusEnforcementTest.java | 4 +-- .../component/pqc/PQCSignatureDILITHIUMTest.java | 4 +-- .../component/pqc/PQCSignatureSPHINCSPLUSTest.java | 4 +-- .../PQCDataFormatMultipleAlgorithmsTest.java | 4 +-- .../pqc/lifecycle/KeyRotationSchedulerTest.java | 4 +-- 19 files changed, 103 insertions(+), 102 deletions(-) diff --git a/components/camel-pqc/src/main/java/org/apache/camel/component/pqc/PQCKeyEncapsulationAlgorithms.java b/components/camel-pqc/src/main/java/org/apache/camel/component/pqc/PQCKeyEncapsulationAlgorithms.java index f84d0580e97e..6e060311713c 100644 --- a/components/camel-pqc/src/main/java/org/apache/camel/component/pqc/PQCKeyEncapsulationAlgorithms.java +++ b/components/camel-pqc/src/main/java/org/apache/camel/component/pqc/PQCKeyEncapsulationAlgorithms.java @@ -30,7 +30,7 @@ public enum PQCKeyEncapsulationAlgorithms { NTRU("NTRU", "BCPQC"), NTRULPRime("NTRULPRime", "BCPQC"), SNTRUPrime("SNTRUPrime", "BCPQC"), - KYBER("KYBER", "BCPQC"); + KYBER("ML-KEM", "BC"); private final String algorithm; private final String bcProvider; diff --git a/components/camel-pqc/src/main/java/org/apache/camel/component/pqc/PQCSignatureAlgorithms.java b/components/camel-pqc/src/main/java/org/apache/camel/component/pqc/PQCSignatureAlgorithms.java index 234460e1b5f3..a528ecf01c86 100644 --- a/components/camel-pqc/src/main/java/org/apache/camel/component/pqc/PQCSignatureAlgorithms.java +++ b/components/camel-pqc/src/main/java/org/apache/camel/component/pqc/PQCSignatureAlgorithms.java @@ -25,14 +25,14 @@ public enum PQCSignatureAlgorithms { HSS("LMS", "BC"), XMSS("XMSS", "BCPQC"), XMSSMT("XMSSMT", "BCPQC"), - DILITHIUM("DILITHIUM", "BCPQC"), + DILITHIUM("ML-DSA", "BC"), // Experimental and non-standardized FALCON("FALCON", "BCPQC"), PICNIC("PICNIC", "BCPQC"), SNOVA("Snova", "BCPQC"), MAYO("Mayo", "BCPQC"), - SPHINCSPLUS("SPHINCSPLUS", "BCPQC"); + SPHINCSPLUS("SLH-DSA", "BC"); private final String algorithm; private final String bcProvider; diff --git a/components/camel-pqc/src/main/java/org/apache/camel/component/pqc/crypto/PQCDefaultDILITHIUMMaterial.java b/components/camel-pqc/src/main/java/org/apache/camel/component/pqc/crypto/PQCDefaultDILITHIUMMaterial.java index 91d4e61a6093..79b9a5a2b4ed 100644 --- a/components/camel-pqc/src/main/java/org/apache/camel/component/pqc/crypto/PQCDefaultDILITHIUMMaterial.java +++ b/components/camel-pqc/src/main/java/org/apache/camel/component/pqc/crypto/PQCDefaultDILITHIUMMaterial.java @@ -19,9 +19,10 @@ package org.apache.camel.component.pqc.crypto; import java.security.*; import org.apache.camel.component.pqc.PQCSignatureAlgorithms; +import org.apache.camel.util.SecureRandomHelper; +import org.bouncycastle.jcajce.spec.MLDSAParameterSpec; import org.bouncycastle.jce.provider.BouncyCastleProvider; import org.bouncycastle.pqc.jcajce.provider.BouncyCastlePQCProvider; -import org.bouncycastle.pqc.jcajce.spec.DilithiumParameterSpec; public class PQCDefaultDILITHIUMMaterial { public static final KeyPair keyPair; @@ -49,7 +50,7 @@ public class PQCDefaultDILITHIUMMaterial { throws NoSuchAlgorithmException, NoSuchProviderException, InvalidAlgorithmParameterException { KeyPairGenerator kpGen = KeyPairGenerator.getInstance(PQCSignatureAlgorithms.DILITHIUM.getAlgorithm(), PQCSignatureAlgorithms.DILITHIUM.getBcProvider()); - kpGen.initialize(DilithiumParameterSpec.dilithium5); + kpGen.initialize(MLDSAParameterSpec.ml_dsa_87, SecureRandomHelper.getSecureRandom()); return kpGen; } } diff --git a/components/camel-pqc/src/main/java/org/apache/camel/component/pqc/crypto/PQCDefaultSPHINCSPLUSMaterial.java b/components/camel-pqc/src/main/java/org/apache/camel/component/pqc/crypto/PQCDefaultSPHINCSPLUSMaterial.java index c39278c9c4f9..1b31704a6ca0 100644 --- a/components/camel-pqc/src/main/java/org/apache/camel/component/pqc/crypto/PQCDefaultSPHINCSPLUSMaterial.java +++ b/components/camel-pqc/src/main/java/org/apache/camel/component/pqc/crypto/PQCDefaultSPHINCSPLUSMaterial.java @@ -20,9 +20,9 @@ import java.security.*; import org.apache.camel.component.pqc.PQCSignatureAlgorithms; import org.apache.camel.util.SecureRandomHelper; +import org.bouncycastle.jcajce.spec.SLHDSAParameterSpec; import org.bouncycastle.jce.provider.BouncyCastleProvider; import org.bouncycastle.pqc.jcajce.provider.BouncyCastlePQCProvider; -import org.bouncycastle.pqc.jcajce.spec.SPHINCSPlusParameterSpec; public class PQCDefaultSPHINCSPLUSMaterial { public static final KeyPair keyPair; @@ -50,7 +50,7 @@ public class PQCDefaultSPHINCSPLUSMaterial { throws NoSuchAlgorithmException, NoSuchProviderException, InvalidAlgorithmParameterException { KeyPairGenerator kpGen = KeyPairGenerator.getInstance(PQCSignatureAlgorithms.SPHINCSPLUS.getAlgorithm(), PQCSignatureAlgorithms.SPHINCSPLUS.getBcProvider()); - kpGen.initialize(SPHINCSPlusParameterSpec.haraka_256s, SecureRandomHelper.getSecureRandom()); + kpGen.initialize(SLHDSAParameterSpec.slh_dsa_sha2_128s, SecureRandomHelper.getSecureRandom()); return kpGen; } } diff --git a/components/camel-pqc/src/main/java/org/apache/camel/component/pqc/crypto/kem/PQCDefaultKYBERMaterial.java b/components/camel-pqc/src/main/java/org/apache/camel/component/pqc/crypto/kem/PQCDefaultKYBERMaterial.java index cfb7f8bf4e49..a62f5bc5ff5d 100644 --- a/components/camel-pqc/src/main/java/org/apache/camel/component/pqc/crypto/kem/PQCDefaultKYBERMaterial.java +++ b/components/camel-pqc/src/main/java/org/apache/camel/component/pqc/crypto/kem/PQCDefaultKYBERMaterial.java @@ -22,9 +22,9 @@ import javax.crypto.KeyGenerator; import org.apache.camel.component.pqc.PQCKeyEncapsulationAlgorithms; import org.apache.camel.util.SecureRandomHelper; +import org.bouncycastle.jcajce.spec.MLKEMParameterSpec; import org.bouncycastle.jce.provider.BouncyCastleProvider; import org.bouncycastle.pqc.jcajce.provider.BouncyCastlePQCProvider; -import org.bouncycastle.pqc.jcajce.spec.KyberParameterSpec; public class PQCDefaultKYBERMaterial { @@ -52,7 +52,7 @@ public class PQCDefaultKYBERMaterial { throws NoSuchAlgorithmException, NoSuchProviderException, InvalidAlgorithmParameterException { KeyPairGenerator kpg = KeyPairGenerator.getInstance(PQCKeyEncapsulationAlgorithms.KYBER.getAlgorithm(), PQCKeyEncapsulationAlgorithms.KYBER.getBcProvider()); - kpg.initialize(KyberParameterSpec.kyber1024, SecureRandomHelper.getSecureRandom()); + kpg.initialize(MLKEMParameterSpec.ml_kem_1024, SecureRandomHelper.getSecureRandom()); return kpg; } diff --git a/components/camel-pqc/src/main/java/org/apache/camel/component/pqc/lifecycle/AwsSecretsManagerKeyLifecycleManager.java b/components/camel-pqc/src/main/java/org/apache/camel/component/pqc/lifecycle/AwsSecretsManagerKeyLifecycleManager.java index dc5cf6d9baeb..ef2acc2035b2 100644 --- a/components/camel-pqc/src/main/java/org/apache/camel/component/pqc/lifecycle/AwsSecretsManagerKeyLifecycleManager.java +++ b/components/camel-pqc/src/main/java/org/apache/camel/component/pqc/lifecycle/AwsSecretsManagerKeyLifecycleManager.java @@ -36,6 +36,9 @@ import com.fasterxml.jackson.databind.ObjectMapper; import org.apache.camel.component.pqc.PQCKeyEncapsulationAlgorithms; import org.apache.camel.component.pqc.PQCSignatureAlgorithms; import org.apache.camel.util.SecureRandomHelper; +import org.bouncycastle.jcajce.spec.MLDSAParameterSpec; +import org.bouncycastle.jcajce.spec.MLKEMParameterSpec; +import org.bouncycastle.jcajce.spec.SLHDSAParameterSpec; import org.bouncycastle.pqc.crypto.lms.LMOtsParameters; import org.bouncycastle.pqc.crypto.lms.LMSigParameters; import org.bouncycastle.pqc.jcajce.spec.*; @@ -573,15 +576,13 @@ public class AwsSecretsManagerKeyLifecycleManager implements KeyLifecycleManager try { switch (algorithm) { case "DILITHIUM": - return DilithiumParameterSpec.dilithium2; case "MLDSA": + return MLDSAParameterSpec.ml_dsa_44; case "SLHDSA": - // These use default initialization - return null; + case "SPHINCSPLUS": + return SLHDSAParameterSpec.slh_dsa_sha2_128s; case "FALCON": return FalconParameterSpec.falcon_512; - case "SPHINCSPLUS": - return SPHINCSPlusParameterSpec.sha2_128s; case "XMSS": return new XMSSParameterSpec( 10, @@ -595,8 +596,7 @@ public class AwsSecretsManagerKeyLifecycleManager implements KeyLifecycleManager LMOtsParameters.sha256_n32_w4); case "MLKEM": case "KYBER": - // These use default initialization - return null; + return MLKEMParameterSpec.ml_kem_768; case "NTRU": return NTRUParameterSpec.ntruhps2048509; case "NTRULPRime": diff --git a/components/camel-pqc/src/main/java/org/apache/camel/component/pqc/lifecycle/FileBasedKeyLifecycleManager.java b/components/camel-pqc/src/main/java/org/apache/camel/component/pqc/lifecycle/FileBasedKeyLifecycleManager.java index b93bedf9f11a..2b4cba9949c8 100644 --- a/components/camel-pqc/src/main/java/org/apache/camel/component/pqc/lifecycle/FileBasedKeyLifecycleManager.java +++ b/components/camel-pqc/src/main/java/org/apache/camel/component/pqc/lifecycle/FileBasedKeyLifecycleManager.java @@ -48,6 +48,9 @@ import com.fasterxml.jackson.databind.SerializationFeature; import org.apache.camel.component.pqc.PQCKeyEncapsulationAlgorithms; import org.apache.camel.component.pqc.PQCSignatureAlgorithms; import org.apache.camel.util.SecureRandomHelper; +import org.bouncycastle.jcajce.spec.MLDSAParameterSpec; +import org.bouncycastle.jcajce.spec.MLKEMParameterSpec; +import org.bouncycastle.jcajce.spec.SLHDSAParameterSpec; import org.bouncycastle.pqc.crypto.lms.LMOtsParameters; import org.bouncycastle.pqc.crypto.lms.LMSigParameters; import org.bouncycastle.pqc.jcajce.spec.*; @@ -491,15 +494,13 @@ public class FileBasedKeyLifecycleManager implements KeyLifecycleManager { try { switch (algorithm) { case "DILITHIUM": - return DilithiumParameterSpec.dilithium2; case "MLDSA": + return MLDSAParameterSpec.ml_dsa_44; case "SLHDSA": - // These use default initialization - return null; + case "SPHINCSPLUS": + return SLHDSAParameterSpec.slh_dsa_sha2_128s; case "FALCON": return FalconParameterSpec.falcon_512; - case "SPHINCSPLUS": - return SPHINCSPlusParameterSpec.sha2_128s; case "XMSS": return new XMSSParameterSpec( 10, @@ -513,8 +514,7 @@ public class FileBasedKeyLifecycleManager implements KeyLifecycleManager { LMOtsParameters.sha256_n32_w4); case "MLKEM": case "KYBER": - // These use default initialization - return null; + return MLKEMParameterSpec.ml_kem_768; case "NTRU": return NTRUParameterSpec.ntruhps2048509; case "NTRULPRime": diff --git a/components/camel-pqc/src/main/java/org/apache/camel/component/pqc/lifecycle/HashicorpVaultKeyLifecycleManager.java b/components/camel-pqc/src/main/java/org/apache/camel/component/pqc/lifecycle/HashicorpVaultKeyLifecycleManager.java index 060f6c44dc6f..142dfc486877 100644 --- a/components/camel-pqc/src/main/java/org/apache/camel/component/pqc/lifecycle/HashicorpVaultKeyLifecycleManager.java +++ b/components/camel-pqc/src/main/java/org/apache/camel/component/pqc/lifecycle/HashicorpVaultKeyLifecycleManager.java @@ -35,6 +35,9 @@ import java.util.concurrent.ConcurrentHashMap; import org.apache.camel.component.pqc.PQCKeyEncapsulationAlgorithms; import org.apache.camel.component.pqc.PQCSignatureAlgorithms; import org.apache.camel.util.SecureRandomHelper; +import org.bouncycastle.jcajce.spec.MLDSAParameterSpec; +import org.bouncycastle.jcajce.spec.MLKEMParameterSpec; +import org.bouncycastle.jcajce.spec.SLHDSAParameterSpec; import org.bouncycastle.pqc.crypto.lms.LMOtsParameters; import org.bouncycastle.pqc.crypto.lms.LMSigParameters; import org.bouncycastle.pqc.jcajce.spec.*; @@ -596,15 +599,13 @@ public class HashicorpVaultKeyLifecycleManager implements KeyLifecycleManager { try { switch (algorithm) { case "DILITHIUM": - return DilithiumParameterSpec.dilithium2; case "MLDSA": + return MLDSAParameterSpec.ml_dsa_44; case "SLHDSA": - // These use default initialization - return null; + case "SPHINCSPLUS": + return SLHDSAParameterSpec.slh_dsa_sha2_128s; case "FALCON": return FalconParameterSpec.falcon_512; - case "SPHINCSPLUS": - return SPHINCSPlusParameterSpec.sha2_128s; case "XMSS": return new XMSSParameterSpec( 10, @@ -618,8 +619,7 @@ public class HashicorpVaultKeyLifecycleManager implements KeyLifecycleManager { LMOtsParameters.sha256_n32_w4); case "MLKEM": case "KYBER": - // These use default initialization - return null; + return MLKEMParameterSpec.ml_kem_768; case "NTRU": return NTRUParameterSpec.ntruhps2048509; case "NTRULPRime": diff --git a/components/camel-pqc/src/test/java/org/apache/camel/component/pqc/AwsSecretsManagerKeyLifecycleIT.java b/components/camel-pqc/src/test/java/org/apache/camel/component/pqc/AwsSecretsManagerKeyLifecycleIT.java index 4d07bd326aa1..8942bec0c626 100644 --- a/components/camel-pqc/src/test/java/org/apache/camel/component/pqc/AwsSecretsManagerKeyLifecycleIT.java +++ b/components/camel-pqc/src/test/java/org/apache/camel/component/pqc/AwsSecretsManagerKeyLifecycleIT.java @@ -32,9 +32,9 @@ import org.apache.camel.component.pqc.lifecycle.KeyMetadata; import org.apache.camel.test.infra.aws.common.services.AWSService; import org.apache.camel.test.infra.aws2.services.AWSServiceFactory; import org.apache.camel.test.junit6.CamelTestSupport; +import org.bouncycastle.jcajce.spec.MLDSAParameterSpec; import org.bouncycastle.jce.provider.BouncyCastleProvider; import org.bouncycastle.pqc.jcajce.provider.BouncyCastlePQCProvider; -import org.bouncycastle.pqc.jcajce.spec.DilithiumParameterSpec; import org.bouncycastle.pqc.jcajce.spec.FalconParameterSpec; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Test; @@ -97,7 +97,7 @@ public class AwsSecretsManagerKeyLifecycleIT extends CamelTestSupport { @Test public void testGenerateAndStoreKeyInSecretsManager() throws Exception { // Generate a Dilithium key - KeyPair keyPair = keyManager.generateKeyPair("DILITHIUM", "test-dilithium-key", DilithiumParameterSpec.dilithium2); + KeyPair keyPair = keyManager.generateKeyPair("DILITHIUM", "test-dilithium-key", MLDSAParameterSpec.ml_dsa_44); assertNotNull(keyPair); assertNotNull(keyPair.getPublic()); @@ -133,7 +133,7 @@ public class AwsSecretsManagerKeyLifecycleIT extends CamelTestSupport { @Test public void testKeyRotation() throws Exception { // Generate initial key - keyManager.generateKeyPair("DILITHIUM", "rotation-key-old", DilithiumParameterSpec.dilithium2); + keyManager.generateKeyPair("DILITHIUM", "rotation-key-old", MLDSAParameterSpec.ml_dsa_44); KeyMetadata oldMetadata = keyManager.getKeyMetadata("rotation-key-old"); assertEquals(KeyMetadata.KeyStatus.ACTIVE, oldMetadata.getStatus()); @@ -153,7 +153,7 @@ public class AwsSecretsManagerKeyLifecycleIT extends CamelTestSupport { @Test public void testNeedsRotation() throws Exception { - keyManager.generateKeyPair("DILITHIUM", "rotation-check-key", DilithiumParameterSpec.dilithium2); + keyManager.generateKeyPair("DILITHIUM", "rotation-check-key", MLDSAParameterSpec.ml_dsa_44); // New key should not need rotation assertFalse(keyManager.needsRotation("rotation-check-key", Duration.ofDays(90), 10000)); @@ -170,9 +170,9 @@ public class AwsSecretsManagerKeyLifecycleIT extends CamelTestSupport { @Test public void testListKeys() throws Exception { // Generate multiple keys - keyManager.generateKeyPair("DILITHIUM", "list-key-1", DilithiumParameterSpec.dilithium2); + keyManager.generateKeyPair("DILITHIUM", "list-key-1", MLDSAParameterSpec.ml_dsa_44); keyManager.generateKeyPair("FALCON", "list-key-2", FalconParameterSpec.falcon_512); - keyManager.generateKeyPair("DILITHIUM", "list-key-3", DilithiumParameterSpec.dilithium3); + keyManager.generateKeyPair("DILITHIUM", "list-key-3", MLDSAParameterSpec.ml_dsa_65); // List all keys List<KeyMetadata> keys = keyManager.listKeys(); @@ -187,14 +187,14 @@ public class AwsSecretsManagerKeyLifecycleIT extends CamelTestSupport { @Test public void testExpireAndRevokeKey() throws Exception { // Test expiration - keyManager.generateKeyPair("DILITHIUM", "expire-key", DilithiumParameterSpec.dilithium2); + keyManager.generateKeyPair("DILITHIUM", "expire-key", MLDSAParameterSpec.ml_dsa_44); keyManager.expireKey("expire-key"); KeyMetadata expiredMetadata = keyManager.getKeyMetadata("expire-key"); assertEquals(KeyMetadata.KeyStatus.EXPIRED, expiredMetadata.getStatus()); // Test revocation - keyManager.generateKeyPair("DILITHIUM", "revoke-key", DilithiumParameterSpec.dilithium2); + keyManager.generateKeyPair("DILITHIUM", "revoke-key", MLDSAParameterSpec.ml_dsa_44); keyManager.revokeKey("revoke-key", "Key compromised in test"); KeyMetadata revokedMetadata = keyManager.getKeyMetadata("revoke-key"); @@ -204,7 +204,7 @@ public class AwsSecretsManagerKeyLifecycleIT extends CamelTestSupport { @Test public void testDeleteKey() throws Exception { - keyManager.generateKeyPair("DILITHIUM", "delete-key", DilithiumParameterSpec.dilithium2); + keyManager.generateKeyPair("DILITHIUM", "delete-key", MLDSAParameterSpec.ml_dsa_44); assertNotNull(keyManager.getKey("delete-key")); keyManager.deleteKey("delete-key"); @@ -215,7 +215,7 @@ public class AwsSecretsManagerKeyLifecycleIT extends CamelTestSupport { @Test public void testExportAndImportKey() throws Exception { - KeyPair keyPair = keyManager.generateKeyPair("DILITHIUM", "export-key", DilithiumParameterSpec.dilithium2); + KeyPair keyPair = keyManager.generateKeyPair("DILITHIUM", "export-key", MLDSAParameterSpec.ml_dsa_44); // Export public key as PEM byte[] exported = keyManager.exportPublicKey(keyPair, KeyLifecycleManager.KeyFormat.PEM); @@ -235,7 +235,7 @@ public class AwsSecretsManagerKeyLifecycleIT extends CamelTestSupport { @Test public void testMetadataTracking() throws Exception { // Generate key - keyManager.generateKeyPair("DILITHIUM", "tracking-key", DilithiumParameterSpec.dilithium2); + keyManager.generateKeyPair("DILITHIUM", "tracking-key", MLDSAParameterSpec.ml_dsa_44); // Get initial metadata KeyMetadata metadata = keyManager.getKeyMetadata("tracking-key"); diff --git a/components/camel-pqc/src/test/java/org/apache/camel/component/pqc/HashicorpVaultKeyLifecycleIT.java b/components/camel-pqc/src/test/java/org/apache/camel/component/pqc/HashicorpVaultKeyLifecycleIT.java index c88f98d1471f..965cf7a3261b 100644 --- a/components/camel-pqc/src/test/java/org/apache/camel/component/pqc/HashicorpVaultKeyLifecycleIT.java +++ b/components/camel-pqc/src/test/java/org/apache/camel/component/pqc/HashicorpVaultKeyLifecycleIT.java @@ -32,9 +32,9 @@ import org.apache.camel.component.pqc.lifecycle.KeyMetadata; import org.apache.camel.test.infra.hashicorp.vault.services.HashicorpServiceFactory; import org.apache.camel.test.infra.hashicorp.vault.services.HashicorpVaultService; import org.apache.camel.test.junit6.CamelTestSupport; +import org.bouncycastle.jcajce.spec.MLDSAParameterSpec; import org.bouncycastle.jce.provider.BouncyCastleProvider; import org.bouncycastle.pqc.jcajce.provider.BouncyCastlePQCProvider; -import org.bouncycastle.pqc.jcajce.spec.DilithiumParameterSpec; import org.bouncycastle.pqc.jcajce.spec.FalconParameterSpec; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Test; @@ -91,7 +91,7 @@ public class HashicorpVaultKeyLifecycleIT extends CamelTestSupport { @Test public void testGenerateAndStoreKeyInVault() throws Exception { // Generate a Dilithium key - KeyPair keyPair = keyManager.generateKeyPair("DILITHIUM", "test-dilithium-key", DilithiumParameterSpec.dilithium2); + KeyPair keyPair = keyManager.generateKeyPair("DILITHIUM", "test-dilithium-key", MLDSAParameterSpec.ml_dsa_44); assertNotNull(keyPair); assertNotNull(keyPair.getPublic()); @@ -127,7 +127,7 @@ public class HashicorpVaultKeyLifecycleIT extends CamelTestSupport { @Test public void testKeyRotation() throws Exception { // Generate initial key - keyManager.generateKeyPair("DILITHIUM", "rotation-key-old", DilithiumParameterSpec.dilithium2); + keyManager.generateKeyPair("DILITHIUM", "rotation-key-old", MLDSAParameterSpec.ml_dsa_44); KeyMetadata oldMetadata = keyManager.getKeyMetadata("rotation-key-old"); assertEquals(KeyMetadata.KeyStatus.ACTIVE, oldMetadata.getStatus()); @@ -147,7 +147,7 @@ public class HashicorpVaultKeyLifecycleIT extends CamelTestSupport { @Test public void testNeedsRotation() throws Exception { - keyManager.generateKeyPair("DILITHIUM", "rotation-check-key", DilithiumParameterSpec.dilithium2); + keyManager.generateKeyPair("DILITHIUM", "rotation-check-key", MLDSAParameterSpec.ml_dsa_44); // New key should not need rotation assertFalse(keyManager.needsRotation("rotation-check-key", Duration.ofDays(90), 10000)); @@ -164,9 +164,9 @@ public class HashicorpVaultKeyLifecycleIT extends CamelTestSupport { @Test public void testListKeys() throws Exception { // Generate multiple keys - keyManager.generateKeyPair("DILITHIUM", "list-key-1", DilithiumParameterSpec.dilithium2); + keyManager.generateKeyPair("DILITHIUM", "list-key-1", MLDSAParameterSpec.ml_dsa_44); keyManager.generateKeyPair("FALCON", "list-key-2", FalconParameterSpec.falcon_512); - keyManager.generateKeyPair("DILITHIUM", "list-key-3", DilithiumParameterSpec.dilithium3); + keyManager.generateKeyPair("DILITHIUM", "list-key-3", MLDSAParameterSpec.ml_dsa_65); // List all keys List<KeyMetadata> keys = keyManager.listKeys(); @@ -181,14 +181,14 @@ public class HashicorpVaultKeyLifecycleIT extends CamelTestSupport { @Test public void testExpireAndRevokeKey() throws Exception { // Test expiration - keyManager.generateKeyPair("DILITHIUM", "expire-key", DilithiumParameterSpec.dilithium2); + keyManager.generateKeyPair("DILITHIUM", "expire-key", MLDSAParameterSpec.ml_dsa_44); keyManager.expireKey("expire-key"); KeyMetadata expiredMetadata = keyManager.getKeyMetadata("expire-key"); assertEquals(KeyMetadata.KeyStatus.EXPIRED, expiredMetadata.getStatus()); // Test revocation - keyManager.generateKeyPair("DILITHIUM", "revoke-key", DilithiumParameterSpec.dilithium2); + keyManager.generateKeyPair("DILITHIUM", "revoke-key", MLDSAParameterSpec.ml_dsa_44); keyManager.revokeKey("revoke-key", "Key compromised in test"); KeyMetadata revokedMetadata = keyManager.getKeyMetadata("revoke-key"); @@ -198,7 +198,7 @@ public class HashicorpVaultKeyLifecycleIT extends CamelTestSupport { @Test public void testDeleteKey() throws Exception { - keyManager.generateKeyPair("DILITHIUM", "delete-key", DilithiumParameterSpec.dilithium2); + keyManager.generateKeyPair("DILITHIUM", "delete-key", MLDSAParameterSpec.ml_dsa_44); assertNotNull(keyManager.getKey("delete-key")); keyManager.deleteKey("delete-key"); @@ -209,7 +209,7 @@ public class HashicorpVaultKeyLifecycleIT extends CamelTestSupport { @Test public void testExportAndImportKey() throws Exception { - KeyPair keyPair = keyManager.generateKeyPair("DILITHIUM", "export-key", DilithiumParameterSpec.dilithium2); + KeyPair keyPair = keyManager.generateKeyPair("DILITHIUM", "export-key", MLDSAParameterSpec.ml_dsa_44); // Export public key as PEM byte[] exported = keyManager.exportPublicKey(keyPair, KeyLifecycleManager.KeyFormat.PEM); @@ -229,7 +229,7 @@ public class HashicorpVaultKeyLifecycleIT extends CamelTestSupport { @Test public void testMetadataTracking() throws Exception { // Generate key - keyManager.generateKeyPair("DILITHIUM", "tracking-key", DilithiumParameterSpec.dilithium2); + keyManager.generateKeyPair("DILITHIUM", "tracking-key", MLDSAParameterSpec.ml_dsa_44); // Get initial metadata KeyMetadata metadata = keyManager.getKeyMetadata("tracking-key"); diff --git a/components/camel-pqc/src/test/java/org/apache/camel/component/pqc/PQCEndToEndIntegrationTest.java b/components/camel-pqc/src/test/java/org/apache/camel/component/pqc/PQCEndToEndIntegrationTest.java index 179a8d29ddef..e7076558c7dd 100644 --- a/components/camel-pqc/src/test/java/org/apache/camel/component/pqc/PQCEndToEndIntegrationTest.java +++ b/components/camel-pqc/src/test/java/org/apache/camel/component/pqc/PQCEndToEndIntegrationTest.java @@ -33,9 +33,9 @@ import org.apache.camel.component.pqc.lifecycle.FileBasedKeyLifecycleManager; import org.apache.camel.component.pqc.lifecycle.KeyLifecycleManager; import org.apache.camel.component.pqc.lifecycle.KeyMetadata; import org.apache.camel.test.junit6.CamelTestSupport; +import org.bouncycastle.jcajce.spec.MLDSAParameterSpec; import org.bouncycastle.jce.provider.BouncyCastleProvider; import org.bouncycastle.pqc.jcajce.provider.BouncyCastlePQCProvider; -import org.bouncycastle.pqc.jcajce.spec.DilithiumParameterSpec; import org.bouncycastle.pqc.jcajce.spec.NTRUParameterSpec; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.Test; @@ -90,7 +90,7 @@ public class PQCEndToEndIntegrationTest extends CamelTestSupport { if (keyManager == null && tempDir != null) { keyManager = new FileBasedKeyLifecycleManager(tempDir.toString()); // Pre-generate keys needed for binding - dilithiumKeyPair = keyManager.generateKeyPair("DILITHIUM", "setup-dilithium", DilithiumParameterSpec.dilithium2); + dilithiumKeyPair = keyManager.generateKeyPair("DILITHIUM", "setup-dilithium", MLDSAParameterSpec.ml_dsa_44); ntruKeyPair = keyManager.generateKeyPair("NTRU", "setup-ntru", NTRUParameterSpec.ntruhps2048509); } } @@ -140,7 +140,7 @@ public class PQCEndToEndIntegrationTest extends CamelTestSupport { void testEndToEndSignatureWithGeneratedKey() throws Exception { // Step 1: Generate a Dilithium key pair using lifecycle manager dilithiumKeyPair = keyManager.generateKeyPair("DILITHIUM", "e2e-dilithium-key", - DilithiumParameterSpec.dilithium2); + MLDSAParameterSpec.ml_dsa_44); assertNotNull(dilithiumKeyPair); // Verify metadata was created @@ -181,7 +181,7 @@ public class PQCEndToEndIntegrationTest extends CamelTestSupport { @Test void testEndToEndKeyRotationWithSigning() throws Exception { // Step 1: Generate initial key - KeyPair oldKeyPair = keyManager.generateKeyPair("DILITHIUM", "e2e-old-key", DilithiumParameterSpec.dilithium2); + KeyPair oldKeyPair = keyManager.generateKeyPair("DILITHIUM", "e2e-old-key", MLDSAParameterSpec.ml_dsa_44); assertNotNull(oldKeyPair); // Step 2: Use old key for signing @@ -225,7 +225,7 @@ public class PQCEndToEndIntegrationTest extends CamelTestSupport { void testEndToEndKeyExportImportAndUse() throws Exception { // Step 1: Generate a key KeyPair originalKeyPair = keyManager.generateKeyPair("DILITHIUM", "e2e-export-key", - DilithiumParameterSpec.dilithium2); + MLDSAParameterSpec.ml_dsa_44); // Step 2: Export the key to PEM format byte[] exportedPublicKey = keyManager.exportPublicKey(originalKeyPair, KeyLifecycleManager.KeyFormat.PEM); @@ -266,7 +266,7 @@ public class PQCEndToEndIntegrationTest extends CamelTestSupport { void testEndToEndMultipleSignaturesWithMetadataTracking() throws Exception { // Step 1: Generate a key dilithiumKeyPair = keyManager.generateKeyPair("DILITHIUM", "e2e-multi-sig-key", - DilithiumParameterSpec.dilithium2); + MLDSAParameterSpec.ml_dsa_44); KeyMetadata metadata = keyManager.getKeyMetadata("e2e-multi-sig-key"); assertEquals(0, metadata.getUsageCount()); @@ -300,7 +300,7 @@ public class PQCEndToEndIntegrationTest extends CamelTestSupport { @Test void testEndToEndKeyExpirationPreventsUsage() throws Exception { // Step 1: Generate a key - dilithiumKeyPair = keyManager.generateKeyPair("DILITHIUM", "e2e-expire-key", DilithiumParameterSpec.dilithium2); + dilithiumKeyPair = keyManager.generateKeyPair("DILITHIUM", "e2e-expire-key", MLDSAParameterSpec.ml_dsa_44); // Step 2: Use the key successfully mockSigned.reset(); @@ -330,7 +330,7 @@ public class PQCEndToEndIntegrationTest extends CamelTestSupport { String keyId = "e2e-complete-lifecycle-key"; // Phase 1: Creation - KeyPair keyPair = keyManager.generateKeyPair("DILITHIUM", keyId, DilithiumParameterSpec.dilithium2); + KeyPair keyPair = keyManager.generateKeyPair("DILITHIUM", keyId, MLDSAParameterSpec.ml_dsa_44); assertNotNull(keyPair); KeyMetadata metadata = keyManager.getKeyMetadata(keyId); diff --git a/components/camel-pqc/src/test/java/org/apache/camel/component/pqc/PQCKYBERGenerateEncapsulationAESTest.java b/components/camel-pqc/src/test/java/org/apache/camel/component/pqc/PQCKYBERGenerateEncapsulationAESTest.java index a2f4fb4d94c6..5bdb3be518d7 100644 --- a/components/camel-pqc/src/test/java/org/apache/camel/component/pqc/PQCKYBERGenerateEncapsulationAESTest.java +++ b/components/camel-pqc/src/test/java/org/apache/camel/component/pqc/PQCKYBERGenerateEncapsulationAESTest.java @@ -28,9 +28,9 @@ import org.apache.camel.builder.RouteBuilder; import org.apache.camel.component.mock.MockEndpoint; import org.apache.camel.test.junit6.CamelTestSupport; import org.bouncycastle.jcajce.SecretKeyWithEncapsulation; +import org.bouncycastle.jcajce.spec.MLKEMParameterSpec; import org.bouncycastle.jce.provider.BouncyCastleProvider; import org.bouncycastle.pqc.jcajce.provider.BouncyCastlePQCProvider; -import org.bouncycastle.pqc.jcajce.spec.KyberParameterSpec; import org.bouncycastle.util.Arrays; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Test; @@ -92,7 +92,7 @@ public class PQCKYBERGenerateEncapsulationAESTest extends CamelTestSupport { public KeyPair setKeyPair() throws NoSuchAlgorithmException, NoSuchProviderException, InvalidAlgorithmParameterException { KeyPairGenerator kpg = KeyPairGenerator.getInstance(PQCKeyEncapsulationAlgorithms.KYBER.getAlgorithm(), PQCKeyEncapsulationAlgorithms.KYBER.getBcProvider()); - kpg.initialize(KyberParameterSpec.kyber1024, new SecureRandom()); + kpg.initialize(MLKEMParameterSpec.ml_kem_1024, new SecureRandom()); KeyPair kp = kpg.generateKeyPair(); return kp; } diff --git a/components/camel-pqc/src/test/java/org/apache/camel/component/pqc/PQCKeyLifecycleIntegrationTest.java b/components/camel-pqc/src/test/java/org/apache/camel/component/pqc/PQCKeyLifecycleIntegrationTest.java index 43750ca4acf9..63ed838afcae 100644 --- a/components/camel-pqc/src/test/java/org/apache/camel/component/pqc/PQCKeyLifecycleIntegrationTest.java +++ b/components/camel-pqc/src/test/java/org/apache/camel/component/pqc/PQCKeyLifecycleIntegrationTest.java @@ -31,9 +31,9 @@ import org.apache.camel.component.pqc.lifecycle.FileBasedKeyLifecycleManager; import org.apache.camel.component.pqc.lifecycle.KeyLifecycleManager; import org.apache.camel.component.pqc.lifecycle.KeyMetadata; import org.apache.camel.test.junit6.CamelTestSupport; +import org.bouncycastle.jcajce.spec.MLDSAParameterSpec; import org.bouncycastle.jce.provider.BouncyCastleProvider; import org.bouncycastle.pqc.jcajce.provider.BouncyCastlePQCProvider; -import org.bouncycastle.pqc.jcajce.spec.DilithiumParameterSpec; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Test; @@ -157,7 +157,7 @@ public class PQCKeyLifecycleIntegrationTest extends CamelTestSupport { @Test void testGenerateKeyThroughRoute() throws Exception { // First manually generate a key to test the operation - KeyPair keyPair = keyManager.generateKeyPair("DILITHIUM", "route-test-key", DilithiumParameterSpec.dilithium2); + KeyPair keyPair = keyManager.generateKeyPair("DILITHIUM", "route-test-key", MLDSAParameterSpec.ml_dsa_44); assertNotNull(keyPair); // Verify metadata @@ -170,7 +170,7 @@ public class PQCKeyLifecycleIntegrationTest extends CamelTestSupport { @Test void testExportKeyThroughManager() throws Exception { // Generate a key first - KeyPair keyPair = keyManager.generateKeyPair("DILITHIUM", "export-route-key", DilithiumParameterSpec.dilithium2); + KeyPair keyPair = keyManager.generateKeyPair("DILITHIUM", "export-route-key", MLDSAParameterSpec.ml_dsa_44); // Export the key byte[] exportedKey = keyManager.exportPublicKey(keyPair, KeyLifecycleManager.KeyFormat.PEM); @@ -184,7 +184,7 @@ public class PQCKeyLifecycleIntegrationTest extends CamelTestSupport { @Test void testGetMetadataThroughManager() throws Exception { // Generate a key - keyManager.generateKeyPair("DILITHIUM", "metadata-route-key", DilithiumParameterSpec.dilithium2); + keyManager.generateKeyPair("DILITHIUM", "metadata-route-key", MLDSAParameterSpec.ml_dsa_44); // Get metadata KeyMetadata metadata = keyManager.getKeyMetadata("metadata-route-key"); @@ -198,9 +198,9 @@ public class PQCKeyLifecycleIntegrationTest extends CamelTestSupport { @Test void testListKeysThroughManager() throws Exception { // Generate multiple keys - keyManager.generateKeyPair("DILITHIUM", "list-key-1", DilithiumParameterSpec.dilithium2); + keyManager.generateKeyPair("DILITHIUM", "list-key-1", MLDSAParameterSpec.ml_dsa_44); keyManager.generateKeyPair("FALCON", "list-key-2"); - keyManager.generateKeyPair("DILITHIUM", "list-key-3", DilithiumParameterSpec.dilithium3); + keyManager.generateKeyPair("DILITHIUM", "list-key-3", MLDSAParameterSpec.ml_dsa_65); // List all keys List<KeyMetadata> keys = keyManager.listKeys(); @@ -215,7 +215,7 @@ public class PQCKeyLifecycleIntegrationTest extends CamelTestSupport { @Test void testKeyRotationThroughManager() throws Exception { // Generate initial key - keyManager.generateKeyPair("DILITHIUM", "rotate-old-key", DilithiumParameterSpec.dilithium2); + keyManager.generateKeyPair("DILITHIUM", "rotate-old-key", MLDSAParameterSpec.ml_dsa_44); // Rotate the key KeyPair newKeyPair = keyManager.rotateKey("rotate-old-key", "rotate-new-key", "DILITHIUM"); @@ -234,7 +234,7 @@ public class PQCKeyLifecycleIntegrationTest extends CamelTestSupport { @Test void testExpireKeyThroughManager() throws Exception { // Generate a key - keyManager.generateKeyPair("DILITHIUM", "expire-route-key", DilithiumParameterSpec.dilithium2); + keyManager.generateKeyPair("DILITHIUM", "expire-route-key", MLDSAParameterSpec.ml_dsa_44); // Expire the key keyManager.expireKey("expire-route-key"); @@ -248,7 +248,7 @@ public class PQCKeyLifecycleIntegrationTest extends CamelTestSupport { @Test void testRevokeKeyThroughManager() throws Exception { // Generate a key - keyManager.generateKeyPair("DILITHIUM", "revoke-route-key", DilithiumParameterSpec.dilithium2); + keyManager.generateKeyPair("DILITHIUM", "revoke-route-key", MLDSAParameterSpec.ml_dsa_44); // Revoke the key String reason = "Security breach detected"; @@ -264,7 +264,7 @@ public class PQCKeyLifecycleIntegrationTest extends CamelTestSupport { void testKeyPersistenceAcrossManagers() throws Exception { // Generate key with first manager KeyPair originalKeyPair = keyManager.generateKeyPair("DILITHIUM", "persistence-key", - DilithiumParameterSpec.dilithium2); + MLDSAParameterSpec.ml_dsa_44); // Create new manager instance KeyLifecycleManager newManager = new FileBasedKeyLifecycleManager(tempDir.toString()); @@ -280,7 +280,7 @@ public class PQCKeyLifecycleIntegrationTest extends CamelTestSupport { @Test void testKeyMetadataUpdates() throws Exception { // Generate a key - keyManager.generateKeyPair("DILITHIUM", "update-test-key", DilithiumParameterSpec.dilithium2); + keyManager.generateKeyPair("DILITHIUM", "update-test-key", MLDSAParameterSpec.ml_dsa_44); // Get and update metadata KeyMetadata metadata = keyManager.getKeyMetadata("update-test-key"); @@ -300,7 +300,7 @@ public class PQCKeyLifecycleIntegrationTest extends CamelTestSupport { @Test void testKeyDeletion() throws Exception { // Generate a key - keyManager.generateKeyPair("DILITHIUM", "delete-test-key", DilithiumParameterSpec.dilithium2); + keyManager.generateKeyPair("DILITHIUM", "delete-test-key", MLDSAParameterSpec.ml_dsa_44); // Verify it exists assertNotNull(keyManager.getKeyMetadata("delete-test-key")); diff --git a/components/camel-pqc/src/test/java/org/apache/camel/component/pqc/PQCKeyLifecycleTest.java b/components/camel-pqc/src/test/java/org/apache/camel/component/pqc/PQCKeyLifecycleTest.java index c52302d4fb93..2437a27fab88 100644 --- a/components/camel-pqc/src/test/java/org/apache/camel/component/pqc/PQCKeyLifecycleTest.java +++ b/components/camel-pqc/src/test/java/org/apache/camel/component/pqc/PQCKeyLifecycleTest.java @@ -29,9 +29,9 @@ import java.util.List; import org.apache.camel.component.pqc.lifecycle.FileBasedKeyLifecycleManager; import org.apache.camel.component.pqc.lifecycle.KeyLifecycleManager; import org.apache.camel.component.pqc.lifecycle.KeyMetadata; +import org.bouncycastle.jcajce.spec.MLDSAParameterSpec; import org.bouncycastle.jce.provider.BouncyCastleProvider; import org.bouncycastle.pqc.jcajce.provider.BouncyCastlePQCProvider; -import org.bouncycastle.pqc.jcajce.spec.DilithiumParameterSpec; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Test; @@ -71,7 +71,7 @@ public class PQCKeyLifecycleTest { keyManager = new FileBasedKeyLifecycleManager(tempDir.toString()); // Generate a Dilithium key pair - KeyPair keyPair = keyManager.generateKeyPair("DILITHIUM", "test-dilithium-key", DilithiumParameterSpec.dilithium2); + KeyPair keyPair = keyManager.generateKeyPair("DILITHIUM", "test-dilithium-key", MLDSAParameterSpec.ml_dsa_44); assertNotNull(keyPair); assertNotNull(keyPair.getPublic()); @@ -107,7 +107,7 @@ public class PQCKeyLifecycleTest { void testExportKeyToPEM() throws Exception { keyManager = new FileBasedKeyLifecycleManager(tempDir.toString()); - KeyPair keyPair = keyManager.generateKeyPair("DILITHIUM", "export-test-key", DilithiumParameterSpec.dilithium2); + KeyPair keyPair = keyManager.generateKeyPair("DILITHIUM", "export-test-key", MLDSAParameterSpec.ml_dsa_44); // Export public key to PEM byte[] publicKeyPEM = keyManager.exportPublicKey(keyPair, KeyLifecycleManager.KeyFormat.PEM); @@ -130,7 +130,7 @@ public class PQCKeyLifecycleTest { void testExportKeyToDER() throws Exception { keyManager = new FileBasedKeyLifecycleManager(tempDir.toString()); - KeyPair keyPair = keyManager.generateKeyPair("DILITHIUM", "der-test-key", DilithiumParameterSpec.dilithium2); + KeyPair keyPair = keyManager.generateKeyPair("DILITHIUM", "der-test-key", MLDSAParameterSpec.ml_dsa_44); // Export to DER format byte[] publicKeyDER = keyManager.exportPublicKey(keyPair, KeyLifecycleManager.KeyFormat.DER); @@ -148,7 +148,7 @@ public class PQCKeyLifecycleTest { // Generate and export a key KeyPair originalKeyPair = keyManager.generateKeyPair("DILITHIUM", "import-test-key", - DilithiumParameterSpec.dilithium2); + MLDSAParameterSpec.ml_dsa_44); byte[] exportedKey = keyManager.exportPublicKey(originalKeyPair, KeyLifecycleManager.KeyFormat.PEM); // Import the key @@ -166,7 +166,7 @@ public class PQCKeyLifecycleTest { keyManager = new FileBasedKeyLifecycleManager(tempDir.toString()); // Generate initial key - KeyPair oldKeyPair = keyManager.generateKeyPair("DILITHIUM", "old-key", DilithiumParameterSpec.dilithium2); + KeyPair oldKeyPair = keyManager.generateKeyPair("DILITHIUM", "old-key", MLDSAParameterSpec.ml_dsa_44); assertNotNull(oldKeyPair); // Rotate the key @@ -189,7 +189,7 @@ public class PQCKeyLifecycleTest { void testKeyMetadataTracking() throws Exception { keyManager = new FileBasedKeyLifecycleManager(tempDir.toString()); - KeyPair keyPair = keyManager.generateKeyPair("DILITHIUM", "metadata-test-key", DilithiumParameterSpec.dilithium2); + KeyPair keyPair = keyManager.generateKeyPair("DILITHIUM", "metadata-test-key", MLDSAParameterSpec.ml_dsa_44); KeyMetadata metadata = keyManager.getKeyMetadata("metadata-test-key"); // Initial state @@ -215,7 +215,7 @@ public class PQCKeyLifecycleTest { void testExpireKey() throws Exception { keyManager = new FileBasedKeyLifecycleManager(tempDir.toString()); - keyManager.generateKeyPair("DILITHIUM", "expire-test-key", DilithiumParameterSpec.dilithium2); + keyManager.generateKeyPair("DILITHIUM", "expire-test-key", MLDSAParameterSpec.ml_dsa_44); // Expire the key keyManager.expireKey("expire-test-key"); @@ -230,7 +230,7 @@ public class PQCKeyLifecycleTest { void testRevokeKey() throws Exception { keyManager = new FileBasedKeyLifecycleManager(tempDir.toString()); - keyManager.generateKeyPair("DILITHIUM", "revoke-test-key", DilithiumParameterSpec.dilithium2); + keyManager.generateKeyPair("DILITHIUM", "revoke-test-key", MLDSAParameterSpec.ml_dsa_44); // Revoke the key String reason = "Compromised key"; @@ -247,9 +247,9 @@ public class PQCKeyLifecycleTest { keyManager = new FileBasedKeyLifecycleManager(tempDir.toString()); // Generate multiple keys - keyManager.generateKeyPair("DILITHIUM", "key1", DilithiumParameterSpec.dilithium2); + keyManager.generateKeyPair("DILITHIUM", "key1", MLDSAParameterSpec.ml_dsa_44); keyManager.generateKeyPair("FALCON", "key2"); - keyManager.generateKeyPair("DILITHIUM", "key3", DilithiumParameterSpec.dilithium3); + keyManager.generateKeyPair("DILITHIUM", "key3", MLDSAParameterSpec.ml_dsa_65); // List all keys List<KeyMetadata> keys = keyManager.listKeys(); @@ -265,7 +265,7 @@ public class PQCKeyLifecycleTest { void testDeleteKey() throws Exception { keyManager = new FileBasedKeyLifecycleManager(tempDir.toString()); - keyManager.generateKeyPair("DILITHIUM", "delete-test-key", DilithiumParameterSpec.dilithium2); + keyManager.generateKeyPair("DILITHIUM", "delete-test-key", MLDSAParameterSpec.ml_dsa_44); // Verify key exists assertNotNull(keyManager.getKeyMetadata("delete-test-key")); @@ -281,7 +281,7 @@ public class PQCKeyLifecycleTest { void testNeedsRotationByAge() throws Exception { keyManager = new FileBasedKeyLifecycleManager(tempDir.toString()); - keyManager.generateKeyPair("DILITHIUM", "age-test-key", DilithiumParameterSpec.dilithium2); + keyManager.generateKeyPair("DILITHIUM", "age-test-key", MLDSAParameterSpec.ml_dsa_44); // Should not need rotation for young key assertFalse(keyManager.needsRotation("age-test-key", Duration.ofDays(365), 0)); @@ -295,7 +295,7 @@ public class PQCKeyLifecycleTest { void testNeedsRotationByUsage() throws Exception { keyManager = new FileBasedKeyLifecycleManager(tempDir.toString()); - keyManager.generateKeyPair("DILITHIUM", "usage-test-key", DilithiumParameterSpec.dilithium2); + keyManager.generateKeyPair("DILITHIUM", "usage-test-key", MLDSAParameterSpec.ml_dsa_44); // Update usage count KeyMetadata metadata = keyManager.getKeyMetadata("usage-test-key"); @@ -317,7 +317,7 @@ public class PQCKeyLifecycleTest { // Generate and store a key KeyPair originalKeyPair = keyManager.generateKeyPair("DILITHIUM", "persistence-test-key", - DilithiumParameterSpec.dilithium2); + MLDSAParameterSpec.ml_dsa_44); // Create a new manager instance (simulating restart) KeyLifecycleManager newManager = new FileBasedKeyLifecycleManager(tempDir.toString()); @@ -341,7 +341,7 @@ public class PQCKeyLifecycleTest { void testKeyMetadataAge() throws Exception { keyManager = new FileBasedKeyLifecycleManager(tempDir.toString()); - keyManager.generateKeyPair("DILITHIUM", "age-calculation-key", DilithiumParameterSpec.dilithium2); + keyManager.generateKeyPair("DILITHIUM", "age-calculation-key", MLDSAParameterSpec.ml_dsa_44); KeyMetadata metadata = keyManager.getKeyMetadata("age-calculation-key"); // Age should be 0 days for just created key @@ -353,7 +353,7 @@ public class PQCKeyLifecycleTest { void testLegacyKeyPairMigration() throws Exception { // Seed a real PQC key pair via the manager FileBasedKeyLifecycleManager seedManager = new FileBasedKeyLifecycleManager(tempDir.toString()); - KeyPair original = seedManager.generateKeyPair("DILITHIUM", "seed-key", DilithiumParameterSpec.dilithium2); + KeyPair original = seedManager.generateKeyPair("DILITHIUM", "seed-key", MLDSAParameterSpec.ml_dsa_44); // Write it out in the legacy Java-serialized ".key" format under a fresh keyId Path legacyKeyFile = tempDir.resolve("legacy-key.key"); @@ -405,7 +405,7 @@ public class PQCKeyLifecycleTest { void testMultipleKeyFormats() throws Exception { keyManager = new FileBasedKeyLifecycleManager(tempDir.toString()); - KeyPair keyPair = keyManager.generateKeyPair("DILITHIUM", "format-test-key", DilithiumParameterSpec.dilithium2); + KeyPair keyPair = keyManager.generateKeyPair("DILITHIUM", "format-test-key", MLDSAParameterSpec.ml_dsa_44); // Test all export formats byte[] pemPublic = keyManager.exportPublicKey(keyPair, KeyLifecycleManager.KeyFormat.PEM); diff --git a/components/camel-pqc/src/test/java/org/apache/camel/component/pqc/PQCKeyStatusEnforcementTest.java b/components/camel-pqc/src/test/java/org/apache/camel/component/pqc/PQCKeyStatusEnforcementTest.java index 3df374710beb..648d971d4f94 100644 --- a/components/camel-pqc/src/test/java/org/apache/camel/component/pqc/PQCKeyStatusEnforcementTest.java +++ b/components/camel-pqc/src/test/java/org/apache/camel/component/pqc/PQCKeyStatusEnforcementTest.java @@ -34,9 +34,9 @@ import org.apache.camel.component.pqc.lifecycle.FileBasedKeyLifecycleManager; import org.apache.camel.component.pqc.lifecycle.KeyLifecycleManager; import org.apache.camel.component.pqc.lifecycle.KeyMetadata; import org.apache.camel.test.junit6.CamelTestSupport; +import org.bouncycastle.jcajce.spec.MLDSAParameterSpec; import org.bouncycastle.jce.provider.BouncyCastleProvider; import org.bouncycastle.pqc.jcajce.provider.BouncyCastlePQCProvider; -import org.bouncycastle.pqc.jcajce.spec.DilithiumParameterSpec; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.io.TempDir; @@ -368,7 +368,7 @@ public class PQCKeyStatusEnforcementTest extends CamelTestSupport { KeyPairGenerator kpGen = KeyPairGenerator.getInstance( PQCSignatureAlgorithms.DILITHIUM.getAlgorithm(), PQCSignatureAlgorithms.DILITHIUM.getBcProvider()); - kpGen.initialize(DilithiumParameterSpec.dilithium2, new SecureRandom()); + kpGen.initialize(MLDSAParameterSpec.ml_dsa_44, new SecureRandom()); sharedKeyPair = kpGen.generateKeyPair(); // Store the key in the lifecycle manager so we can test status enforcement diff --git a/components/camel-pqc/src/test/java/org/apache/camel/component/pqc/PQCSignatureDILITHIUMTest.java b/components/camel-pqc/src/test/java/org/apache/camel/component/pqc/PQCSignatureDILITHIUMTest.java index ed2319cfd68c..d9b02b27b5f3 100644 --- a/components/camel-pqc/src/test/java/org/apache/camel/component/pqc/PQCSignatureDILITHIUMTest.java +++ b/components/camel-pqc/src/test/java/org/apache/camel/component/pqc/PQCSignatureDILITHIUMTest.java @@ -25,9 +25,9 @@ import org.apache.camel.ProducerTemplate; import org.apache.camel.builder.RouteBuilder; import org.apache.camel.component.mock.MockEndpoint; import org.apache.camel.test.junit6.CamelTestSupport; +import org.bouncycastle.jcajce.spec.MLDSAParameterSpec; import org.bouncycastle.jce.provider.BouncyCastleProvider; import org.bouncycastle.pqc.jcajce.provider.BouncyCastlePQCProvider; -import org.bouncycastle.pqc.jcajce.spec.DilithiumParameterSpec; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Test; @@ -78,7 +78,7 @@ public class PQCSignatureDILITHIUMTest extends CamelTestSupport { public KeyPair setKeyPair() throws NoSuchAlgorithmException, NoSuchProviderException, InvalidAlgorithmParameterException { KeyPairGenerator kpGen = KeyPairGenerator.getInstance(PQCSignatureAlgorithms.DILITHIUM.getAlgorithm(), PQCSignatureAlgorithms.DILITHIUM.getBcProvider()); - kpGen.initialize(DilithiumParameterSpec.dilithium5); + kpGen.initialize(MLDSAParameterSpec.ml_dsa_87); KeyPair kp = kpGen.generateKeyPair(); return kp; } diff --git a/components/camel-pqc/src/test/java/org/apache/camel/component/pqc/PQCSignatureSPHINCSPLUSTest.java b/components/camel-pqc/src/test/java/org/apache/camel/component/pqc/PQCSignatureSPHINCSPLUSTest.java index ff6d2646be66..c88eac5be14d 100644 --- a/components/camel-pqc/src/test/java/org/apache/camel/component/pqc/PQCSignatureSPHINCSPLUSTest.java +++ b/components/camel-pqc/src/test/java/org/apache/camel/component/pqc/PQCSignatureSPHINCSPLUSTest.java @@ -25,9 +25,9 @@ import org.apache.camel.ProducerTemplate; import org.apache.camel.builder.RouteBuilder; import org.apache.camel.component.mock.MockEndpoint; import org.apache.camel.test.junit6.CamelTestSupport; +import org.bouncycastle.jcajce.spec.SLHDSAParameterSpec; import org.bouncycastle.jce.provider.BouncyCastleProvider; import org.bouncycastle.pqc.jcajce.provider.BouncyCastlePQCProvider; -import org.bouncycastle.pqc.jcajce.spec.SPHINCSPlusParameterSpec; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Test; @@ -78,7 +78,7 @@ public class PQCSignatureSPHINCSPLUSTest extends CamelTestSupport { public KeyPair setKeyPair() throws NoSuchAlgorithmException, NoSuchProviderException, InvalidAlgorithmParameterException { KeyPairGenerator kpGen = KeyPairGenerator.getInstance(PQCSignatureAlgorithms.SPHINCSPLUS.getAlgorithm(), PQCSignatureAlgorithms.SPHINCSPLUS.getBcProvider()); - kpGen.initialize(SPHINCSPlusParameterSpec.haraka_256s, new SecureRandom()); + kpGen.initialize(SLHDSAParameterSpec.slh_dsa_sha2_128s, new SecureRandom()); KeyPair kp = kpGen.generateKeyPair(); return kp; } diff --git a/components/camel-pqc/src/test/java/org/apache/camel/component/pqc/dataformat/PQCDataFormatMultipleAlgorithmsTest.java b/components/camel-pqc/src/test/java/org/apache/camel/component/pqc/dataformat/PQCDataFormatMultipleAlgorithmsTest.java index ae85d4ceaa9b..f18552574960 100644 --- a/components/camel-pqc/src/test/java/org/apache/camel/component/pqc/dataformat/PQCDataFormatMultipleAlgorithmsTest.java +++ b/components/camel-pqc/src/test/java/org/apache/camel/component/pqc/dataformat/PQCDataFormatMultipleAlgorithmsTest.java @@ -32,9 +32,9 @@ import org.apache.camel.builder.RouteBuilder; import org.apache.camel.component.mock.MockEndpoint; import org.apache.camel.component.pqc.PQCKeyEncapsulationAlgorithms; import org.apache.camel.test.junit6.CamelTestSupport; +import org.bouncycastle.jcajce.spec.MLKEMParameterSpec; import org.bouncycastle.jce.provider.BouncyCastleProvider; import org.bouncycastle.pqc.jcajce.provider.BouncyCastlePQCProvider; -import org.bouncycastle.pqc.jcajce.spec.KyberParameterSpec; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Test; @@ -98,7 +98,7 @@ public class PQCDataFormatMultipleAlgorithmsTest extends CamelTestSupport { KeyPairGenerator kpg = KeyPairGenerator.getInstance( PQCKeyEncapsulationAlgorithms.KYBER.getAlgorithm(), PQCKeyEncapsulationAlgorithms.KYBER.getBcProvider()); - kpg.initialize(KyberParameterSpec.kyber512, new SecureRandom()); + kpg.initialize(MLKEMParameterSpec.ml_kem_512, new SecureRandom()); return kpg.generateKeyPair(); } } diff --git a/components/camel-pqc/src/test/java/org/apache/camel/component/pqc/lifecycle/KeyRotationSchedulerTest.java b/components/camel-pqc/src/test/java/org/apache/camel/component/pqc/lifecycle/KeyRotationSchedulerTest.java index 35fb53d7d4e2..66bac3796358 100644 --- a/components/camel-pqc/src/test/java/org/apache/camel/component/pqc/lifecycle/KeyRotationSchedulerTest.java +++ b/components/camel-pqc/src/test/java/org/apache/camel/component/pqc/lifecycle/KeyRotationSchedulerTest.java @@ -27,9 +27,9 @@ import java.util.concurrent.atomic.AtomicReference; import org.apache.camel.component.pqc.PQCComponent; import org.apache.camel.impl.DefaultCamelContext; +import org.bouncycastle.jcajce.spec.MLDSAParameterSpec; import org.bouncycastle.jce.provider.BouncyCastleProvider; import org.bouncycastle.pqc.jcajce.provider.BouncyCastlePQCProvider; -import org.bouncycastle.pqc.jcajce.spec.DilithiumParameterSpec; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Test; @@ -81,7 +81,7 @@ class KeyRotationSchedulerTest { /** Generates a Dilithium key and drives its recorded usage count to the given value. */ private void generateKeyWithUsage(String keyId, long usage) throws Exception { - keyManager.generateKeyPair("DILITHIUM", keyId, DilithiumParameterSpec.dilithium2); + keyManager.generateKeyPair("DILITHIUM", keyId, MLDSAParameterSpec.ml_dsa_44); KeyMetadata metadata = keyManager.getKeyMetadata(keyId); for (long i = 0; i < usage; i++) { metadata.updateLastUsed();
