From f811ab406c06183145e4ad87a334871a3bd3ed51 Mon Sep 17 00:00:00 2001 From: Paul Schaub Date: Tue, 5 Apr 2022 16:17:56 +0200 Subject: [PATCH 01/40] WKD-Java 0.1.1-SNAPSHOT --- version.gradle | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/version.gradle b/version.gradle index ef567db..8542a92 100644 --- a/version.gradle +++ b/version.gradle @@ -4,8 +4,8 @@ allprojects { ext { - shortVersion = '0.1.0' - isSnapshot = false + shortVersion = '0.1.1' + isSnapshot = true minAndroidSdk = 10 javaSourceCompatibility = 1.8 } From dd3b96e63ee9fea5840f6302ad0045436398f550 Mon Sep 17 00:00:00 2001 From: Paul Schaub Date: Thu, 7 Apr 2022 21:39:06 +0200 Subject: [PATCH 02/40] Move dependency versions into version.gradle --- build.gradle | 4 ---- version.gradle | 4 ++++ 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/build.gradle b/build.gradle index 937bce4..354ef68 100644 --- a/build.gradle +++ b/build.gradle @@ -70,10 +70,6 @@ allprojects { } project.ext { - junitVersion = '5.8.2' - slf4jVersion = '1.7.32' - logbackVersion = '1.2.10' - pgpainlessVersion = '1.1.1' rootConfigDir = new File(rootDir, 'config') gitCommit = getGitCommit() isContinuousIntegrationEnvironment = Boolean.parseBoolean(System.getenv('CI')) diff --git a/version.gradle b/version.gradle index 8542a92..3b98fd4 100644 --- a/version.gradle +++ b/version.gradle @@ -8,5 +8,9 @@ allprojects { isSnapshot = true minAndroidSdk = 10 javaSourceCompatibility = 1.8 + junitVersion = '5.8.2' + slf4jVersion = '1.7.32' + logbackVersion = '1.2.10' + pgpainlessVersion = '1.1.1' } } From a8d940c688243649cd07ffe8001d972da0d9eb0e Mon Sep 17 00:00:00 2001 From: Paul Schaub Date: Thu, 7 Apr 2022 21:39:51 +0200 Subject: [PATCH 03/40] Bump PGPainless to 1.2.0 --- version.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/version.gradle b/version.gradle index 3b98fd4..d834d24 100644 --- a/version.gradle +++ b/version.gradle @@ -11,6 +11,6 @@ allprojects { junitVersion = '5.8.2' slf4jVersion = '1.7.32' logbackVersion = '1.2.10' - pgpainlessVersion = '1.1.1' + pgpainlessVersion = '1.2.0' } } From c0652b6162a304c70dbe0e3f2718635908ef4c61 Mon Sep 17 00:00:00 2001 From: Paul Schaub Date: Mon, 11 Apr 2022 13:33:02 +0200 Subject: [PATCH 04/40] Update README --- README.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/README.md b/README.md index 6290bce..90e6132 100644 --- a/README.md +++ b/README.md @@ -6,6 +6,10 @@ SPDX-License-Identifier: Apache-2.0 # Web Key Directory for Java +Client-side API for fetching OpenPGP certificates via the [Web Key Directory](https://www.ietf.org/archive/id/draft-koch-openpgp-webkey-service-13.html) protocol. + +## Modules + This repository consists of the following modules: * [wkd-java](/wkd-java): An implementation of Certificate Discovery From 7f067c55e5f7eee9b180b6a63ae6cfebf3b76f0d Mon Sep 17 00:00:00 2001 From: Paul Schaub Date: Mon, 11 Apr 2022 13:47:41 +0200 Subject: [PATCH 05/40] Rename 'fetch' subcommand to 'get' --- wkd-java-cli/src/main/java/pgp/wkd/cli/WKDCLI.java | 6 ++++-- .../java/pgp/wkd/cli/command/{Fetch.java => GetCmd.java} | 8 ++++---- ...omGithubPages.java => TestGetKeysFromGithubPages.java} | 2 +- .../java/pgp/wkd/cli/test_suite/TestSuiteTestRunner.java | 8 ++++---- 4 files changed, 13 insertions(+), 11 deletions(-) rename wkd-java-cli/src/main/java/pgp/wkd/cli/command/{Fetch.java => GetCmd.java} (92%) rename wkd-java-cli/src/test/java/pgp/wkd/cli/online_test_vectors/{TestFetchKeysFromGithubPages.java => TestGetKeysFromGithubPages.java} (94%) diff --git a/wkd-java-cli/src/main/java/pgp/wkd/cli/WKDCLI.java b/wkd-java-cli/src/main/java/pgp/wkd/cli/WKDCLI.java index d4ff56d..4fed57d 100644 --- a/wkd-java-cli/src/main/java/pgp/wkd/cli/WKDCLI.java +++ b/wkd-java-cli/src/main/java/pgp/wkd/cli/WKDCLI.java @@ -6,13 +6,15 @@ package pgp.wkd.cli; import pgp.wkd.exception.CertNotFetchableException; import pgp.wkd.exception.RejectedCertificateException; -import pgp.wkd.cli.command.Fetch; +import pgp.wkd.cli.command.GetCmd; import picocli.CommandLine; @CommandLine.Command( + name = "wkd", + description = "Interact with the Web Key Directory", subcommands = { CommandLine.HelpCommand.class, - Fetch.class + GetCmd.class } ) public class WKDCLI { diff --git a/wkd-java-cli/src/main/java/pgp/wkd/cli/command/Fetch.java b/wkd-java-cli/src/main/java/pgp/wkd/cli/command/GetCmd.java similarity index 92% rename from wkd-java-cli/src/main/java/pgp/wkd/cli/command/Fetch.java rename to wkd-java-cli/src/main/java/pgp/wkd/cli/command/GetCmd.java index b977bf2..b5d7c05 100644 --- a/wkd-java-cli/src/main/java/pgp/wkd/cli/command/Fetch.java +++ b/wkd-java-cli/src/main/java/pgp/wkd/cli/command/GetCmd.java @@ -20,10 +20,10 @@ import java.io.IOException; import java.io.OutputStream; @CommandLine.Command( - name = "fetch", - description = "Fetch an OpenPGP Certificate via the Web Key Directory" + name = "get", + description = "Get an OpenPGP Certificate via the Web Key Directory" ) -public class Fetch implements Runnable { +public class GetCmd implements Runnable { @CommandLine.Parameters( index = "0", @@ -67,7 +67,7 @@ public class Fetch implements Runnable { throw new NullPointerException("CertificateDiscoverer cannot be null."); } - Fetch.discoverer = discoverer; + GetCmd.discoverer = discoverer; } private WKDAddress addressFromUserId(String userId) { diff --git a/wkd-java-cli/src/test/java/pgp/wkd/cli/online_test_vectors/TestFetchKeysFromGithubPages.java b/wkd-java-cli/src/test/java/pgp/wkd/cli/online_test_vectors/TestGetKeysFromGithubPages.java similarity index 94% rename from wkd-java-cli/src/test/java/pgp/wkd/cli/online_test_vectors/TestFetchKeysFromGithubPages.java rename to wkd-java-cli/src/test/java/pgp/wkd/cli/online_test_vectors/TestGetKeysFromGithubPages.java index ef7cc8f..fa96e4a 100644 --- a/wkd-java-cli/src/test/java/pgp/wkd/cli/online_test_vectors/TestFetchKeysFromGithubPages.java +++ b/wkd-java-cli/src/test/java/pgp/wkd/cli/online_test_vectors/TestGetKeysFromGithubPages.java @@ -12,7 +12,7 @@ import pgp.wkd.cli.WKDCLI; import static org.junit.jupiter.api.Assertions.assertEquals; @Disabled("For privacy reasons") -public class TestFetchKeysFromGithubPages extends RedirectSystemStreamsTest { +public class TestGetKeysFromGithubPages extends RedirectSystemStreamsTest { // Valid WKD publication. // Cert is available at https://pgpainless.github.io/.well-known/openpgpkey/hu/eprjcbeppbna3f6xabhtpddzpn41nknw diff --git a/wkd-java-cli/src/test/java/pgp/wkd/cli/test_suite/TestSuiteTestRunner.java b/wkd-java-cli/src/test/java/pgp/wkd/cli/test_suite/TestSuiteTestRunner.java index a7596d3..1a24f27 100644 --- a/wkd-java-cli/src/test/java/pgp/wkd/cli/test_suite/TestSuiteTestRunner.java +++ b/wkd-java-cli/src/test/java/pgp/wkd/cli/test_suite/TestSuiteTestRunner.java @@ -10,7 +10,7 @@ import org.junit.jupiter.api.DynamicTest; import org.junit.jupiter.api.TestFactory; import pgp.wkd.cli.PGPainlessCertificateParser; import pgp.wkd.cli.WKDCLI; -import pgp.wkd.cli.command.Fetch; +import pgp.wkd.cli.command.GetCmd; import pgp.wkd.discovery.CertificateDiscoverer; import pgp.wkd.discovery.ValidatingCertificateDiscoverer; import pgp.wkd.discovery.DiscoveryMethod; @@ -45,7 +45,7 @@ public class TestSuiteTestRunner { // Fetch certificates from a local directory instead of the internetzzz. CertificateDiscoverer discoverer = new ValidatingCertificateDiscoverer( new PGPainlessCertificateParser(), new DirectoryBasedCertificateFetcher(tempPath)); - Fetch.setCertificateDiscoverer(discoverer); + GetCmd.setCertificateDiscoverer(discoverer); } @TestFactory @@ -61,7 +61,7 @@ public class TestSuiteTestRunner { String mail = testCase.getLookupMailAddress(); int exitCode = WKDCLI.execute(new String[] { - "fetch", "--armor", mail + "get", "--armor", mail }); if (testCase.isExpectSuccess()) { @@ -74,6 +74,6 @@ public class TestSuiteTestRunner { @AfterAll public static void reset() { - Fetch.setCertificateDiscoverer(Fetch.DEFAULT_DISCOVERER); + GetCmd.setCertificateDiscoverer(GetCmd.DEFAULT_DISCOVERER); } } From 9165e01f8e06319a6620cdd77a0a4ffcefd980f2 Mon Sep 17 00:00:00 2001 From: Paul Schaub Date: Tue, 26 Apr 2022 01:10:47 +0200 Subject: [PATCH 06/40] Move zbase432 version to version.gradle --- version.gradle | 1 + wkd-java/build.gradle | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/version.gradle b/version.gradle index d834d24..8ffa9ea 100644 --- a/version.gradle +++ b/version.gradle @@ -12,5 +12,6 @@ allprojects { slf4jVersion = '1.7.32' logbackVersion = '1.2.10' pgpainlessVersion = '1.2.0' + zbase32Version = '1.0.0' } } diff --git a/wkd-java/build.gradle b/wkd-java/build.gradle index b4e2867..fe766e2 100644 --- a/wkd-java/build.gradle +++ b/wkd-java/build.gradle @@ -22,7 +22,7 @@ dependencies { api "org.pgpainless:pgp-certificate-store:0.1.0" // Z-Base32 - implementation 'com.sandinh:zbase32-commons-codec:1.0.0' + implementation "com.sandinh:zbase32-commons-codec:$zbase32Version" // @Nullable etc. implementation "com.google.code.findbugs:jsr305:3.0.2" From 591161178d8376a3634e8400476d46cdfe6b2360 Mon Sep 17 00:00:00 2001 From: Paul Schaub Date: Tue, 26 Apr 2022 01:11:49 +0200 Subject: [PATCH 07/40] Move pgp-certificate-store version to version.gradle --- version.gradle | 1 + wkd-java/build.gradle | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/version.gradle b/version.gradle index 8ffa9ea..519bf0f 100644 --- a/version.gradle +++ b/version.gradle @@ -12,6 +12,7 @@ allprojects { slf4jVersion = '1.7.32' logbackVersion = '1.2.10' pgpainlessVersion = '1.2.0' + certStoreVersion = '0.1.0' zbase32Version = '1.0.0' } } diff --git a/wkd-java/build.gradle b/wkd-java/build.gradle index fe766e2..3c68826 100644 --- a/wkd-java/build.gradle +++ b/wkd-java/build.gradle @@ -19,7 +19,7 @@ dependencies { // Logging api "org.slf4j:slf4j-api:$slf4jVersion" testImplementation "ch.qos.logback:logback-classic:$logbackVersion" - api "org.pgpainless:pgp-certificate-store:0.1.0" + api "org.pgpainless:pgp-certificate-store:$certStoreVersion" // Z-Base32 implementation "com.sandinh:zbase32-commons-codec:$zbase32Version" From e4ad2a342239816714f572def74e874d217a4c68 Mon Sep 17 00:00:00 2001 From: Paul Schaub Date: Tue, 26 Apr 2022 01:12:27 +0200 Subject: [PATCH 08/40] Move jsr version to version.gradle --- version.gradle | 1 + wkd-java/build.gradle | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/version.gradle b/version.gradle index 519bf0f..3349490 100644 --- a/version.gradle +++ b/version.gradle @@ -9,6 +9,7 @@ allprojects { minAndroidSdk = 10 javaSourceCompatibility = 1.8 junitVersion = '5.8.2' + jsrVersion = '3.0.2' slf4jVersion = '1.7.32' logbackVersion = '1.2.10' pgpainlessVersion = '1.2.0' diff --git a/wkd-java/build.gradle b/wkd-java/build.gradle index 3c68826..fed9d11 100644 --- a/wkd-java/build.gradle +++ b/wkd-java/build.gradle @@ -25,7 +25,7 @@ dependencies { implementation "com.sandinh:zbase32-commons-codec:$zbase32Version" // @Nullable etc. - implementation "com.google.code.findbugs:jsr305:3.0.2" + implementation "com.google.code.findbugs:jsr305:$jsrVersion" } test { From 876a49966f33aa5a26db54641a676ddb2abb0a3a Mon Sep 17 00:00:00 2001 From: Paul Schaub Date: Tue, 26 Apr 2022 01:13:29 +0200 Subject: [PATCH 09/40] Bump slf4j to 1.7.36 --- version.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/version.gradle b/version.gradle index 3349490..f2885bb 100644 --- a/version.gradle +++ b/version.gradle @@ -10,7 +10,7 @@ allprojects { javaSourceCompatibility = 1.8 junitVersion = '5.8.2' jsrVersion = '3.0.2' - slf4jVersion = '1.7.32' + slf4jVersion = '1.7.36' logbackVersion = '1.2.10' pgpainlessVersion = '1.2.0' certStoreVersion = '0.1.0' From 25e6560f1c24e32d783b65f6fc061942b4d5d69c Mon Sep 17 00:00:00 2001 From: Paul Schaub Date: Tue, 26 Apr 2022 01:13:59 +0200 Subject: [PATCH 10/40] Bump logback to 1.2.11 --- version.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/version.gradle b/version.gradle index f2885bb..5b04bbf 100644 --- a/version.gradle +++ b/version.gradle @@ -11,7 +11,7 @@ allprojects { junitVersion = '5.8.2' jsrVersion = '3.0.2' slf4jVersion = '1.7.36' - logbackVersion = '1.2.10' + logbackVersion = '1.2.11' pgpainlessVersion = '1.2.0' certStoreVersion = '0.1.0' zbase32Version = '1.0.0' From 3b9bf52c623dc746d53baa790aee690fc40343ce Mon Sep 17 00:00:00 2001 From: Paul Schaub Date: Tue, 26 Apr 2022 01:15:27 +0200 Subject: [PATCH 11/40] Move junit5-system-exit version to version.gradle --- version.gradle | 1 + wkd-java-cli/build.gradle | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/version.gradle b/version.gradle index 5b04bbf..752648d 100644 --- a/version.gradle +++ b/version.gradle @@ -9,6 +9,7 @@ allprojects { minAndroidSdk = 10 javaSourceCompatibility = 1.8 junitVersion = '5.8.2' + junitSysExitVersion = '1.1.2' jsrVersion = '3.0.2' slf4jVersion = '1.7.36' logbackVersion = '1.2.11' diff --git a/wkd-java-cli/build.gradle b/wkd-java-cli/build.gradle index d4dc225..40458b3 100644 --- a/wkd-java-cli/build.gradle +++ b/wkd-java-cli/build.gradle @@ -18,7 +18,7 @@ dependencies { testRuntimeOnly "org.junit.jupiter:junit-jupiter-engine:$junitVersion" // https://todd.ginsberg.com/post/testing-system-exit/ - testImplementation 'com.ginsberg:junit5-system-exit:1.1.2' + testImplementation "com.ginsberg:junit5-system-exit:$junitSysExitVersion" testImplementation 'org.mockito:mockito-core:4.3.1' implementation("org.pgpainless:pgpainless-cert-d:0.1.1") From f2833a5a409a6ccd43f90a419d06faead977d37a Mon Sep 17 00:00:00 2001 From: Paul Schaub Date: Tue, 26 Apr 2022 01:16:17 +0200 Subject: [PATCH 12/40] Bump mockito to 4.5.1 --- version.gradle | 1 + wkd-java-cli/build.gradle | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/version.gradle b/version.gradle index 752648d..5706ce3 100644 --- a/version.gradle +++ b/version.gradle @@ -13,6 +13,7 @@ allprojects { jsrVersion = '3.0.2' slf4jVersion = '1.7.36' logbackVersion = '1.2.11' + mockitoVersion = '4.5.1' pgpainlessVersion = '1.2.0' certStoreVersion = '0.1.0' zbase32Version = '1.0.0' diff --git a/wkd-java-cli/build.gradle b/wkd-java-cli/build.gradle index 40458b3..ed44eff 100644 --- a/wkd-java-cli/build.gradle +++ b/wkd-java-cli/build.gradle @@ -19,7 +19,7 @@ dependencies { // https://todd.ginsberg.com/post/testing-system-exit/ testImplementation "com.ginsberg:junit5-system-exit:$junitSysExitVersion" - testImplementation 'org.mockito:mockito-core:4.3.1' + testImplementation "org.mockito:mockito-core:$mockitoVersion" implementation("org.pgpainless:pgpainless-cert-d:0.1.1") implementation project(':wkd-java') From 4e2a714ee799e97e0fef3b4838ec00c8dcfa7cb6 Mon Sep 17 00:00:00 2001 From: Paul Schaub Date: Tue, 26 Apr 2022 01:17:17 +0200 Subject: [PATCH 13/40] Move pgpainless-cert-d version to version.gradle --- version.gradle | 1 + wkd-java-cli/build.gradle | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/version.gradle b/version.gradle index 5706ce3..822cbb5 100644 --- a/version.gradle +++ b/version.gradle @@ -15,6 +15,7 @@ allprojects { logbackVersion = '1.2.11' mockitoVersion = '4.5.1' pgpainlessVersion = '1.2.0' + pgpainlessCertDVersion = '0.1.1' certStoreVersion = '0.1.0' zbase32Version = '1.0.0' } diff --git a/wkd-java-cli/build.gradle b/wkd-java-cli/build.gradle index ed44eff..5e2e6d6 100644 --- a/wkd-java-cli/build.gradle +++ b/wkd-java-cli/build.gradle @@ -21,7 +21,7 @@ dependencies { testImplementation "com.ginsberg:junit5-system-exit:$junitSysExitVersion" testImplementation "org.mockito:mockito-core:$mockitoVersion" - implementation("org.pgpainless:pgpainless-cert-d:0.1.1") + implementation("org.pgpainless:pgpainless-cert-d:$pgpainlessCertDVersion") implementation project(':wkd-java') implementation "info.picocli:picocli:4.6.3" From 06851776bd02a182e04804646326a156792d83ee Mon Sep 17 00:00:00 2001 From: Paul Schaub Date: Tue, 26 Apr 2022 01:18:01 +0200 Subject: [PATCH 14/40] Move picocli version to version.gradle --- version.gradle | 1 + wkd-java-cli/build.gradle | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/version.gradle b/version.gradle index 822cbb5..acb74eb 100644 --- a/version.gradle +++ b/version.gradle @@ -16,6 +16,7 @@ allprojects { mockitoVersion = '4.5.1' pgpainlessVersion = '1.2.0' pgpainlessCertDVersion = '0.1.1' + picocliVersion = '4.6.3' certStoreVersion = '0.1.0' zbase32Version = '1.0.0' } diff --git a/wkd-java-cli/build.gradle b/wkd-java-cli/build.gradle index 5e2e6d6..3f41992 100644 --- a/wkd-java-cli/build.gradle +++ b/wkd-java-cli/build.gradle @@ -23,7 +23,7 @@ dependencies { implementation("org.pgpainless:pgpainless-cert-d:$pgpainlessCertDVersion") implementation project(':wkd-java') - implementation "info.picocli:picocli:4.6.3" + implementation "info.picocli:picocli:$picocliVersion" // Logging testImplementation "ch.qos.logback:logback-classic:$logbackVersion" From 43ef11f11adee53b540139c2d0b84b653261f332 Mon Sep 17 00:00:00 2001 From: Paul Schaub Date: Tue, 26 Apr 2022 01:19:13 +0200 Subject: [PATCH 15/40] Reuse slf4jVersion for slf4j-nop --- wkd-java-cli/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/wkd-java-cli/build.gradle b/wkd-java-cli/build.gradle index 3f41992..c8b50d9 100644 --- a/wkd-java-cli/build.gradle +++ b/wkd-java-cli/build.gradle @@ -27,7 +27,7 @@ dependencies { // Logging testImplementation "ch.qos.logback:logback-classic:$logbackVersion" - implementation 'org.slf4j:slf4j-nop:1.7.36' + implementation "org.slf4j:slf4j-nop:$slf4jVersion" testImplementation project(":wkd-test-suite") } From c882fa679f977673018b3321947d580d9e05f4c2 Mon Sep 17 00:00:00 2001 From: Paul Schaub Date: Tue, 26 Apr 2022 01:22:14 +0200 Subject: [PATCH 16/40] Document wkd-java-cli build.gradle --- wkd-java-cli/build.gradle | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/wkd-java-cli/build.gradle b/wkd-java-cli/build.gradle index c8b50d9..859643d 100644 --- a/wkd-java-cli/build.gradle +++ b/wkd-java-cli/build.gradle @@ -14,21 +14,31 @@ repositories { } dependencies { + // JUnit testImplementation "org.junit.jupiter:junit-jupiter-api:$junitVersion" testRuntimeOnly "org.junit.jupiter:junit-jupiter-engine:$junitVersion" + // Test CLI Exit Codes // https://todd.ginsberg.com/post/testing-system-exit/ testImplementation "com.ginsberg:junit5-system-exit:$junitSysExitVersion" + + // Test using mocked components testImplementation "org.mockito:mockito-core:$mockitoVersion" + // Certificates implementation("org.pgpainless:pgpainless-cert-d:$pgpainlessCertDVersion") + + // WKD implementation project(':wkd-java') + + // CLI implementation "info.picocli:picocli:$picocliVersion" // Logging testImplementation "ch.qos.logback:logback-classic:$logbackVersion" implementation "org.slf4j:slf4j-nop:$slf4jVersion" + // Test Suite testImplementation project(":wkd-test-suite") } From 56806678ab46c493a468fe64cc39acdfd64eff73 Mon Sep 17 00:00:00 2001 From: Paul Schaub Date: Tue, 26 Apr 2022 01:23:18 +0200 Subject: [PATCH 17/40] Document wkd-java build.gradle --- wkd-java/build.gradle | 3 +++ 1 file changed, 3 insertions(+) diff --git a/wkd-java/build.gradle b/wkd-java/build.gradle index fed9d11..51caf3c 100644 --- a/wkd-java/build.gradle +++ b/wkd-java/build.gradle @@ -13,12 +13,15 @@ repositories { } dependencies { + // JUnit testImplementation "org.junit.jupiter:junit-jupiter-api:$junitVersion" testRuntimeOnly "org.junit.jupiter:junit-jupiter-engine:$junitVersion" // Logging api "org.slf4j:slf4j-api:$slf4jVersion" testImplementation "ch.qos.logback:logback-classic:$logbackVersion" + + // Certificate store api "org.pgpainless:pgp-certificate-store:$certStoreVersion" // Z-Base32 From c8a3c1046409e321106e8084a99fda8b1934304b Mon Sep 17 00:00:00 2001 From: Paul Schaub Date: Tue, 26 Apr 2022 01:23:58 +0200 Subject: [PATCH 18/40] Reuse picocliVersion --- wkd-test-suite/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/wkd-test-suite/build.gradle b/wkd-test-suite/build.gradle index fb48726..8b7ec0e 100644 --- a/wkd-test-suite/build.gradle +++ b/wkd-test-suite/build.gradle @@ -26,7 +26,7 @@ dependencies { implementation "org.pgpainless:pgpainless-core:$pgpainlessVersion" // CLI - implementation "info.picocli:picocli:4.6.3" + implementation "info.picocli:picocli:$picocliVersion" // Object Mapping implementation 'com.fasterxml.jackson.dataformat:jackson-dataformat-xml:2.13.1' From 8327751be9a630b01c0add3b1b9e439a7812afde Mon Sep 17 00:00:00 2001 From: Paul Schaub Date: Tue, 26 Apr 2022 01:25:48 +0200 Subject: [PATCH 19/40] Bump jackson data bind to 2.13.2 --- version.gradle | 1 + wkd-test-suite/build.gradle | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/version.gradle b/version.gradle index acb74eb..6511c22 100644 --- a/version.gradle +++ b/version.gradle @@ -8,6 +8,7 @@ allprojects { isSnapshot = true minAndroidSdk = 10 javaSourceCompatibility = 1.8 + jacksonDataBindVersion = '2.13.2' junitVersion = '5.8.2' junitSysExitVersion = '1.1.2' jsrVersion = '3.0.2' diff --git a/wkd-test-suite/build.gradle b/wkd-test-suite/build.gradle index 8b7ec0e..d15f4c3 100644 --- a/wkd-test-suite/build.gradle +++ b/wkd-test-suite/build.gradle @@ -29,8 +29,8 @@ dependencies { implementation "info.picocli:picocli:$picocliVersion" // Object Mapping - implementation 'com.fasterxml.jackson.dataformat:jackson-dataformat-xml:2.13.1' - implementation 'com.fasterxml.jackson.core:jackson-databind:2.13.1' + implementation "com.fasterxml.jackson.dataformat:jackson-dataformat-xml:$jacksonDataBindVersion" + implementation "com.fasterxml.jackson.core:jackson-databind:$jacksonDataBindVersion" } application { From 66730d4312b9f47ef440ccdca2564da9945219c8 Mon Sep 17 00:00:00 2001 From: Paul Schaub Date: Tue, 26 Apr 2022 01:28:04 +0200 Subject: [PATCH 20/40] Bump jackson data bind to 2.13.2.2 --- version.gradle | 3 ++- wkd-test-suite/build.gradle | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/version.gradle b/version.gradle index 6511c22..1a8c435 100644 --- a/version.gradle +++ b/version.gradle @@ -8,7 +8,8 @@ allprojects { isSnapshot = true minAndroidSdk = 10 javaSourceCompatibility = 1.8 - jacksonDataBindVersion = '2.13.2' + jacksonDataBindVersion = '2.13.2.2' + jacksonDataFormatXmlVersion = '2.13.2' junitVersion = '5.8.2' junitSysExitVersion = '1.1.2' jsrVersion = '3.0.2' diff --git a/wkd-test-suite/build.gradle b/wkd-test-suite/build.gradle index d15f4c3..9d89a7b 100644 --- a/wkd-test-suite/build.gradle +++ b/wkd-test-suite/build.gradle @@ -29,7 +29,7 @@ dependencies { implementation "info.picocli:picocli:$picocliVersion" // Object Mapping - implementation "com.fasterxml.jackson.dataformat:jackson-dataformat-xml:$jacksonDataBindVersion" + implementation "com.fasterxml.jackson.dataformat:jackson-dataformat-xml:$jacksonDataFormatXmlVersion" implementation "com.fasterxml.jackson.core:jackson-databind:$jacksonDataBindVersion" } From 7f337a5ce9df98f7d5ec5cb18b5030fbb8dcd135 Mon Sep 17 00:00:00 2001 From: Paul Schaub Date: Tue, 26 Apr 2022 01:31:13 +0200 Subject: [PATCH 21/40] Update changelog --- CHANGELOG.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8fd697d..270ff1f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,5 +6,14 @@ SPDX-License-Identifier: Apache-2.0 # Changelog +## 0.1.1-SNAPSHOT +- Bump `pgpainless-core` to `1.2.0` +- Bump `slf4j` to `1.7.36` +- Bump `logback` to `1.2.11` +- Bump `mockito` to `4.5.1` +- Bump `jackson-data-bind` to `2.13.2.2` +- Bump `jackson-data-format-xml` to `2.13.2` +- Rename `fetch` command to `get` + ## 0.1.0 - Initial Release From e3eb4cff3174371f41966f7dcac6eb9800151d0f Mon Sep 17 00:00:00 2001 From: Paul Schaub Date: Fri, 29 Apr 2022 17:19:42 +0200 Subject: [PATCH 22/40] Fix build.gradle --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index 354ef68..a970ae7 100644 --- a/build.gradle +++ b/build.gradle @@ -9,7 +9,6 @@ buildscript { maven { url "https://plugins.gradle.org/m2/" } - mavenLocal() mavenCentral() } dependencies { @@ -61,6 +60,7 @@ allprojects { repositories { mavenCentral() + mavenLocal() } // Reproducible Builds From ccee357e9d31fa090bab768b1ae5d49cd112ce3d Mon Sep 17 00:00:00 2001 From: Paul Schaub Date: Fri, 29 Apr 2022 17:20:14 +0200 Subject: [PATCH 23/40] Bump pgpainless-core to 1.2.1 --- version.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/version.gradle b/version.gradle index 1a8c435..bae10be 100644 --- a/version.gradle +++ b/version.gradle @@ -16,7 +16,7 @@ allprojects { slf4jVersion = '1.7.36' logbackVersion = '1.2.11' mockitoVersion = '4.5.1' - pgpainlessVersion = '1.2.0' + pgpainlessVersion = '1.2.1' pgpainlessCertDVersion = '0.1.1' picocliVersion = '4.6.3' certStoreVersion = '0.1.0' From ae1c70c4958c73e44ad4b8110e8282917b50532e Mon Sep 17 00:00:00 2001 From: Paul Schaub Date: Fri, 29 Apr 2022 17:20:44 +0200 Subject: [PATCH 24/40] Bump cert-d-pgpainless to 0.1.2 --- version.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/version.gradle b/version.gradle index bae10be..6c4e014 100644 --- a/version.gradle +++ b/version.gradle @@ -17,7 +17,7 @@ allprojects { logbackVersion = '1.2.11' mockitoVersion = '4.5.1' pgpainlessVersion = '1.2.1' - pgpainlessCertDVersion = '0.1.1' + pgpainlessCertDVersion = '0.1.2' picocliVersion = '4.6.3' certStoreVersion = '0.1.0' zbase32Version = '1.0.0' From 31ef01e0ecdd6975d043881fd84506b496903a2e Mon Sep 17 00:00:00 2001 From: Paul Schaub Date: Fri, 29 Apr 2022 17:21:16 +0200 Subject: [PATCH 25/40] Bump cert-d-java to 0.1.1 --- version.gradle | 2 +- wkd-java/build.gradle | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/version.gradle b/version.gradle index 6c4e014..579dc01 100644 --- a/version.gradle +++ b/version.gradle @@ -19,7 +19,7 @@ allprojects { pgpainlessVersion = '1.2.1' pgpainlessCertDVersion = '0.1.2' picocliVersion = '4.6.3' - certStoreVersion = '0.1.0' + certDJavaVersion = '0.1.1' zbase32Version = '1.0.0' } } diff --git a/wkd-java/build.gradle b/wkd-java/build.gradle index 51caf3c..b382c4c 100644 --- a/wkd-java/build.gradle +++ b/wkd-java/build.gradle @@ -22,7 +22,7 @@ dependencies { testImplementation "ch.qos.logback:logback-classic:$logbackVersion" // Certificate store - api "org.pgpainless:pgp-certificate-store:$certStoreVersion" + api "org.pgpainless:pgp-certificate-store:$certDJavaVersion" // Z-Base32 implementation "com.sandinh:zbase32-commons-codec:$zbase32Version" From d15693f7cd16dbddd662dc88e3a9c2ac6772ef4e Mon Sep 17 00:00:00 2001 From: Paul Schaub Date: Fri, 29 Apr 2022 17:22:05 +0200 Subject: [PATCH 26/40] Update changelog --- CHANGELOG.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 270ff1f..a40aa7e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,8 +6,9 @@ SPDX-License-Identifier: Apache-2.0 # Changelog -## 0.1.1-SNAPSHOT -- Bump `pgpainless-core` to `1.2.0` +## 0.1.1 +- Bump `pgpainless-core` to `1.2.1` +- Bump `pgp-certificate-store` to `0.1.1` - Bump `slf4j` to `1.7.36` - Bump `logback` to `1.2.11` - Bump `mockito` to `4.5.1` From 6a749179a9fcfff73c58d403b5c06512cde22f6d Mon Sep 17 00:00:00 2001 From: Paul Schaub Date: Fri, 29 Apr 2022 17:22:35 +0200 Subject: [PATCH 27/40] WKD-Java 0.1.1 --- version.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/version.gradle b/version.gradle index 579dc01..ec704c3 100644 --- a/version.gradle +++ b/version.gradle @@ -5,7 +5,7 @@ allprojects { ext { shortVersion = '0.1.1' - isSnapshot = true + isSnapshot = false minAndroidSdk = 10 javaSourceCompatibility = 1.8 jacksonDataBindVersion = '2.13.2.2' From cdd3d62c60329953b54ac1320b38a7e69b0556d3 Mon Sep 17 00:00:00 2001 From: Paul Schaub Date: Fri, 29 Apr 2022 17:26:17 +0200 Subject: [PATCH 28/40] WKD-Java 0.1.2-SNAPSHOT --- version.gradle | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/version.gradle b/version.gradle index ec704c3..34b53bb 100644 --- a/version.gradle +++ b/version.gradle @@ -4,8 +4,8 @@ allprojects { ext { - shortVersion = '0.1.1' - isSnapshot = false + shortVersion = '0.1.2' + isSnapshot = true minAndroidSdk = 10 javaSourceCompatibility = 1.8 jacksonDataBindVersion = '2.13.2.2' From 6fdce5b63f7e8707c95884efe022e0bf1f3f3961 Mon Sep 17 00:00:00 2001 From: Paul Schaub Date: Fri, 29 Apr 2022 17:28:45 +0200 Subject: [PATCH 29/40] Update changelog --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index a40aa7e..5b56905 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,7 @@ SPDX-License-Identifier: Apache-2.0 ## 0.1.1 - Bump `pgpainless-core` to `1.2.1` +- Bump `cert-d-pgpainless` to `0.1.2` - Bump `pgp-certificate-store` to `0.1.1` - Bump `slf4j` to `1.7.36` - Bump `logback` to `1.2.11` From 5a8c886409db9d327b1a6ff3a3e8ab38d1db4485 Mon Sep 17 00:00:00 2001 From: Paul Schaub Date: Mon, 1 Aug 2022 17:17:21 +0200 Subject: [PATCH 30/40] Add woodpecker CI --- .reuse/dep5 | 5 +++++ .woodpecker/.build.yml | 12 ++++++++++++ .woodpecker/.reuse.yml | 7 +++++++ 3 files changed, 24 insertions(+) create mode 100644 .woodpecker/.build.yml create mode 100644 .woodpecker/.reuse.yml diff --git a/.reuse/dep5 b/.reuse/dep5 index b8bb6be..b613adc 100644 --- a/.reuse/dep5 +++ b/.reuse/dep5 @@ -13,3 +13,8 @@ Source: https://pgpainless.org Files: gradle* Copyright: 2015 the original author or authors. License: Apache-2.0 + +# Woodpecker build files +Files: .woodpecker/* +Copyright: 2022 the original author or authors. +License: Apache-2.0 diff --git a/.woodpecker/.build.yml b/.woodpecker/.build.yml new file mode 100644 index 0000000..f504b44 --- /dev/null +++ b/.woodpecker/.build.yml @@ -0,0 +1,12 @@ +pipeline: + run: + image: gradle:7.5-jdk8 + commands: + - git checkout $CI_COMMIT_BRANCH + # Code works + - gradle test + # Code is clean + - gradle check javadocAll + # Code has coverage + - gradle jacocoRootReport coveralls + secrets: [COVERALLS_REPO_TOKEN] diff --git a/.woodpecker/.reuse.yml b/.woodpecker/.reuse.yml new file mode 100644 index 0000000..58f17e6 --- /dev/null +++ b/.woodpecker/.reuse.yml @@ -0,0 +1,7 @@ +# Code is licensed properly +# See https://reuse.software/ +pipeline: + reuse: + image: fsfe/reuse:latest + commands: + - reuse lint \ No newline at end of file From 55b08bcb258657a808fad125c715eb4521108359 Mon Sep 17 00:00:00 2001 From: Paul Schaub Date: Mon, 1 Aug 2022 17:22:45 +0200 Subject: [PATCH 31/40] Add badges for CI and Coveralls --- README.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/README.md b/README.md index 90e6132..98d25c6 100644 --- a/README.md +++ b/README.md @@ -6,6 +6,10 @@ SPDX-License-Identifier: Apache-2.0 # Web Key Directory for Java +[![status-badge](https://ci.codeberg.org/api/badges/PGPainless/wkd-java/status.svg)](https://ci.codeberg.org/PGPainless/wkd-java) +[![Coverage Status](https://coveralls.io/repos/github/pgpainless/wkd-java/badge.svg?branch=main)](https://coveralls.io/github/pgpainless/wkd-java?branch=main) +[![REUSE status](https://api.reuse.software/badge/github.com/pgpainless/wkd-java)](https://api.reuse.software/info/github.com/pgpainless/wkd-java) + Client-side API for fetching OpenPGP certificates via the [Web Key Directory](https://www.ietf.org/archive/id/draft-koch-openpgp-webkey-service-13.html) protocol. ## Modules From 607518f94571154160e88f5e9913ca95a0b737df Mon Sep 17 00:00:00 2001 From: Paul Schaub Date: Thu, 4 Aug 2022 13:26:22 +0200 Subject: [PATCH 32/40] Add support for i18n using resource bundles --- wkd-java-cli/src/main/java/pgp/wkd/cli/WKDCLI.java | 2 +- .../src/main/java/pgp/wkd/cli/command/GetCmd.java | 10 +++------- wkd-java-cli/src/main/resources/msg_get.properties | 12 ++++++++++++ .../src/main/resources/msg_get_de.properties | 12 ++++++++++++ wkd-java-cli/src/main/resources/msg_wkd.properties | 10 ++++++++++ .../src/main/resources/msg_wkd_de.properties | 10 ++++++++++ 6 files changed, 48 insertions(+), 8 deletions(-) create mode 100644 wkd-java-cli/src/main/resources/msg_get.properties create mode 100644 wkd-java-cli/src/main/resources/msg_get_de.properties create mode 100644 wkd-java-cli/src/main/resources/msg_wkd.properties create mode 100644 wkd-java-cli/src/main/resources/msg_wkd_de.properties diff --git a/wkd-java-cli/src/main/java/pgp/wkd/cli/WKDCLI.java b/wkd-java-cli/src/main/java/pgp/wkd/cli/WKDCLI.java index 4fed57d..9615cc4 100644 --- a/wkd-java-cli/src/main/java/pgp/wkd/cli/WKDCLI.java +++ b/wkd-java-cli/src/main/java/pgp/wkd/cli/WKDCLI.java @@ -11,7 +11,7 @@ import picocli.CommandLine; @CommandLine.Command( name = "wkd", - description = "Interact with the Web Key Directory", + resourceBundle = "msg_wkd", subcommands = { CommandLine.HelpCommand.class, GetCmd.class diff --git a/wkd-java-cli/src/main/java/pgp/wkd/cli/command/GetCmd.java b/wkd-java-cli/src/main/java/pgp/wkd/cli/command/GetCmd.java index b5d7c05..1606897 100644 --- a/wkd-java-cli/src/main/java/pgp/wkd/cli/command/GetCmd.java +++ b/wkd-java-cli/src/main/java/pgp/wkd/cli/command/GetCmd.java @@ -21,22 +21,18 @@ import java.io.OutputStream; @CommandLine.Command( name = "get", - description = "Get an OpenPGP Certificate via the Web Key Directory" + resourceBundle = "msg_get" ) public class GetCmd implements Runnable { @CommandLine.Parameters( index = "0", arity = "1", - paramLabel = "USERID", - description = "Certificate User-ID" - ) + paramLabel = "USERID") String userId; @CommandLine.Option( - names = {"-a", "--armor"}, - description = "ASCII Armor the output" - ) + names = {"-a", "--armor"}) boolean armor = false; public static final CertificateDiscoverer DEFAULT_DISCOVERER = new ValidatingCertificateDiscoverer( diff --git a/wkd-java-cli/src/main/resources/msg_get.properties b/wkd-java-cli/src/main/resources/msg_get.properties new file mode 100644 index 0000000..e3d5714 --- /dev/null +++ b/wkd-java-cli/src/main/resources/msg_get.properties @@ -0,0 +1,12 @@ +# SPDX-FileCopyrightText: 2022 Paul Schaub +# +# SPDX-License-Identifier: Apache-2.0 +usage.header=Get an OpenPGP Certificate via the Web Key Directory +USERID[0]=Certificate User-ID +armor=ASCII Armor the output + +# Generic TODO: Remove when bumping picocli to 4.7.0 +usage.synopsisHeading=Usage:\u0020 +usage.commandListHeading = %nCommands:%n +usage.optionListHeading = %nOptions:%n +usage.footerHeading=Powered by picocli%n diff --git a/wkd-java-cli/src/main/resources/msg_get_de.properties b/wkd-java-cli/src/main/resources/msg_get_de.properties new file mode 100644 index 0000000..dc1e396 --- /dev/null +++ b/wkd-java-cli/src/main/resources/msg_get_de.properties @@ -0,0 +1,12 @@ +# SPDX-FileCopyrightText: 2022 Paul Schaub +# +# SPDX-License-Identifier: Apache-2.0 +usage.header=Empfange ein OpenPGP Zertifikat mithilfe des Web Key Directory +USERID[0]=Nutzeridentität des Zertifikats +armor=Schütze die Ausgabe mit ASCII Armor + +# Generic TODO: Remove when bumping picocli to 4.7.0 +usage.synopsisHeading=Aufruf:\u0020 +usage.commandListHeading=%nBefehle:%n +usage.optionListHeading = %nOptionen:%n +usage.footerHeading=Powered by Picocli%n diff --git a/wkd-java-cli/src/main/resources/msg_wkd.properties b/wkd-java-cli/src/main/resources/msg_wkd.properties new file mode 100644 index 0000000..cd73615 --- /dev/null +++ b/wkd-java-cli/src/main/resources/msg_wkd.properties @@ -0,0 +1,10 @@ +# SPDX-FileCopyrightText: 2022 Paul Schaub +# +# SPDX-License-Identifier: Apache-2.0 +usage.header=Interact with the Web Key Directory + +# Generic TODO: Remove when bumping picocli to 4.7.0 +usage.synopsisHeading=Usage:\u0020 +usage.commandListHeading = %nCommands:%n +usage.optionListHeading = %nOptions:%n +usage.footerHeading=Powered by picocli%n diff --git a/wkd-java-cli/src/main/resources/msg_wkd_de.properties b/wkd-java-cli/src/main/resources/msg_wkd_de.properties new file mode 100644 index 0000000..b87f2a8 --- /dev/null +++ b/wkd-java-cli/src/main/resources/msg_wkd_de.properties @@ -0,0 +1,10 @@ +# SPDX-FileCopyrightText: 2022 Paul Schaub +# +# SPDX-License-Identifier: Apache-2.0 +usage.header=Interagiere mit dem Web Key Directory + +# Generic TODO: Remove when bumping picocli to 4.7.0 +usage.synopsisHeading=Aufruf:\u0020 +usage.commandListHeading=%nBefehle:%n +usage.optionListHeading = %nOptionen:%n +usage.footerHeading=Powered by Picocli%n From 2a1676904f77fa9b0cd0bc6e9bb72c8467ac76a8 Mon Sep 17 00:00:00 2001 From: Paul Schaub Date: Thu, 4 Aug 2022 13:26:46 +0200 Subject: [PATCH 33/40] Fix user-id format on test key --- .../wkd/cli/online_test_vectors/TestGetKeysFromGithubPages.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/wkd-java-cli/src/test/java/pgp/wkd/cli/online_test_vectors/TestGetKeysFromGithubPages.java b/wkd-java-cli/src/test/java/pgp/wkd/cli/online_test_vectors/TestGetKeysFromGithubPages.java index fa96e4a..25bcd55 100644 --- a/wkd-java-cli/src/test/java/pgp/wkd/cli/online_test_vectors/TestGetKeysFromGithubPages.java +++ b/wkd-java-cli/src/test/java/pgp/wkd/cli/online_test_vectors/TestGetKeysFromGithubPages.java @@ -16,7 +16,7 @@ public class TestGetKeysFromGithubPages extends RedirectSystemStreamsTest { // Valid WKD publication. // Cert is available at https://pgpainless.github.io/.well-known/openpgpkey/hu/eprjcbeppbna3f6xabhtpddzpn41nknw - private static final String USERID_BASE = "WKD Test [Base Case - Valid User-ID]"; + private static final String USERID_BASE = "WKD Test (Base Case - Valid User-ID) "; private static final String MAIL_BASE = "wkd-test-base@pgpainless.github.io"; @Test From f9543cddaed02c10c30dde4ef5db2db40bf8cbc2 Mon Sep 17 00:00:00 2001 From: Paul Schaub Date: Tue, 13 Sep 2022 12:31:26 +0200 Subject: [PATCH 34/40] Fix NPE when fetching unfetchable cert --- .../src/main/java/pgp/wkd/discovery/DiscoveryResponse.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/wkd-java/src/main/java/pgp/wkd/discovery/DiscoveryResponse.java b/wkd-java/src/main/java/pgp/wkd/discovery/DiscoveryResponse.java index e1b6ac1..dc2ab99 100644 --- a/wkd-java/src/main/java/pgp/wkd/discovery/DiscoveryResponse.java +++ b/wkd-java/src/main/java/pgp/wkd/discovery/DiscoveryResponse.java @@ -12,6 +12,7 @@ import pgp.wkd.exception.MissingPolicyFileException; import javax.annotation.Nonnull; import javax.annotation.Nullable; import java.net.URI; +import java.util.ArrayList; import java.util.List; /** @@ -170,8 +171,8 @@ public final class DiscoveryResponse { private DiscoveryMethod discoveryMethod; private WKDAddress address; - private List acceptableCertificates; - private List rejectedCertificates; + private List acceptableCertificates = new ArrayList<>(); + private List rejectedCertificates = new ArrayList<>(); private Throwable fetchingFailure; private WKDPolicy policy; private MissingPolicyFileException missingPolicyFileException; From e9f2efd15a21dd64e288f32d1760ebd6aff165c0 Mon Sep 17 00:00:00 2001 From: Paul Schaub Date: Fri, 25 Nov 2022 16:17:24 +0100 Subject: [PATCH 35/40] Bump pgpainless-core to 1.3.12, pgpainless-cert-d to 0.2.1, cert-d-java to 0.2.1 --- version.gradle | 6 +++--- .../main/java/pgp/wkd/cli/PGPainlessCertificateParser.java | 4 ++-- wkd-java/src/main/java/pgp/wkd/CertificateAndUserIds.java | 2 +- wkd-java/src/main/java/pgp/wkd/RejectedCertificate.java | 3 ++- .../src/main/java/pgp/wkd/discovery/DiscoveryResponse.java | 2 +- .../src/main/java/pgp/wkd/discovery/DiscoveryResult.java | 2 +- .../pgp/wkd/discovery/ValidatingCertificateDiscoverer.java | 2 +- .../java/pgp/wkd/test_suite/AbstractTestSuiteGenerator.java | 2 +- 8 files changed, 12 insertions(+), 11 deletions(-) diff --git a/version.gradle b/version.gradle index 34b53bb..6e2a3c4 100644 --- a/version.gradle +++ b/version.gradle @@ -16,10 +16,10 @@ allprojects { slf4jVersion = '1.7.36' logbackVersion = '1.2.11' mockitoVersion = '4.5.1' - pgpainlessVersion = '1.2.1' - pgpainlessCertDVersion = '0.1.2' + pgpainlessVersion = '1.3.12' + pgpainlessCertDVersion = '0.2.1' picocliVersion = '4.6.3' - certDJavaVersion = '0.1.1' + certDJavaVersion = '0.2.1' zbase32Version = '1.0.0' } } diff --git a/wkd-java-cli/src/main/java/pgp/wkd/cli/PGPainlessCertificateParser.java b/wkd-java-cli/src/main/java/pgp/wkd/cli/PGPainlessCertificateParser.java index 8aeb723..15a89fa 100644 --- a/wkd-java-cli/src/main/java/pgp/wkd/cli/PGPainlessCertificateParser.java +++ b/wkd-java-cli/src/main/java/pgp/wkd/cli/PGPainlessCertificateParser.java @@ -10,7 +10,7 @@ import org.bouncycastle.openpgp.PGPPublicKeyRingCollection; import org.pgpainless.PGPainless; import org.pgpainless.certificate_store.CertificateFactory; import org.pgpainless.key.info.KeyRingInfo; -import pgp.certificate_store.Certificate; +import pgp.certificate_store.certificate.Certificate; import pgp.wkd.CertificateAndUserIds; import pgp.wkd.discovery.CertificateParser; @@ -27,7 +27,7 @@ public class PGPainlessCertificateParser implements CertificateParser { PGPPublicKeyRingCollection certificates = PGPainless.readKeyRing().publicKeyRingCollection(inputStream); for (PGPPublicKeyRing certificate : certificates) { KeyRingInfo info = PGPainless.inspectKeyRing(certificate); - Certificate parsedCert = CertificateFactory.certificateFromPublicKeyRing(certificate); + Certificate parsedCert = CertificateFactory.certificateFromPublicKeyRing(certificate, 0L); List userIds = info.getValidAndExpiredUserIds(); certificatesAndUserIds.add(new CertificateAndUserIds(parsedCert, userIds)); } diff --git a/wkd-java/src/main/java/pgp/wkd/CertificateAndUserIds.java b/wkd-java/src/main/java/pgp/wkd/CertificateAndUserIds.java index 5c0b606..f964805 100644 --- a/wkd-java/src/main/java/pgp/wkd/CertificateAndUserIds.java +++ b/wkd-java/src/main/java/pgp/wkd/CertificateAndUserIds.java @@ -4,7 +4,7 @@ package pgp.wkd; -import pgp.certificate_store.Certificate; +import pgp.certificate_store.certificate.Certificate; import java.util.ArrayList; import java.util.List; diff --git a/wkd-java/src/main/java/pgp/wkd/RejectedCertificate.java b/wkd-java/src/main/java/pgp/wkd/RejectedCertificate.java index 7a227b4..f96b85e 100644 --- a/wkd-java/src/main/java/pgp/wkd/RejectedCertificate.java +++ b/wkd-java/src/main/java/pgp/wkd/RejectedCertificate.java @@ -4,7 +4,8 @@ package pgp.wkd; -import pgp.certificate_store.Certificate; + +import pgp.certificate_store.certificate.Certificate; /** * A rejected OpenPGP certificate. diff --git a/wkd-java/src/main/java/pgp/wkd/discovery/DiscoveryResponse.java b/wkd-java/src/main/java/pgp/wkd/discovery/DiscoveryResponse.java index dc2ab99..d48a2ce 100644 --- a/wkd-java/src/main/java/pgp/wkd/discovery/DiscoveryResponse.java +++ b/wkd-java/src/main/java/pgp/wkd/discovery/DiscoveryResponse.java @@ -4,7 +4,7 @@ package pgp.wkd.discovery; -import pgp.certificate_store.Certificate; +import pgp.certificate_store.certificate.Certificate; import pgp.wkd.RejectedCertificate; import pgp.wkd.WKDAddress; import pgp.wkd.exception.MissingPolicyFileException; diff --git a/wkd-java/src/main/java/pgp/wkd/discovery/DiscoveryResult.java b/wkd-java/src/main/java/pgp/wkd/discovery/DiscoveryResult.java index 0030812..6946891 100644 --- a/wkd-java/src/main/java/pgp/wkd/discovery/DiscoveryResult.java +++ b/wkd-java/src/main/java/pgp/wkd/discovery/DiscoveryResult.java @@ -4,7 +4,7 @@ package pgp.wkd.discovery; -import pgp.certificate_store.Certificate; +import pgp.certificate_store.certificate.Certificate; import pgp.wkd.exception.CertNotFetchableException; import javax.annotation.Nonnull; diff --git a/wkd-java/src/main/java/pgp/wkd/discovery/ValidatingCertificateDiscoverer.java b/wkd-java/src/main/java/pgp/wkd/discovery/ValidatingCertificateDiscoverer.java index 2613ce8..09f6984 100644 --- a/wkd-java/src/main/java/pgp/wkd/discovery/ValidatingCertificateDiscoverer.java +++ b/wkd-java/src/main/java/pgp/wkd/discovery/ValidatingCertificateDiscoverer.java @@ -4,7 +4,7 @@ package pgp.wkd.discovery; -import pgp.certificate_store.Certificate; +import pgp.certificate_store.certificate.Certificate; import pgp.wkd.CertificateAndUserIds; import pgp.wkd.exception.MissingPolicyFileException; import pgp.wkd.exception.RejectedCertificateException; diff --git a/wkd-test-suite/src/main/java/pgp/wkd/test_suite/AbstractTestSuiteGenerator.java b/wkd-test-suite/src/main/java/pgp/wkd/test_suite/AbstractTestSuiteGenerator.java index a27af24..99ad9b5 100644 --- a/wkd-test-suite/src/main/java/pgp/wkd/test_suite/AbstractTestSuiteGenerator.java +++ b/wkd-test-suite/src/main/java/pgp/wkd/test_suite/AbstractTestSuiteGenerator.java @@ -38,7 +38,7 @@ public class AbstractTestSuiteGenerator { } protected PGPSecretKeyRing secretKey(String userId) throws PGPException, InvalidAlgorithmParameterException, NoSuchAlgorithmException { - PGPSecretKeyRing secretKeys = PGPainless.generateKeyRing().modernKeyRing(userId, null); + PGPSecretKeyRing secretKeys = PGPainless.generateKeyRing().modernKeyRing(userId); return secretKeys; } From df2e4fb61e38b71cf29bae1d9f41ed60ea6c785b Mon Sep 17 00:00:00 2001 From: Paul Schaub Date: Fri, 25 Nov 2022 16:19:40 +0100 Subject: [PATCH 36/40] Update CHANGELOG --- CHANGELOG.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5b56905..c04805c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,11 @@ SPDX-License-Identifier: Apache-2.0 # Changelog +## 0.1.2-SNAPSHOT +- Bump `pgpainless-core` to `1.13.2` +- Bump `cert-d-pgpainless` to `0.2.1` +- Bump `cert-d-java` to `0.2.1` + ## 0.1.1 - Bump `pgpainless-core` to `1.2.1` - Bump `cert-d-pgpainless` to `0.1.2` From 873ca84af8f1d4567f21d4ee098c439f3c83e194 Mon Sep 17 00:00:00 2001 From: Paul Schaub Date: Fri, 7 Jul 2023 12:34:16 +0200 Subject: [PATCH 37/40] Bump PGPainless dependencies Bump pgpainless-core to 1.5.6 Bump cert-d-pgpainless to 0.2.2 Bump cert-d-java to 0.2.2 --- CHANGELOG.md | 6 +++--- version.gradle | 6 +++--- .../java/pgp/wkd/cli/PGPainlessCertificateParser.java | 9 ++++++--- 3 files changed, 12 insertions(+), 9 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c04805c..82c97ae 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,9 +7,9 @@ SPDX-License-Identifier: Apache-2.0 # Changelog ## 0.1.2-SNAPSHOT -- Bump `pgpainless-core` to `1.13.2` -- Bump `cert-d-pgpainless` to `0.2.1` -- Bump `cert-d-java` to `0.2.1` +- Bump `pgpainless-core` to `1.5.6` +- Bump `cert-d-pgpainless` to `0.2.2` +- Bump `cert-d-java` to `0.2.2` ## 0.1.1 - Bump `pgpainless-core` to `1.2.1` diff --git a/version.gradle b/version.gradle index 6e2a3c4..204027e 100644 --- a/version.gradle +++ b/version.gradle @@ -16,10 +16,10 @@ allprojects { slf4jVersion = '1.7.36' logbackVersion = '1.2.11' mockitoVersion = '4.5.1' - pgpainlessVersion = '1.3.12' - pgpainlessCertDVersion = '0.2.1' + pgpainlessVersion = '1.5.6' + pgpainlessCertDVersion = '0.2.2' picocliVersion = '4.6.3' - certDJavaVersion = '0.2.1' + certDJavaVersion = '0.2.2' zbase32Version = '1.0.0' } } diff --git a/wkd-java-cli/src/main/java/pgp/wkd/cli/PGPainlessCertificateParser.java b/wkd-java-cli/src/main/java/pgp/wkd/cli/PGPainlessCertificateParser.java index 15a89fa..245ca33 100644 --- a/wkd-java-cli/src/main/java/pgp/wkd/cli/PGPainlessCertificateParser.java +++ b/wkd-java-cli/src/main/java/pgp/wkd/cli/PGPainlessCertificateParser.java @@ -6,9 +6,9 @@ package pgp.wkd.cli; import org.bouncycastle.openpgp.PGPException; import org.bouncycastle.openpgp.PGPPublicKeyRing; -import org.bouncycastle.openpgp.PGPPublicKeyRingCollection; import org.pgpainless.PGPainless; import org.pgpainless.certificate_store.CertificateFactory; +import org.pgpainless.key.collection.PGPKeyRingCollection; import org.pgpainless.key.info.KeyRingInfo; import pgp.certificate_store.certificate.Certificate; import pgp.wkd.CertificateAndUserIds; @@ -24,8 +24,11 @@ public class PGPainlessCertificateParser implements CertificateParser { public List read(InputStream inputStream) throws IOException { List certificatesAndUserIds = new ArrayList<>(); try { - PGPPublicKeyRingCollection certificates = PGPainless.readKeyRing().publicKeyRingCollection(inputStream); - for (PGPPublicKeyRing certificate : certificates) { + PGPKeyRingCollection keyMaterial = PGPainless.readKeyRing().keyRingCollection(inputStream, true); + if (keyMaterial.getPGPSecretKeyRingCollection().size() != 0) { + throw new PGPException("Secret key material encountered!"); + } + for (PGPPublicKeyRing certificate : keyMaterial.getPgpPublicKeyRingCollection()) { KeyRingInfo info = PGPainless.inspectKeyRing(certificate); Certificate parsedCert = CertificateFactory.certificateFromPublicKeyRing(certificate, 0L); List userIds = info.getValidAndExpiredUserIds(); From 81d0c73adca5d0da8082225cf6f2a691c7edb4be Mon Sep 17 00:00:00 2001 From: Paul Schaub Date: Fri, 7 Jul 2023 12:35:49 +0200 Subject: [PATCH 38/40] Bump jackson-databind to 2.15.2 --- version.gradle | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/version.gradle b/version.gradle index 204027e..2938355 100644 --- a/version.gradle +++ b/version.gradle @@ -8,8 +8,8 @@ allprojects { isSnapshot = true minAndroidSdk = 10 javaSourceCompatibility = 1.8 - jacksonDataBindVersion = '2.13.2.2' - jacksonDataFormatXmlVersion = '2.13.2' + jacksonDataBindVersion = '2.15.2' + jacksonDataFormatXmlVersion = '2.15.2' junitVersion = '5.8.2' junitSysExitVersion = '1.1.2' jsrVersion = '3.0.2' From 2a21833b1919b4c1ea7d77fc13acf92c75201b17 Mon Sep 17 00:00:00 2001 From: Paul Schaub Date: Fri, 7 Jul 2023 12:38:07 +0200 Subject: [PATCH 39/40] WKD-Java 0.1.2 --- CHANGELOG.md | 2 +- version.gradle | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 82c97ae..ea017bc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,7 +6,7 @@ SPDX-License-Identifier: Apache-2.0 # Changelog -## 0.1.2-SNAPSHOT +## 0.1.2 - Bump `pgpainless-core` to `1.5.6` - Bump `cert-d-pgpainless` to `0.2.2` - Bump `cert-d-java` to `0.2.2` diff --git a/version.gradle b/version.gradle index 2938355..ba999aa 100644 --- a/version.gradle +++ b/version.gradle @@ -5,7 +5,7 @@ allprojects { ext { shortVersion = '0.1.2' - isSnapshot = true + isSnapshot = false minAndroidSdk = 10 javaSourceCompatibility = 1.8 jacksonDataBindVersion = '2.15.2' From 5b6b2f08468ae809a747aca27bc663b0ac22c39a Mon Sep 17 00:00:00 2001 From: Paul Schaub Date: Fri, 7 Jul 2023 12:40:36 +0200 Subject: [PATCH 40/40] WKD-Java 0.1.3-SNAPSHOT --- version.gradle | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/version.gradle b/version.gradle index ba999aa..b13e945 100644 --- a/version.gradle +++ b/version.gradle @@ -4,8 +4,8 @@ allprojects { ext { - shortVersion = '0.1.2' - isSnapshot = false + shortVersion = '0.1.3' + isSnapshot = true minAndroidSdk = 10 javaSourceCompatibility = 1.8 jacksonDataBindVersion = '2.15.2'