aboutsummaryrefslogtreecommitdiff
path: root/crypto-pgpainless/src/main
diff options
context:
space:
mode:
Diffstat (limited to 'crypto-pgpainless/src/main')
-rw-r--r--crypto-pgpainless/src/main/kotlin/app/passwordstore/crypto/PGPainlessCryptoHandler.kt20
1 files changed, 10 insertions, 10 deletions
diff --git a/crypto-pgpainless/src/main/kotlin/app/passwordstore/crypto/PGPainlessCryptoHandler.kt b/crypto-pgpainless/src/main/kotlin/app/passwordstore/crypto/PGPainlessCryptoHandler.kt
index 440b162e..fa56ebd8 100644
--- a/crypto-pgpainless/src/main/kotlin/app/passwordstore/crypto/PGPainlessCryptoHandler.kt
+++ b/crypto-pgpainless/src/main/kotlin/app/passwordstore/crypto/PGPainlessCryptoHandler.kt
@@ -25,6 +25,7 @@ import org.pgpainless.encryption_signing.EncryptionOptions
import org.pgpainless.encryption_signing.ProducerOptions
import org.pgpainless.exception.WrongPassphraseException
import org.pgpainless.key.protection.PasswordBasedSecretKeyRingProtector
+import org.pgpainless.key.util.KeyRingUtils
import org.pgpainless.util.Passphrase
public class PGPainlessCryptoHandler @Inject constructor() : CryptoHandler<PGPKey> {
@@ -71,16 +72,15 @@ public class PGPainlessCryptoHandler @Inject constructor() : CryptoHandler<PGPKe
val armoredKeys =
keys.joinToString("\n") { key -> key.contents.decodeToString() }.toByteArray()
val secKeysStream = ByteArrayInputStream(armoredKeys)
- val secretKeyRingCollection =
- PGPainless.readKeyRing().secretKeyRingCollection(secKeysStream)
- secretKeyRingCollection.forEach { secretKeyRing ->
- publicKeyRings.add(PGPainless.extractCertificate(secretKeyRing))
- }
- if (publicKeyRings.isEmpty()) {
- val pubKeysStream = ByteArrayInputStream(armoredKeys)
- val publicKeyRingCollection =
- PGPainless.readKeyRing().publicKeyRingCollection(pubKeysStream)
- publicKeyRings.addAll(publicKeyRingCollection)
+ publicKeyRings.addAll(
+ KeyRingUtils.publicKeyRingCollectionFrom(
+ PGPainless.readKeyRing().secretKeyRingCollection(secKeysStream)
+ )
+ )
+ val pubKeysStream = ByteArrayInputStream(armoredKeys)
+ publicKeyRings.addAll(PGPainless.readKeyRing().publicKeyRingCollection(pubKeysStream))
+ require(keys.size == publicKeyRings.size) {
+ "Failed to parse all keys: keys=${keys.size},parsed=${publicKeyRings.size}"
}
require(publicKeyRings.isNotEmpty()) { "No public keys to encrypt message to" }
val publicKeyRingCollection = PGPPublicKeyRingCollection(publicKeyRings)