From 3173ddbc45b836ba291fc8856241bf6bf8459c0f Mon Sep 17 00:00:00 2001 From: Paul Schaub Date: Sun, 29 Nov 2020 19:08:52 +0100 Subject: [PATCH] Add static factory methods for SecretKeyRingProtector implementations --- .../protection/SecretKeyRingProtector.java | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) 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 83672913..4d27ed02 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 @@ -15,11 +15,15 @@ */ package org.pgpainless.key.protection; +import java.util.Map; import javax.annotation.Nullable; import org.bouncycastle.openpgp.PGPException; +import org.bouncycastle.openpgp.PGPSecretKey; +import org.bouncycastle.openpgp.PGPSecretKeyRing; import org.bouncycastle.openpgp.operator.PBESecretKeyDecryptor; import org.bouncycastle.openpgp.operator.PBESecretKeyEncryptor; +import org.pgpainless.util.Passphrase; public interface SecretKeyRingProtector { @@ -42,4 +46,19 @@ public interface SecretKeyRingProtector { */ @Nullable PBESecretKeyEncryptor getEncryptor(Long keyId) throws PGPException; + static SecretKeyRingProtector unlockAllKeysWith(Passphrase passphrase, PGPSecretKeyRing keys) { + return PasswordBasedSecretKeyRingProtector.forKey(keys, passphrase); + } + + static SecretKeyRingProtector unlockSingleKeyWith(Passphrase passphrase, PGPSecretKey key) { + return PasswordBasedSecretKeyRingProtector.forKey(key, passphrase); + } + + static SecretKeyRingProtector unprotectedKeys() { + return new UnprotectedKeysProtector(); + } + + static SecretKeyRingProtector fromPassphraseMap(Map passphraseMap) { + return new PassphraseMapKeyRingProtector(passphraseMap, KeyRingProtectionSettings.secureDefaultSettings(), null); + } }