From: Michael Kebe Date: Sat, 23 Jan 2021 10:11:50 +0000 (+0100) Subject: Added GraalVM configuration to create a native binary (#452) X-Git-Tag: v0.8.0~19 X-Git-Url: https://git.nmode.ca/signal-cli/commitdiff_plain/a7094475369a56afe1845a35cd1d20b166f00f33?ds=inline Added GraalVM configuration to create a native binary (#452) * Initial GraalVM configuration * graalvm reflection changes for v0.7.4 * graalvm removed unneeded options for native-image * updated gradle plugin org.mikeneck.graalvm-native-image to 1.1.0 * moved from gradle graalvm-native-image plugin to native-build.sh * added missing graalvm reflection config for receive * refactored native-build.sh to a gradle task buildNativeBinary --- diff --git a/README.md b/README.md index d12f2742..26e9bc95 100644 --- a/README.md +++ b/README.md @@ -83,6 +83,20 @@ dependencies. If you have a recent gradle version installed, you can replace `./ ./gradlew distTar +### Building a native binary with GraalVM + +It is possible to build a native binary with [GraalVM](https://www.graalvm.org). + +1. [Install GraalVM and setup the enviroment](https://www.graalvm.org/docs/getting-started/#install-graalvm) +2. [Install prerequisites](https://www.graalvm.org/reference-manual/native-image/#prerequisites) +2. Execute Gradle: + + ./gradle nativeImage + + The binary is available at + + build/native-image/signal-cli + ## Troubleshooting If you use a version of the Oracle JRE and get an InvalidKeyException you need to enable unlimited strength crypto. See https://stackoverflow.com/questions/6481627/java-security-illegal-key-size-or-default-parameters for instructions. diff --git a/build.gradle b/build.gradle index 1fa56c1e..d3ae9667 100644 --- a/build.gradle +++ b/build.gradle @@ -74,3 +74,39 @@ task checkLibVersions { } } } + +task buildNativeBinary { + dependsOn("build") + doLast { + def graalVMHome = System.getenv("GRAALVM_HOME") + if (!graalVMHome) { + throw new GradleException('Required GRAALVM_HOME environment variable not set.') + } + def nativeBinaryOutputPath = "$buildDir/native-image" + def nativeBinaryName = "signal-cli" + + mkdir nativeBinaryOutputPath + + exec { + workingDir "." + commandLine "$graalVMHome/bin/native-image", + "-H:Path=$nativeBinaryOutputPath", + "-H:Name=$nativeBinaryName", + "-H:JNIConfigurationFiles=", + "-H:DynamicProxyConfigurationFiles=", + "-H:ReflectionConfigurationFiles=", + "-H:ResourceConfigurationFiles=", + "--no-fallback", + "--allow-incomplete-classpath", + "--report-unsupported-elements-at-runtime", + "--enable-url-protocols=http,https", + "--enable-https", + "--enable-all-security-services", + "-H:ResourceConfigurationFiles=graalvm-config-dir/resource-config.json", + "-H:ReflectionConfigurationFiles=graalvm-config-dir/reflect-config.json", + "-cp", + sourceSets.main.runtimeClasspath.asPath, + project.mainClassName + } + } +} diff --git a/graalvm-config-dir/reflect-config.json b/graalvm-config-dir/reflect-config.json new file mode 100644 index 00000000..fdcaa2ba --- /dev/null +++ b/graalvm-config-dir/reflect-config.json @@ -0,0 +1,1529 @@ +[ +{ + "name":"byte[]" +}, +{ + "name":"char[]" +}, +{ + "name":"com.fasterxml.jackson.databind.ext.Java7SupportImpl", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"com.sun.crypto.provider.AESCipher$General", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"com.sun.crypto.provider.DHParameters", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"com.sun.crypto.provider.HmacCore$HmacSHA256", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"com.sun.crypto.provider.TlsKeyMaterialGenerator", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"com.sun.crypto.provider.TlsMasterSecretGenerator", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"com.sun.crypto.provider.TlsPrfGenerator$V12", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"java.io.Serializable", + "allDeclaredMethods":true +}, +{ + "name":"java.lang.Comparable", + "allDeclaredMethods":true +}, +{ + "name":"java.lang.Double", + "methods":[{"name":"valueOf","parameterTypes":["java.lang.String"] }] +}, +{ + "name":"java.lang.Integer", + "allDeclaredFields":true, + "allDeclaredMethods":true, + "allDeclaredConstructors":true +}, +{ + "name":"java.lang.Number", + "allDeclaredFields":true, + "allDeclaredMethods":true +}, +{ + "name":"java.nio.Buffer", + "fields":[{"name":"address", "allowUnsafeAccess":true}] +}, +{ + "name":"java.security.KeyStoreSpi" +}, +{ + "name":"java.security.SecureRandomParameters" +}, +{ + "name":"java.security.cert.PKIXRevocationChecker" +}, +{ + "name":"java.security.interfaces.ECPrivateKey" +}, +{ + "name":"java.security.interfaces.ECPublicKey" +}, +{ + "name":"java.security.interfaces.RSAPrivateKey" +}, +{ + "name":"java.security.interfaces.RSAPublicKey" +}, +{ + "name":"java.util.ArrayList", + "allDeclaredMethods":true, + "allDeclaredConstructors":true +}, +{ + "name":"java.util.Locale", + "methods":[{"name":"getUnicodeLocaleType","parameterTypes":["java.lang.String"] }] +}, +{ + "name":"org.asamk.signal.manager.storage.contacts.ContactInfo", + "allDeclaredFields":true, + "allDeclaredMethods":true, + "allDeclaredConstructors":true +}, +{ + "name":"org.asamk.signal.manager.storage.contacts.JsonContactsStore", + "allDeclaredFields":true, + "allDeclaredMethods":true, + "allDeclaredConstructors":true +}, +{ + "name":"org.asamk.signal.manager.storage.groups.GroupInfo", + "allDeclaredFields":true, + "allDeclaredMethods":true +}, +{ + "name":"org.asamk.signal.manager.storage.groups.GroupInfoV1", + "allDeclaredFields":true, + "allDeclaredMethods":true, + "allDeclaredConstructors":true +}, +{ + "name":"org.asamk.signal.manager.storage.groups.GroupInfoV1$MembersDeserializer", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.asamk.signal.manager.storage.groups.GroupInfoV1$MembersSerializer", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.asamk.signal.manager.storage.groups.JsonGroupStore", + "allDeclaredFields":true, + "allDeclaredMethods":true, + "allDeclaredConstructors":true, + "fields":[ + {"name":"groups", "allowWrite":true} + ], + "allDeclaredConstructors":true +}, +{ + "name":"org.asamk.signal.manager.storage.groups.JsonGroupStore$GroupsDeserializer", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.asamk.signal.manager.storage.groups.JsonGroupStore$GroupsSerializer", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.asamk.signal.manager.storage.profiles.ProfileStore", + "allDeclaredFields":true, + "allDeclaredMethods":true, + "allDeclaredConstructors":true, + "fields":[ + {"name":"profiles", "allowWrite":true} + ] +}, +{ + "name":"org.asamk.signal.manager.storage.profiles.ProfileStore$ProfileStoreDeserializer", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.asamk.signal.manager.storage.profiles.ProfileStore$ProfileStoreSerializer", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.asamk.signal.manager.storage.profiles.SignalProfile", + "allDeclaredFields":true, + "allDeclaredMethods":true, + "allDeclaredConstructors":true +}, +{ + "name":"org.asamk.signal.manager.storage.profiles.SignalProfile$Capabilities", + "allDeclaredFields":true, + "allDeclaredMethods":true, + "allDeclaredConstructors":true +}, +{ + "name":"org.asamk.signal.manager.storage.protocol.JsonIdentityKeyStore$JsonIdentityKeyStoreDeserializer", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.asamk.signal.manager.storage.protocol.JsonIdentityKeyStore$JsonIdentityKeyStoreSerializer", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.asamk.signal.manager.storage.protocol.JsonPreKeyStore$JsonPreKeyStoreDeserializer", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.asamk.signal.manager.storage.protocol.JsonPreKeyStore$JsonPreKeyStoreSerializer", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.asamk.signal.manager.storage.protocol.JsonSessionStore$JsonSessionStoreDeserializer", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.asamk.signal.manager.storage.protocol.JsonSessionStore$JsonSessionStoreSerializer", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.asamk.signal.manager.storage.protocol.JsonSignalProtocolStore", + "allDeclaredFields":true, + "allDeclaredMethods":true, + "allDeclaredConstructors":true +}, +{ + "name":"org.asamk.signal.manager.storage.protocol.JsonSignedPreKeyStore$JsonSignedPreKeyStoreDeserializer", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.asamk.signal.manager.storage.protocol.JsonSignedPreKeyStore$JsonSignedPreKeyStoreSerializer", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.asamk.signal.manager.storage.protocol.RecipientStore", + "allDeclaredFields":true, + "allDeclaredMethods":true, + "allDeclaredConstructors":true, + "fields":[ + {"name":"addresses", "allowWrite":true} + ] +}, +{ + "name":"org.asamk.signal.manager.storage.protocol.RecipientStore$RecipientStoreDeserializer", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.asamk.signal.manager.storage.protocol.RecipientStore$RecipientStoreSerializer", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.asamk.signal.manager.storage.stickers.StickerStore", + "allDeclaredFields":true, + "allDeclaredMethods":true, + "allDeclaredConstructors":true, + "fields":[ + {"name":"stickers", "allowWrite":true} + ] +}, +{ + "name":"org.asamk.signal.manager.storage.stickers.StickerStore$StickersDeserializer", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.asamk.signal.manager.storage.stickers.StickerStore$StickersSerializer", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.asamk.signal.util.SecurityProvider$DefaultRandom", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.asymmetric.COMPOSITE$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.asymmetric.DH$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.asymmetric.DSA$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.asymmetric.DSTU4145$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.asymmetric.EC$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.asymmetric.ECGOST$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.asymmetric.EdEC$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.asymmetric.ElGamal$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.asymmetric.GM$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.asymmetric.GOST$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.asymmetric.IES$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.asymmetric.RSA$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.asymmetric.X509$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.asymmetric.edec.SignatureSpi$Ed25519", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.asymmetric.edec.SignatureSpi$Ed448", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.asymmetric.x509.CertificateFactory", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.digest.Blake2b$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.digest.Blake2s$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.digest.DSTU7564$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.digest.GOST3411$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.digest.Haraka$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.digest.Keccak$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.digest.MD2$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.digest.MD4$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.digest.MD5$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.digest.RIPEMD128$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.digest.RIPEMD160$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.digest.RIPEMD256$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.digest.RIPEMD320$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.digest.SHA1$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.digest.SHA224$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.digest.SHA256$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.digest.SHA3$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.digest.SHA384$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.digest.SHA512$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.digest.SM3$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.digest.Skein$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.digest.Tiger$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.digest.Whirlpool$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.drbg.DRBG$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.keystore.BC$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.keystore.BCFKS$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.keystore.PKCS12$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.keystore.bc.BcKeyStoreSpi$Std", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.symmetric.AES$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.symmetric.ARC4$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.symmetric.ARIA$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.symmetric.Blowfish$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.symmetric.CAST5$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.symmetric.CAST6$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.symmetric.Camellia$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.symmetric.ChaCha$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.symmetric.DES$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.symmetric.DESede$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.symmetric.DSTU7624$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.symmetric.GOST28147$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.symmetric.GOST3412_2015$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.symmetric.Grain128$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.symmetric.Grainv1$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.symmetric.HC128$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.symmetric.HC256$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.symmetric.IDEA$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.symmetric.Noekeon$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.symmetric.OpenSSLPBKDF$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.symmetric.PBEPBKDF1$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.symmetric.PBEPBKDF2$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.symmetric.PBEPKCS12$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.symmetric.Poly1305$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.symmetric.RC2$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.symmetric.RC5$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.symmetric.RC6$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.symmetric.Rijndael$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.symmetric.SCRYPT$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.symmetric.SEED$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.symmetric.SM4$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.symmetric.Salsa20$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.symmetric.Serpent$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.symmetric.Shacal2$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.symmetric.SipHash$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.symmetric.SipHash128$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.symmetric.Skipjack$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.symmetric.TEA$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.symmetric.TLSKDF$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.symmetric.Threefish$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.symmetric.Twofish$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.symmetric.VMPC$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.symmetric.VMPCKSA3$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.symmetric.XSalsa20$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.symmetric.XTEA$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.symmetric.Zuc$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.signal.libsignal.metadata.SignalProtos$SenderCertificate", + "fields":[ + {"name":"bitField0_", "allowUnsafeAccess":true}, + {"name":"certificate_", "allowUnsafeAccess":true}, + {"name":"signature_", "allowUnsafeAccess":true} + ] +}, +{ + "name":"org.signal.libsignal.metadata.SignalProtos$SenderCertificate$Certificate", + "fields":[ + {"name":"bitField0_", "allowUnsafeAccess":true}, + {"name":"expires_", "allowUnsafeAccess":true}, + {"name":"identityKey_", "allowUnsafeAccess":true}, + {"name":"senderDevice_", "allowUnsafeAccess":true}, + {"name":"senderE164_", "allowUnsafeAccess":true}, + {"name":"senderUuid_", "allowUnsafeAccess":true}, + {"name":"signer_", "allowUnsafeAccess":true} + ] +}, +{ + "name":"org.signal.libsignal.metadata.SignalProtos$ServerCertificate", + "fields":[ + {"name":"bitField0_", "allowUnsafeAccess":true}, + {"name":"certificate_", "allowUnsafeAccess":true}, + {"name":"signature_", "allowUnsafeAccess":true} + ] +}, +{ + "name":"org.signal.libsignal.metadata.SignalProtos$ServerCertificate$Certificate", + "fields":[ + {"name":"bitField0_", "allowUnsafeAccess":true}, + {"name":"id_", "allowUnsafeAccess":true}, + {"name":"key_", "allowUnsafeAccess":true} + ] +}, +{ + "name":"org.signal.libsignal.metadata.SignalProtos$UnidentifiedSenderMessage", + "fields":[ + {"name":"bitField0_", "allowUnsafeAccess":true}, + {"name":"encryptedMessage_", "allowUnsafeAccess":true}, + {"name":"encryptedStatic_", "allowUnsafeAccess":true}, + {"name":"ephemeralPublic_", "allowUnsafeAccess":true} + ] +}, +{ + "name":"org.signal.libsignal.metadata.SignalProtos$UnidentifiedSenderMessage$Message", + "fields":[ + {"name":"bitField0_", "allowUnsafeAccess":true}, + {"name":"content_", "allowUnsafeAccess":true}, + {"name":"senderCertificate_", "allowUnsafeAccess":true}, + {"name":"type_", "allowUnsafeAccess":true} + ] +}, +{ + "name":"org.signal.storageservice.protos.groups.AccessControl", + "fields":[ + {"name":"addFromInviteLink_", "allowUnsafeAccess":true}, + {"name":"attributes_", "allowUnsafeAccess":true}, + {"name":"members_", "allowUnsafeAccess":true} + ] +}, +{ + "name":"org.signal.storageservice.protos.groups.Group", + "fields":[ + {"name":"accessControl_", "allowUnsafeAccess":true}, + {"name":"avatar_", "allowUnsafeAccess":true}, + {"name":"disappearingMessagesTimer_", "allowUnsafeAccess":true}, + {"name":"inviteLinkPassword_", "allowUnsafeAccess":true}, + {"name":"members_", "allowUnsafeAccess":true}, + {"name":"pendingMembers_", "allowUnsafeAccess":true}, + {"name":"publicKey_", "allowUnsafeAccess":true}, + {"name":"requestingMembers_", "allowUnsafeAccess":true}, + {"name":"revision_", "allowUnsafeAccess":true}, + {"name":"title_", "allowUnsafeAccess":true} + ] +}, +{ + "name":"org.signal.storageservice.protos.groups.GroupAttributeBlob", + "fields":[ + {"name":"contentCase_", "allowUnsafeAccess":true}, + {"name":"content_", "allowUnsafeAccess":true} + ] +}, +{ + "name":"org.signal.storageservice.protos.groups.Member", + "fields":[ + {"name":"joinedAtRevision_", "allowUnsafeAccess":true}, + {"name":"presentation_", "allowUnsafeAccess":true}, + {"name":"profileKey_", "allowUnsafeAccess":true}, + {"name":"role_", "allowUnsafeAccess":true}, + {"name":"userId_", "allowUnsafeAccess":true} + ] +}, +{ + "name":"org.signal.storageservice.protos.groups.PendingMember", + "fields":[ + {"name":"addedByUserId_", "allowUnsafeAccess":true}, + {"name":"member_", "allowUnsafeAccess":true}, + {"name":"timestamp_", "allowUnsafeAccess":true} + ] +}, +{ + "name":"org.signal.storageservice.protos.groups.RequestingMember", + "fields":[ + {"name":"presentation_", "allowUnsafeAccess":true}, + {"name":"profileKey_", "allowUnsafeAccess":true}, + {"name":"timestamp_", "allowUnsafeAccess":true}, + {"name":"userId_", "allowUnsafeAccess":true} + ] +}, +{ + "name":"org.signal.storageservice.protos.groups.local.DecryptedGroup", + "fields":[ + {"name":"accessControl_", "allowUnsafeAccess":true}, + {"name":"avatar_", "allowUnsafeAccess":true}, + {"name":"disappearingMessagesTimer_", "allowUnsafeAccess":true}, + {"name":"inviteLinkPassword_", "allowUnsafeAccess":true}, + {"name":"members_", "allowUnsafeAccess":true}, + {"name":"pendingMembers_", "allowUnsafeAccess":true}, + {"name":"requestingMembers_", "allowUnsafeAccess":true}, + {"name":"revision_", "allowUnsafeAccess":true}, + {"name":"title_", "allowUnsafeAccess":true} + ] +}, +{ + "name":"org.signal.storageservice.protos.groups.local.DecryptedMember", + "fields":[ + {"name":"joinedAtRevision_", "allowUnsafeAccess":true}, + {"name":"profileKey_", "allowUnsafeAccess":true}, + {"name":"role_", "allowUnsafeAccess":true}, + {"name":"uuid_", "allowUnsafeAccess":true} + ] +}, +{ + "name":"org.signal.storageservice.protos.groups.local.DecryptedPendingMember", + "fields":[ + {"name":"addedByUuid_", "allowUnsafeAccess":true}, + {"name":"role_", "allowUnsafeAccess":true}, + {"name":"timestamp_", "allowUnsafeAccess":true}, + {"name":"uuidCipherText_", "allowUnsafeAccess":true}, + {"name":"uuid_", "allowUnsafeAccess":true} + ] +}, +{ + "name":"org.signal.storageservice.protos.groups.local.DecryptedRequestingMember", + "fields":[ + {"name":"profileKey_", "allowUnsafeAccess":true}, + {"name":"timestamp_", "allowUnsafeAccess":true}, + {"name":"uuid_", "allowUnsafeAccess":true} + ] +}, +{ + "name":"org.signal.storageservice.protos.groups.local.DecryptedTimer", + "fields":[{"name":"duration_", "allowUnsafeAccess":true}] +}, +{ + "name":"org.whispersystems.curve25519.OpportunisticCurve25519Provider", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.whispersystems.libsignal.fingerprint.FingerprintProtos$CombinedFingerprints", + "fields":[ + {"name":"bitField0_", "allowUnsafeAccess":true}, + {"name":"localFingerprint_", "allowUnsafeAccess":true}, + {"name":"remoteFingerprint_", "allowUnsafeAccess":true}, + {"name":"version_", "allowUnsafeAccess":true} + ] +}, +{ + "name":"org.whispersystems.libsignal.fingerprint.FingerprintProtos$LogicalFingerprint", + "fields":[ + {"name":"bitField0_", "allowUnsafeAccess":true}, + {"name":"content_", "allowUnsafeAccess":true} + ] +}, +{ + "name":"org.whispersystems.libsignal.protocol.SignalProtos$PreKeySignalMessage", + "fields":[ + {"name":"baseKey_", "allowUnsafeAccess":true}, + {"name":"bitField0_", "allowUnsafeAccess":true}, + {"name":"identityKey_", "allowUnsafeAccess":true}, + {"name":"message_", "allowUnsafeAccess":true}, + {"name":"preKeyId_", "allowUnsafeAccess":true}, + {"name":"registrationId_", "allowUnsafeAccess":true}, + {"name":"signedPreKeyId_", "allowUnsafeAccess":true} + ] +}, +{ + "name":"org.whispersystems.libsignal.protocol.SignalProtos$SignalMessage", + "fields":[ + {"name":"bitField0_", "allowUnsafeAccess":true}, + {"name":"ciphertext_", "allowUnsafeAccess":true}, + {"name":"counter_", "allowUnsafeAccess":true}, + {"name":"previousCounter_", "allowUnsafeAccess":true}, + {"name":"ratchetKey_", "allowUnsafeAccess":true} + ] +}, +{ + "name":"org.whispersystems.libsignal.state.IdentityKeyStore", + "allDeclaredMethods":true +}, +{ + "name":"org.whispersystems.libsignal.state.PreKeyStore", + "allDeclaredMethods":true +}, +{ + "name":"org.whispersystems.libsignal.state.SessionStore", + "allDeclaredMethods":true +}, +{ + "name":"org.whispersystems.libsignal.state.SignalProtocolStore", + "allDeclaredMethods":true +}, +{ + "name":"org.whispersystems.libsignal.state.SignedPreKeyStore", + "allDeclaredMethods":true +}, +{ + "name":"org.whispersystems.libsignal.state.StorageProtos$IdentityKeyPairStructure", + "fields":[ + {"name":"bitField0_", "allowUnsafeAccess":true}, + {"name":"privateKey_", "allowUnsafeAccess":true}, + {"name":"publicKey_", "allowUnsafeAccess":true} + ] +}, +{ + "name":"org.whispersystems.libsignal.state.StorageProtos$PreKeyRecordStructure", + "fields":[ + {"name":"bitField0_", "allowUnsafeAccess":true}, + {"name":"id_", "allowUnsafeAccess":true}, + {"name":"privateKey_", "allowUnsafeAccess":true}, + {"name":"publicKey_", "allowUnsafeAccess":true} + ] +}, +{ + "name":"org.whispersystems.libsignal.state.StorageProtos$RecordStructure", + "fields":[ + {"name":"bitField0_", "allowUnsafeAccess":true}, + {"name":"currentSession_", "allowUnsafeAccess":true}, + {"name":"previousSessions_", "allowUnsafeAccess":true} + ] +}, +{ + "name":"org.whispersystems.libsignal.state.StorageProtos$SessionStructure", + "fields":[ + {"name":"aliceBaseKey_", "allowUnsafeAccess":true}, + {"name":"bitField0_", "allowUnsafeAccess":true}, + {"name":"localIdentityPublic_", "allowUnsafeAccess":true}, + {"name":"localRegistrationId_", "allowUnsafeAccess":true}, + {"name":"needsRefresh_", "allowUnsafeAccess":true}, + {"name":"pendingKeyExchange_", "allowUnsafeAccess":true}, + {"name":"pendingPreKey_", "allowUnsafeAccess":true}, + {"name":"previousCounter_", "allowUnsafeAccess":true}, + {"name":"receiverChains_", "allowUnsafeAccess":true}, + {"name":"remoteIdentityPublic_", "allowUnsafeAccess":true}, + {"name":"remoteRegistrationId_", "allowUnsafeAccess":true}, + {"name":"rootKey_", "allowUnsafeAccess":true}, + {"name":"senderChain_", "allowUnsafeAccess":true}, + {"name":"sessionVersion_", "allowUnsafeAccess":true} + ] +}, +{ + "name":"org.whispersystems.libsignal.state.StorageProtos$SessionStructure$Chain", + "fields":[ + {"name":"bitField0_", "allowUnsafeAccess":true}, + {"name":"chainKey_", "allowUnsafeAccess":true}, + {"name":"messageKeys_", "allowUnsafeAccess":true}, + {"name":"senderRatchetKeyPrivate_", "allowUnsafeAccess":true}, + {"name":"senderRatchetKey_", "allowUnsafeAccess":true} + ] +}, +{ + "name":"org.whispersystems.libsignal.state.StorageProtos$SessionStructure$Chain$ChainKey", + "fields":[ + {"name":"bitField0_", "allowUnsafeAccess":true}, + {"name":"index_", "allowUnsafeAccess":true}, + {"name":"key_", "allowUnsafeAccess":true} + ] +}, +{ + "name":"org.whispersystems.libsignal.state.StorageProtos$SessionStructure$Chain$MessageKey", + "fields":[ + {"name":"bitField0_", "allowUnsafeAccess":true}, + {"name":"cipherKey_", "allowUnsafeAccess":true}, + {"name":"index_", "allowUnsafeAccess":true}, + {"name":"iv_", "allowUnsafeAccess":true}, + {"name":"macKey_", "allowUnsafeAccess":true} + ] +}, +{ + "name":"org.whispersystems.libsignal.state.StorageProtos$SessionStructure$PendingPreKey", + "fields":[ + {"name":"baseKey_", "allowUnsafeAccess":true}, + {"name":"bitField0_", "allowUnsafeAccess":true}, + {"name":"preKeyId_", "allowUnsafeAccess":true}, + {"name":"signedPreKeyId_", "allowUnsafeAccess":true} + ] +}, +{ + "name":"org.whispersystems.libsignal.state.StorageProtos$SignedPreKeyRecordStructure", + "fields":[ + {"name":"bitField0_", "allowUnsafeAccess":true}, + {"name":"id_", "allowUnsafeAccess":true}, + {"name":"privateKey_", "allowUnsafeAccess":true}, + {"name":"publicKey_", "allowUnsafeAccess":true}, + {"name":"signature_", "allowUnsafeAccess":true}, + {"name":"timestamp_", "allowUnsafeAccess":true} + ] +}, +{ + "name":"org.whispersystems.signalservice.api.account.AccountAttributes", + "allDeclaredFields":true, + "allDeclaredMethods":true, + "allDeclaredConstructors":true +}, +{ + "name":"org.whispersystems.signalservice.api.account.AccountAttributes$Capabilities", + "allDeclaredFields":true, + "allDeclaredMethods":true, + "allDeclaredConstructors":true +}, +{ + "name":"org.whispersystems.signalservice.api.groupsv2.CredentialResponse", + "allDeclaredFields":true, + "allDeclaredMethods":true, + "allDeclaredConstructors":true +}, +{ + "name":"org.whispersystems.signalservice.api.groupsv2.TemporalCredential", + "allDeclaredFields":true, + "allDeclaredMethods":true, + "allDeclaredConstructors":true +}, +{ + "name":"org.whispersystems.signalservice.api.groupsv2.TemporalCredential[]" +}, +{ + "name":"org.whispersystems.signalservice.api.messages.multidevice.DeviceInfo", + "allDeclaredFields":true, + "allDeclaredMethods":true, + "allDeclaredConstructors":true +}, +{ + "name":"org.whispersystems.signalservice.api.profiles.SignalServiceProfile", + "allDeclaredFields":true, + "allDeclaredMethods":true, + "allDeclaredConstructors":true +}, +{ + "name":"org.whispersystems.signalservice.api.profiles.SignalServiceProfile$Capabilities", + "allDeclaredFields":true, + "allDeclaredMethods":true, + "allDeclaredConstructors":true +}, +{ + "name":"org.whispersystems.signalservice.api.push.SignedPreKeyEntity", + "allDeclaredFields":true, + "allDeclaredMethods":true, + "allDeclaredConstructors":true +}, +{ + "name":"org.whispersystems.signalservice.api.push.SignedPreKeyEntity$ByteArraySerializer", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.whispersystems.signalservice.internal.contacts.crypto.SignatureBodyEntity", + "allDeclaredFields":true, + "allDeclaredMethods":true, + "allDeclaredConstructors":true +}, +{ + "name":"org.whispersystems.signalservice.internal.contacts.entities.KeyBackupRequest", + "allDeclaredFields":true, + "allDeclaredMethods":true, + "allDeclaredConstructors":true +}, +{ + "name":"org.whispersystems.signalservice.internal.contacts.entities.KeyBackupResponse", + "allDeclaredFields":true, + "allDeclaredMethods":true, + "allDeclaredConstructors":true +}, +{ + "name":"org.whispersystems.signalservice.internal.contacts.entities.RemoteAttestationRequest", + "allDeclaredFields":true, + "allDeclaredMethods":true, + "allDeclaredConstructors":true +}, +{ + "name":"org.whispersystems.signalservice.internal.contacts.entities.RemoteAttestationResponse", + "allDeclaredFields":true, + "allDeclaredMethods":true, + "allDeclaredConstructors":true +}, +{ + "name":"org.whispersystems.signalservice.internal.contacts.entities.TokenResponse", + "allDeclaredFields":true, + "allDeclaredMethods":true, + "allDeclaredConstructors":true +}, +{ + "name":"org.whispersystems.signalservice.internal.keybackup.protos.DeleteRequest", + "fields":[ + {"name":"backupId_", "allowUnsafeAccess":true}, + {"name":"bitField0_", "allowUnsafeAccess":true}, + {"name":"serviceId_", "allowUnsafeAccess":true} + ] +}, +{ + "name":"org.whispersystems.signalservice.internal.keybackup.protos.Request", + "fields":[ + {"name":"backup_", "allowUnsafeAccess":true}, + {"name":"bitField0_", "allowUnsafeAccess":true}, + {"name":"delete_", "allowUnsafeAccess":true}, + {"name":"restore_", "allowUnsafeAccess":true} + ] +}, +{ + "name":"org.whispersystems.signalservice.internal.push.AuthCredentials", + "allDeclaredFields":true, + "allDeclaredMethods":true, + "allDeclaredConstructors":true +}, +{ + "name":"org.whispersystems.signalservice.internal.push.ConfirmCodeMessage", + "allDeclaredFields":true, + "allDeclaredMethods":true, + "allDeclaredConstructors":true +}, +{ + "name":"org.whispersystems.signalservice.internal.push.DeviceCode", + "allDeclaredFields":true, + "allDeclaredMethods":true, + "allDeclaredConstructors":true +}, +{ + "name":"org.whispersystems.signalservice.internal.push.DeviceId", + "allDeclaredFields":true, + "allDeclaredMethods":true, + "allDeclaredConstructors":true +}, +{ + "name":"org.whispersystems.signalservice.internal.push.DeviceInfoList", + "allDeclaredFields":true, + "allDeclaredMethods":true, + "allDeclaredConstructors":true +}, +{ + "name":"org.whispersystems.signalservice.internal.push.OutgoingPushMessage", + "allDeclaredFields":true, + "allDeclaredMethods":true, + "allDeclaredConstructors":true +}, +{ + "name":"org.whispersystems.signalservice.internal.push.OutgoingPushMessageList", + "allDeclaredFields":true, + "allDeclaredMethods":true, + "allDeclaredConstructors":true +}, +{ + "name":"org.whispersystems.signalservice.internal.push.PreKeyEntity", + "allDeclaredFields":true, + "allDeclaredMethods":true, + "allDeclaredConstructors":true +}, +{ + "name":"org.whispersystems.signalservice.internal.push.PreKeyEntity$ECPublicKeySerializer", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.whispersystems.signalservice.internal.push.PreKeyState", + "allDeclaredFields":true, + "allDeclaredMethods":true, + "allDeclaredConstructors":true +}, +{ + "name":"org.whispersystems.signalservice.internal.push.PreKeyStatus", + "allDeclaredFields":true, + "allDeclaredMethods":true, + "allDeclaredConstructors":true +}, +{ + "name":"org.whispersystems.signalservice.internal.push.ProvisioningProtos$ProvisionEnvelope", + "fields":[ + {"name":"bitField0_", "allowUnsafeAccess":true}, + {"name":"body_", "allowUnsafeAccess":true}, + {"name":"publicKey_", "allowUnsafeAccess":true} + ] +}, +{ + "name":"org.whispersystems.signalservice.internal.push.ProvisioningProtos$ProvisionMessage", + "fields":[ + {"name":"bitField0_", "allowUnsafeAccess":true}, + {"name":"identityKeyPrivate_", "allowUnsafeAccess":true}, + {"name":"identityKeyPublic_", "allowUnsafeAccess":true}, + {"name":"number_", "allowUnsafeAccess":true}, + {"name":"profileKey_", "allowUnsafeAccess":true}, + {"name":"provisioningCode_", "allowUnsafeAccess":true}, + {"name":"provisioningVersion_", "allowUnsafeAccess":true}, + {"name":"readReceipts_", "allowUnsafeAccess":true}, + {"name":"userAgent_", "allowUnsafeAccess":true}, + {"name":"uuid_", "allowUnsafeAccess":true} + ] +}, +{ + "name":"org.whispersystems.signalservice.internal.push.ProvisioningProtos$ProvisioningUuid", + "fields":[ + {"name":"bitField0_", "allowUnsafeAccess":true}, + {"name":"uuid_", "allowUnsafeAccess":true} + ] +}, +{ + "name":"org.whispersystems.signalservice.internal.push.SendMessageResponse", + "allDeclaredFields":true, + "allDeclaredMethods":true, + "allDeclaredConstructors":true +}, +{ + "name":"org.whispersystems.signalservice.internal.push.SenderCertificate", + "allDeclaredFields":true, + "allDeclaredMethods":true, + "allDeclaredConstructors":true +}, +{ + "name":"org.whispersystems.signalservice.internal.push.SenderCertificate$ByteArrayDesieralizer", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.whispersystems.signalservice.internal.push.SignalServiceProtos$AttachmentPointer", + "fields":[ + {"name":"attachmentIdentifierCase_", "allowUnsafeAccess":true}, + {"name":"attachmentIdentifier_", "allowUnsafeAccess":true}, + {"name":"bitField0_", "allowUnsafeAccess":true}, + {"name":"blurHash_", "allowUnsafeAccess":true}, + {"name":"caption_", "allowUnsafeAccess":true}, + {"name":"cdnNumber_", "allowUnsafeAccess":true}, + {"name":"contentType_", "allowUnsafeAccess":true}, + {"name":"digest_", "allowUnsafeAccess":true}, + {"name":"fileName_", "allowUnsafeAccess":true}, + {"name":"flags_", "allowUnsafeAccess":true}, + {"name":"height_", "allowUnsafeAccess":true}, + {"name":"key_", "allowUnsafeAccess":true}, + {"name":"size_", "allowUnsafeAccess":true}, + {"name":"thumbnail_", "allowUnsafeAccess":true}, + {"name":"uploadTimestamp_", "allowUnsafeAccess":true}, + {"name":"width_", "allowUnsafeAccess":true} + ] +}, +{ + "name":"org.whispersystems.signalservice.internal.push.SignalServiceProtos$Content", + "fields":[ + {"name":"bitField0_", "allowUnsafeAccess":true}, + {"name":"callMessage_", "allowUnsafeAccess":true}, + {"name":"dataMessage_", "allowUnsafeAccess":true}, + {"name":"nullMessage_", "allowUnsafeAccess":true}, + {"name":"receiptMessage_", "allowUnsafeAccess":true}, + {"name":"syncMessage_", "allowUnsafeAccess":true}, + {"name":"typingMessage_", "allowUnsafeAccess":true} + ] +}, +{ + "name":"org.whispersystems.signalservice.internal.push.SignalServiceProtos$DataMessage", + "fields":[ + {"name":"attachments_", "allowUnsafeAccess":true}, + {"name":"bitField0_", "allowUnsafeAccess":true}, + {"name":"bodyRanges_", "allowUnsafeAccess":true}, + {"name":"body_", "allowUnsafeAccess":true}, + {"name":"contact_", "allowUnsafeAccess":true}, + {"name":"delete_", "allowUnsafeAccess":true}, + {"name":"expireTimer_", "allowUnsafeAccess":true}, + {"name":"flags_", "allowUnsafeAccess":true}, + {"name":"groupV2_", "allowUnsafeAccess":true}, + {"name":"group_", "allowUnsafeAccess":true}, + {"name":"isViewOnce_", "allowUnsafeAccess":true}, + {"name":"preview_", "allowUnsafeAccess":true}, + {"name":"profileKey_", "allowUnsafeAccess":true}, + {"name":"quote_", "allowUnsafeAccess":true}, + {"name":"reaction_", "allowUnsafeAccess":true}, + {"name":"requiredProtocolVersion_", "allowUnsafeAccess":true}, + {"name":"sticker_", "allowUnsafeAccess":true}, + {"name":"timestamp_", "allowUnsafeAccess":true} + ] +}, +{ + "name":"org.whispersystems.signalservice.internal.push.SignalServiceProtos$DataMessage$BodyRange", + "fields":[ + {"name":"associatedValueCase_", "allowUnsafeAccess":true}, + {"name":"associatedValue_", "allowUnsafeAccess":true}, + {"name":"bitField0_", "allowUnsafeAccess":true}, + {"name":"length_", "allowUnsafeAccess":true}, + {"name":"start_", "allowUnsafeAccess":true} + ] +}, +{ + "name":"org.whispersystems.signalservice.internal.push.SignalServiceProtos$DataMessage$Contact", + "fields":[ + {"name":"address_", "allowUnsafeAccess":true}, + {"name":"avatar_", "allowUnsafeAccess":true}, + {"name":"bitField0_", "allowUnsafeAccess":true}, + {"name":"email_", "allowUnsafeAccess":true}, + {"name":"name_", "allowUnsafeAccess":true}, + {"name":"number_", "allowUnsafeAccess":true}, + {"name":"organization_", "allowUnsafeAccess":true} + ] +}, +{ + "name":"org.whispersystems.signalservice.internal.push.SignalServiceProtos$DataMessage$Preview", + "fields":[ + {"name":"bitField0_", "allowUnsafeAccess":true}, + {"name":"date_", "allowUnsafeAccess":true}, + {"name":"description_", "allowUnsafeAccess":true}, + {"name":"image_", "allowUnsafeAccess":true}, + {"name":"title_", "allowUnsafeAccess":true}, + {"name":"url_", "allowUnsafeAccess":true} + ] +}, +{ + "name":"org.whispersystems.signalservice.internal.push.SignalServiceProtos$Envelope", + "fields":[ + {"name":"bitField0_", "allowUnsafeAccess":true}, + {"name":"content_", "allowUnsafeAccess":true}, + {"name":"legacyMessage_", "allowUnsafeAccess":true}, + {"name":"relay_", "allowUnsafeAccess":true}, + {"name":"serverGuid_", "allowUnsafeAccess":true}, + {"name":"serverTimestamp_", "allowUnsafeAccess":true}, + {"name":"sourceDevice_", "allowUnsafeAccess":true}, + {"name":"sourceE164_", "allowUnsafeAccess":true}, + {"name":"sourceUuid_", "allowUnsafeAccess":true}, + {"name":"timestamp_", "allowUnsafeAccess":true}, + {"name":"type_", "allowUnsafeAccess":true} + ] +}, +{ + "name":"org.whispersystems.signalservice.internal.push.SignalServiceProtos$GroupContextV2", + "fields":[ + {"name":"bitField0_", "allowUnsafeAccess":true}, + {"name":"groupChange_", "allowUnsafeAccess":true}, + {"name":"masterKey_", "allowUnsafeAccess":true}, + {"name":"revision_", "allowUnsafeAccess":true} + ] +}, +{ + "name":"org.whispersystems.signalservice.internal.push.SignalServiceProtos$ReceiptMessage", + "fields":[ + {"name":"bitField0_", "allowUnsafeAccess":true}, + {"name":"timestamp_", "allowUnsafeAccess":true}, + {"name":"type_", "allowUnsafeAccess":true} + ] +}, +{ + "name":"org.whispersystems.signalservice.internal.push.SignalServiceProtos$SyncMessage", + "fields":[ + {"name":"bitField0_", "allowUnsafeAccess":true}, + {"name":"blocked_", "allowUnsafeAccess":true}, + {"name":"configuration_", "allowUnsafeAccess":true}, + {"name":"contacts_", "allowUnsafeAccess":true}, + {"name":"fetchLatest_", "allowUnsafeAccess":true}, + {"name":"groups_", "allowUnsafeAccess":true}, + {"name":"keys_", "allowUnsafeAccess":true}, + {"name":"messageRequestResponse_", "allowUnsafeAccess":true}, + {"name":"padding_", "allowUnsafeAccess":true}, + {"name":"read_", "allowUnsafeAccess":true}, + {"name":"request_", "allowUnsafeAccess":true}, + {"name":"sent_", "allowUnsafeAccess":true}, + {"name":"stickerPackOperation_", "allowUnsafeAccess":true}, + {"name":"verified_", "allowUnsafeAccess":true}, + {"name":"viewOnceOpen_", "allowUnsafeAccess":true} + ] +}, +{ + "name":"org.whispersystems.signalservice.internal.push.SignalServiceProtos$SyncMessage$Read", + "fields":[ + {"name":"bitField0_", "allowUnsafeAccess":true}, + {"name":"senderE164_", "allowUnsafeAccess":true}, + {"name":"senderUuid_", "allowUnsafeAccess":true}, + {"name":"timestamp_", "allowUnsafeAccess":true} + ] +}, +{ + "name":"org.whispersystems.signalservice.internal.push.SignalServiceProtos$SyncMessage$Sent", + "fields":[ + {"name":"bitField0_", "allowUnsafeAccess":true}, + {"name":"destinationE164_", "allowUnsafeAccess":true}, + {"name":"destinationUuid_", "allowUnsafeAccess":true}, + {"name":"expirationStartTimestamp_", "allowUnsafeAccess":true}, + {"name":"isRecipientUpdate_", "allowUnsafeAccess":true}, + {"name":"message_", "allowUnsafeAccess":true}, + {"name":"timestamp_", "allowUnsafeAccess":true}, + {"name":"unidentifiedStatus_", "allowUnsafeAccess":true} + ] +}, +{ + "name":"org.whispersystems.signalservice.internal.push.SignalServiceProtos$SyncMessage$Sent$UnidentifiedDeliveryStatus", + "fields":[ + {"name":"bitField0_", "allowUnsafeAccess":true}, + {"name":"destinationE164_", "allowUnsafeAccess":true}, + {"name":"destinationUuid_", "allowUnsafeAccess":true}, + {"name":"unidentified_", "allowUnsafeAccess":true} + ] +}, +{ + "name":"org.whispersystems.signalservice.internal.push.SignalServiceProtos$SyncMessage$StickerPackOperation", + "fields":[ + {"name":"bitField0_", "allowUnsafeAccess":true}, + {"name":"packId_", "allowUnsafeAccess":true}, + {"name":"packKey_", "allowUnsafeAccess":true}, + {"name":"type_", "allowUnsafeAccess":true} + ] +}, +{ + "name":"org.whispersystems.signalservice.internal.push.SignalServiceProtos$TypingMessage", + "fields":[ + {"name":"action_", "allowUnsafeAccess":true}, + {"name":"bitField0_", "allowUnsafeAccess":true}, + {"name":"groupId_", "allowUnsafeAccess":true}, + {"name":"timestamp_", "allowUnsafeAccess":true} + ] +}, +{ + "name":"org.whispersystems.signalservice.internal.push.VerifyAccountResponse", + "allDeclaredFields":true, + "allDeclaredMethods":true, + "allDeclaredConstructors":true +}, +{ + "name":"org.whispersystems.signalservice.internal.serialize.protos.AddressProto", + "fields":[ + {"name":"bitField0_", "allowUnsafeAccess":true}, + {"name":"e164_", "allowUnsafeAccess":true}, + {"name":"relay_", "allowUnsafeAccess":true}, + {"name":"uuid_", "allowUnsafeAccess":true} + ] +}, +{ + "name":"org.whispersystems.signalservice.internal.serialize.protos.MetadataProto", + "fields":[ + {"name":"address_", "allowUnsafeAccess":true}, + {"name":"bitField0_", "allowUnsafeAccess":true}, + {"name":"needsReceipt_", "allowUnsafeAccess":true}, + {"name":"senderDevice_", "allowUnsafeAccess":true}, + {"name":"serverDeliveredTimestamp_", "allowUnsafeAccess":true}, + {"name":"serverReceivedTimestamp_", "allowUnsafeAccess":true}, + {"name":"timestamp_", "allowUnsafeAccess":true} + ] +}, +{ + "name":"org.whispersystems.signalservice.internal.serialize.protos.SignalServiceContentProto", + "fields":[ + {"name":"bitField0_", "allowUnsafeAccess":true}, + {"name":"dataCase_", "allowUnsafeAccess":true}, + {"name":"data_", "allowUnsafeAccess":true}, + {"name":"localAddress_", "allowUnsafeAccess":true}, + {"name":"metadata_", "allowUnsafeAccess":true} + ] +}, +{ + "name":"org.whispersystems.signalservice.internal.util.JsonUtil$IdentityKeySerializer", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.whispersystems.signalservice.internal.util.JsonUtil$UuidDeserializer", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.whispersystems.signalservice.internal.websocket.WebSocketProtos$WebSocketMessage", + "fields":[ + {"name":"bitField0_", "allowUnsafeAccess":true}, + {"name":"request_", "allowUnsafeAccess":true}, + {"name":"response_", "allowUnsafeAccess":true}, + {"name":"type_", "allowUnsafeAccess":true} + ] +}, +{ + "name":"org.whispersystems.signalservice.internal.websocket.WebSocketProtos$WebSocketRequestMessage", + "fields":[ + {"name":"bitField0_", "allowUnsafeAccess":true}, + {"name":"body_", "allowUnsafeAccess":true}, + {"name":"headers_", "allowUnsafeAccess":true}, + {"name":"id_", "allowUnsafeAccess":true}, + {"name":"path_", "allowUnsafeAccess":true}, + {"name":"verb_", "allowUnsafeAccess":true} + ] +}, +{ + "name":"org.whispersystems.signalservice.internal.websocket.WebSocketProtos$WebSocketResponseMessage", + "fields":[ + {"name":"bitField0_", "allowUnsafeAccess":true}, + {"name":"body_", "allowUnsafeAccess":true}, + {"name":"headers_", "allowUnsafeAccess":true}, + {"name":"id_", "allowUnsafeAccess":true}, + {"name":"message_", "allowUnsafeAccess":true}, + {"name":"status_", "allowUnsafeAccess":true} + ] +}, +{ + "name":"sun.misc.Unsafe", + "allDeclaredFields":true, + "methods":[ + {"name":"arrayBaseOffset","parameterTypes":["java.lang.Class"] }, + {"name":"arrayIndexScale","parameterTypes":["java.lang.Class"] }, + {"name":"copyMemory","parameterTypes":["long","long","long"] }, + {"name":"copyMemory","parameterTypes":["java.lang.Object","long","java.lang.Object","long","long"] }, + {"name":"getBoolean","parameterTypes":["java.lang.Object","long"] }, + {"name":"getByte","parameterTypes":["long"] }, + {"name":"getByte","parameterTypes":["java.lang.Object","long"] }, + {"name":"getDouble","parameterTypes":["java.lang.Object","long"] }, + {"name":"getFloat","parameterTypes":["java.lang.Object","long"] }, + {"name":"getInt","parameterTypes":["long"] }, + {"name":"getInt","parameterTypes":["java.lang.Object","long"] }, + {"name":"getLong","parameterTypes":["long"] }, + {"name":"getLong","parameterTypes":["java.lang.Object","long"] }, + {"name":"getObject","parameterTypes":["java.lang.Object","long"] }, + {"name":"objectFieldOffset","parameterTypes":["java.lang.reflect.Field"] }, + {"name":"putBoolean","parameterTypes":["java.lang.Object","long","boolean"] }, + {"name":"putByte","parameterTypes":["long","byte"] }, + {"name":"putByte","parameterTypes":["java.lang.Object","long","byte"] }, + {"name":"putDouble","parameterTypes":["java.lang.Object","long","double"] }, + {"name":"putFloat","parameterTypes":["java.lang.Object","long","float"] }, + {"name":"putInt","parameterTypes":["long","int"] }, + {"name":"putInt","parameterTypes":["java.lang.Object","long","int"] }, + {"name":"putLong","parameterTypes":["long","long"] }, + {"name":"putLong","parameterTypes":["java.lang.Object","long","long"] }, + {"name":"putObject","parameterTypes":["java.lang.Object","long","java.lang.Object"] } + ] +}, +{ + "name":"sun.security.provider.DSA$SHA224withDSA", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"sun.security.provider.JavaKeyStore$DualFormatJKS", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"sun.security.provider.JavaKeyStore$JKS", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"sun.security.provider.NativePRNG", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"sun.security.provider.SHA", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"sun.security.provider.SHA2$SHA224", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"sun.security.provider.SHA2$SHA256", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"sun.security.provider.SHA5$SHA384", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"sun.security.provider.SHA5$SHA512", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"sun.security.provider.SecureRandom", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"sun.security.provider.certpath.PKIXCertPathValidator", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"sun.security.rsa.RSAKeyFactory$Legacy", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"sun.security.rsa.RSAPSSSignature", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"sun.security.rsa.RSASignature$SHA224withRSA", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"sun.security.rsa.RSASignature$SHA256withRSA", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"sun.security.rsa.RSASignature$SHA512withRSA", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"sun.security.ssl.SSLContextImpl$TLSContext", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"sun.security.ssl.TrustManagerFactoryImpl$PKIXFactory", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"sun.security.x509.AuthorityKeyIdentifierExtension", + "methods":[{"name":"","parameterTypes":["java.lang.Boolean","java.lang.Object"] }] +}, +{ + "name":"sun.security.x509.BasicConstraintsExtension", + "methods":[{"name":"","parameterTypes":["java.lang.Boolean","java.lang.Object"] }] +}, +{ + "name":"sun.security.x509.CRLDistributionPointsExtension", + "methods":[{"name":"","parameterTypes":["java.lang.Boolean","java.lang.Object"] }] +}, +{ + "name":"sun.security.x509.KeyUsageExtension", + "methods":[{"name":"","parameterTypes":["java.lang.Boolean","java.lang.Object"] }] +}, +{ + "name":"sun.security.x509.SubjectAlternativeNameExtension", + "methods":[{"name":"","parameterTypes":["java.lang.Boolean","java.lang.Object"] }] +}, +{ + "name":"sun.security.x509.SubjectKeyIdentifierExtension", + "methods":[{"name":"","parameterTypes":["java.lang.Boolean","java.lang.Object"] }] +} +] diff --git a/graalvm-config-dir/resource-config.json b/graalvm-config-dir/resource-config.json new file mode 100644 index 00000000..402798af --- /dev/null +++ b/graalvm-config-dir/resource-config.json @@ -0,0 +1,11 @@ +{ + "resources":{ + "includes":[ + {"pattern":"com/google/i18n/phonenumbers/data/.*"}, + {"pattern":"libzkgroup.so"}, + {"pattern":"org/asamk/signal/manager/ias.store"}, + {"pattern":"org/asamk/signal/manager/whisper.store"}, + {"pattern":"org/slf4j/impl/StaticLoggerBinder.class"} + ]}, + "bundles":[{"name":"net.sourceforge.argparse4j.internal.ArgumentParserImpl"}] +}