diff --git a/build.gradle b/build.gradle index 6e086754..eb4ff723 100644 --- a/build.gradle +++ b/build.gradle @@ -258,6 +258,18 @@ task javadocAll(type: Javadoc) { ] 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. * diff --git a/pgpainless-cli/src/main/java/org/pgpainless/cli/PGPainlessCLI.java b/pgpainless-cli/src/main/java/org/pgpainless/cli/PGPainlessCLI.java index 35791a3e..938bf1aa 100644 --- a/pgpainless-cli/src/main/java/org/pgpainless/cli/PGPainlessCLI.java +++ b/pgpainless-cli/src/main/java/org/pgpainless/cli/PGPainlessCLI.java @@ -18,6 +18,10 @@ public class PGPainlessCLI { SopCLI.setSopInstance(new SOPImpl()); } + /** + * Main method of the CLI application. + * @param args arguments + */ public static void main(String[] args) { int result = execute(args); if (result != 0) { @@ -25,6 +29,12 @@ public class PGPainlessCLI { } } + /** + * Execute the given command and return the exit code of the program. + * + * @param args command string array (e.g. ["pgpainless-cli", "generate-key", "Alice"]) + * @return exit code + */ public static int execute(String... args) { return SopCLI.execute(args); } diff --git a/pgpainless-sop/src/main/java/org/pgpainless/sop/ArmorImpl.java b/pgpainless-sop/src/main/java/org/pgpainless/sop/ArmorImpl.java index d65c2925..daee3a9b 100644 --- a/pgpainless-sop/src/main/java/org/pgpainless/sop/ArmorImpl.java +++ b/pgpainless-sop/src/main/java/org/pgpainless/sop/ArmorImpl.java @@ -18,6 +18,9 @@ import sop.enums.ArmorLabel; import sop.exception.SOPGPException; import sop.operation.Armor; +/** + * Implementation of the
armor
operation using PGPainless. + */ public class ArmorImpl implements Armor { @Override diff --git a/pgpainless-sop/src/main/java/org/pgpainless/sop/DearmorImpl.java b/pgpainless-sop/src/main/java/org/pgpainless/sop/DearmorImpl.java index f0b21a6d..29483437 100644 --- a/pgpainless-sop/src/main/java/org/pgpainless/sop/DearmorImpl.java +++ b/pgpainless-sop/src/main/java/org/pgpainless/sop/DearmorImpl.java @@ -15,6 +15,9 @@ import sop.Ready; import sop.exception.SOPGPException; import sop.operation.Dearmor; +/** + * Implementation of the
dearmor
operation using PGPainless. + */ public class DearmorImpl implements Dearmor { @Override diff --git a/pgpainless-sop/src/main/java/org/pgpainless/sop/DecryptImpl.java b/pgpainless-sop/src/main/java/org/pgpainless/sop/DecryptImpl.java index 867024ef..f7876799 100644 --- a/pgpainless-sop/src/main/java/org/pgpainless/sop/DecryptImpl.java +++ b/pgpainless-sop/src/main/java/org/pgpainless/sop/DecryptImpl.java @@ -34,6 +34,9 @@ import sop.Verification; import sop.exception.SOPGPException; import sop.operation.Decrypt; +/** + * Implementation of the
decrypt
operation using PGPainless. + */ public class DecryptImpl implements Decrypt { private final ConsumerOptions consumerOptions = ConsumerOptions.get(); diff --git a/pgpainless-sop/src/main/java/org/pgpainless/sop/DetachedSignImpl.java b/pgpainless-sop/src/main/java/org/pgpainless/sop/DetachedSignImpl.java index f6ab8172..c32cb219 100644 --- a/pgpainless-sop/src/main/java/org/pgpainless/sop/DetachedSignImpl.java +++ b/pgpainless-sop/src/main/java/org/pgpainless/sop/DetachedSignImpl.java @@ -36,6 +36,9 @@ import sop.enums.SignAs; import sop.exception.SOPGPException; import sop.operation.DetachedSign; +/** + * Implementation of the
sign
operation using PGPainless. + */ public class DetachedSignImpl implements DetachedSign { private boolean armor = true; diff --git a/pgpainless-sop/src/main/java/org/pgpainless/sop/DetachedVerifyImpl.java b/pgpainless-sop/src/main/java/org/pgpainless/sop/DetachedVerifyImpl.java index 1ed43941..93ad398c 100644 --- a/pgpainless-sop/src/main/java/org/pgpainless/sop/DetachedVerifyImpl.java +++ b/pgpainless-sop/src/main/java/org/pgpainless/sop/DetachedVerifyImpl.java @@ -23,6 +23,9 @@ import sop.Verification; import sop.exception.SOPGPException; import sop.operation.DetachedVerify; +/** + * Implementation of the
verify
operation using PGPainless. + */ public class DetachedVerifyImpl implements DetachedVerify { private final ConsumerOptions options = ConsumerOptions.get(); diff --git a/pgpainless-sop/src/main/java/org/pgpainless/sop/EncryptImpl.java b/pgpainless-sop/src/main/java/org/pgpainless/sop/EncryptImpl.java index 61a46731..1874d9e1 100644 --- a/pgpainless-sop/src/main/java/org/pgpainless/sop/EncryptImpl.java +++ b/pgpainless-sop/src/main/java/org/pgpainless/sop/EncryptImpl.java @@ -34,6 +34,9 @@ import sop.exception.SOPGPException; import sop.operation.Encrypt; import sop.util.ProxyOutputStream; +/** + * Implementation of the
encrypt
operation using PGPainless. + */ public class EncryptImpl implements Encrypt { EncryptionOptions encryptionOptions = EncryptionOptions.get(); diff --git a/pgpainless-sop/src/main/java/org/pgpainless/sop/ExtractCertImpl.java b/pgpainless-sop/src/main/java/org/pgpainless/sop/ExtractCertImpl.java index 5be3ad31..be7fc9c3 100644 --- a/pgpainless-sop/src/main/java/org/pgpainless/sop/ExtractCertImpl.java +++ b/pgpainless-sop/src/main/java/org/pgpainless/sop/ExtractCertImpl.java @@ -19,6 +19,9 @@ import sop.Ready; import sop.exception.SOPGPException; import sop.operation.ExtractCert; +/** + * Implementation of the
extract-cert
operation using PGPainless. + */ public class ExtractCertImpl implements ExtractCert { private boolean armor = true; diff --git a/pgpainless-sop/src/main/java/org/pgpainless/sop/GenerateKeyImpl.java b/pgpainless-sop/src/main/java/org/pgpainless/sop/GenerateKeyImpl.java index 70561693..da99c854 100644 --- a/pgpainless-sop/src/main/java/org/pgpainless/sop/GenerateKeyImpl.java +++ b/pgpainless-sop/src/main/java/org/pgpainless/sop/GenerateKeyImpl.java @@ -24,6 +24,9 @@ import sop.Ready; import sop.exception.SOPGPException; import sop.operation.GenerateKey; +/** + * Implementation of the
generate-key
operation using PGPainless. + */ public class GenerateKeyImpl implements GenerateKey { private boolean armor = true; diff --git a/pgpainless-sop/src/main/java/org/pgpainless/sop/InlineDetachImpl.java b/pgpainless-sop/src/main/java/org/pgpainless/sop/InlineDetachImpl.java index 178018aa..bafc2794 100644 --- a/pgpainless-sop/src/main/java/org/pgpainless/sop/InlineDetachImpl.java +++ b/pgpainless-sop/src/main/java/org/pgpainless/sop/InlineDetachImpl.java @@ -30,6 +30,9 @@ import sop.Signatures; import sop.exception.SOPGPException; import sop.operation.InlineDetach; +/** + * Implementation of the
inline-detach
operation using PGPainless. + */ public class InlineDetachImpl implements InlineDetach { private boolean armor = true; diff --git a/pgpainless-sop/src/main/java/org/pgpainless/sop/InlineSignImpl.java b/pgpainless-sop/src/main/java/org/pgpainless/sop/InlineSignImpl.java index 82c3603b..dd4ab0cf 100644 --- a/pgpainless-sop/src/main/java/org/pgpainless/sop/InlineSignImpl.java +++ b/pgpainless-sop/src/main/java/org/pgpainless/sop/InlineSignImpl.java @@ -29,6 +29,9 @@ import sop.enums.InlineSignAs; import sop.exception.SOPGPException; import sop.operation.InlineSign; +/** + * Implementation of the
inline-sign
operation using PGPainless. + */ public class InlineSignImpl implements InlineSign { private boolean armor = true; diff --git a/pgpainless-sop/src/main/java/org/pgpainless/sop/InlineVerifyImpl.java b/pgpainless-sop/src/main/java/org/pgpainless/sop/InlineVerifyImpl.java index f33f718b..7665a7bb 100644 --- a/pgpainless-sop/src/main/java/org/pgpainless/sop/InlineVerifyImpl.java +++ b/pgpainless-sop/src/main/java/org/pgpainless/sop/InlineVerifyImpl.java @@ -26,6 +26,9 @@ import sop.Verification; import sop.exception.SOPGPException; import sop.operation.InlineVerify; +/** + * Implementation of the
inline-verify
operation using PGPainless. + */ public class InlineVerifyImpl implements InlineVerify { private final ConsumerOptions options = ConsumerOptions.get(); diff --git a/pgpainless-sop/src/main/java/org/pgpainless/sop/KeyReader.java b/pgpainless-sop/src/main/java/org/pgpainless/sop/KeyReader.java index 5e6f3a7d..036ec126 100644 --- a/pgpainless-sop/src/main/java/org/pgpainless/sop/KeyReader.java +++ b/pgpainless-sop/src/main/java/org/pgpainless/sop/KeyReader.java @@ -13,6 +13,9 @@ import sop.exception.SOPGPException; import java.io.IOException; import java.io.InputStream; +/** + * Reader for OpenPGP keys and certificates with error matching according to the SOP spec. + */ class KeyReader { static PGPSecretKeyRingCollection readSecretKeys(InputStream keyInputStream, boolean requireContent) diff --git a/pgpainless-sop/src/main/java/org/pgpainless/sop/MatchMakingSecretKeyRingProtector.java b/pgpainless-sop/src/main/java/org/pgpainless/sop/MatchMakingSecretKeyRingProtector.java index df54583e..0b88cb5d 100644 --- a/pgpainless-sop/src/main/java/org/pgpainless/sop/MatchMakingSecretKeyRingProtector.java +++ b/pgpainless-sop/src/main/java/org/pgpainless/sop/MatchMakingSecretKeyRingProtector.java @@ -20,12 +20,21 @@ import org.pgpainless.key.protection.SecretKeyRingProtector; import org.pgpainless.key.protection.UnlockSecretKey; import org.pgpainless.util.Passphrase; +/** + * Implementation of the {@link SecretKeyRingProtector} which can be handed passphrases and keys separately, + * and which then matches up passphrases and keys when needed. + */ public class MatchMakingSecretKeyRingProtector implements SecretKeyRingProtector { private final Set passphrases = new HashSet<>(); private final Set keys = new HashSet<>(); private final CachingSecretKeyRingProtector protector = new CachingSecretKeyRingProtector(); + /** + * Add a single passphrase to the protector. + * + * @param passphrase passphrase + */ public void addPassphrase(Passphrase passphrase) { if (passphrase.isEmpty()) { return; @@ -46,6 +55,11 @@ public class MatchMakingSecretKeyRingProtector implements SecretKeyRingProtector } } + /** + * Add a single {@link PGPSecretKeyRing} to the protector. + * + * @param key secret keys + */ public void addSecretKey(PGPSecretKeyRing key) { if (!keys.add(key)) { return; @@ -89,6 +103,9 @@ public class MatchMakingSecretKeyRingProtector implements SecretKeyRingProtector return protector.getEncryptor(keyId); } + /** + * Clear all known passphrases from the protector. + */ public void clear() { for (Passphrase passphrase : passphrases) { passphrase.clear(); diff --git a/pgpainless-sop/src/main/java/org/pgpainless/sop/SOPImpl.java b/pgpainless-sop/src/main/java/org/pgpainless/sop/SOPImpl.java index 28772f10..a49f7e34 100644 --- a/pgpainless-sop/src/main/java/org/pgpainless/sop/SOPImpl.java +++ b/pgpainless-sop/src/main/java/org/pgpainless/sop/SOPImpl.java @@ -19,6 +19,12 @@ import sop.operation.InlineSign; import sop.operation.InlineVerify; import sop.operation.Version; +/** + * Implementation of the
sop
API using PGPainless. + *
 {@code
+ * SOP sop = new SOPImpl();
+ * }
+ */ public class SOPImpl implements SOP { static { 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 dbd1cf35..4449af10 100644 --- a/pgpainless-sop/src/main/java/org/pgpainless/sop/VersionImpl.java +++ b/pgpainless-sop/src/main/java/org/pgpainless/sop/VersionImpl.java @@ -12,6 +12,9 @@ import java.util.Properties; import org.bouncycastle.jce.provider.BouncyCastleProvider; import sop.operation.Version; +/** + * Implementation of the
version
operation using PGPainless. + */ public class VersionImpl implements Version { // draft version