1 package org
.argeo
.slc
.tool
.graalvm
;
3 import java
.security
.Security
;
5 import org
.bouncycastle
.jce
.provider
.BouncyCastleProvider
;
6 import org
.graalvm
.nativeimage
.ImageSingletons
;
7 import org
.graalvm
.nativeimage
.hosted
.Feature
;
8 import org
.graalvm
.nativeimage
.hosted
.RuntimeClassInitialization
;
9 import org
.graalvm
.nativeimage
.impl
.RuntimeClassInitializationSupport
;
11 import com
.oracle
.svm
.core
.annotate
.AutomaticFeature
;
13 import net
.i2p
.crypto
.eddsa
.EdDSASecurityProvider
;
16 * BounvyCastle JCE provider needs to be registered at build time.
18 * @see https://github.com/oracle/graal/issues/2800#issuecomment-702480444
19 * @see https://github.com/micronaut-projects/micronaut-oracle-cloud/pull/17/files#r498585779
22 public class BouncyCastleFeature
implements Feature
{
25 public void afterRegistration(AfterRegistrationAccess access
) {
26 RuntimeClassInitialization
.initializeAtBuildTime("org.bouncycastle");
27 Security
.addProvider(new BouncyCastleProvider());
29 RuntimeClassInitialization
.initializeAtBuildTime("net.i2p.crypto.eddsa");
30 Security
.addProvider(new EdDSASecurityProvider());
32 // required for Tomcat JNI DLL to load properly
33 RuntimeClassInitialization
.initializeAtBuildTime("org.apache.tomcat.jni");
35 RuntimeClassInitializationSupport rci
= ImageSingletons
.lookup(RuntimeClassInitializationSupport
.class);
36 rci
.rerunInitialization("org.bouncycastle.jcajce.provider.drbg.DRBG$Default", "dependency with native random");
37 rci
.rerunInitialization("org.bouncycastle.jcajce.provider.drbg.DRBG$NonceAndIV",
38 "dependency with native random");