diff --git a/pgpainless-sop/README.md b/pgpainless-sop/README.md index e7c93de5..7cdf1ef3 100644 --- a/pgpainless-sop/README.md +++ b/pgpainless-sop/README.md @@ -6,7 +6,7 @@ SPDX-License-Identifier: Apache-2.0 # PGPainless-SOP -[![Spec Revision: 8](https://img.shields.io/badge/Spec%20Revision-8-blue)](https://datatracker.ietf.org/doc/draft-dkg-openpgp-stateless-cli/) +[![Spec Revision: 10](https://img.shields.io/badge/Spec%20Revision-10-blue)](https://datatracker.ietf.org/doc/draft-dkg-openpgp-stateless-cli/) [![Maven Central](https://badgen.net/maven/v/maven-central/org.pgpainless/pgpainless-sop)](https://search.maven.org/artifact/org.pgpainless/pgpainless-sop) [![javadoc](https://javadoc.io/badge2/org.pgpainless/pgpainless-sop/javadoc.svg)](https://javadoc.io/doc/org.pgpainless/pgpainless-sop) diff --git a/pgpainless-sop/src/main/java/org/pgpainless/sop/SOPVImpl.java b/pgpainless-sop/src/main/java/org/pgpainless/sop/SOPVImpl.java new file mode 100644 index 00000000..c1167a3b --- /dev/null +++ b/pgpainless-sop/src/main/java/org/pgpainless/sop/SOPVImpl.java @@ -0,0 +1,40 @@ +// SPDX-FileCopyrightText: 2024 Paul Schaub +// +// SPDX-License-Identifier: Apache-2.0 + +package org.pgpainless.sop; + +import org.jetbrains.annotations.NotNull; +import org.pgpainless.util.ArmoredOutputStreamFactory; +import sop.SOPV; +import sop.operation.DetachedVerify; +import sop.operation.InlineVerify; +import sop.operation.Version; + +/** + * Implementation of the
sopv
interface subset using PGPainless. + */ +public class SOPVImpl implements SOPV { + + static { + ArmoredOutputStreamFactory.setVersionInfo(null); + } + + @NotNull + @Override + public DetachedVerify detachedVerify() { + return new DetachedVerifyImpl(); + } + + @NotNull + @Override + public InlineVerify inlineVerify() { + return new InlineVerifyImpl(); + } + + @NotNull + @Override + public Version version() { + return new VersionImpl(); + } +} diff --git a/pgpainless-sop/src/main/java/org/pgpainless/sop/VersionImpl.java b/pgpainless-sop/src/main/java/org/pgpainless/sop/VersionImpl.java index d7514861..3d3dd597 100644 --- a/pgpainless-sop/src/main/java/org/pgpainless/sop/VersionImpl.java +++ b/pgpainless-sop/src/main/java/org/pgpainless/sop/VersionImpl.java @@ -10,6 +10,8 @@ import java.util.Locale; import java.util.Properties; import org.bouncycastle.jce.provider.BouncyCastleProvider; +import org.jetbrains.annotations.NotNull; +import sop.exception.SOPGPException; import sop.operation.Version; import javax.annotation.Nonnull; @@ -20,7 +22,9 @@ import javax.annotation.Nonnull; public class VersionImpl implements Version { // draft version - private static final int SOP_VERSION = 8; + private static final int SOP_VERSION = 10; + + private static final String SOPV_VERSION = "1.0"; @Override @Nonnull @@ -86,4 +90,9 @@ public class VersionImpl implements Version { return null; } + @NotNull + @Override + public String getSopVVersion() throws SOPGPException.UnsupportedOption { + return SOPV_VERSION; + } } diff --git a/pgpainless-sop/src/test/java/org/pgpainless/sop/VersionTest.java b/pgpainless-sop/src/test/java/org/pgpainless/sop/VersionTest.java index 32d2c2e0..825b5e86 100644 --- a/pgpainless-sop/src/test/java/org/pgpainless/sop/VersionTest.java +++ b/pgpainless-sop/src/test/java/org/pgpainless/sop/VersionTest.java @@ -72,4 +72,11 @@ public class VersionTest { assertTrue(fullSopSpecVersion.endsWith(incompletenessRemarks)); } } + + @Test + public void testGetSopVVersion() { + String sopVVersion = sop.version().getSopVVersion(); + assertNotNull(sopVVersion); + assertTrue(sopVVersion.matches("\\d+\\.\\d+(\\.\\d+)*")); // X.Y or X.Y.Z... etc. + } } diff --git a/version.gradle b/version.gradle index 4ec395ef..f04e1457 100644 --- a/version.gradle +++ b/version.gradle @@ -14,6 +14,6 @@ allprojects { logbackVersion = '1.2.13' mockitoVersion = '4.5.1' slf4jVersion = '1.7.36' - sopJavaVersion = '8.0.1' + sopJavaVersion = '10.0.0-SNAPSHOT' } }