Skip to content

Instantly share code, notes, and snippets.

@timmw
Created March 15, 2022 18:01
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save timmw/69623fe783ed217aa6194589d3bc4607 to your computer and use it in GitHub Desktop.
Save timmw/69623fe783ed217aa6194589d3bc4607 to your computer and use it in GitHub Desktop.
Hello! I'm attempting to get the BouncyCastle JCA provider to work with native-image and not having much luck. Can anyone tell me if I should be registering BouncyCastle via the <java-home>/lib/security/java.security file? When I do, I get errors like
`com.oracle.svm.core.util.UserError$UserException: Classes that should be initialized at run time got initialized during image building:
org.bouncycastle.jce.provider.BouncyCastleProvider was unintentionally initialized at build time. org.bouncycastle.jce.provider.BouncyCastleProvider caused initialization of this class with the following trace:
at org.bouncycastle.jce.provider.BouncyCastleProvider.<clinit>(BouncyCastleProvider.java:61)
at jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Unknown Source)
at jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:490)
at java.util.ServiceLoader$ProviderImpl.newInstance(ServiceLoader.java:780)
at java.util.ServiceLoader$ProviderImpl.get(ServiceLoader.java:722)
at java.util.ServiceLoader$3.next(ServiceLoader.java:1395)
at sun.security.jca.ProviderConfig$ProviderLoader.load(ProviderConfig.java:340)
at sun.security.jca.ProviderConfig$3.run(ProviderConfig.java:248)
at sun.security.jca.ProviderConfig$3.run(ProviderConfig.java:242)
at java.security.AccessController.doPrivileged(Unknown Source)
at sun.security.jca.ProviderConfig.doLoadProvider(ProviderConfig.java:242)
at sun.security.jca.ProviderConfig.getProvider(ProviderConfig.java:222)
at sun.security.jca.ProviderList.getProvider(ProviderList.java:266)
at sun.security.jca.ProviderList$3.get(ProviderList.java:156)
at sun.security.jca.ProviderList$3.get(ProviderList.java:151)
at java.util.AbstractList$Itr.next(AbstractList.java:371)
at java.util.AbstractCollection.toArray(AbstractCollection.java:144)
at java.util.ArrayList.<init>(ArrayList.java:179)
at com.oracle.svm.hosted.SecurityServicesFeature.cleanUnregisteredProviders(SecurityServicesFeature.java:363)
at com.oracle.svm.core.jdk.Target_sun_security_jca_Providers$ProviderListTransformer.transform(SecuritySubstitutions.java:700)
at com.oracle.svm.hosted.substitute.ComputedValueField.computeValue(ComputedValueField.java:321)
at com.oracle.svm.hosted.substitute.ComputedValueField.readValue(ComputedValueField.java:269)
at com.oracle.svm.core.meta.ReadableJavaField.readFieldValue(ReadableJavaField.java:36)
at com.oracle.svm.hosted.ameta.AnalysisConstantReflectionProvider.readValue(AnalysisConstantReflectionProvider.java:99)
at com.oracle.svm.hosted.ameta.AnalysisConstantReflectionProvider.readFieldValue(AnalysisConstantReflectionProvider.java:81)
at com.oracle.graal.pointsto.ObjectScanner.scanField(ObjectScanner.java:153)
at com.oracle.graal.pointsto.ObjectScanner.scanRootField(ObjectScanner.java:140)
at com.oracle.graal.pointsto.ObjectScanner.lambda$scanBootImageHeapRoots$0(ObjectScanner.java:94)
at com.oracle.graal.pointsto.ObjectScanner$$Lambda$709/0x00000007c105d840.run(Unknown Source)
at com.oracle.graal.pointsto.ObjectScanner.lambda$execute$5(ObjectScanner.java:112)
at com.oracle.graal.pointsto.ObjectScanner$$Lambda$710/0x00000007c105dc40.run(Unknown Source)
at com.oracle.graal.pointsto.util.CompletionExecutor.executeCommand(CompletionExecutor.java:195)
at com.oracle.graal.pointsto.util.CompletionExecutor.lambda$executeService$0(CompletionExecutor.java:179)
at com.oracle.graal.pointsto.util.CompletionExecutor$$Lambda$485/0x00000007c0fedc40.run(Unknown Source)
at java.util.concurrent.ForkJoinTask$RunnableExecuteAction.exec(ForkJoinTask.java:1426)
at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:290)
at java.util.concurrent.ForkJoinPool.awaitQuiescence(ForkJoinPool.java:2984)
at com.oracle.graal.pointsto.util.CompletionExecutor.complete(CompletionExecutor.java:245)
at com.oracle.graal.pointsto.PointsToAnalysis.checkObjectGraph(PointsToAnalysis.java:683)
at com.oracle.graal.pointsto.PointsToAnalysis.finish(PointsToAnalysis.java:647)
at com.oracle.graal.pointsto.PointsToAnalysis.runAnalysis(PointsToAnalysis.java:734)
at com.oracle.svm.hosted.NativeImageGenerator.runPointsToAnalysis(NativeImageGenerator.java:702)
at com.oracle.svm.hosted.NativeImageGenerator.doRun(NativeImageGenerator.java:537)
at com.oracle.svm.hosted.NativeImageGenerator.run(NativeImageGenerator.java:494)
at com.oracle.svm.hosted.NativeImageGeneratorRunner.buildImage(NativeImageGeneratorRunner.java:426)
at com.oracle.svm.hosted.NativeImageGeneratorRunner.build(NativeImageGeneratorRunner.java:587)
at com.oracle.svm.hosted.NativeImageGeneratorRunner.main(NativeImageGeneratorRunner.java:126)
at com.oracle.svm.hosted.NativeImageGeneratorRunner$JDK9Plus.main(NativeImageGeneratorRunner.java:617)
at com.oracle.svm.core.util.UserError.abort(UserError.java:73)
at com.oracle.svm.hosted.classinitialization.ConfigurableClassInitialization.checkDelayedInitialization(ConfigurableClassInitialization.java:555)
at com.oracle.svm.hosted.classinitialization.ClassInitializationFeature.duringAnalysis(ClassInitializationFeature.java:167)
at com.oracle.svm.hosted.NativeImageGenerator.lambda$runPointsToAnalysis$10(NativeImageGenerator.java:704)
at com.oracle.svm.hosted.FeatureHandler.forEachFeature(FeatureHandler.java:74)
at com.oracle.svm.hosted.NativeImageGenerator.lambda$runPointsToAnalysis$11(NativeImageGenerator.java:704)
at com.oracle.graal.pointsto.PointsToAnalysis.runAnalysis(PointsToAnalysis.java:755)
at com.oracle.svm.hosted.NativeImageGenerator.runPointsToAnalysis(NativeImageGenerator.java:702)
at com.oracle.svm.hosted.NativeImageGenerator.doRun(NativeImageGenerator.java:537)
at com.oracle.svm.hosted.NativeImageGenerator.run(NativeImageGenerator.java:494)
at com.oracle.svm.hosted.NativeImageGeneratorRunner.buildImage(NativeImageGeneratorRunner.java:426)
at com.oracle.svm.hosted.NativeImageGeneratorRunner.build(NativeImageGeneratorRunner.java:587)
at com.oracle.svm.hosted.NativeImageGeneratorRunner.main(NativeImageGeneratorRunner.java:126)
at com.oracle.svm.hosted.NativeImageGeneratorRunner$JDK9Plus.main(NativeImageGeneratorRunner.java:617)`
When I try to force BC to init and run time using `--initialize-at-run-time=org.bouncycastle.jce.provider.BouncyCastleProvider` I get this error:
`com.oracle.svm.core.util.UserError$UserException: Classes that should be initialized at run time got initialized during image building:
org.bouncycastle.jce.provider.BouncyCastleProvider the class was requested to be initialized at run time (from the command line with 'org.bouncycastle.jce.provider.BouncyCastleProvider'). org.bouncycastle.jce.provider.BouncyCastleProvider caused initialization of this class with the following trace:
at org.bouncycastle.jce.provider.BouncyCastleProvider.<clinit>(BouncyCastleProvider.java:61)
at jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Unknown Source)
at jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:490)
at java.util.ServiceLoader$ProviderImpl.newInstance(ServiceLoader.java:780)
at java.util.ServiceLoader$ProviderImpl.get(ServiceLoader.java:722)
at java.util.ServiceLoader$3.next(ServiceLoader.java:1395)
at sun.security.jca.ProviderConfig$ProviderLoader.load(ProviderConfig.java:340)
at sun.security.jca.ProviderConfig$3.run(ProviderConfig.java:248)
at sun.security.jca.ProviderConfig$3.run(ProviderConfig.java:242)
at java.security.AccessController.doPrivileged(Unknown Source)
at sun.security.jca.ProviderConfig.doLoadProvider(ProviderConfig.java:242)
at sun.security.jca.ProviderConfig.getProvider(ProviderConfig.java:222)
at sun.security.jca.ProviderList.getProvider(ProviderList.java:266)
at sun.security.jca.ProviderList$3.get(ProviderList.java:156)
at sun.security.jca.ProviderList$3.get(ProviderList.java:151)
at java.util.AbstractList$Itr.next(AbstractList.java:371)
at java.util.AbstractCollection.toArray(AbstractCollection.java:144)
at java.util.ArrayList.<init>(ArrayList.java:179)
at com.oracle.svm.hosted.SecurityServicesFeature.cleanUnregisteredProviders(SecurityServicesFeature.java:363)
at com.oracle.svm.core.jdk.Target_sun_security_jca_Providers$ProviderListTransformer.transform(SecuritySubstitutions.java:700)
at com.oracle.svm.hosted.substitute.ComputedValueField.computeValue(ComputedValueField.java:321)
at com.oracle.svm.hosted.substitute.ComputedValueField.readValue(ComputedValueField.java:269)
at com.oracle.svm.core.meta.ReadableJavaField.readFieldValue(ReadableJavaField.java:36)
at com.oracle.svm.hosted.ameta.AnalysisConstantReflectionProvider.readValue(AnalysisConstantReflectionProvider.java:99)
at com.oracle.svm.hosted.ameta.AnalysisConstantReflectionProvider.readFieldValue(AnalysisConstantReflectionProvider.java:81)
at com.oracle.graal.pointsto.ObjectScanner.scanField(ObjectScanner.java:153)
at com.oracle.graal.pointsto.ObjectScanner.scanRootField(ObjectScanner.java:140)
at com.oracle.graal.pointsto.ObjectScanner.lambda$scanBootImageHeapRoots$0(ObjectScanner.java:94)
at com.oracle.graal.pointsto.ObjectScanner$$Lambda$710/0x00000007c105e840.run(Unknown Source)
at com.oracle.graal.pointsto.ObjectScanner.lambda$execute$5(ObjectScanner.java:112)
at com.oracle.graal.pointsto.ObjectScanner$$Lambda$711/0x00000007c105ec40.run(Unknown Source)
at com.oracle.graal.pointsto.util.CompletionExecutor.executeCommand(CompletionExecutor.java:195)
at com.oracle.graal.pointsto.util.CompletionExecutor.lambda$executeService$0(CompletionExecutor.java:179)
at com.oracle.graal.pointsto.util.CompletionExecutor$$Lambda$486/0x00000007c0fe4c40.run(Unknown Source)
at java.util.concurrent.ForkJoinTask$RunnableExecuteAction.exec(ForkJoinTask.java:1426)
at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:290)
at java.util.concurrent.ForkJoinPool.awaitQuiescence(ForkJoinPool.java:2984)
at com.oracle.graal.pointsto.util.CompletionExecutor.complete(CompletionExecutor.java:245)
at com.oracle.graal.pointsto.PointsToAnalysis.checkObjectGraph(PointsToAnalysis.java:683)
at com.oracle.graal.pointsto.PointsToAnalysis.finish(PointsToAnalysis.java:647)
at com.oracle.graal.pointsto.PointsToAnalysis.runAnalysis(PointsToAnalysis.java:734)
at com.oracle.svm.hosted.NativeImageGenerator.runPointsToAnalysis(NativeImageGenerator.java:702)
at com.oracle.svm.hosted.NativeImageGenerator.doRun(NativeImageGenerator.java:537)
at com.oracle.svm.hosted.NativeImageGenerator.run(NativeImageGenerator.java:494)
at com.oracle.svm.hosted.NativeImageGeneratorRunner.buildImage(NativeImageGeneratorRunner.java:426)
at com.oracle.svm.hosted.NativeImageGeneratorRunner.build(NativeImageGeneratorRunner.java:587)
at com.oracle.svm.hosted.NativeImageGeneratorRunner.main(NativeImageGeneratorRunner.java:126)
at com.oracle.svm.hosted.NativeImageGeneratorRunner$JDK9Plus.main(NativeImageGeneratorRunner.java:617)
at com.oracle.svm.core.util.UserError.abort(UserError.java:73)
at com.oracle.svm.hosted.classinitialization.ConfigurableClassInitialization.checkDelayedInitialization(ConfigurableClassInitialization.java:555)
at com.oracle.svm.hosted.classinitialization.ClassInitializationFeature.duringAnalysis(ClassInitializationFeature.java:167)
at com.oracle.svm.hosted.NativeImageGenerator.lambda$runPointsToAnalysis$10(NativeImageGenerator.java:704)
at com.oracle.svm.hosted.FeatureHandler.forEachFeature(FeatureHandler.java:74)
at com.oracle.svm.hosted.NativeImageGenerator.lambda$runPointsToAnalysis$11(NativeImageGenerator.java:704)
at com.oracle.graal.pointsto.PointsToAnalysis.runAnalysis(PointsToAnalysis.java:755)
at com.oracle.svm.hosted.NativeImageGenerator.runPointsToAnalysis(NativeImageGenerator.java:702)
at com.oracle.svm.hosted.NativeImageGenerator.doRun(NativeImageGenerator.java:537)
at com.oracle.svm.hosted.NativeImageGenerator.run(NativeImageGenerator.java:494)
at com.oracle.svm.hosted.NativeImageGeneratorRunner.buildImage(NativeImageGeneratorRunner.java:426)
at com.oracle.svm.hosted.NativeImageGeneratorRunner.build(NativeImageGeneratorRunner.java:587)
at com.oracle.svm.hosted.NativeImageGeneratorRunner.main(NativeImageGeneratorRunner.java:126)
at com.oracle.svm.hosted.NativeImageGeneratorRunner$JDK9Plus.main(NativeImageGeneratorRunner.java:617)`
Graal version:
GraalVM 22.0.0.2 Java 11 CE (Java Version 11.0.14+9-jvmci-22.0-b05)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment