mirror of
https://github.com/pgpainless/pgpainless.git
synced 2025-09-09 18:29:39 +02:00
Add missing methods for SecretKeyRing protection
This commit is contained in:
parent
a8a09b7db7
commit
bab5a4b0bf
3 changed files with 18 additions and 0 deletions
|
@ -7,6 +7,8 @@ package org.pgpainless.key.protection
|
|||
import org.bouncycastle.bcpg.KeyIdentifier
|
||||
import org.bouncycastle.openpgp.PGPKeyRing
|
||||
import org.bouncycastle.openpgp.PGPPublicKey
|
||||
import org.bouncycastle.openpgp.api.OpenPGPCertificate
|
||||
import org.bouncycastle.openpgp.api.OpenPGPCertificate.OpenPGPComponentKey
|
||||
import org.bouncycastle.openpgp.api.OpenPGPKey
|
||||
import org.bouncycastle.openpgp.operator.PBESecretKeyDecryptor
|
||||
import org.bouncycastle.openpgp.operator.PBESecretKeyEncryptor
|
||||
|
@ -133,6 +135,12 @@ class CachingSecretKeyRingProtector : SecretKeyRingProtector, SecretKeyPassphras
|
|||
fun addPassphrase(key: PGPPublicKey, passphrase: Passphrase) =
|
||||
addPassphrase(key.keyIdentifier, passphrase)
|
||||
|
||||
fun addPassphrase(cert: OpenPGPCertificate, passphrase: Passphrase) =
|
||||
addPassphrase(cert.pgpKeyRing, passphrase)
|
||||
|
||||
fun addPassphrase(key: OpenPGPComponentKey, passphrase: Passphrase) =
|
||||
addPassphrase(key.keyIdentifier, passphrase)
|
||||
|
||||
/**
|
||||
* Remember the given passphrase for the key with the given fingerprint.
|
||||
*
|
||||
|
@ -161,6 +169,8 @@ class CachingSecretKeyRingProtector : SecretKeyRingProtector, SecretKeyPassphras
|
|||
keyRing.publicKeys.forEach { forgetPassphrase(it) }
|
||||
}
|
||||
|
||||
fun forgetPassphrase(cert: OpenPGPCertificate) = forgetPassphrase(cert.pgpPublicKeyRing)
|
||||
|
||||
/**
|
||||
* Forget the passphrase of the given public key.
|
||||
*
|
||||
|
|
|
@ -58,6 +58,10 @@ interface SecretKeyRingProtector : KeyPassphraseProvider {
|
|||
@Throws(PGPException::class)
|
||||
fun getDecryptor(keyId: Long): PBESecretKeyDecryptor? = getDecryptor(KeyIdentifier(keyId))
|
||||
|
||||
@Throws(PGPException::class)
|
||||
fun getDecryptor(key: OpenPGPSecretKey): PBESecretKeyDecryptor? =
|
||||
getDecryptor(key.keyIdentifier)
|
||||
|
||||
/**
|
||||
* Return a decryptor for the key with the given [keyIdentifier]. This method returns null if
|
||||
* the key is unprotected.
|
||||
|
|
|
@ -6,11 +6,15 @@ package org.pgpainless.key.protection.passphrase_provider
|
|||
|
||||
import org.bouncycastle.bcpg.KeyIdentifier
|
||||
import org.bouncycastle.openpgp.PGPSecretKey
|
||||
import org.bouncycastle.openpgp.api.OpenPGPCertificate.OpenPGPComponentKey
|
||||
import org.pgpainless.util.Passphrase
|
||||
|
||||
/** Interface to allow the user to provide a [Passphrase] for an encrypted OpenPGP secret key. */
|
||||
interface SecretKeyPassphraseProvider {
|
||||
|
||||
fun getPassphraseFor(key: OpenPGPComponentKey): Passphrase? =
|
||||
getPassphraseFor(key.keyIdentifier)
|
||||
|
||||
/**
|
||||
* Return a passphrase for the given secret key. If no record is found, return null. Note: In
|
||||
* case of an unprotected secret key, this method must may not return null, but a [Passphrase]
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue