This is an automated email from the ASF dual-hosted git repository. JiriOndrusek pushed a commit to branch camel-main in repository https://gitbox.apache.org/repos/asf/camel-quarkus.git
commit 403d7124407f2a8798114bc043c67c3b5d26aa25 Author: Jiří Ondrušek <[email protected]> AuthorDate: Tue Sep 29 16:01:46 2026 +0000 Fixes #9231. Removed PQC native workarounds for BouncyCastle 1.86 Camel main uses BouncyCastle 1.86 since apache/camel@dc7d79531a7d, so the Picnic/FRODO/CMCE substitutions no longer compile and are not needed. Reverts 843f97ff7ea0. Co-Authored-By: Claude Fable 5.1 <[email protected]> --- .../component/pqc/deployment/PqcProcessor.java | 14 --- extensions/pqc/runtime/pom.xml | 5 - .../component/pqc/graal/PqcSubstitutions.java | 121 --------------------- 3 files changed, 140 deletions(-) diff --git a/extensions/pqc/deployment/src/main/java/org/apache/camel/quarkus/component/pqc/deployment/PqcProcessor.java b/extensions/pqc/deployment/src/main/java/org/apache/camel/quarkus/component/pqc/deployment/PqcProcessor.java index a92bdf60e5..425d492964 100644 --- a/extensions/pqc/deployment/src/main/java/org/apache/camel/quarkus/component/pqc/deployment/PqcProcessor.java +++ b/extensions/pqc/deployment/src/main/java/org/apache/camel/quarkus/component/pqc/deployment/PqcProcessor.java @@ -23,10 +23,6 @@ import io.quarkus.deployment.builditem.FeatureBuildItem; import io.quarkus.deployment.builditem.IndexDependencyBuildItem; import io.quarkus.deployment.builditem.nativeimage.NativeImageSecurityProviderBuildItem; import io.quarkus.deployment.builditem.nativeimage.ReflectiveClassBuildItem; -import io.quarkus.deployment.builditem.nativeimage.RuntimeInitializedClassBuildItem; -import org.apache.camel.component.pqc.crypto.PQCDefaultPicnicMaterial; -import org.apache.camel.component.pqc.crypto.kem.PQCDefaultCMCEMaterial; -import org.apache.camel.component.pqc.crypto.kem.PQCDefaultFRODOMaterial; import org.apache.camel.quarkus.support.bouncycastle.BouncyCastleRecorder; import org.apache.camel.quarkus.support.bouncycastle.deployment.BouncyCastleAdditionalProviderBuildItem; import org.jboss.jandex.IndexView; @@ -82,14 +78,4 @@ class PqcProcessor { return new BouncyCastleAdditionalProviderBuildItem(BouncyCastleRecorder.BOUNCYCASTLE_PCQ_PROVIDER_NAME); } - // TODO: Remove this - https://github.com/apache/camel-quarkus/issues/9231 - @BuildStep - void runtimeInitializedClasses(BuildProducer<RuntimeInitializedClassBuildItem> runtimeInitializedClass) { - runtimeInitializedClass.produce( - new RuntimeInitializedClassBuildItem(PQCDefaultPicnicMaterial.class.getName())); - runtimeInitializedClass.produce( - new RuntimeInitializedClassBuildItem(PQCDefaultFRODOMaterial.class.getName())); - runtimeInitializedClass.produce( - new RuntimeInitializedClassBuildItem(PQCDefaultCMCEMaterial.class.getName())); - } } diff --git a/extensions/pqc/runtime/pom.xml b/extensions/pqc/runtime/pom.xml index 2839831a7b..590424a0d8 100644 --- a/extensions/pqc/runtime/pom.xml +++ b/extensions/pqc/runtime/pom.xml @@ -49,11 +49,6 @@ <groupId>org.apache.camel.quarkus</groupId> <artifactId>camel-quarkus-support-bouncycastle</artifactId> </dependency> - <dependency> - <groupId>org.graalvm.sdk</groupId> - <artifactId>nativeimage</artifactId> - <scope>provided</scope> - </dependency> </dependencies> <build> diff --git a/extensions/pqc/runtime/src/main/java/org/apache/camel/quarkus/component/pqc/graal/PqcSubstitutions.java b/extensions/pqc/runtime/src/main/java/org/apache/camel/quarkus/component/pqc/graal/PqcSubstitutions.java deleted file mode 100644 index 5d080ea93c..0000000000 --- a/extensions/pqc/runtime/src/main/java/org/apache/camel/quarkus/component/pqc/graal/PqcSubstitutions.java +++ /dev/null @@ -1,121 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.apache.camel.quarkus.component.pqc.graal; - -import java.security.InvalidAlgorithmParameterException; -import java.security.KeyPairGenerator; -import java.security.NoSuchAlgorithmException; -import java.security.NoSuchProviderException; -import java.security.spec.AlgorithmParameterSpec; - -import com.oracle.svm.core.annotate.Substitute; -import com.oracle.svm.core.annotate.TargetClass; -import org.apache.camel.component.pqc.PQCKeyEncapsulationAlgorithms; -import org.apache.camel.component.pqc.PQCParameterSpecResolver; -import org.apache.camel.component.pqc.crypto.PQCDefaultPicnicMaterial; -import org.apache.camel.component.pqc.crypto.kem.PQCDefaultCMCEMaterial; -import org.apache.camel.component.pqc.crypto.kem.PQCDefaultFRODOMaterial; -import org.apache.camel.util.SecureRandomHelper; -import org.bouncycastle.jcajce.spec.CMCEParameterSpec; -import org.bouncycastle.jcajce.spec.MLDSAParameterSpec; -import org.bouncycastle.jcajce.spec.MLKEMParameterSpec; -import org.bouncycastle.jcajce.spec.SLHDSAParameterSpec; -import org.bouncycastle.pqc.jcajce.spec.BIKEParameterSpec; -import org.bouncycastle.pqc.jcajce.spec.FalconParameterSpec; -import org.bouncycastle.pqc.jcajce.spec.HQCParameterSpec; -import org.bouncycastle.pqc.jcajce.spec.NTRULPRimeParameterSpec; -import org.bouncycastle.pqc.jcajce.spec.NTRUParameterSpec; -import org.bouncycastle.pqc.jcajce.spec.SABERParameterSpec; -import org.bouncycastle.pqc.jcajce.spec.SNTRUPrimeParameterSpec; - -/** - * Removes references to BouncyCastle parameter specs that no longer exist in the BouncyCastle version managed by - * Quarkus. Algorithms without a replacement spec are not supported in native mode. - */ -// TODO: Remove this - https://github.com/apache/camel-quarkus/issues/9231 -final class PqcSubstitutions { -} - -@TargetClass(PQCParameterSpecResolver.class) -final class SubstitutePQCParameterSpecResolver { - @Substitute - private static AlgorithmParameterSpec doResolve(String algorithm, String parameterSpec) { - switch (algorithm) { - // Signature algorithms - case "MLDSA": - return MLDSAParameterSpec.fromName(parameterSpec); - case "SLHDSA": - return SLHDSAParameterSpec.fromName(parameterSpec); - case "FALCON": - return FalconParameterSpec.fromName(parameterSpec); - // Key encapsulation algorithms - case "MLKEM": - return MLKEMParameterSpec.fromName(parameterSpec); - case "NTRU": - return NTRUParameterSpec.fromName(parameterSpec); - case "NTRULPRime": - return NTRULPRimeParameterSpec.fromName(parameterSpec); - case "SNTRUPrime": - return SNTRUPrimeParameterSpec.fromName(parameterSpec); - case "BIKE": - return BIKEParameterSpec.fromName(parameterSpec); - case "HQC": - return HQCParameterSpec.fromName(parameterSpec); - case "CMCE": - return CMCEParameterSpec.fromName(parameterSpec); - case "SABER": - return SABERParameterSpec.fromName(parameterSpec); - case "DILITHIUM": - case "SPHINCSPLUS": - case "PICNIC": - case "KYBER": - case "FRODO": - throw new UnsupportedOperationException( - "The parameterSpec option is not supported for algorithm " + algorithm + " in native mode"); - default: - throw new IllegalStateException("Unsupported algorithm: " + algorithm); - } - } -} - -@TargetClass(PQCDefaultPicnicMaterial.class) -final class SubstitutePQCDefaultPicnicMaterial { - @Substitute - protected static KeyPairGenerator prepareKeyPair() { - throw new UnsupportedOperationException("The PICNIC algorithm is not supported in native mode"); - } -} - -@TargetClass(PQCDefaultFRODOMaterial.class) -final class SubstitutePQCDefaultFRODOMaterial { - @Substitute - protected static KeyPairGenerator prepareKeyPair() { - throw new UnsupportedOperationException("The FRODO algorithm is not supported in native mode"); - } -} - -@TargetClass(PQCDefaultCMCEMaterial.class) -final class SubstitutePQCDefaultCMCEMaterial { - @Substitute - protected static KeyPairGenerator prepareKeyPair() - throws NoSuchAlgorithmException, NoSuchProviderException, InvalidAlgorithmParameterException { - KeyPairGenerator kpg = KeyPairGenerator.getInstance(PQCKeyEncapsulationAlgorithms.CMCE.getAlgorithm(), - PQCKeyEncapsulationAlgorithms.CMCE.getBcProvider()); - kpg.initialize(CMCEParameterSpec.mceliece8192128f, SecureRandomHelper.getSecureRandom()); - return kpg; - } -}
