GraalVM version: 22.3.3

Command: mvnw native:compile -Pnative

Error:

To see how the classes got initialized, use --trace-class-initialization=org.bouncycastle.jcajce.provider.symmetric.Blowfish$Mappings,org.bouncycastle.pqc.jcajce.provider.dilithium.DilithiumKeyFactorySpi,org.bouncycastle.jcajce.provider.symmetric.PBEPBKDF2$Mappings,org.bouncycastle.jcajce.provider.symmetric.Shacal2$Mappings,org.bouncycastle.jcajce.provider.asymmetric.edec.KeyFactorySpi$X448,org.bouncycastle.jcajce.provider.digest.SHA512$Mappings,org.bouncycastle.jcajce.provider.digest.RIPEMD160$Mappings,org.bouncycastle.jcajce.provider.digest.GOST3411$Mappings,org.bouncycastle.jcajce.provider.digest.Keccak$Mappings,org.bouncycastle.math.ec.custom.sec.SecP224R1FieldElement,org.bouncycastle.jcajce.provider.symmetric.Skipjack$Mappings,org.bouncycastle.jcajce.provider.symmetric.Serpent$Mappings,org.bouncycastle.asn1.sec.SECNamedCurves,org.bouncycastle.math.ec.custom.sec.SecP192K1Curve,org.bouncycastle.jcajce.provider.asymmetric.edec.KeyFactorySpi$Ed448,org.bouncycastle.jcajce.provider.digest.RIPEMD320$Mappings,org.bouncycastle.math.ec.custom.sec.SecP128R1FieldElement,org.bouncycastle.jcajce.provider.symmetric.VMPCKSA3$Mappings,org.bouncycastle.pqc.jcajce.provider.falcon.FalconKeyFactorySpi$Falcon1024,org.bouncycastle.jcajce.provider.symmetric.TLSKDF$Mappings,org.bouncycastle.math.ec.custom.sec.SecP256K1Curve,org.bouncycastle.jcajce.provider.symmetric.DESede$Mappings,org.bouncycastle.jce.provider.BouncyCastleProviderConfiguration,org.bouncycastle.math.ec.custom.sec.SecP224K1FieldElement,org.bouncycastle.jcajce.provider.digest.Whirlpool$Mappings,org.bouncycastle.asn1.nist.NISTNamedCurves,org.bouncycastle.math.ec.custom.sec.SecP224K1Curve,org.bouncycastle.jcajce.provider.digest.RIPEMD256$Mappings,org.bouncycastle.jcajce.provider.digest.Blake2s$Mappings,org.bouncycastle.jcajce.provider.digest.Haraka$Mappings,org.bouncycastle.jcajce.provider.symmetric.XSalsa20$Mappings,org.bouncycastle.asn1.cryptlib.CryptlibObjectIdentifiers,org.bouncycastle.jcajce.provider.symmetric.Grainv1$Mappings,org.bouncycastle.asn1.x9.X9ObjectIdentifiers,org.bouncycastle.math.Primes,org.bouncycastle.jcajce.provider.asymmetric.edec.KeyFactorySpi$X25519,org.bouncycastle.asn1.teletrust.TeleTrusTObjectIdentifiers,org.bouncycastle.jcajce.provider.digest.Blake2b$Mappings,org.bouncycastle.jcajce.provider.asymmetric.edec.KeyFactorySpi,org.bouncycastle.jcajce.provider.asymmetric.util.EC5Util$CustomCurves,org.bouncycastle.jcajce.provider.digest.MD4$Mappings,org.bouncycastle.jcajce.provider.symmetric.AES$Mappings,org.bouncycastle.util.Properties,org.bouncycastle.jcajce.provider.symmetric.DSTU7624$Mappings,org.bouncycastle.jcajce.provider.symmetric.VMPC$Mappings,org.bouncycastle.asn1.teletrust.TeleTrusTNamedCurves,org.bouncycastle.math.ec.custom.sec.SecP160R2Curve,org.bouncycastle.crypto.ec.CustomNamedCurves,org.bouncycastle.util.BigIntegers,org.bouncycastle.jcajce.provider.symmetric.SEED$Mappings,org.bouncycastle.math.ec.custom.sec.SecP521R1FieldElement,org.bouncycastle.jcajce.provider.symmetric.PBEPKCS12$Mappings,org.bouncycastle.jcajce.provider.symmetric.Salsa20$Mappings,org.bouncycastle.jcajce.provider.symmetric.SM4$Mappings,org.bouncycastle.math.ec.custom.gm.SM2P256V1FieldElement,org.bouncycastle.jcajce.provider.symmetric.HC256$Mappings,org.bouncycastle.jcajce.provider.symmetric.Threefish$Mappings,org.bouncycastle.pqc.jcajce.provider.falcon.FalconKeyFactorySpi,org.bouncycastle.jcajce.provider.digest.Skein$Mappings,org.bouncycastle.jcajce.provider.symmetric.Twofish$Mappings,org.bouncycastle.jcajce.provider.symmetric.ARC4$Mappings,org.bouncycastle.pqc.jcajce.provider.dilithium.DilithiumKeyFactorySpi$Base2,org.bouncycastle.math.ec.custom.sec.SecP160K1Curve,org.bouncycastle.math.ec.custom.sec.SecP192K1FieldElement,org.bouncycastle.math.ec.custom.gm.SM2P256V1Curve,org.bouncycastle.jcajce.provider.digest.MD5$Mappings,org.bouncycastle.jcajce.provider.symmetric.RC2$Mappings,org.bouncycastle.asn1.cryptopro.CryptoProObjectIdentifiers,org.bouncycastle.jcajce.provider.digest.MD2$Mappings,org.bouncycastle.jce.provider.BouncyCastleProvider,org.bouncycastle.math.ec.custom.djb.Curve25519,org.bouncycastle.jcajce.provider.symmetric.SipHash$Mappings,org.bouncycastle.jcajce.provider.symmetric.Noekeon$Mappings,org.bouncycastle.pqc.jcajce.provider.dilithium.DilithiumKeyFactorySpi$Base3,org.bouncycastle.asn1.x9.X962NamedCurves,org.bouncycastle.jcajce.provider.symmetric.GOST3412_2015$Mappings,org.bouncycastle.jcajce.provider.asymmetric.edec.KeyFactorySpi$Ed25519,org.bouncycastle.asn1.anssi.ANSSINamedCurves,org.bouncycastle.jcajce.provider.symmetric.HC128$Mappings,org.bouncycastle.math.ec.custom.sec.SecP521R1Curve,org.bouncycastle.jcajce.provider.symmetric.CAST5$Mappings,org.bouncycastle.jcajce.provider.symmetric.TEA$Mappings,org.bouncycastle.crypto.CryptoServicesRegistrar,org.bouncycastle.jcajce.provider.symmetric.PBEPBKDF1$Mappings,org.bouncycastle.math.ec.custom.sec.SecP256R1Curve,org.bouncycastle.math.ec.custom.sec.SecP160R1Curve,org.bouncycastle.math.ec.custom.sec.SecP160R2FieldElement,org.bouncycastle.jcajce.provider.symmetric.RC6$Mappings,org.bouncycastle.jcajce.provider.symmetric.Rijndael$Mappings,org.bouncycastle.jcajce.provider.digest.DSTU7564$Mappings,org.bouncycastle.jcajce.provider.symmetric.GOST28147$Mappings,org.bouncycastle.math.ec.ECConstants,org.bouncycastle.jcajce.provider.digest.SHA224$Mappings,org.bouncycastle.jcajce.provider.digest.SM3$Mappings,org.bouncycastle.asn1.gm.GMObjectIdentifiers,org.bouncycastle.jcajce.provider.symmetric.Zuc$Mappings,org.bouncycastle.math.ec.custom.sec.SecP192R1Curve,org.bouncycastle.math.ec.custom.sec.SecP256K1FieldElement,org.bouncycastle.util.Strings,org.bouncycastle.jcajce.provider.symmetric.CAST6$Mappings,org.bouncycastle.math.ec.custom.sec.SecP224R1Curve,org.bouncycastle.math.ec.custom.sec.SecP128R1Curve,org.bouncycastle.asn1.cryptopro.ECGOST3410NamedCurves,org.bouncycastle.jcajce.provider.symmetric.ChaCha$Mappings,org.bouncycastle.asn1.x9.X9ECParameters,org.bouncycastle.jcajce.provider.symmetric.Camellia$Mappings,org.bouncycastle.jcajce.provider.digest.SHA384$Mappings,org.bouncycastle.jcajce.provider.symmetric.Poly1305$Mappings,org.bouncycastle.jcajce.provider.symmetric.SipHash128$Mappings,org.bouncycastle.jcajce.provider.symmetric.DES$Mappings,org.bouncycastle.math.ec.custom.sec.SecP384R1Curve,org.bouncycastle.math.ec.custom.sec.SecP384R1FieldElement,org.bouncycastle.jcajce.provider.symmetric.Grain128$Mappings,org.bouncycastle.jcajce.provider.symmetric.ARIA$Mappings,org.bouncycastle.jcajce.provider.digest.SHA1$Mappings,org.bouncycastle.pqc.jcajce.provider.dilithium.DilithiumKeyFactorySpi$Base5,org.bouncycastle.math.ec.custom.djb.Curve25519FieldElement,org.bouncycastle.jcajce.provider.digest.SHA3$Mappings,org.bouncycastle.jcajce.provider.symmetric.SCRYPT$Mappings,org.bouncycastle.math.ec.custom.sec.SecP192R1FieldElement,org.bouncycastle.jcajce.provider.digest.Tiger$Mappings,org.bouncycastle.jcajce.provider.symmetric.XTEA$Mappings,org.bouncycastle.asn1.sec.SECObjectIdentifiers,org.bouncycastle.math.ec.custom.sec.SecP256R1FieldElement,org.bouncycastle.pqc.jcajce.provider.falcon.FalconKeyFactorySpi$Falcon512,org.bouncycastle.asn1.gm.GMNamedCurves,org.bouncycastle.jcajce.provider.symmetric.OpenSSLPBKDF$Mappings,org.bouncycastle.jcajce.provider.digest.SHA256$Mappings,org.bouncycastle.asn1.anssi.ANSSIObjectIdentifiers,org.bouncycastle.jcajce.provider.asymmetric.rsa.BCRSAPublicKey,org.bouncycastle.jcajce.provider.symmetric.RC5$Mappings,org.bouncycastle.math.ec.custom.sec.SecP160R1FieldElement,org.bouncycastle.jcajce.provider.digest.RIPEMD128$Mappings,org.bouncycastle.asn1.rosstandart.RosstandartObjectIdentifiers,org.bouncycastle.math.field.FiniteFields,org.bouncycastle.jcajce.provider.symmetric.IDEA$Mappings
        at org.graalvm.nativeimage.builder/com.oracle.svm.core.util.UserError.abort(UserError.java:73)
        at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.classinitialization.ProvenSafeClassInitializationSupport.checkDelayedInitialization(ProvenSafeClassInitializationSupport.java:273)
        at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.classinitialization.ClassInitializationFeature.duringAnalysis(ClassInitializationFeature.java:164)
        at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.NativeImageGenerator.lambda$runPointsToAnalysis$10(NativeImageGenerator.java:748)
        at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.FeatureHandler.forEachFeature(FeatureHandler.java:85)
        at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.NativeImageGenerator.lambda$runPointsToAnalysis$11(NativeImageGenerator.java:748)
        at org.graalvm.nativeimage.pointsto/com.oracle.graal.pointsto.AbstractAnalysisEngine.runAnalysis(AbstractAnalysisEngine.java:162)
        at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.NativeImageGenerator.runPointsToAnalysis(NativeImageGenerator.java:745)
        at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.NativeImageGenerator.doRun(NativeImageGenerator.java:578)
        at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.NativeImageGenerator.run(NativeImageGenerator.java:535)
        at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.NativeImageGeneratorRunner.buildImage(NativeImageGeneratorRunner.java:403)
        at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.NativeImageGeneratorRunner.build(NativeImageGeneratorRunner.java:580)
        at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.NativeImageGeneratorRunner.main(NativeImageGeneratorRunner.java:128)

Changes of the java.security file:

security.provider.1=SUN
security.provider.2=org.bouncycastle.jce.provider.BouncyCastleProvider
security.provider.3=SunRsaSign
security.provider.4=SunEC
security.provider.5=SunJSSE
security.provider.6=SunJCE
security.provider.7=SunJGSS
security.provider.8=SunSASL
security.provider.9=XMLDSig
security.provider.10=SunPCSC
security.provider.11=JdkLDAP
security.provider.12=JdkSASL
security.provider.13=SunMSCAPI
security.provider.14=SunPKCS11

Maven plugin setting:

<plugin>
                <groupId>org.graalvm.buildtools</groupId>
                <artifactId>native-maven-plugin</artifactId>
                <configuration>
                    <buildArgs>
                        <arg>-H:+AddAllCharsets</arg>
                        <arg>-H:+TraceSecurityServices</arg>
                        <arg>-H:+ReportExceptionStackTraces</arg>
                    </buildArgs>
                </configuration>
            </plugin>

Is there also a guide on adding bouncycastle provider for the spring boot project?

Comment From: bclozel

Hello @KaeYan93

This issue is not about Spring, but rather about BouncyCastle support in GraalVM Native images. You'll find help in the official docs and a related issue.