diff --git a/pgpainless-core/src/main/java/org/pgpainless/encryption_signing/EncryptionOptions.java b/pgpainless-core/src/main/java/org/pgpainless/encryption_signing/EncryptionOptions.java index 78ea155c..b5a0e5a1 100644 --- a/pgpainless-core/src/main/java/org/pgpainless/encryption_signing/EncryptionOptions.java +++ b/pgpainless-core/src/main/java/org/pgpainless/encryption_signing/EncryptionOptions.java @@ -24,6 +24,8 @@ import java.util.List; import java.util.Map; import java.util.Set; +import javax.annotation.Nonnull; + import org.bouncycastle.openpgp.PGPPublicKey; import org.bouncycastle.openpgp.PGPPublicKeyRing; import org.bouncycastle.openpgp.PGPPublicKeyRingCollection; @@ -70,7 +72,7 @@ public class EncryptionOptions { private final Set encryptionKeys = new LinkedHashSet<>(); private final Map keyRingInfo = new HashMap<>(); private final Map keyViews = new HashMap<>(); - private final EncryptionKeySelector encryptionKeySelector = encryptToFirstSubkey(); + private final EncryptionKeySelector encryptionKeySelector = encryptToAllCapableSubkeys(); private SymmetricKeyAlgorithm encryptionAlgorithmOverride = null; @@ -119,6 +121,21 @@ public class EncryptionOptions { return this; } + /** + * Add all key rings in the provided key ring collection as recipients. + * Per key ring, the selector is applied to select one or more encryption subkeys. + * + * @param keys keys + * @param selector encryption key selector + * @return this + */ + public EncryptionOptions addRecipients(@Nonnull PGPPublicKeyRingCollection keys, @Nonnull EncryptionKeySelector selector) { + for (PGPPublicKeyRing key : keys) { + addRecipient(key, selector); + } + return this; + } + /** * Add a recipient by providing a key and recipient user-id. * The user-id is used to determine the recipients preferences (algorithms etc.). diff --git a/pgpainless-core/src/test/java/org/pgpainless/encryption_signing/EncryptionOptionsTest.java b/pgpainless-core/src/test/java/org/pgpainless/encryption_signing/EncryptionOptionsTest.java index 84489473..59a0f9cc 100644 --- a/pgpainless-core/src/test/java/org/pgpainless/encryption_signing/EncryptionOptionsTest.java +++ b/pgpainless-core/src/test/java/org/pgpainless/encryption_signing/EncryptionOptionsTest.java @@ -179,14 +179,14 @@ public class EncryptionOptionsTest { Arrays.asList(publicKeys, secondKeyRing)); EncryptionOptions options = new EncryptionOptions(); - options.addRecipients(collection); + options.addRecipients(collection, EncryptionOptions.encryptToFirstSubkey()); assertEquals(2, options.getEncryptionKeyIdentifiers().size()); } @Test public void testAddRecipient_withValidUserId() { EncryptionOptions options = new EncryptionOptions(); - options.addRecipient(publicKeys, "test@pgpainless.org"); + options.addRecipient(publicKeys, "test@pgpainless.org", EncryptionOptions.encryptToFirstSubkey()); assertEquals(1, options.getEncryptionMethods().size()); }