From db01ed2a2e2a210de33cc96751b7a5281a96db77 Mon Sep 17 00:00:00 2001 From: Harsh Shandilya Date: Sat, 16 Jul 2022 21:25:04 +0530 Subject: Use `KeyRingUtils#publicKeyRingCollectionFrom` to extract public keys (#2009) --- .../passwordstore/crypto/PGPainlessCryptoHandler.kt | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) (limited to 'crypto-pgpainless/src/main') 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 { @@ -71,16 +72,15 @@ public class PGPainlessCryptoHandler @Inject constructor() : CryptoHandler 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) -- cgit v1.2.3