quarkusio / quarkus

Quarkus: Supersonic Subatomic Java.
https://quarkus.io
Apache License 2.0
13.57k stars 2.63k forks source link

Problems with SecunetEdDSASecurityProvider in native images #43012

Open mithunmaddur opened 1 week ago

mithunmaddur commented 1 week ago

Describe the bug

Getting below while running exe generated . we are using java 17 and quarkus 3.13.2

2024-09-02 14:09:43,608 ERROR [] (main) class configured for Signature (provider: SNED25519) cannot be found.: java.security.NoSuchAlgorithmException: class configured for Signature (provider: SNED25519) cannot be found.
        at java.base@17.0.12/java.security.Provider$Service.getImplClass(Provider.java:1959)
        at java.base@17.0.12/java.security.Provider$Service.getDefaultConstructor(Provider.java:1975)
        at java.base@17.0.12/java.security.Provider$Service.newInstanceOf(Provider.java:1889)
        at java.base@17.0.12/java.security.Provider$Service.newInstanceUtil(Provider.java:1897)
        at java.base@17.0.12/java.security.Provider$Service.newInstance(Provider.java:1872)
        at java.base@17.0.12/sun.security.jca.GetInstance.getInstance(GetInstance.java:236)
        at java.base@17.0.12/sun.security.jca.GetInstance.getInstance(GetInstance.java:206)
        at java.base@17.0.12/java.security.Signature.getInstance(Signature.java:404)
        at java.base@17.0.12/sun.security.x509.X509CertImpl.verify(X509CertImpl.java:437)
        at RootChainOfTrust.(RootChainOfTrust.java:47)

Will did RegisterForReflection like below

RegisterForReflection(ignoreNested = false, targets = {
        ,

    * .Ed25519PHEngine.class,
        *.SecunetEdDSASecurityProvider.class,
        java.security.cert.X509Certificate.class
})
public class Reflection {
}

Expected behavior

Generating EXE should work. but from jar is working fine

Actual behavior

No response

How to Reproduce?

No response

Output of uname -a or ver

No response

Output of java -version

No response

Mandrel or GraalVM version (if different from Java)

No response

Quarkus version or git rev

No response

Build tool (ie. output of mvnw --version or gradlew --version)

No response

Additional information

No response

quarkus-bot[bot] commented 1 week ago

/cc @Karm (mandrel), @galderz (mandrel), @sberyozkin (security), @zakkak (mandrel,native-image)

Karm commented 1 week ago

@mithunmaddur Hello, I'd gladly help you with Windows native build, but you have to provide some small reproducer I can build and take a look at...

It could be an empty Application.java just enumerating available cipher suites, loading your preferred security provider...

mithunmaddur commented 2 days ago

@Karm Jar is working fine only not working exe , generateCertificate is not converting to proper format. we are using java 17 and quarkus 3.13.2 Security.addProvider(new SecunetEdDSASecurityProvider()); InputStream stream = new ByteArrayInputStream(certificateBytes)) CertificateFactory cf = CertificateFactory.getInstance(X_509); X509Certificate certificate = (X509Certificate) cf.generateCertificate(stream);

Expected: Algo EdDSA Format X.509 Name com.secunet.ed25519ph.EdDSAPublicKey

Actual: Algo 1.3.6.1.4.1.2916.3.6.509.5.110 Format X.509 Name sun.security.x509.X509Key