From a50c2d97142c30b492d7a57a6a352ef957cfa3d7 Mon Sep 17 00:00:00 2001 From: Paul Schaub Date: Mon, 16 Jan 2023 20:15:57 +0100 Subject: [PATCH] More missing javadoc --- .../pgpainless/algorithm/AEADAlgorithm.java | 5 +++++ .../protection/BaseSecretKeyRingProtector.java | 16 ++++++++++++++++ .../key/protection/SecretKeyRingProtector.java | 6 ++++++ .../java/org/pgpainless/util/ArmorUtils.java | 18 ++++++++++++++++++ .../util/ArmoredInputStreamFactory.java | 11 +++++++++++ .../util/ArmoredOutputStreamFactory.java | 10 ++++++++++ 6 files changed, 66 insertions(+) diff --git a/pgpainless-core/src/main/java/org/pgpainless/algorithm/AEADAlgorithm.java b/pgpainless-core/src/main/java/org/pgpainless/algorithm/AEADAlgorithm.java index 106d6bff..a5885005 100644 --- a/pgpainless-core/src/main/java/org/pgpainless/algorithm/AEADAlgorithm.java +++ b/pgpainless-core/src/main/java/org/pgpainless/algorithm/AEADAlgorithm.java @@ -41,6 +41,11 @@ public enum AEADAlgorithm { this.tagLength = tagLength; } + /** + * Return the ID of the AEAD algorithm. + * + * @return algorithm ID + */ public int getAlgorithmId() { return algorithmId; } diff --git a/pgpainless-core/src/main/java/org/pgpainless/key/protection/BaseSecretKeyRingProtector.java b/pgpainless-core/src/main/java/org/pgpainless/key/protection/BaseSecretKeyRingProtector.java index 5b545c12..1a31d0e8 100644 --- a/pgpainless-core/src/main/java/org/pgpainless/key/protection/BaseSecretKeyRingProtector.java +++ b/pgpainless-core/src/main/java/org/pgpainless/key/protection/BaseSecretKeyRingProtector.java @@ -13,15 +13,31 @@ import org.pgpainless.util.Passphrase; import javax.annotation.Nullable; +/** + * Basic {@link SecretKeyRingProtector} implementation that respects the users {@link KeyRingProtectionSettings} when + * encrypting keys. + */ public class BaseSecretKeyRingProtector implements SecretKeyRingProtector { private final SecretKeyPassphraseProvider passphraseProvider; private final KeyRingProtectionSettings protectionSettings; + /** + * Constructor that uses the given {@link SecretKeyPassphraseProvider} to retrieve passphrases and PGPainless' + * default {@link KeyRingProtectionSettings}. + * + * @param passphraseProvider provider for passphrases + */ public BaseSecretKeyRingProtector(SecretKeyPassphraseProvider passphraseProvider) { this(passphraseProvider, KeyRingProtectionSettings.secureDefaultSettings()); } + /** + * Constructor that uses the given {@link SecretKeyPassphraseProvider} and {@link KeyRingProtectionSettings}. + * + * @param passphraseProvider provider for passphrases + * @param protectionSettings protection settings + */ public BaseSecretKeyRingProtector(SecretKeyPassphraseProvider passphraseProvider, KeyRingProtectionSettings protectionSettings) { this.passphraseProvider = passphraseProvider; this.protectionSettings = protectionSettings; diff --git a/pgpainless-core/src/main/java/org/pgpainless/key/protection/SecretKeyRingProtector.java b/pgpainless-core/src/main/java/org/pgpainless/key/protection/SecretKeyRingProtector.java index ee461a4e..d7ed5c85 100644 --- a/pgpainless-core/src/main/java/org/pgpainless/key/protection/SecretKeyRingProtector.java +++ b/pgpainless-core/src/main/java/org/pgpainless/key/protection/SecretKeyRingProtector.java @@ -29,6 +29,12 @@ import org.pgpainless.util.Passphrase; */ public interface SecretKeyRingProtector { + /** + * Returns true, if the protector has a passphrase for the key with the given key-id. + * + * @param keyId key id + * @return true if it has a passphrase, false otherwise + */ boolean hasPassphraseFor(Long keyId); /** diff --git a/pgpainless-core/src/main/java/org/pgpainless/util/ArmorUtils.java b/pgpainless-core/src/main/java/org/pgpainless/util/ArmorUtils.java index b3e60023..87170638 100644 --- a/pgpainless-core/src/main/java/org/pgpainless/util/ArmorUtils.java +++ b/pgpainless-core/src/main/java/org/pgpainless/util/ArmorUtils.java @@ -33,15 +33,33 @@ import org.pgpainless.algorithm.HashAlgorithm; import org.pgpainless.decryption_verification.OpenPgpInputStream; import org.pgpainless.key.OpenPgpFingerprint; +/** + * Utility class for dealing with ASCII armored OpenPGP data. + */ public final class ArmorUtils { // MessageIDs are 32 printable characters private static final Pattern PATTERN_MESSAGE_ID = Pattern.compile("^\\S{32}$"); + /** + * Constant armor key for comments. + */ public static final String HEADER_COMMENT = "Comment"; + /** + * Constant armor key for program versions. + */ public static final String HEADER_VERSION = "Version"; + /** + * Constant armor key for message IDs. Useful for split messages. + */ public static final String HEADER_MESSAGEID = "MessageID"; + /** + * Constant armor key for used hash algorithms in clearsigned messages. + */ public static final String HEADER_HASH = "Hash"; + /** + * Constant armor key for message character sets. + */ public static final String HEADER_CHARSET = "Charset"; private ArmorUtils() { diff --git a/pgpainless-core/src/main/java/org/pgpainless/util/ArmoredInputStreamFactory.java b/pgpainless-core/src/main/java/org/pgpainless/util/ArmoredInputStreamFactory.java index 0c5ceeaf..e48fb4c0 100644 --- a/pgpainless-core/src/main/java/org/pgpainless/util/ArmoredInputStreamFactory.java +++ b/pgpainless-core/src/main/java/org/pgpainless/util/ArmoredInputStreamFactory.java @@ -9,12 +9,23 @@ import java.io.InputStream; import org.bouncycastle.bcpg.ArmoredInputStream; +/** + * Factory class for instantiating preconfigured {@link ArmoredInputStream ArmoredInputStreams}. + * {@link #get(InputStream)} will return an {@link ArmoredInputStream} that is set up to properly detect CRC errors. + */ public final class ArmoredInputStreamFactory { private ArmoredInputStreamFactory() { } + /** + * Return an instance of {@link ArmoredInputStream} which will detect CRC errors. + * + * @param inputStream input stream + * @return armored input stream + * @throws IOException in case of an IO error + */ public static ArmoredInputStream get(InputStream inputStream) throws IOException { if (inputStream instanceof CRCingArmoredInputStreamWrapper) { return (ArmoredInputStream) inputStream; diff --git a/pgpainless-core/src/main/java/org/pgpainless/util/ArmoredOutputStreamFactory.java b/pgpainless-core/src/main/java/org/pgpainless/util/ArmoredOutputStreamFactory.java index fb2cd4f5..f61bacb1 100644 --- a/pgpainless-core/src/main/java/org/pgpainless/util/ArmoredOutputStreamFactory.java +++ b/pgpainless-core/src/main/java/org/pgpainless/util/ArmoredOutputStreamFactory.java @@ -15,6 +15,9 @@ import org.pgpainless.encryption_signing.ProducerOptions; */ public final class ArmoredOutputStreamFactory { + /** + * Name of the program. + */ public static final String PGPAINLESS = "PGPainless"; private static String version = PGPAINLESS; private static String[] comment = new String[0]; @@ -42,6 +45,13 @@ public final class ArmoredOutputStreamFactory { return armoredOutputStream; } + /** + * Return an instance of the {@link ArmoredOutputStream} which might have pre-populated armor headers. + * + * @param outputStream output stream + * @param options options + * @return armored output stream + */ public static ArmoredOutputStream get(OutputStream outputStream, ProducerOptions options) { if (options.isHideArmorHeaders()) { ArmoredOutputStream armorOut = new ArmoredOutputStream(outputStream);