mirror of
https://github.com/pgpainless/pgpainless.git
synced 2025-09-10 02:39:39 +02:00
Compare commits
28 commits
Author | SHA1 | Date | |
---|---|---|---|
0fe3a7abf6 | |||
0d807cb6b8 | |||
9b0a3cd4c7 | |||
0ee31b232a | |||
f2cbde43be | |||
4cf6c6b16a | |||
0f54cc615c | |||
a74db2d26d | |||
|
5f30df6d16 | ||
7953ade136 | |||
0649c041cd | |||
5a413f53a4 | |||
3b92ccc59d | |||
83613250ef | |||
05c84835e6 | |||
d20a3b7556 | |||
2d0608cf0f | |||
143c9777d6 | |||
9ac928fcf1 | |||
811f72ffef | |||
a6f8058fb4 | |||
de5ef4de00 | |||
2b9c5ea272 | |||
f054c30460 | |||
65113a6d82 | |||
a0254f47fb | |||
eebd02e309 | |||
7dc4329c52 |
22 changed files with 1129 additions and 114 deletions
8
.github/workflows/codeql-analysis.yml
vendored
8
.github/workflows/codeql-analysis.yml
vendored
|
@ -36,7 +36,7 @@ jobs:
|
||||||
strategy:
|
strategy:
|
||||||
fail-fast: false
|
fail-fast: false
|
||||||
matrix:
|
matrix:
|
||||||
language: [ 'java' ]
|
language: [ 'java-kotlin' ]
|
||||||
# CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python', 'ruby' ]
|
# CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python', 'ruby' ]
|
||||||
# Learn more about CodeQL language support at https://git.io/codeql-language-support
|
# Learn more about CodeQL language support at https://git.io/codeql-language-support
|
||||||
|
|
||||||
|
@ -46,7 +46,7 @@ jobs:
|
||||||
|
|
||||||
# Initializes the CodeQL tools for scanning.
|
# Initializes the CodeQL tools for scanning.
|
||||||
- name: Initialize CodeQL
|
- name: Initialize CodeQL
|
||||||
uses: github/codeql-action/init@v2
|
uses: github/codeql-action/init@v3
|
||||||
with:
|
with:
|
||||||
languages: ${{ matrix.language }}
|
languages: ${{ matrix.language }}
|
||||||
# If you wish to specify custom queries, you can do so here or in a config file.
|
# If you wish to specify custom queries, you can do so here or in a config file.
|
||||||
|
@ -57,7 +57,7 @@ jobs:
|
||||||
# Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
|
# Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
|
||||||
# If this step fails, then you should remove it and run the build manually (see below)
|
# If this step fails, then you should remove it and run the build manually (see below)
|
||||||
- name: Autobuild
|
- name: Autobuild
|
||||||
uses: github/codeql-action/autobuild@v2
|
uses: github/codeql-action/autobuild@v3
|
||||||
|
|
||||||
# ℹ️ Command-line programs to run using the OS shell.
|
# ℹ️ Command-line programs to run using the OS shell.
|
||||||
# 📚 https://git.io/JvXDl
|
# 📚 https://git.io/JvXDl
|
||||||
|
@ -71,4 +71,4 @@ jobs:
|
||||||
# make release
|
# make release
|
||||||
|
|
||||||
- name: Perform CodeQL Analysis
|
- name: Perform CodeQL Analysis
|
||||||
uses: github/codeql-action/analyze@v2
|
uses: github/codeql-action/analyze@v3
|
||||||
|
|
8
.github/workflows/gradle_push.yml
vendored
8
.github/workflows/gradle_push.yml
vendored
|
@ -28,9 +28,13 @@ jobs:
|
||||||
with:
|
with:
|
||||||
java-version: '11'
|
java-version: '11'
|
||||||
distribution: 'temurin'
|
distribution: 'temurin'
|
||||||
- name: Build, Check and Coverage
|
- name: Build and Check
|
||||||
|
uses: gradle/gradle-build-action@67421db6bd0bf253fb4bd25b31ebb98943c375e1
|
||||||
|
with:
|
||||||
|
arguments: check jacocoRootReport
|
||||||
|
- name: Coveralls
|
||||||
uses: gradle/gradle-build-action@67421db6bd0bf253fb4bd25b31ebb98943c375e1
|
uses: gradle/gradle-build-action@67421db6bd0bf253fb4bd25b31ebb98943c375e1
|
||||||
env:
|
env:
|
||||||
COVERALLS_REPO_TOKEN: ${{ secrets.COVERALLS_REPO_TOKEN }}
|
COVERALLS_REPO_TOKEN: ${{ secrets.COVERALLS_REPO_TOKEN }}
|
||||||
with:
|
with:
|
||||||
arguments: check jacocoRootReport coveralls
|
arguments: coveralls
|
||||||
|
|
14
CHANGELOG.md
14
CHANGELOG.md
|
@ -5,6 +5,20 @@ SPDX-License-Identifier: CC0-1.0
|
||||||
|
|
||||||
# PGPainless Changelog
|
# PGPainless Changelog
|
||||||
|
|
||||||
|
## 1.7.7-SNAPSHOT
|
||||||
|
- Bump `bcpg-jdk8on` to `1.81`
|
||||||
|
- Bump `bcprov-jdk18on` to `1.81`
|
||||||
|
|
||||||
|
## 1.7.6
|
||||||
|
- Fix `RevocationSignatureBuilder` properly calculating third-party signatures of type `KeyRevocation` (delegation revocations)
|
||||||
|
- Enable support for native images
|
||||||
|
- Re-enable shadow plugin and build fat-jar
|
||||||
|
|
||||||
|
## 1.7.5
|
||||||
|
- Actually attempt to fix Kotlin desugaring.
|
||||||
|
- Bump javaSourceCompatibility and javaTargetCompatibility to 11
|
||||||
|
- Bump gradle-wrapper to 8.8
|
||||||
|
|
||||||
## 1.7.4
|
## 1.7.4
|
||||||
- Fix proper Kotlin desugaring for Java 8
|
- Fix proper Kotlin desugaring for Java 8
|
||||||
|
|
||||||
|
|
|
@ -191,7 +191,7 @@ repositories {
|
||||||
}
|
}
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
implementation 'org.pgpainless:pgpainless-core:1.7.4'
|
implementation 'org.pgpainless:pgpainless-core:1.7.6'
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
|
@ -93,6 +93,12 @@ precedence = "aggregate"
|
||||||
SPDX-FileCopyrightText = "2022 Paul Schaub <info@pgpainless.org>, 2017 Steve Smith"
|
SPDX-FileCopyrightText = "2022 Paul Schaub <info@pgpainless.org>, 2017 Steve Smith"
|
||||||
SPDX-License-Identifier = "CC-BY-SA-3.0"
|
SPDX-License-Identifier = "CC-BY-SA-3.0"
|
||||||
|
|
||||||
|
[[annotations]]
|
||||||
|
path = "pgpainless-cli/src/main/resources/META-INF/native-image/**"
|
||||||
|
precedence = "aggregate"
|
||||||
|
SPDX-FileCopyrightText = "2025 Paul Schaub <info@pgpainless.org>"
|
||||||
|
SPDX-License-Identifier = "Apache-2.0"
|
||||||
|
|
||||||
[[annotations]]
|
[[annotations]]
|
||||||
path = "pgpainless-cli/rewriteManPages.sh"
|
path = "pgpainless-cli/rewriteManPages.sh"
|
||||||
precedence = "aggregate"
|
precedence = "aggregate"
|
||||||
|
|
81
build.gradle
81
build.gradle
|
@ -33,18 +33,6 @@ allprojects {
|
||||||
apply plugin: 'kotlin'
|
apply plugin: 'kotlin'
|
||||||
apply plugin: 'com.diffplug.spotless'
|
apply plugin: 'com.diffplug.spotless'
|
||||||
|
|
||||||
java {
|
|
||||||
targetCompatibility = JavaVersion.VERSION_1_8
|
|
||||||
}
|
|
||||||
|
|
||||||
compileJava {
|
|
||||||
options.release = 8
|
|
||||||
}
|
|
||||||
|
|
||||||
tasks.withType(JavaCompile).configureEach {
|
|
||||||
options.release = 8
|
|
||||||
}
|
|
||||||
|
|
||||||
// Only generate jar for submodules
|
// Only generate jar for submodules
|
||||||
// without this we would generate an empty pgpainless.jar for the project root
|
// without this we would generate an empty pgpainless.jar for the project root
|
||||||
// https://stackoverflow.com/a/25445035
|
// https://stackoverflow.com/a/25445035
|
||||||
|
@ -55,7 +43,7 @@ allprojects {
|
||||||
|
|
||||||
// checkstyle
|
// checkstyle
|
||||||
checkstyle {
|
checkstyle {
|
||||||
toolVersion = '10.12.1'
|
toolVersion = '10.25.0'
|
||||||
}
|
}
|
||||||
|
|
||||||
spotless {
|
spotless {
|
||||||
|
@ -68,8 +56,6 @@ allprojects {
|
||||||
description = "Simple to use OpenPGP API for Java based on Bouncycastle"
|
description = "Simple to use OpenPGP API for Java based on Bouncycastle"
|
||||||
version = shortVersion
|
version = shortVersion
|
||||||
|
|
||||||
sourceCompatibility = javaSourceCompatibility
|
|
||||||
|
|
||||||
repositories {
|
repositories {
|
||||||
mavenCentral()
|
mavenCentral()
|
||||||
mavenLocal()
|
mavenLocal()
|
||||||
|
@ -84,6 +70,10 @@ allprojects {
|
||||||
fileMode = 0644
|
fileMode = 0644
|
||||||
}
|
}
|
||||||
|
|
||||||
|
kotlin {
|
||||||
|
jvmToolchain(javaSourceCompatibility)
|
||||||
|
}
|
||||||
|
|
||||||
// Compatibility of default implementations in kotlin interfaces with Java implementations.
|
// Compatibility of default implementations in kotlin interfaces with Java implementations.
|
||||||
tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).configureEach {
|
tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).configureEach {
|
||||||
kotlinOptions {
|
kotlinOptions {
|
||||||
|
@ -124,7 +114,7 @@ allprojects {
|
||||||
sourceDirectories.setFrom(project.files(sourceSets.main.allSource.srcDirs))
|
sourceDirectories.setFrom(project.files(sourceSets.main.allSource.srcDirs))
|
||||||
classDirectories.setFrom(project.files(sourceSets.main.output))
|
classDirectories.setFrom(project.files(sourceSets.main.output))
|
||||||
reports {
|
reports {
|
||||||
xml.enabled true
|
xml.required = true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -142,15 +132,15 @@ subprojects {
|
||||||
apply plugin: 'signing'
|
apply plugin: 'signing'
|
||||||
|
|
||||||
task sourcesJar(type: Jar, dependsOn: classes) {
|
task sourcesJar(type: Jar, dependsOn: classes) {
|
||||||
classifier = 'sources'
|
archiveClassifier = 'sources'
|
||||||
from sourceSets.main.allSource
|
from sourceSets.main.allSource
|
||||||
}
|
}
|
||||||
task javadocJar(type: Jar, dependsOn: javadoc) {
|
task javadocJar(type: Jar, dependsOn: javadoc) {
|
||||||
classifier = 'javadoc'
|
archiveClassifier = 'javadoc'
|
||||||
from javadoc.destinationDir
|
from javadoc.destinationDir
|
||||||
}
|
}
|
||||||
task testsJar(type: Jar, dependsOn: testClasses) {
|
task testsJar(type: Jar, dependsOn: testClasses) {
|
||||||
classifier = 'tests'
|
archiveClassifier = 'tests'
|
||||||
from sourceSets.test.output
|
from sourceSets.test.output
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -247,7 +237,7 @@ task jacocoRootReport(type: JacocoReport) {
|
||||||
classDirectories.setFrom(files(subprojects.sourceSets.main.output))
|
classDirectories.setFrom(files(subprojects.sourceSets.main.output))
|
||||||
executionData.setFrom(files(subprojects.jacocoTestReport.executionData))
|
executionData.setFrom(files(subprojects.jacocoTestReport.executionData))
|
||||||
reports {
|
reports {
|
||||||
xml.enabled true
|
xml.required = true
|
||||||
xml.destination file("${buildDir}/reports/jacoco/test/jacocoTestReport.xml")
|
xml.destination file("${buildDir}/reports/jacoco/test/jacocoTestReport.xml")
|
||||||
}
|
}
|
||||||
// We could remove the following setOnlyIf line, but then
|
// We could remove the following setOnlyIf line, but then
|
||||||
|
@ -258,10 +248,6 @@ task jacocoRootReport(type: JacocoReport) {
|
||||||
}
|
}
|
||||||
|
|
||||||
task javadocAll(type: Javadoc) {
|
task javadocAll(type: Javadoc) {
|
||||||
def currentJavaVersion = JavaVersion.current()
|
|
||||||
if (currentJavaVersion.compareTo(JavaVersion.VERSION_1_9) >= 0) {
|
|
||||||
options.addStringOption("-release", "8");
|
|
||||||
}
|
|
||||||
source subprojects.collect {project ->
|
source subprojects.collect {project ->
|
||||||
project.sourceSets.main.allJava }
|
project.sourceSets.main.allJava }
|
||||||
destinationDir = new File(buildDir, 'javadoc')
|
destinationDir = new File(buildDir, 'javadoc')
|
||||||
|
@ -275,18 +261,6 @@ task javadocAll(type: Javadoc) {
|
||||||
] as String[]
|
] as String[]
|
||||||
}
|
}
|
||||||
|
|
||||||
if (JavaVersion.current().isJava8Compatible()) {
|
|
||||||
tasks.withType(Javadoc) {
|
|
||||||
// The '-quiet' as second argument is actually a hack,
|
|
||||||
// since the one paramater addStringOption doesn't seem to
|
|
||||||
// work, we extra add '-quiet', which is added anyway by
|
|
||||||
// gradle. See https://github.com/gradle/gradle/issues/2354
|
|
||||||
// See JDK-8200363 (https://bugs.openjdk.java.net/browse/JDK-8200363)
|
|
||||||
// for information about the -Xwerror option.
|
|
||||||
// options.addStringOption('Xwerror', '-quiet')
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Fetch sha256 checksums of artifacts published to maven central.
|
* Fetch sha256 checksums of artifacts published to maven central.
|
||||||
*
|
*
|
||||||
|
@ -296,34 +270,13 @@ task mavenCentralChecksums() {
|
||||||
description 'Fetch and display checksums for artifacts published to Maven Central'
|
description 'Fetch and display checksums for artifacts published to Maven Central'
|
||||||
String ver = project.hasProperty('release') ? release : shortVersion
|
String ver = project.hasProperty('release') ? release : shortVersion
|
||||||
doLast {
|
doLast {
|
||||||
Process p = "curl -f https://repo1.maven.org/maven2/org/pgpainless/pgpainless-core/${ver}/pgpainless-core-${ver}.jar.sha256".execute()
|
for (Project p : rootProject.subprojects) {
|
||||||
if (p.waitFor() == 0) {
|
String url = "https://repo1.maven.org/maven2/org/pgpainless/${p.name}/${ver}/${p.name}-${ver}.jar.sha256"
|
||||||
print p.text.trim()
|
Process fetch = "curl -f $url".execute()
|
||||||
println " pgpainless-core/build/libs/pgpainless-core-${ver}.jar"
|
if (fetch.waitFor() == 0) {
|
||||||
}
|
print fetch.text.trim()
|
||||||
|
println " ${p.name}/build/libs/${p.name}-${ver}.jar"
|
||||||
p = "curl -f https://repo1.maven.org/maven2/org/pgpainless/pgpainless-sop/${ver}/pgpainless-sop-${ver}.jar.sha256".execute()
|
}
|
||||||
if (p.waitFor() == 0) {
|
|
||||||
print p.text.trim()
|
|
||||||
println " pgpainless-sop/build/libs/pgpainless-sop-${ver}.jar"
|
|
||||||
}
|
|
||||||
|
|
||||||
p = "curl -f https://repo1.maven.org/maven2/org/pgpainless/pgpainless-cli/${ver}/pgpainless-cli-${ver}-all.jar.sha256".execute()
|
|
||||||
if (p.waitFor() == 0) {
|
|
||||||
print p.text.trim()
|
|
||||||
println " pgpainless-cli/build/libs/pgpainless-cli-${ver}-all.jar"
|
|
||||||
}
|
|
||||||
|
|
||||||
p = "curl -f https://repo1.maven.org/maven2/org/pgpainless/pgpainless-cli/${ver}/pgpainless-cli-${ver}.jar.sha256".execute()
|
|
||||||
if (p.waitFor() == 0) {
|
|
||||||
print p.text.trim()
|
|
||||||
println " pgpainless-cli/build/libs/pgpainless-cli-${ver}.jar"
|
|
||||||
}
|
|
||||||
|
|
||||||
p = "curl -f https://repo1.maven.org/maven2/org/pgpainless/hsregex/${ver}/hsregex-${ver}.jar.sha256".execute()
|
|
||||||
if (p.waitFor() == 0) {
|
|
||||||
print p.text.trim()
|
|
||||||
println " hsregex/build/libs/hsregex-${ver}.jar"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
2
gradle/wrapper/gradle-wrapper.properties
vendored
2
gradle/wrapper/gradle-wrapper.properties
vendored
|
@ -1,5 +1,5 @@
|
||||||
distributionBase=GRADLE_USER_HOME
|
distributionBase=GRADLE_USER_HOME
|
||||||
distributionPath=wrapper/dists
|
distributionPath=wrapper/dists
|
||||||
distributionUrl=https\://services.gradle.org/distributions/gradle-7.5-bin.zip
|
distributionUrl=https\://services.gradle.org/distributions/gradle-8.8-bin.zip
|
||||||
zipStoreBase=GRADLE_USER_HOME
|
zipStoreBase=GRADLE_USER_HOME
|
||||||
zipStorePath=wrapper/dists
|
zipStorePath=wrapper/dists
|
||||||
|
|
|
@ -4,7 +4,12 @@
|
||||||
|
|
||||||
plugins {
|
plugins {
|
||||||
id 'application'
|
id 'application'
|
||||||
id "com.github.johnrengelman.shadow" version "6.1.0"
|
id 'org.graalvm.buildtools.native' version '0.10.6'
|
||||||
|
id 'com.gradleup.shadow' version '8.3.6'
|
||||||
|
}
|
||||||
|
|
||||||
|
graalvmNative {
|
||||||
|
toolchainDetection = true
|
||||||
}
|
}
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
|
@ -17,7 +22,8 @@ dependencies {
|
||||||
// implementation "ch.qos.logback:logback-core:1.2.6"
|
// implementation "ch.qos.logback:logback-core:1.2.6"
|
||||||
// We want logback logging in tests and in the app
|
// We want logback logging in tests and in the app
|
||||||
testImplementation "ch.qos.logback:logback-classic:$logbackVersion"
|
testImplementation "ch.qos.logback:logback-classic:$logbackVersion"
|
||||||
implementation "ch.qos.logback:logback-classic:$logbackVersion"
|
// implementation "ch.qos.logback:logback-classic:$logbackVersion"
|
||||||
|
implementation "org.slf4j:slf4j-nop:$slf4jVersion"
|
||||||
|
|
||||||
implementation(project(":pgpainless-sop"))
|
implementation(project(":pgpainless-sop"))
|
||||||
implementation "org.pgpainless:sop-java-picocli:$sopJavaVersion"
|
implementation "org.pgpainless:sop-java-picocli:$sopJavaVersion"
|
||||||
|
@ -31,22 +37,6 @@ mainClassName = 'org.pgpainless.cli.PGPainlessCLI'
|
||||||
application {
|
application {
|
||||||
mainClass = mainClassName
|
mainClass = mainClassName
|
||||||
}
|
}
|
||||||
/**
|
|
||||||
jar {
|
|
||||||
duplicatesStrategy(DuplicatesStrategy.EXCLUDE)
|
|
||||||
manifest {
|
|
||||||
attributes 'Main-Class': "$mainClassName"
|
|
||||||
}
|
|
||||||
|
|
||||||
from {
|
|
||||||
configurations.runtimeClasspath.collect { it.isDirectory() ? it : zipTree(it) }
|
|
||||||
} {
|
|
||||||
exclude "META-INF/*.SF"
|
|
||||||
exclude "META-INF/*.DSA"
|
|
||||||
exclude "META-INF/*.RSA"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
|
|
||||||
run {
|
run {
|
||||||
// https://stackoverflow.com/questions/59445306/pipe-into-gradle-run
|
// https://stackoverflow.com/questions/59445306/pipe-into-gradle-run
|
||||||
|
@ -56,5 +46,3 @@ run {
|
||||||
args Eval.me(appArgs)
|
args Eval.me(appArgs)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// tasks."jar".dependsOn(":pgpainless-core:assemble", ":pgpainless-sop:assemble")
|
|
||||||
|
|
|
@ -0,0 +1,2 @@
|
||||||
|
[
|
||||||
|
]
|
|
@ -0,0 +1,7 @@
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"type":"agent-extracted",
|
||||||
|
"classes":[
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
|
@ -0,0 +1,2 @@
|
||||||
|
[
|
||||||
|
]
|
|
@ -0,0 +1,891 @@
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"name":"[Ljava.lang.Object;"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name":"ch.qos.logback.classic.encoder.PatternLayoutEncoder",
|
||||||
|
"queryAllPublicMethods":true,
|
||||||
|
"methods":[{"name":"<init>","parameterTypes":[] }]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name":"ch.qos.logback.classic.joran.SerializedModelConfigurator",
|
||||||
|
"methods":[{"name":"<init>","parameterTypes":[] }]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name":"ch.qos.logback.classic.util.DefaultJoranConfigurator",
|
||||||
|
"methods":[{"name":"<init>","parameterTypes":[] }]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name":"ch.qos.logback.core.ConsoleAppender",
|
||||||
|
"queryAllPublicMethods":true,
|
||||||
|
"methods":[{"name":"<init>","parameterTypes":[] }, {"name":"setTarget","parameterTypes":["java.lang.String"] }]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name":"ch.qos.logback.core.OutputStreamAppender",
|
||||||
|
"methods":[{"name":"setEncoder","parameterTypes":["ch.qos.logback.core.encoder.Encoder"] }]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name":"ch.qos.logback.core.encoder.Encoder",
|
||||||
|
"methods":[{"name":"valueOf","parameterTypes":["java.lang.String"] }]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name":"ch.qos.logback.core.encoder.LayoutWrappingEncoder",
|
||||||
|
"methods":[{"name":"setParent","parameterTypes":["ch.qos.logback.core.spi.ContextAware"] }]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name":"ch.qos.logback.core.pattern.PatternLayoutEncoderBase",
|
||||||
|
"methods":[{"name":"setPattern","parameterTypes":["java.lang.String"] }]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name":"ch.qos.logback.core.spi.ContextAware",
|
||||||
|
"methods":[{"name":"valueOf","parameterTypes":["java.lang.String"] }]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name":"com.sun.org.apache.xerces.internal.jaxp.SAXParserFactoryImpl",
|
||||||
|
"methods":[{"name":"<init>","parameterTypes":[] }]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name":"groovy.lang.Closure"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name":"java.io.FilePermission"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name":"java.lang.Enum"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name":"java.lang.Object",
|
||||||
|
"allDeclaredFields":true,
|
||||||
|
"queryAllDeclaredMethods":true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name":"java.lang.RuntimePermission"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name":"java.lang.System",
|
||||||
|
"methods":[{"name":"console","parameterTypes":[] }]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name":"java.lang.invoke.MethodHandle"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name":"java.net.NetPermission"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name":"java.net.SocketPermission"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name":"java.net.URLPermission",
|
||||||
|
"methods":[{"name":"<init>","parameterTypes":["java.lang.String","java.lang.String"] }]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name":"java.nio.channels.SelectionKey",
|
||||||
|
"fields":[{"name":"attachment"}]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name":"java.nio.file.Path"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name":"java.nio.file.Paths",
|
||||||
|
"methods":[{"name":"get","parameterTypes":["java.lang.String","java.lang.String[]"] }]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name":"java.security.AllPermission"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name":"java.security.MessageDigestSpi"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name":"java.security.SecureRandomParameters"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name":"java.security.SecurityPermission"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name":"java.security.cert.PKIXRevocationChecker"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name":"java.sql.Connection"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name":"java.sql.Driver"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name":"java.sql.DriverManager",
|
||||||
|
"methods":[{"name":"getConnection","parameterTypes":["java.lang.String"] }, {"name":"getDriver","parameterTypes":["java.lang.String"] }]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name":"java.sql.Time",
|
||||||
|
"methods":[{"name":"<init>","parameterTypes":["long"] }]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name":"java.sql.Timestamp",
|
||||||
|
"methods":[{"name":"valueOf","parameterTypes":["java.lang.String"] }]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name":"java.time.Duration",
|
||||||
|
"methods":[{"name":"parse","parameterTypes":["java.lang.CharSequence"] }]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name":"java.time.Instant",
|
||||||
|
"methods":[{"name":"parse","parameterTypes":["java.lang.CharSequence"] }]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name":"java.time.LocalDate",
|
||||||
|
"methods":[{"name":"parse","parameterTypes":["java.lang.CharSequence"] }]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name":"java.time.LocalDateTime",
|
||||||
|
"methods":[{"name":"parse","parameterTypes":["java.lang.CharSequence"] }]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name":"java.time.LocalTime",
|
||||||
|
"methods":[{"name":"parse","parameterTypes":["java.lang.CharSequence"] }]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name":"java.time.MonthDay",
|
||||||
|
"methods":[{"name":"parse","parameterTypes":["java.lang.CharSequence"] }]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name":"java.time.OffsetDateTime",
|
||||||
|
"methods":[{"name":"parse","parameterTypes":["java.lang.CharSequence"] }]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name":"java.time.OffsetTime",
|
||||||
|
"methods":[{"name":"parse","parameterTypes":["java.lang.CharSequence"] }]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name":"java.time.Period",
|
||||||
|
"methods":[{"name":"parse","parameterTypes":["java.lang.CharSequence"] }]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name":"java.time.Year",
|
||||||
|
"methods":[{"name":"parse","parameterTypes":["java.lang.CharSequence"] }]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name":"java.time.YearMonth",
|
||||||
|
"methods":[{"name":"parse","parameterTypes":["java.lang.CharSequence"] }]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name":"java.time.ZoneId",
|
||||||
|
"methods":[{"name":"of","parameterTypes":["java.lang.String"] }]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name":"java.time.ZoneOffset",
|
||||||
|
"methods":[{"name":"of","parameterTypes":["java.lang.String"] }]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name":"java.time.ZonedDateTime",
|
||||||
|
"methods":[{"name":"parse","parameterTypes":["java.lang.CharSequence"] }]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name":"java.util.HashSet"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name":"java.util.LinkedHashSet"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name":"java.util.PropertyPermission"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name":"java.util.concurrent.ArrayBlockingQueue"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name":"java.util.concurrent.atomic.AtomicReference",
|
||||||
|
"fields":[{"name":"value"}]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name":"java.util.concurrent.locks.AbstractOwnableSynchronizer"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name":"java.util.concurrent.locks.AbstractQueuedSynchronizer"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name":"java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name":"java.util.concurrent.locks.ReentrantLock"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name":"java.util.concurrent.locks.ReentrantLock$NonfairSync"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name":"java.util.concurrent.locks.ReentrantLock$Sync"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name":"javax.smartcardio.CardPermission"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name":"org.bouncycastle.jcajce.provider.asymmetric.COMPOSITE$Mappings",
|
||||||
|
"methods":[{"name":"<init>","parameterTypes":[] }]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name":"org.bouncycastle.jcajce.provider.asymmetric.CONTEXT$Mappings",
|
||||||
|
"methods":[{"name":"<init>","parameterTypes":[] }]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name":"org.bouncycastle.jcajce.provider.asymmetric.CompositeSignatures$Mappings",
|
||||||
|
"methods":[{"name":"<init>","parameterTypes":[] }]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name":"org.bouncycastle.jcajce.provider.asymmetric.DH$Mappings",
|
||||||
|
"methods":[{"name":"<init>","parameterTypes":[] }]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name":"org.bouncycastle.jcajce.provider.asymmetric.DSA$Mappings",
|
||||||
|
"methods":[{"name":"<init>","parameterTypes":[] }]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name":"org.bouncycastle.jcajce.provider.asymmetric.DSTU4145$Mappings",
|
||||||
|
"methods":[{"name":"<init>","parameterTypes":[] }]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name":"org.bouncycastle.jcajce.provider.asymmetric.Dilithium$Mappings",
|
||||||
|
"methods":[{"name":"<init>","parameterTypes":[] }]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name":"org.bouncycastle.jcajce.provider.asymmetric.EC$Mappings",
|
||||||
|
"methods":[{"name":"<init>","parameterTypes":[] }]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name":"org.bouncycastle.jcajce.provider.asymmetric.ECGOST$Mappings",
|
||||||
|
"methods":[{"name":"<init>","parameterTypes":[] }]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name":"org.bouncycastle.jcajce.provider.asymmetric.EXTERNAL$Mappings",
|
||||||
|
"methods":[{"name":"<init>","parameterTypes":[] }]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name":"org.bouncycastle.jcajce.provider.asymmetric.EdEC$Mappings",
|
||||||
|
"methods":[{"name":"<init>","parameterTypes":[] }]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name":"org.bouncycastle.jcajce.provider.asymmetric.ElGamal$Mappings",
|
||||||
|
"methods":[{"name":"<init>","parameterTypes":[] }]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name":"org.bouncycastle.jcajce.provider.asymmetric.Falcon$Mappings",
|
||||||
|
"methods":[{"name":"<init>","parameterTypes":[] }]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name":"org.bouncycastle.jcajce.provider.asymmetric.GM$Mappings",
|
||||||
|
"methods":[{"name":"<init>","parameterTypes":[] }]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name":"org.bouncycastle.jcajce.provider.asymmetric.GOST$Mappings",
|
||||||
|
"methods":[{"name":"<init>","parameterTypes":[] }]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name":"org.bouncycastle.jcajce.provider.asymmetric.IES$Mappings",
|
||||||
|
"methods":[{"name":"<init>","parameterTypes":[] }]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name":"org.bouncycastle.jcajce.provider.asymmetric.LMS$Mappings",
|
||||||
|
"methods":[{"name":"<init>","parameterTypes":[] }]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name":"org.bouncycastle.jcajce.provider.asymmetric.MLDSA$Mappings",
|
||||||
|
"methods":[{"name":"<init>","parameterTypes":[] }]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name":"org.bouncycastle.jcajce.provider.asymmetric.MLKEM$Mappings",
|
||||||
|
"methods":[{"name":"<init>","parameterTypes":[] }]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name":"org.bouncycastle.jcajce.provider.asymmetric.NTRU$Mappings",
|
||||||
|
"methods":[{"name":"<init>","parameterTypes":[] }]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name":"org.bouncycastle.jcajce.provider.asymmetric.NoSig$Mappings",
|
||||||
|
"methods":[{"name":"<init>","parameterTypes":[] }]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name":"org.bouncycastle.jcajce.provider.asymmetric.RSA$Mappings",
|
||||||
|
"methods":[{"name":"<init>","parameterTypes":[] }]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name":"org.bouncycastle.jcajce.provider.asymmetric.SLHDSA$Mappings",
|
||||||
|
"methods":[{"name":"<init>","parameterTypes":[] }]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name":"org.bouncycastle.jcajce.provider.asymmetric.SPHINCSPlus$Mappings",
|
||||||
|
"methods":[{"name":"<init>","parameterTypes":[] }]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name":"org.bouncycastle.jcajce.provider.asymmetric.X509$Mappings",
|
||||||
|
"methods":[{"name":"<init>","parameterTypes":[] }]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name":"org.bouncycastle.jcajce.provider.asymmetric.edec.KeyPairGeneratorSpi$EdDSA",
|
||||||
|
"methods":[{"name":"<init>","parameterTypes":[] }]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name":"org.bouncycastle.jcajce.provider.asymmetric.edec.KeyPairGeneratorSpi$XDH",
|
||||||
|
"methods":[{"name":"<init>","parameterTypes":[] }]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name":"org.bouncycastle.jcajce.provider.asymmetric.rsa.KeyPairGeneratorSpi",
|
||||||
|
"methods":[{"name":"<init>","parameterTypes":[] }]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name":"org.bouncycastle.jcajce.provider.digest.Blake2b$Mappings",
|
||||||
|
"methods":[{"name":"<init>","parameterTypes":[] }]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name":"org.bouncycastle.jcajce.provider.digest.Blake2s$Mappings",
|
||||||
|
"methods":[{"name":"<init>","parameterTypes":[] }]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name":"org.bouncycastle.jcajce.provider.digest.Blake3$Mappings",
|
||||||
|
"methods":[{"name":"<init>","parameterTypes":[] }]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name":"org.bouncycastle.jcajce.provider.digest.DSTU7564$Mappings",
|
||||||
|
"methods":[{"name":"<init>","parameterTypes":[] }]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name":"org.bouncycastle.jcajce.provider.digest.GOST3411$Mappings",
|
||||||
|
"methods":[{"name":"<init>","parameterTypes":[] }]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name":"org.bouncycastle.jcajce.provider.digest.Haraka$Mappings",
|
||||||
|
"methods":[{"name":"<init>","parameterTypes":[] }]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name":"org.bouncycastle.jcajce.provider.digest.Keccak$Mappings",
|
||||||
|
"methods":[{"name":"<init>","parameterTypes":[] }]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name":"org.bouncycastle.jcajce.provider.digest.MD2$Mappings",
|
||||||
|
"methods":[{"name":"<init>","parameterTypes":[] }]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name":"org.bouncycastle.jcajce.provider.digest.MD4$Mappings",
|
||||||
|
"methods":[{"name":"<init>","parameterTypes":[] }]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name":"org.bouncycastle.jcajce.provider.digest.MD5$Mappings",
|
||||||
|
"methods":[{"name":"<init>","parameterTypes":[] }]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name":"org.bouncycastle.jcajce.provider.digest.RIPEMD128$Mappings",
|
||||||
|
"methods":[{"name":"<init>","parameterTypes":[] }]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name":"org.bouncycastle.jcajce.provider.digest.RIPEMD160$Mappings",
|
||||||
|
"methods":[{"name":"<init>","parameterTypes":[] }]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name":"org.bouncycastle.jcajce.provider.digest.RIPEMD256$Mappings",
|
||||||
|
"methods":[{"name":"<init>","parameterTypes":[] }]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name":"org.bouncycastle.jcajce.provider.digest.RIPEMD320$Mappings",
|
||||||
|
"methods":[{"name":"<init>","parameterTypes":[] }]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name":"org.bouncycastle.jcajce.provider.digest.SHA1$Mappings",
|
||||||
|
"methods":[{"name":"<init>","parameterTypes":[] }]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name":"org.bouncycastle.jcajce.provider.digest.SHA224$Mappings",
|
||||||
|
"methods":[{"name":"<init>","parameterTypes":[] }]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name":"org.bouncycastle.jcajce.provider.digest.SHA256$Mappings",
|
||||||
|
"methods":[{"name":"<init>","parameterTypes":[] }]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name":"org.bouncycastle.jcajce.provider.digest.SHA3$Mappings",
|
||||||
|
"methods":[{"name":"<init>","parameterTypes":[] }]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name":"org.bouncycastle.jcajce.provider.digest.SHA384$Mappings",
|
||||||
|
"methods":[{"name":"<init>","parameterTypes":[] }]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name":"org.bouncycastle.jcajce.provider.digest.SHA512$Mappings",
|
||||||
|
"methods":[{"name":"<init>","parameterTypes":[] }]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name":"org.bouncycastle.jcajce.provider.digest.SM3$Mappings",
|
||||||
|
"methods":[{"name":"<init>","parameterTypes":[] }]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name":"org.bouncycastle.jcajce.provider.digest.Skein$Mappings",
|
||||||
|
"methods":[{"name":"<init>","parameterTypes":[] }]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name":"org.bouncycastle.jcajce.provider.digest.Tiger$Mappings",
|
||||||
|
"methods":[{"name":"<init>","parameterTypes":[] }]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name":"org.bouncycastle.jcajce.provider.digest.Whirlpool$Mappings",
|
||||||
|
"methods":[{"name":"<init>","parameterTypes":[] }]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name":"org.bouncycastle.jcajce.provider.drbg.DRBG$Mappings",
|
||||||
|
"methods":[{"name":"<init>","parameterTypes":[] }]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name":"org.bouncycastle.jcajce.provider.keystore.BC$Mappings",
|
||||||
|
"methods":[{"name":"<init>","parameterTypes":[] }]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name":"org.bouncycastle.jcajce.provider.keystore.BCFKS$Mappings",
|
||||||
|
"methods":[{"name":"<init>","parameterTypes":[] }]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name":"org.bouncycastle.jcajce.provider.keystore.PKCS12$Mappings",
|
||||||
|
"methods":[{"name":"<init>","parameterTypes":[] }]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name":"org.bouncycastle.jcajce.provider.symmetric.AES$Mappings",
|
||||||
|
"methods":[{"name":"<init>","parameterTypes":[] }]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name":"org.bouncycastle.jcajce.provider.symmetric.ARC4$Mappings",
|
||||||
|
"methods":[{"name":"<init>","parameterTypes":[] }]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name":"org.bouncycastle.jcajce.provider.symmetric.ARIA$Mappings",
|
||||||
|
"methods":[{"name":"<init>","parameterTypes":[] }]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name":"org.bouncycastle.jcajce.provider.symmetric.Blowfish$Mappings",
|
||||||
|
"methods":[{"name":"<init>","parameterTypes":[] }]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name":"org.bouncycastle.jcajce.provider.symmetric.CAST5$Mappings",
|
||||||
|
"methods":[{"name":"<init>","parameterTypes":[] }]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name":"org.bouncycastle.jcajce.provider.symmetric.CAST6$Mappings",
|
||||||
|
"methods":[{"name":"<init>","parameterTypes":[] }]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name":"org.bouncycastle.jcajce.provider.symmetric.Camellia$Mappings",
|
||||||
|
"methods":[{"name":"<init>","parameterTypes":[] }]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name":"org.bouncycastle.jcajce.provider.symmetric.ChaCha$Mappings",
|
||||||
|
"methods":[{"name":"<init>","parameterTypes":[] }]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name":"org.bouncycastle.jcajce.provider.symmetric.DES$Mappings",
|
||||||
|
"methods":[{"name":"<init>","parameterTypes":[] }]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name":"org.bouncycastle.jcajce.provider.symmetric.DESede$Mappings",
|
||||||
|
"methods":[{"name":"<init>","parameterTypes":[] }]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name":"org.bouncycastle.jcajce.provider.symmetric.DSTU7624$Mappings",
|
||||||
|
"methods":[{"name":"<init>","parameterTypes":[] }]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name":"org.bouncycastle.jcajce.provider.symmetric.GOST28147$Mappings",
|
||||||
|
"methods":[{"name":"<init>","parameterTypes":[] }]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name":"org.bouncycastle.jcajce.provider.symmetric.GOST3412_2015$Mappings",
|
||||||
|
"methods":[{"name":"<init>","parameterTypes":[] }]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name":"org.bouncycastle.jcajce.provider.symmetric.Grain128$Mappings",
|
||||||
|
"methods":[{"name":"<init>","parameterTypes":[] }]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name":"org.bouncycastle.jcajce.provider.symmetric.Grainv1$Mappings",
|
||||||
|
"methods":[{"name":"<init>","parameterTypes":[] }]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name":"org.bouncycastle.jcajce.provider.symmetric.HC128$Mappings",
|
||||||
|
"methods":[{"name":"<init>","parameterTypes":[] }]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name":"org.bouncycastle.jcajce.provider.symmetric.HC256$Mappings",
|
||||||
|
"methods":[{"name":"<init>","parameterTypes":[] }]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name":"org.bouncycastle.jcajce.provider.symmetric.IDEA$Mappings",
|
||||||
|
"methods":[{"name":"<init>","parameterTypes":[] }]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name":"org.bouncycastle.jcajce.provider.symmetric.Noekeon$Mappings",
|
||||||
|
"methods":[{"name":"<init>","parameterTypes":[] }]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name":"org.bouncycastle.jcajce.provider.symmetric.OpenSSLPBKDF$Mappings",
|
||||||
|
"methods":[{"name":"<init>","parameterTypes":[] }]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name":"org.bouncycastle.jcajce.provider.symmetric.PBEPBKDF1$Mappings",
|
||||||
|
"methods":[{"name":"<init>","parameterTypes":[] }]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name":"org.bouncycastle.jcajce.provider.symmetric.PBEPBKDF2$Mappings",
|
||||||
|
"methods":[{"name":"<init>","parameterTypes":[] }]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name":"org.bouncycastle.jcajce.provider.symmetric.PBEPKCS12$Mappings",
|
||||||
|
"methods":[{"name":"<init>","parameterTypes":[] }]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name":"org.bouncycastle.jcajce.provider.symmetric.Poly1305$Mappings",
|
||||||
|
"methods":[{"name":"<init>","parameterTypes":[] }]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name":"org.bouncycastle.jcajce.provider.symmetric.RC2$Mappings",
|
||||||
|
"methods":[{"name":"<init>","parameterTypes":[] }]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name":"org.bouncycastle.jcajce.provider.symmetric.RC5$Mappings",
|
||||||
|
"methods":[{"name":"<init>","parameterTypes":[] }]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name":"org.bouncycastle.jcajce.provider.symmetric.RC6$Mappings",
|
||||||
|
"methods":[{"name":"<init>","parameterTypes":[] }]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name":"org.bouncycastle.jcajce.provider.symmetric.Rijndael$Mappings",
|
||||||
|
"methods":[{"name":"<init>","parameterTypes":[] }]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name":"org.bouncycastle.jcajce.provider.symmetric.SCRYPT$Mappings",
|
||||||
|
"methods":[{"name":"<init>","parameterTypes":[] }]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name":"org.bouncycastle.jcajce.provider.symmetric.SEED$Mappings",
|
||||||
|
"methods":[{"name":"<init>","parameterTypes":[] }]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name":"org.bouncycastle.jcajce.provider.symmetric.SM4$Mappings",
|
||||||
|
"methods":[{"name":"<init>","parameterTypes":[] }]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name":"org.bouncycastle.jcajce.provider.symmetric.Salsa20$Mappings",
|
||||||
|
"methods":[{"name":"<init>","parameterTypes":[] }]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name":"org.bouncycastle.jcajce.provider.symmetric.Serpent$Mappings",
|
||||||
|
"methods":[{"name":"<init>","parameterTypes":[] }]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name":"org.bouncycastle.jcajce.provider.symmetric.Shacal2$Mappings",
|
||||||
|
"methods":[{"name":"<init>","parameterTypes":[] }]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name":"org.bouncycastle.jcajce.provider.symmetric.SipHash$Mappings",
|
||||||
|
"methods":[{"name":"<init>","parameterTypes":[] }]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name":"org.bouncycastle.jcajce.provider.symmetric.SipHash128$Mappings",
|
||||||
|
"methods":[{"name":"<init>","parameterTypes":[] }]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name":"org.bouncycastle.jcajce.provider.symmetric.Skipjack$Mappings",
|
||||||
|
"methods":[{"name":"<init>","parameterTypes":[] }]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name":"org.bouncycastle.jcajce.provider.symmetric.TEA$Mappings",
|
||||||
|
"methods":[{"name":"<init>","parameterTypes":[] }]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name":"org.bouncycastle.jcajce.provider.symmetric.TLSKDF$Mappings",
|
||||||
|
"methods":[{"name":"<init>","parameterTypes":[] }]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name":"org.bouncycastle.jcajce.provider.symmetric.Threefish$Mappings",
|
||||||
|
"methods":[{"name":"<init>","parameterTypes":[] }]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name":"org.bouncycastle.jcajce.provider.symmetric.Twofish$Mappings",
|
||||||
|
"methods":[{"name":"<init>","parameterTypes":[] }]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name":"org.bouncycastle.jcajce.provider.symmetric.VMPC$Mappings",
|
||||||
|
"methods":[{"name":"<init>","parameterTypes":[] }]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name":"org.bouncycastle.jcajce.provider.symmetric.VMPCKSA3$Mappings",
|
||||||
|
"methods":[{"name":"<init>","parameterTypes":[] }]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name":"org.bouncycastle.jcajce.provider.symmetric.XSalsa20$Mappings",
|
||||||
|
"methods":[{"name":"<init>","parameterTypes":[] }]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name":"org.bouncycastle.jcajce.provider.symmetric.XTEA$Mappings",
|
||||||
|
"methods":[{"name":"<init>","parameterTypes":[] }]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name":"org.bouncycastle.jcajce.provider.symmetric.Zuc$Mappings",
|
||||||
|
"methods":[{"name":"<init>","parameterTypes":[] }]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name":"org.pgpainless.cli.ExitCodeTest",
|
||||||
|
"allDeclaredFields":true,
|
||||||
|
"allDeclaredClasses":true,
|
||||||
|
"queryAllDeclaredMethods":true,
|
||||||
|
"queryAllPublicMethods":true,
|
||||||
|
"queryAllDeclaredConstructors":true,
|
||||||
|
"methods":[{"name":"<init>","parameterTypes":[] }, {"name":"successfulExecutionDoesNotTerminateJVM","parameterTypes":[] }, {"name":"testCommandWithUnknownOption_37","parameterTypes":[] }, {"name":"testUnknownCommand_69","parameterTypes":[] }]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name":"org.pgpainless.cli.TestUtils",
|
||||||
|
"allDeclaredClasses":true,
|
||||||
|
"queryAllDeclaredMethods":true,
|
||||||
|
"queryAllPublicMethods":true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name":"org.pgpainless.cli.commands.ArmorCmdTest",
|
||||||
|
"allDeclaredFields":true,
|
||||||
|
"allDeclaredClasses":true,
|
||||||
|
"queryAllDeclaredMethods":true,
|
||||||
|
"queryAllPublicMethods":true,
|
||||||
|
"queryAllDeclaredConstructors":true,
|
||||||
|
"methods":[{"name":"<init>","parameterTypes":[] }, {"name":"armorAlreadyArmoredDataIsIdempotent","parameterTypes":[] }, {"name":"armorMessage","parameterTypes":[] }, {"name":"armorPublicKey","parameterTypes":[] }, {"name":"armorSecretKey","parameterTypes":[] }]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name":"org.pgpainless.cli.commands.CLITest",
|
||||||
|
"allDeclaredFields":true,
|
||||||
|
"allDeclaredClasses":true,
|
||||||
|
"queryAllDeclaredMethods":true,
|
||||||
|
"queryAllPublicMethods":true,
|
||||||
|
"methods":[{"name":"cleanup","parameterTypes":[] }, {"name":"setup","parameterTypes":[] }]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name":"org.pgpainless.cli.commands.DearmorCmdTest",
|
||||||
|
"allDeclaredFields":true,
|
||||||
|
"allDeclaredClasses":true,
|
||||||
|
"queryAllDeclaredMethods":true,
|
||||||
|
"queryAllPublicMethods":true,
|
||||||
|
"queryAllDeclaredConstructors":true,
|
||||||
|
"methods":[{"name":"<init>","parameterTypes":[] }, {"name":"dearmorBrokenArmoredKeyFails","parameterTypes":[] }, {"name":"dearmorCertificate","parameterTypes":[] }, {"name":"dearmorGarbageEmitsEmpty","parameterTypes":[] }, {"name":"dearmorMessage","parameterTypes":[] }, {"name":"dearmorSecretKey","parameterTypes":[] }]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name":"org.pgpainless.cli.commands.ExtractCertCmdTest",
|
||||||
|
"allDeclaredFields":true,
|
||||||
|
"allDeclaredClasses":true,
|
||||||
|
"queryAllDeclaredMethods":true,
|
||||||
|
"queryAllPublicMethods":true,
|
||||||
|
"queryAllDeclaredConstructors":true,
|
||||||
|
"methods":[{"name":"<init>","parameterTypes":[] }, {"name":"extractCertFromGarbageFails","parameterTypes":[] }, {"name":"testExtractCert","parameterTypes":[] }, {"name":"testExtractCertFromCertFails","parameterTypes":[] }, {"name":"testExtractCertUnarmored","parameterTypes":[] }]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name":"org.pgpainless.cli.commands.GenerateKeyCmdTest",
|
||||||
|
"allDeclaredFields":true,
|
||||||
|
"allDeclaredClasses":true,
|
||||||
|
"queryAllDeclaredMethods":true,
|
||||||
|
"queryAllPublicMethods":true,
|
||||||
|
"queryAllDeclaredConstructors":true,
|
||||||
|
"methods":[{"name":"<init>","parameterTypes":[] }, {"name":"testGenerateBinaryKey","parameterTypes":[] }, {"name":"testGenerateKey","parameterTypes":[] }, {"name":"testGenerateKeyWithMultipleUserIds","parameterTypes":[] }, {"name":"testGeneratePasswordProtectedKey_missingPasswordFile","parameterTypes":[] }, {"name":"testPasswordProtectedKey","parameterTypes":[] }]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name":"org.pgpainless.cli.commands.InlineDetachCmdTest",
|
||||||
|
"allDeclaredFields":true,
|
||||||
|
"allDeclaredClasses":true,
|
||||||
|
"queryAllDeclaredMethods":true,
|
||||||
|
"queryAllPublicMethods":true,
|
||||||
|
"queryAllDeclaredConstructors":true,
|
||||||
|
"methods":[{"name":"<init>","parameterTypes":[] }, {"name":"detachInbandSignatureAndMessage","parameterTypes":[] }, {"name":"detachInbandSignatureAndMessageNoArmor","parameterTypes":[] }, {"name":"detachMissingSignaturesFromCleartextSignedMessageFails","parameterTypes":[] }, {"name":"detachNonOpenPgpDataFails","parameterTypes":[] }, {"name":"existingSignatureOutCausesException","parameterTypes":[] }]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name":"org.pgpainless.cli.commands.ListProfilesCmdTest",
|
||||||
|
"allDeclaredFields":true,
|
||||||
|
"allDeclaredClasses":true,
|
||||||
|
"queryAllDeclaredMethods":true,
|
||||||
|
"queryAllPublicMethods":true,
|
||||||
|
"queryAllDeclaredConstructors":true,
|
||||||
|
"methods":[{"name":"<init>","parameterTypes":[] }, {"name":"listProfileOfGenerateKey","parameterTypes":[] }, {"name":"listProfilesOfEncrypt","parameterTypes":[] }, {"name":"listProfilesWithoutCommand","parameterTypes":[] }]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name":"org.pgpainless.cli.commands.RoundTripEncryptDecryptCmdTest",
|
||||||
|
"allDeclaredFields":true,
|
||||||
|
"allDeclaredClasses":true,
|
||||||
|
"queryAllDeclaredMethods":true,
|
||||||
|
"queryAllPublicMethods":true,
|
||||||
|
"queryAllDeclaredConstructors":true,
|
||||||
|
"methods":[{"name":"<init>","parameterTypes":[] }, {"name":"decryptGarbageFails","parameterTypes":[] }, {"name":"decryptMalformedMessageYieldsBadData","parameterTypes":[] }, {"name":"decryptMessageWithSessionKey","parameterTypes":[] }, {"name":"decryptMessageWithWrongKeyFails","parameterTypes":[] }, {"name":"decryptWithPasswordWithPendingWhitespaceWorks","parameterTypes":[] }, {"name":"decryptWithWhitespacePasswordWorks","parameterTypes":[] }, {"name":"decrypt_verifyWithGarbageCertFails","parameterTypes":[] }, {"name":"decrypt_withGarbageKeyFails","parameterTypes":[] }, {"name":"encryptAndDecryptAMessage","parameterTypes":[] }, {"name":"encryptAndDecryptMessageWithPassphrase","parameterTypes":[] }, {"name":"encryptWithGarbageCertFails","parameterTypes":[] }, {"name":"encryptWithPasswordADecryptWithPasswordBFails","parameterTypes":[] }, {"name":"encryptWithProtectedKey_wrongPassphraseFails","parameterTypes":[] }, {"name":"encryptWithTrailingWhitespaceDecryptWithoutWorks","parameterTypes":[] }, {"name":"encrypt_signWithGarbageKeyFails","parameterTypes":[] }, {"name":"testDecryptVerifyOut_withoutVerifyWithFails","parameterTypes":[] }, {"name":"testDecryptWithSessionKeyVerifyWithYieldsExpectedVerifications","parameterTypes":[] }, {"name":"testDecryptWithoutDecryptionOptionFails","parameterTypes":[] }, {"name":"testEncryptDecryptRoundTripWithPasswordProtectedKey","parameterTypes":[] }, {"name":"testEncryptDecryptWithFreshRSAKey","parameterTypes":[] }, {"name":"testEncryptWithIncapableCert","parameterTypes":[] }, {"name":"testEncrypt_SignWithCertFails","parameterTypes":[] }, {"name":"testMissingArgumentsIfNoArgsSupplied","parameterTypes":[] }, {"name":"testSessionKeyOutWritesSessionKeyOut","parameterTypes":[] }, {"name":"testSignWithIncapableKey","parameterTypes":[] }, {"name":"testVerificationsOutAlreadyExistFails","parameterTypes":[] }]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name":"org.pgpainless.cli.commands.RoundTripInlineSignInlineVerifyCmdTest",
|
||||||
|
"allDeclaredFields":true,
|
||||||
|
"allDeclaredClasses":true,
|
||||||
|
"queryAllDeclaredMethods":true,
|
||||||
|
"queryAllPublicMethods":true,
|
||||||
|
"queryAllDeclaredConstructors":true,
|
||||||
|
"methods":[{"name":"<init>","parameterTypes":[] }, {"name":"cannotVerifyEncryptedMessage","parameterTypes":[] }, {"name":"cannotVerifyMalformedMessage","parameterTypes":[] }, {"name":"createAndVerifyCleartextSignedMessage","parameterTypes":[] }, {"name":"createAndVerifyMultiKeyBinarySignedMessage","parameterTypes":[] }, {"name":"createAndVerifyTextSignedMessage","parameterTypes":[] }, {"name":"createCleartextSignedMessage","parameterTypes":[] }, {"name":"createMalformedMessage","parameterTypes":[] }, {"name":"createSignedMessageWithKeyAAndVerifyWithKeyBFails","parameterTypes":[] }, {"name":"createTextSignedMessageInlineDetachAndDetachedVerify","parameterTypes":[] }, {"name":"signWithProtectedKeyWithWrongPassphraseFails","parameterTypes":[] }, {"name":"testInlineSignWithMissingSecretKeysFails","parameterTypes":[] }, {"name":"testUnlockKeyWithOneOfMultiplePasswords","parameterTypes":[] }, {"name":"verifyPrependedSignedMessage","parameterTypes":[] }]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name":"org.pgpainless.cli.commands.RoundTripInlineSignVerifyCmdTest",
|
||||||
|
"allDeclaredFields":true,
|
||||||
|
"allDeclaredClasses":true,
|
||||||
|
"queryAllDeclaredMethods":true,
|
||||||
|
"queryAllPublicMethods":true,
|
||||||
|
"queryAllDeclaredConstructors":true,
|
||||||
|
"methods":[{"name":"<init>","parameterTypes":[] }, {"name":"encryptAndDecryptAMessage","parameterTypes":[] }]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name":"org.pgpainless.cli.commands.RoundTripSignVerifyCmdTest",
|
||||||
|
"allDeclaredFields":true,
|
||||||
|
"allDeclaredClasses":true,
|
||||||
|
"queryAllDeclaredMethods":true,
|
||||||
|
"queryAllPublicMethods":true,
|
||||||
|
"queryAllDeclaredConstructors":true,
|
||||||
|
"methods":[{"name":"<init>","parameterTypes":[] }, {"name":"createArmoredSignature","parameterTypes":[] }, {"name":"createUnarmoredSignature","parameterTypes":[] }, {"name":"signWithProtectedKey","parameterTypes":[] }, {"name":"signWithProtectedKey_missingPassphraseFails","parameterTypes":[] }, {"name":"signWithProtectedKey_wrongPassphraseFails","parameterTypes":[] }, {"name":"testNotAfter","parameterTypes":[] }, {"name":"testNotBefore","parameterTypes":[] }, {"name":"testSignWithIncapableKey","parameterTypes":[] }, {"name":"testSignatureCreationAndVerification","parameterTypes":[] }, {"name":"unarmorArmoredSigAndVerify","parameterTypes":[] }]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name":"org.pgpainless.cli.commands.VersionCmdTest",
|
||||||
|
"allDeclaredFields":true,
|
||||||
|
"allDeclaredClasses":true,
|
||||||
|
"queryAllDeclaredMethods":true,
|
||||||
|
"queryAllPublicMethods":true,
|
||||||
|
"queryAllDeclaredConstructors":true,
|
||||||
|
"methods":[{"name":"<init>","parameterTypes":[] }, {"name":"testExtendedVersion","parameterTypes":[] }, {"name":"testGetBackendVersion","parameterTypes":[] }, {"name":"testSopSpecVersion","parameterTypes":[] }, {"name":"testVersion","parameterTypes":[] }]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name":"org.pgpainless.cli.misc.SignUsingPublicKeyBehaviorTest",
|
||||||
|
"allDeclaredFields":true,
|
||||||
|
"allDeclaredClasses":true,
|
||||||
|
"queryAllDeclaredMethods":true,
|
||||||
|
"queryAllPublicMethods":true,
|
||||||
|
"queryAllDeclaredConstructors":true,
|
||||||
|
"methods":[{"name":"<init>","parameterTypes":[] }, {"name":"testSignatureCreationAndVerification","parameterTypes":[] }]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name":"picocli.AutoComplete$GenerateCompletion",
|
||||||
|
"allDeclaredFields":true,
|
||||||
|
"queryAllDeclaredMethods":true,
|
||||||
|
"methods":[{"name":"<init>","parameterTypes":[] }]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name":"picocli.CommandLine$AutoHelpMixin",
|
||||||
|
"allDeclaredFields":true,
|
||||||
|
"queryAllDeclaredMethods":true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name":"picocli.CommandLine$HelpCommand",
|
||||||
|
"allDeclaredFields":true,
|
||||||
|
"queryAllDeclaredMethods":true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name":"sop.cli.picocli.SopCLI",
|
||||||
|
"allDeclaredFields":true,
|
||||||
|
"queryAllDeclaredMethods":true,
|
||||||
|
"methods":[{"name":"<init>","parameterTypes":[] }]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name":"sop.cli.picocli.SopCLI$InitLocale",
|
||||||
|
"allDeclaredFields":true,
|
||||||
|
"queryAllDeclaredMethods":true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name":"sop.cli.picocli.commands.AbstractSopCmd",
|
||||||
|
"allDeclaredFields":true,
|
||||||
|
"queryAllDeclaredMethods":true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name":"sop.cli.picocli.commands.ArmorCmd",
|
||||||
|
"allDeclaredFields":true,
|
||||||
|
"queryAllDeclaredMethods":true,
|
||||||
|
"methods":[{"name":"<init>","parameterTypes":[] }]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name":"sop.cli.picocli.commands.ChangeKeyPasswordCmd",
|
||||||
|
"allDeclaredFields":true,
|
||||||
|
"queryAllDeclaredMethods":true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name":"sop.cli.picocli.commands.DearmorCmd",
|
||||||
|
"allDeclaredFields":true,
|
||||||
|
"queryAllDeclaredMethods":true,
|
||||||
|
"methods":[{"name":"<init>","parameterTypes":[] }]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name":"sop.cli.picocli.commands.DecryptCmd",
|
||||||
|
"allDeclaredFields":true,
|
||||||
|
"queryAllDeclaredMethods":true,
|
||||||
|
"methods":[{"name":"<init>","parameterTypes":[] }]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name":"sop.cli.picocli.commands.EncryptCmd",
|
||||||
|
"allDeclaredFields":true,
|
||||||
|
"queryAllDeclaredMethods":true,
|
||||||
|
"methods":[{"name":"<init>","parameterTypes":[] }]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name":"sop.cli.picocli.commands.ExtractCertCmd",
|
||||||
|
"allDeclaredFields":true,
|
||||||
|
"queryAllDeclaredMethods":true,
|
||||||
|
"methods":[{"name":"<init>","parameterTypes":[] }]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name":"sop.cli.picocli.commands.GenerateKeyCmd",
|
||||||
|
"allDeclaredFields":true,
|
||||||
|
"queryAllDeclaredMethods":true,
|
||||||
|
"methods":[{"name":"<init>","parameterTypes":[] }]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name":"sop.cli.picocli.commands.InlineDetachCmd",
|
||||||
|
"allDeclaredFields":true,
|
||||||
|
"queryAllDeclaredMethods":true,
|
||||||
|
"methods":[{"name":"<init>","parameterTypes":[] }]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name":"sop.cli.picocli.commands.InlineSignCmd",
|
||||||
|
"allDeclaredFields":true,
|
||||||
|
"queryAllDeclaredMethods":true,
|
||||||
|
"methods":[{"name":"<init>","parameterTypes":[] }]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name":"sop.cli.picocli.commands.InlineVerifyCmd",
|
||||||
|
"allDeclaredFields":true,
|
||||||
|
"queryAllDeclaredMethods":true,
|
||||||
|
"methods":[{"name":"<init>","parameterTypes":[] }]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name":"sop.cli.picocli.commands.ListProfilesCmd",
|
||||||
|
"allDeclaredFields":true,
|
||||||
|
"queryAllDeclaredMethods":true,
|
||||||
|
"methods":[{"name":"<init>","parameterTypes":[] }]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name":"sop.cli.picocli.commands.RevokeKeyCmd",
|
||||||
|
"allDeclaredFields":true,
|
||||||
|
"queryAllDeclaredMethods":true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name":"sop.cli.picocli.commands.SignCmd",
|
||||||
|
"allDeclaredFields":true,
|
||||||
|
"queryAllDeclaredMethods":true,
|
||||||
|
"methods":[{"name":"<init>","parameterTypes":[] }]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name":"sop.cli.picocli.commands.VerifyCmd",
|
||||||
|
"allDeclaredFields":true,
|
||||||
|
"queryAllDeclaredMethods":true,
|
||||||
|
"methods":[{"name":"<init>","parameterTypes":[] }]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name":"sop.cli.picocli.commands.VersionCmd",
|
||||||
|
"allDeclaredFields":true,
|
||||||
|
"queryAllDeclaredMethods":true,
|
||||||
|
"methods":[{"name":"<init>","parameterTypes":[] }]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name":"sop.cli.picocli.commands.VersionCmd$Exclusive",
|
||||||
|
"allDeclaredFields":true,
|
||||||
|
"queryAllDeclaredMethods":true,
|
||||||
|
"methods":[{"name":"<init>","parameterTypes":[] }]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name":"sun.security.provider.NativePRNG",
|
||||||
|
"methods":[{"name":"<init>","parameterTypes":[] }, {"name":"<init>","parameterTypes":["java.security.SecureRandomParameters"] }]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name":"sun.security.provider.SHA",
|
||||||
|
"methods":[{"name":"<init>","parameterTypes":[] }]
|
||||||
|
}
|
||||||
|
]
|
|
@ -0,0 +1,93 @@
|
||||||
|
{
|
||||||
|
"resources":{
|
||||||
|
"includes":[{
|
||||||
|
"pattern":"\\QMETA-INF/services/ch.qos.logback.classic.spi.Configurator\\E"
|
||||||
|
}, {
|
||||||
|
"pattern":"\\QMETA-INF/services/java.lang.System$LoggerFinder\\E"
|
||||||
|
}, {
|
||||||
|
"pattern":"\\QMETA-INF/services/java.nio.channels.spi.SelectorProvider\\E"
|
||||||
|
}, {
|
||||||
|
"pattern":"\\QMETA-INF/services/java.time.zone.ZoneRulesProvider\\E"
|
||||||
|
}, {
|
||||||
|
"pattern":"\\QMETA-INF/services/java.util.spi.ResourceBundleControlProvider\\E"
|
||||||
|
}, {
|
||||||
|
"pattern":"\\QMETA-INF/services/javax.xml.parsers.SAXParserFactory\\E"
|
||||||
|
}, {
|
||||||
|
"pattern":"\\QMETA-INF/services/org.junit.platform.engine.TestEngine\\E"
|
||||||
|
}, {
|
||||||
|
"pattern":"\\QMETA-INF/services/org.junit.platform.launcher.LauncherDiscoveryListener\\E"
|
||||||
|
}, {
|
||||||
|
"pattern":"\\QMETA-INF/services/org.junit.platform.launcher.LauncherSessionListener\\E"
|
||||||
|
}, {
|
||||||
|
"pattern":"\\QMETA-INF/services/org.junit.platform.launcher.PostDiscoveryFilter\\E"
|
||||||
|
}, {
|
||||||
|
"pattern":"\\QMETA-INF/services/org.junit.platform.launcher.TestExecutionListener\\E"
|
||||||
|
}, {
|
||||||
|
"pattern":"\\QMETA-INF/services/org.slf4j.spi.SLF4JServiceProvider\\E"
|
||||||
|
}, {
|
||||||
|
"pattern":"\\Qjunit-platform.properties\\E"
|
||||||
|
}, {
|
||||||
|
"pattern":"\\Qlogback-test.scmo\\E"
|
||||||
|
}, {
|
||||||
|
"pattern":"\\Qlogback-test.xml\\E"
|
||||||
|
}, {
|
||||||
|
"pattern":"\\Qlogback.scmo\\E"
|
||||||
|
}, {
|
||||||
|
"pattern":"\\Qorg/slf4j/impl/StaticLoggerBinder.class\\E"
|
||||||
|
}, {
|
||||||
|
"pattern":"\\Qpgpainless-sop.properties\\E"
|
||||||
|
}, {
|
||||||
|
"pattern":"\\Qsop-java-version.properties\\E"
|
||||||
|
}, {
|
||||||
|
"pattern":"java.base:\\Qsun/text/resources/LineBreakIteratorData\\E"
|
||||||
|
}]},
|
||||||
|
"bundles":[{
|
||||||
|
"name":"msg_armor",
|
||||||
|
"locales":["de", "und"]
|
||||||
|
}, {
|
||||||
|
"name":"msg_change-key-password",
|
||||||
|
"locales":["de", "und"]
|
||||||
|
}, {
|
||||||
|
"name":"msg_dearmor",
|
||||||
|
"locales":["de", "und"]
|
||||||
|
}, {
|
||||||
|
"name":"msg_decrypt",
|
||||||
|
"locales":["de", "und"]
|
||||||
|
}, {
|
||||||
|
"name":"msg_detached-sign",
|
||||||
|
"locales":["de", "und"]
|
||||||
|
}, {
|
||||||
|
"name":"msg_detached-verify",
|
||||||
|
"locales":["de", "und"]
|
||||||
|
}, {
|
||||||
|
"name":"msg_encrypt",
|
||||||
|
"locales":["de", "und"]
|
||||||
|
}, {
|
||||||
|
"name":"msg_extract-cert",
|
||||||
|
"locales":["de", "und"]
|
||||||
|
}, {
|
||||||
|
"name":"msg_generate-key",
|
||||||
|
"locales":["de", "und"]
|
||||||
|
}, {
|
||||||
|
"name":"msg_inline-detach",
|
||||||
|
"locales":["de", "und"]
|
||||||
|
}, {
|
||||||
|
"name":"msg_inline-sign",
|
||||||
|
"locales":["de", "und"]
|
||||||
|
}, {
|
||||||
|
"name":"msg_inline-verify",
|
||||||
|
"locales":["de", "und"]
|
||||||
|
}, {
|
||||||
|
"name":"msg_list-profiles",
|
||||||
|
"locales":["de", "und"]
|
||||||
|
}, {
|
||||||
|
"name":"msg_revoke-key",
|
||||||
|
"locales":["de", "und"]
|
||||||
|
}, {
|
||||||
|
"name":"msg_sop",
|
||||||
|
"locales":["de", "und"]
|
||||||
|
}, {
|
||||||
|
"name":"msg_version",
|
||||||
|
"locales":["de", "und"]
|
||||||
|
}]
|
||||||
|
}
|
|
@ -0,0 +1,41 @@
|
||||||
|
{
|
||||||
|
"types":[
|
||||||
|
{
|
||||||
|
"name":"java.lang.Enum"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name":"java.lang.Object[]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name":"java.util.HashSet"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name":"java.util.LinkedHashSet"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name":"java.util.concurrent.ArrayBlockingQueue"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name":"java.util.concurrent.locks.AbstractOwnableSynchronizer"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name":"java.util.concurrent.locks.AbstractQueuedSynchronizer"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name":"java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name":"java.util.concurrent.locks.ReentrantLock"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name":"java.util.concurrent.locks.ReentrantLock$NonfairSync"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name":"java.util.concurrent.locks.ReentrantLock$Sync"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"lambdaCapturingTypes":[
|
||||||
|
],
|
||||||
|
"proxies":[
|
||||||
|
]
|
||||||
|
}
|
|
@ -45,7 +45,7 @@ class KeyRingBuilder : KeyRingBuilderInterface<KeyRingBuilder> {
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun addUserId(userId: CharSequence): KeyRingBuilder = apply {
|
override fun addUserId(userId: CharSequence): KeyRingBuilder = apply {
|
||||||
userIds[userId.toString().trim()] = null
|
userIds[userId.toString()] = null
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun addUserId(userId: ByteArray): KeyRingBuilder =
|
override fun addUserId(userId: ByteArray): KeyRingBuilder =
|
||||||
|
|
|
@ -478,7 +478,7 @@ class SecretKeyRingEditor(
|
||||||
val prevBinding =
|
val prevBinding =
|
||||||
inspectKeyRing(secretKeyRing).getCurrentSubkeyBindingSignature(keyId)
|
inspectKeyRing(secretKeyRing).getCurrentSubkeyBindingSignature(keyId)
|
||||||
?: throw NoSuchElementException(
|
?: throw NoSuchElementException(
|
||||||
"Previous subkey binding signaure for ${keyId.openPgpKeyId()} MUST NOT be null.")
|
"Previous subkey binding signature for ${keyId.openPgpKeyId()} MUST NOT be null.")
|
||||||
val bindingSig = reissueSubkeyBindingSignature(subkey, expiration, protector, prevBinding)
|
val bindingSig = reissueSubkeyBindingSignature(subkey, expiration, protector, prevBinding)
|
||||||
secretKeyRing = injectCertification(secretKeyRing, subkey, bindingSig)
|
secretKeyRing = injectCertification(secretKeyRing, subkey, bindingSig)
|
||||||
}
|
}
|
||||||
|
@ -569,9 +569,10 @@ class SecretKeyRingEditor(
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun sanitizeUserId(userId: CharSequence): CharSequence =
|
private fun sanitizeUserId(userId: CharSequence): CharSequence =
|
||||||
// TODO: Further research how to sanitize user IDs.
|
// I'm not sure, what kind of sanitization is needed.
|
||||||
// e.g. what about newlines?
|
// Newlines are allowed, they just need to be escaped when emitted in an ASCII armor header
|
||||||
userId.toString().trim()
|
// Trailing/Leading whitespace is also fine.
|
||||||
|
userId.toString()
|
||||||
|
|
||||||
private fun callbackFromRevocationAttributes(attributes: RevocationAttributes?) =
|
private fun callbackFromRevocationAttributes(attributes: RevocationAttributes?) =
|
||||||
object : RevocationSignatureSubpackets.Callback {
|
object : RevocationSignatureSubpackets.Callback {
|
||||||
|
|
|
@ -52,7 +52,7 @@ class RevocationSignatureBuilder : AbstractSignatureBuilder<RevocationSignatureB
|
||||||
require(revokeeKey.isMasterKey) {
|
require(revokeeKey.isMasterKey) {
|
||||||
"Signature type is KEY_REVOCATION, but provided revokee does not appear to be a primary key."
|
"Signature type is KEY_REVOCATION, but provided revokee does not appear to be a primary key."
|
||||||
}
|
}
|
||||||
it.generateCertification(publicSigningKey)
|
it.generateCertification(revokeeKey)
|
||||||
} else {
|
} else {
|
||||||
it.generateCertification(publicSigningKey, revokeeKey)
|
it.generateCertification(publicSigningKey, revokeeKey)
|
||||||
}
|
}
|
||||||
|
|
|
@ -247,7 +247,9 @@ class ArmorUtils {
|
||||||
.add(OpenPgpFingerprint.of(publicKey).prettyPrint())
|
.add(OpenPgpFingerprint.of(publicKey).prettyPrint())
|
||||||
// Primary / First User ID
|
// Primary / First User ID
|
||||||
(primary ?: first)?.let {
|
(primary ?: first)?.let {
|
||||||
headerMap.getOrPut(HEADER_COMMENT) { mutableSetOf() }.add(it)
|
headerMap
|
||||||
|
.getOrPut(HEADER_COMMENT) { mutableSetOf() }
|
||||||
|
.add(it.replace("\n", "\\n").replace("\r", "\\r"))
|
||||||
}
|
}
|
||||||
// X-1 further identities
|
// X-1 further identities
|
||||||
when (userIds.size) {
|
when (userIds.size) {
|
||||||
|
|
|
@ -11,14 +11,9 @@ import org.bouncycastle.util.Arrays
|
||||||
*
|
*
|
||||||
* @param chars may be null for empty passwords.
|
* @param chars may be null for empty passwords.
|
||||||
*/
|
*/
|
||||||
class Passphrase(chars: CharArray?) {
|
class Passphrase(private val chars: CharArray?) {
|
||||||
private val lock = Any()
|
private val lock = Any()
|
||||||
private var valid = true
|
private var valid = true
|
||||||
private val chars: CharArray?
|
|
||||||
|
|
||||||
init {
|
|
||||||
this.chars = trimWhitespace(chars)
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Return a copy of the underlying char array. A return value of null represents an empty
|
* Return a copy of the underlying char array. A return value of null represents an empty
|
||||||
|
@ -67,6 +62,13 @@ class Passphrase(chars: CharArray?) {
|
||||||
|
|
||||||
override fun hashCode(): Int = getChars()?.let { String(it) }.hashCode()
|
override fun hashCode(): Int = getChars()?.let { String(it) }.hashCode()
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return a copy of this [Passphrase], but with whitespace characters trimmed off.
|
||||||
|
*
|
||||||
|
* @return copy with trimmed whitespace
|
||||||
|
*/
|
||||||
|
fun withTrimmedWhitespace(): Passphrase = Passphrase(trimWhitespace(chars))
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -23,7 +23,7 @@ To start using pgpainless-sop in your code, include the following lines in your
|
||||||
...
|
...
|
||||||
dependencies {
|
dependencies {
|
||||||
...
|
...
|
||||||
implementation "org.pgpainless:pgpainless-sop:1.7.4"
|
implementation "org.pgpainless:pgpainless-sop:1.7.6"
|
||||||
...
|
...
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -34,7 +34,7 @@ dependencies {
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.pgpainless</groupId>
|
<groupId>org.pgpainless</groupId>
|
||||||
<artifactId>pgpainless-sop</artifactId>
|
<artifactId>pgpainless-sop</artifactId>
|
||||||
<version>1.7.4</version>
|
<version>1.7.6</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
...
|
...
|
||||||
</dependencies>
|
</dependencies>
|
||||||
|
@ -67,7 +67,7 @@ byte[] encrypted = sop.encrypt()
|
||||||
|
|
||||||
// Decrypt a message
|
// Decrypt a message
|
||||||
ByteArrayAndResult<DecryptionResult> messageAndVerifications = sop.decrypt()
|
ByteArrayAndResult<DecryptionResult> messageAndVerifications = sop.decrypt()
|
||||||
.verifyWith(cert)
|
.verifyWithCert(cert)
|
||||||
.withKey(key)
|
.withKey(key)
|
||||||
.ciphertext(encrypted)
|
.ciphertext(encrypted)
|
||||||
.toByteArrayAndResult();
|
.toByteArrayAndResult();
|
||||||
|
|
|
@ -100,4 +100,14 @@ public class GenerateKeyTest {
|
||||||
assertThrows(SOPGPException.UnsupportedProfile.class, () ->
|
assertThrows(SOPGPException.UnsupportedProfile.class, () ->
|
||||||
sop.generateKey().profile("invalid"));
|
sop.generateKey().profile("invalid"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void generateKeyWithNewlinesInUserId() throws IOException {
|
||||||
|
byte[] keyBytes = sop.generateKey()
|
||||||
|
.userId("Foo\n\nBar")
|
||||||
|
.generate()
|
||||||
|
.getBytes();
|
||||||
|
|
||||||
|
assertTrue(new String(keyBytes).contains("Foo\\n\\nBar"));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,16 +4,15 @@
|
||||||
|
|
||||||
allprojects {
|
allprojects {
|
||||||
ext {
|
ext {
|
||||||
shortVersion = '1.7.4'
|
shortVersion = '1.7.7'
|
||||||
isSnapshot = false
|
isSnapshot = true
|
||||||
pgpainlessMinAndroidSdk = 10
|
javaSourceCompatibility = 11
|
||||||
javaSourceCompatibility = 1.8
|
bouncyCastleVersion = '1.81'
|
||||||
bouncyCastleVersion = '1.80'
|
|
||||||
bouncyPgVersion = bouncyCastleVersion
|
bouncyPgVersion = bouncyCastleVersion
|
||||||
junitVersion = '5.8.2'
|
junitVersion = '5.8.2'
|
||||||
logbackVersion = '1.5.13'
|
logbackVersion = '1.5.13'
|
||||||
mockitoVersion = '4.5.1'
|
mockitoVersion = '4.5.1'
|
||||||
slf4jVersion = '1.7.36'
|
slf4jVersion = '1.7.36'
|
||||||
sopJavaVersion = '10.1.0'
|
sopJavaVersion = '10.1.1'
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue