This is an automated email from the ASF dual-hosted git repository. jamesnetherton pushed a commit to branch camel-main in repository https://gitbox.apache.org/repos/asf/camel-quarkus.git
commit 3b62b9f5df007e93df9f8aaa8e6f241f3d12bf73 Author: Gaƫlle Fournier <[email protected]> AuthorDate: Fri Jun 19 09:26:28 2026 +0200 feat: remove eddsa library dependency code since it has been removed in camel core (#8773) --- extensions/nats/runtime/pom.xml | 10 --- .../nats/graal/EdDSAEngineSubstitutions.java | 95 ---------------------- .../component/ssh/deployment/SshProcessor.java | 31 ++----- pom.xml | 1 - poms/bom/pom.xml | 5 -- poms/bom/src/main/generated/flattened-full-pom.xml | 5 -- .../src/main/generated/flattened-reduced-pom.xml | 5 -- .../generated/flattened-reduced-verbose-pom.xml | 5 -- 8 files changed, 7 insertions(+), 150 deletions(-) diff --git a/extensions/nats/runtime/pom.xml b/extensions/nats/runtime/pom.xml index d5064b5c21..9899367de5 100644 --- a/extensions/nats/runtime/pom.xml +++ b/extensions/nats/runtime/pom.xml @@ -48,16 +48,6 @@ <groupId>org.apache.camel</groupId> <artifactId>camel-nats</artifactId> </dependency> - <dependency> - <groupId>net.i2p.crypto</groupId> - <artifactId>eddsa</artifactId> - <scope>provided</scope> - </dependency> - <dependency> - <groupId>org.graalvm.sdk</groupId> - <artifactId>nativeimage</artifactId> - <scope>provided</scope> - </dependency> </dependencies> <build> diff --git a/extensions/nats/runtime/src/main/java/org/apache/camel/component/nats/graal/EdDSAEngineSubstitutions.java b/extensions/nats/runtime/src/main/java/org/apache/camel/component/nats/graal/EdDSAEngineSubstitutions.java deleted file mode 100644 index 9325c3d2a9..0000000000 --- a/extensions/nats/runtime/src/main/java/org/apache/camel/component/nats/graal/EdDSAEngineSubstitutions.java +++ /dev/null @@ -1,95 +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.component.nats.graal; - -import java.security.InvalidKeyException; -import java.security.MessageDigest; -import java.security.NoSuchAlgorithmException; -import java.security.PublicKey; -import java.security.spec.InvalidKeySpecException; -import java.security.spec.X509EncodedKeySpec; -import java.util.function.BooleanSupplier; - -import com.oracle.svm.core.annotate.Alias; -import com.oracle.svm.core.annotate.Substitute; -import com.oracle.svm.core.annotate.TargetClass; -import net.i2p.crypto.eddsa.EdDSAKey; -import net.i2p.crypto.eddsa.EdDSAPublicKey; - -/** - * TODO: https://github.com/apache/camel-quarkus/issues/5233 - * - * Remove this when net.i2p.crypto:eddsa >= 0.3.1 is released. - */ -@TargetClass(className = "net.i2p.crypto.eddsa.EdDSAEngine", onlyWith = IsEddsaCryptoAvailable.class) -public final class EdDSAEngineSubstitutions { - @Alias - private EdDSAKey key; - @Alias - private MessageDigest digest; - - @Alias - public void reset() { - } - - /** - * Fix for JDK 17 to avoid importing JDK internal API sun.security.x509.X509Key. - * Based on the original change: https://github.com/str4d/ed25519-java/commit/35c34a549cc933dc2d1d23ad4bfa88187fe77e7a - */ - @Substitute - protected void engineInitVerify(PublicKey publicKey) throws InvalidKeyException { - reset(); - if (publicKey instanceof EdDSAPublicKey) { - key = (EdDSAPublicKey) publicKey; - - if (digest == null) { - // Instantiate the digest from the key parameters - try { - digest = MessageDigest.getInstance(key.getParams().getHashAlgorithm()); - } catch (NoSuchAlgorithmException e) { - throw new InvalidKeyException( - "cannot get required digest " + key.getParams().getHashAlgorithm() + " for private key."); - } - } else if (!key.getParams().getHashAlgorithm().equals(digest.getAlgorithm())) - throw new InvalidKeyException("Key hash algorithm does not match chosen digest"); - } else if (publicKey.getFormat().equals("X.509")) { - // X509Certificate will sometimes contain an X509Key rather than the EdDSAPublicKey itself; the contained - // key is valid but needs to be instanced as an EdDSAPublicKey before it can be used. - EdDSAPublicKey parsedPublicKey; - try { - parsedPublicKey = new EdDSAPublicKey(new X509EncodedKeySpec(publicKey.getEncoded())); - } catch (InvalidKeySpecException ex) { - throw new InvalidKeyException("cannot handle X.509 EdDSA public key: " + publicKey.getAlgorithm()); - } - engineInitVerify(parsedPublicKey); - } else { - throw new InvalidKeyException("cannot identify EdDSA public key: " + publicKey.getClass()); - } - } -} - -final class IsEddsaCryptoAvailable implements BooleanSupplier { - @Override - public boolean getAsBoolean() { - try { - Class.forName("net.i2p.crypto.eddsa.EdDSAEngine", false, Thread.currentThread().getContextClassLoader()); - return true; - } catch (ClassNotFoundException e) { - return false; - } - } -} diff --git a/extensions/ssh/deployment/src/main/java/org/apache/camel/quarkus/component/ssh/deployment/SshProcessor.java b/extensions/ssh/deployment/src/main/java/org/apache/camel/quarkus/component/ssh/deployment/SshProcessor.java index 8395b66cc0..b1a79d788c 100644 --- a/extensions/ssh/deployment/src/main/java/org/apache/camel/quarkus/component/ssh/deployment/SshProcessor.java +++ b/extensions/ssh/deployment/src/main/java/org/apache/camel/quarkus/component/ssh/deployment/SshProcessor.java @@ -19,8 +19,6 @@ package org.apache.camel.quarkus.component.ssh.deployment; import java.security.KeyFactory; import java.security.KeyPairGenerator; import java.security.Signature; -import java.util.ArrayList; -import java.util.Arrays; import java.util.List; import javax.crypto.KeyAgreement; @@ -52,29 +50,14 @@ class SshProcessor { @BuildStep void registerForReflection(BuildProducer<ReflectiveClassBuildItem> reflectiveClasses) { - // Register standard Java security and SSHD classes - List<Class<?>> classes = new ArrayList<>(Arrays.asList( - KeyPairGenerator.class, - KeyAgreement.class, - KeyFactory.class, - Signature.class, - Mac.class, - Nio2ServiceFactoryFactory.class)); - - // Conditionally register net.i2p.crypto EdDSA classes only if present on classpath. - // When net.i2p.crypto:eddsa is excluded, Apache SSHD 2.15+ automatically falls back - // to BouncyCastle for EdDSA support (see BouncyCastleSecurityProviderRegistrar). - try { - classes.add(Class.forName("net.i2p.crypto.eddsa.EdDSAEngine", false, - Thread.currentThread().getContextClassLoader())); - classes.add(Class.forName("net.i2p.crypto.eddsa.KeyFactory", false, - Thread.currentThread().getContextClassLoader())); - } catch (ClassNotFoundException e) { - // EdDSA classes not available - BouncyCastle will handle EdDSA instead - } - reflectiveClasses.produce( - ReflectiveClassBuildItem.builder(classes.toArray(new Class<?>[0])).methods().build()); + ReflectiveClassBuildItem.builder( + KeyPairGenerator.class, + KeyAgreement.class, + KeyFactory.class, + Signature.class, + Mac.class, + Nio2ServiceFactoryFactory.class).methods().build()); } @BuildStep diff --git a/pom.xml b/pom.xml index 87fba5b43d..80df9d64ec 100644 --- a/pom.xml +++ b/pom.xml @@ -94,7 +94,6 @@ <dfdl-scala.version>2.12.20</dfdl-scala.version> <drill-jdbc-all.version>${apache-drill-version}</drill-jdbc-all.version> <dropwizard-metrics.version>${metrics-version}</dropwizard-metrics.version> - <eddsa.version>0.3.0</eddsa.version> <eclipse-transformer.version>0.5.0</eclipse-transformer.version> <freemarker.version>2.3.34</freemarker.version><!-- @sync io.quarkiverse.freemarker:quarkus-freemarker-parent:${quarkiverse-freemarker.version} prop:freemarker.version --> <geny.version>0.6.2</geny.version> diff --git a/poms/bom/pom.xml b/poms/bom/pom.xml index 258dcfff3b..8d75aad411 100644 --- a/poms/bom/pom.xml +++ b/poms/bom/pom.xml @@ -7912,11 +7912,6 @@ <artifactId>mbassador</artifactId> <version>${mbassador.version}</version> </dependency> - <dependency> - <groupId>net.i2p.crypto</groupId> - <artifactId>eddsa</artifactId> - <version>${eddsa.version}</version> - </dependency> <dependency> <groupId>net.minidev</groupId> <artifactId>json-smart</artifactId> diff --git a/poms/bom/src/main/generated/flattened-full-pom.xml b/poms/bom/src/main/generated/flattened-full-pom.xml index 6b20d63ec4..18c0a5cfc7 100644 --- a/poms/bom/src/main/generated/flattened-full-pom.xml +++ b/poms/bom/src/main/generated/flattened-full-pom.xml @@ -7794,11 +7794,6 @@ <artifactId>mbassador</artifactId><!-- org.apache.camel.quarkus:camel-quarkus-bom:${project.version} --> <version>1.3.0</version><!-- org.apache.camel.quarkus:camel-quarkus-bom:${project.version} --> </dependency> - <dependency> - <groupId>net.i2p.crypto</groupId><!-- org.apache.camel.quarkus:camel-quarkus-bom:${project.version} --> - <artifactId>eddsa</artifactId><!-- org.apache.camel.quarkus:camel-quarkus-bom:${project.version} --> - <version>0.3.0</version><!-- org.apache.camel.quarkus:camel-quarkus-bom:${project.version} --> - </dependency> <dependency> <groupId>net.minidev</groupId><!-- org.apache.camel.quarkus:camel-quarkus-bom:${project.version} --> <artifactId>json-smart</artifactId><!-- org.apache.camel.quarkus:camel-quarkus-bom:${project.version} --> diff --git a/poms/bom/src/main/generated/flattened-reduced-pom.xml b/poms/bom/src/main/generated/flattened-reduced-pom.xml index 43e400bf89..9e2b4e11cf 100644 --- a/poms/bom/src/main/generated/flattened-reduced-pom.xml +++ b/poms/bom/src/main/generated/flattened-reduced-pom.xml @@ -7733,11 +7733,6 @@ <artifactId>mbassador</artifactId> <version>1.3.0</version> </dependency> - <dependency> - <groupId>net.i2p.crypto</groupId> - <artifactId>eddsa</artifactId> - <version>0.3.0</version> - </dependency> <dependency> <groupId>net.minidev</groupId> <artifactId>json-smart</artifactId> diff --git a/poms/bom/src/main/generated/flattened-reduced-verbose-pom.xml b/poms/bom/src/main/generated/flattened-reduced-verbose-pom.xml index 749052395f..b0736d0592 100644 --- a/poms/bom/src/main/generated/flattened-reduced-verbose-pom.xml +++ b/poms/bom/src/main/generated/flattened-reduced-verbose-pom.xml @@ -7733,11 +7733,6 @@ <artifactId>mbassador</artifactId><!-- org.apache.camel.quarkus:camel-quarkus-bom:${project.version} --> <version>1.3.0</version><!-- org.apache.camel.quarkus:camel-quarkus-bom:${project.version} --> </dependency> - <dependency> - <groupId>net.i2p.crypto</groupId><!-- org.apache.camel.quarkus:camel-quarkus-bom:${project.version} --> - <artifactId>eddsa</artifactId><!-- org.apache.camel.quarkus:camel-quarkus-bom:${project.version} --> - <version>0.3.0</version><!-- org.apache.camel.quarkus:camel-quarkus-bom:${project.version} --> - </dependency> <dependency> <groupId>net.minidev</groupId><!-- org.apache.camel.quarkus:camel-quarkus-bom:${project.version} --> <artifactId>json-smart</artifactId><!-- org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
