From 3737acaa166b6bf5833dd9e93fbfa212a17b7c31 Mon Sep 17 00:00:00 2001 From: Paul Schaub Date: Thu, 24 Nov 2022 23:45:28 +0100 Subject: [PATCH] WIP: Working, but slow native image --- pgpainless-cli/build.gradle | 18 ++++++++---------- .../main/java/org/pgpainless/sop/SOPImpl.java | 11 ++--------- 2 files changed, 10 insertions(+), 19 deletions(-) diff --git a/pgpainless-cli/build.gradle b/pgpainless-cli/build.gradle index ad4ed42d..0258e320 100644 --- a/pgpainless-cli/build.gradle +++ b/pgpainless-cli/build.gradle @@ -85,6 +85,14 @@ task(generateGraalReflectionConfig, dependsOn: 'classes', type: JavaExec) { } assemble.dependsOn generateGraalReflectionConfig +task(generateGraalResourceConfig, dependsOn: 'classes', type: JavaExec) { + main = 'picocli.codegen.aot.graalvm.ResourceConfigGenerator' + classpath = configurations.generateConfig + sourceSets.main.runtimeClasspath + def outputFile = "${buildDir}/resources/main/META-INF/native-image/${project.group}/${project.name}/resource-config.json" + args = ["--output=$outputFile", 'sop.cli.picocli.SopCLI'] +} +assemble.dependsOn generateGraalResourceConfig + /** jar { duplicatesStrategy(DuplicatesStrategy.EXCLUDE) @@ -122,15 +130,5 @@ nativeImage { graalVmHome = graalHome mainClass = mainClassName executableName = 'pgpainless-cli' - arguments( - '--no-fallback', -// '--enable-all-security-services', -// '--initialize-at-run-time=com.example.runtime', - '--enable-https', - '--enable-all-security-services', - '--allow-incomplete-classpath', - // '--report-unsupported-elements-at-runtime', - '--initialize-at-run-time=org.bouncycastle.jcajce.provider.drbg.DRBG$Default,org.bouncycastle.jcajce.provider.drbg.DRBG$NonceAndIV' - ) } tasks."nativeImage".dependsOn('generateGraalReflectionConfig') diff --git a/pgpainless-sop/src/main/java/org/pgpainless/sop/SOPImpl.java b/pgpainless-sop/src/main/java/org/pgpainless/sop/SOPImpl.java index 2e7e6551..09141b57 100644 --- a/pgpainless-sop/src/main/java/org/pgpainless/sop/SOPImpl.java +++ b/pgpainless-sop/src/main/java/org/pgpainless/sop/SOPImpl.java @@ -4,14 +4,6 @@ package org.pgpainless.sop; -import java.security.Provider; -import java.security.Security; - -import com.sun.crypto.provider.SunJCE; -import org.bouncycastle.jcajce.provider.asymmetric.rsa.KeyFactorySpi; -import org.bouncycastle.jce.provider.BouncyCastleProvider; -import org.pgpainless.implementation.ImplementationFactory; -import org.pgpainless.implementation.JceImplementationFactory; import org.pgpainless.util.ArmoredOutputStreamFactory; import sop.SOP; import sop.operation.Armor; @@ -26,12 +18,12 @@ import sop.operation.InlineDetach; import sop.operation.InlineSign; import sop.operation.InlineVerify; import sop.operation.Version; -import sun.security.ec.SunEC; public class SOPImpl implements SOP { static { ArmoredOutputStreamFactory.setVersionInfo(null); + /* ImplementationFactory.setFactoryImplementation(new JceImplementationFactory()); Security.addProvider(new BouncyCastleProvider()); Security.addProvider(new SunJCE()); @@ -41,6 +33,7 @@ public class SOPImpl implements SOP { Provider bcProv = Security.getProvider("BC"); Security.removeProvider("BC"); Security.insertProviderAt(bcProv, 1); + */ } @Override