]> git.argeo.org Git - gpl/argeo-slc.git/blob - ArgeoToolFeature.java
2213e0683ea5b9c84bb0d6dbc00a7cad8b570559
[gpl/argeo-slc.git] / ArgeoToolFeature.java
1 package org.argeo.slc.graalvm.feature;
2
3 import java.security.Security;
4
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;
10
11 import net.i2p.crypto.eddsa.EdDSASecurityProvider;
12
13 /** Required native image customisations. */
14 public class ArgeoToolFeature implements Feature {
15
16 @Override
17 public void afterRegistration(AfterRegistrationAccess access) {
18 // JCE providers need to be registered at build time.
19 // https://github.com/oracle/graal/issues/2800#issuecomment-702480444
20 // https://github.com/micronaut-projects/micronaut-oracle-cloud/pull/17/files#r498585779
21 RuntimeClassInitialization.initializeAtBuildTime("org.bouncycastle");
22 Security.addProvider(new BouncyCastleProvider());
23
24 RuntimeClassInitialization.initializeAtBuildTime("net.i2p.crypto.eddsa");
25 Security.addProvider(new EdDSASecurityProvider());
26
27 // required for Tomcat JNI DLL to load properly
28 RuntimeClassInitialization.initializeAtBuildTime("org.apache.tomcat.jni");
29
30 RuntimeClassInitializationSupport rci = ImageSingletons.lookup(RuntimeClassInitializationSupport.class);
31 rci.rerunInitialization("org.bouncycastle.jcajce.provider.drbg.DRBG$Default", "dependency with native random");
32 rci.rerunInitialization("org.bouncycastle.jcajce.provider.drbg.DRBG$NonceAndIV",
33 "dependency with native random");
34 }
35
36 }