From eaee5a27fcdb6aad8dce95ddf0c434361a30cf2f Mon Sep 17 00:00:00 2001 From: Paul Schaub Date: Wed, 3 Feb 2021 16:05:21 +0100 Subject: [PATCH] Move selection strategies to util package and implement UserIdSelectionStrategy --- .../encryption_signing/EncryptionBuilder.java | 16 ++-- .../EncryptionBuilderInterface.java | 6 +- .../org/pgpainless/key/info/KeyRingInfo.java | 10 +-- .../main/java/org/pgpainless/util/BCUtil.java | 8 +- .../org/pgpainless/util/CollectionUtils.java | 32 +++++++ .../selection/key/KeySelectionStrategy.java | 2 +- .../key/PublicKeySelectionStrategy.java | 2 +- .../key/SecretKeySelectionStrategy.java | 2 +- .../util => util/selection/key/impl}/And.java | 6 +- .../impl/EncryptionKeySelectionStrategy.java | 4 +- .../impl/HasAllKeyFlagSelectionStrategy.java | 6 +- .../impl/HasAnyKeyFlagSelectionStrategy.java | 6 +- .../key/impl/KeyBelongsToKeyRing.java | 4 +- .../selection/key/impl/NoRevocation.java | 6 +- .../util => util/selection/key/impl}/Or.java | 6 +- .../impl/SignatureKeySelectionStrategy.java | 4 +- .../selection/key/impl/package-info.java | 2 +- .../selection/key/package-info.java | 2 +- .../keyring/KeyRingSelectionStrategy.java | 2 +- .../PublicKeyRingSelectionStrategy.java | 2 +- .../SecretKeyRingSelectionStrategy.java | 2 +- .../selection/keyring/impl/Email.java | 2 +- .../selection/keyring/impl/ExactUserId.java | 6 +- .../selection/keyring/impl/PartialUserId.java | 6 +- .../selection/keyring/impl/Whitelist.java | 6 +- .../selection/keyring/impl/Wildcard.java | 6 +- .../selection/keyring/impl/XMPP.java | 2 +- .../selection/keyring/impl/package-info.java | 2 +- .../selection/keyring/package-info.java | 2 +- .../userid/UserIdSelectionStrategy.java | 86 +++++++++++++++++++ .../selection/userid}/package-info.java | 4 +- .../key/AndOrSelectionStrategyTest.java | 8 +- .../key/KeyBelongsToKeyRingTest.java | 4 +- .../KeyFlagBasedSelectionStrategyTest.java | 6 +- .../EmailKeyRingSelectionStrategyTest.java | 4 +- .../keyring/KeyRingsFromCollectionTest.java | 4 +- ...WhitelistKeyRingSelectionStrategyTest.java | 4 +- .../WildcardKeyRingSelectionStrategyTest.java | 4 +- .../XmppKeyRingSelectionStrategyTest.java | 4 +- 39 files changed, 200 insertions(+), 90 deletions(-) create mode 100644 pgpainless-core/src/main/java/org/pgpainless/util/CollectionUtils.java rename pgpainless-core/src/main/java/org/pgpainless/{key => util}/selection/key/KeySelectionStrategy.java (95%) rename pgpainless-core/src/main/java/org/pgpainless/{key => util}/selection/key/PublicKeySelectionStrategy.java (97%) rename pgpainless-core/src/main/java/org/pgpainless/{key => util}/selection/key/SecretKeySelectionStrategy.java (97%) rename pgpainless-core/src/main/java/org/pgpainless/{key/selection/key/util => util/selection/key/impl}/And.java (91%) rename pgpainless-core/src/main/java/org/pgpainless/{key => util}/selection/key/impl/EncryptionKeySelectionStrategy.java (94%) rename pgpainless-core/src/main/java/org/pgpainless/{key => util}/selection/key/impl/HasAllKeyFlagSelectionStrategy.java (91%) rename pgpainless-core/src/main/java/org/pgpainless/{key => util}/selection/key/impl/HasAnyKeyFlagSelectionStrategy.java (91%) rename pgpainless-core/src/main/java/org/pgpainless/{key => util}/selection/key/impl/KeyBelongsToKeyRing.java (95%) rename pgpainless-core/src/main/java/org/pgpainless/{key => util}/selection/key/impl/NoRevocation.java (89%) rename pgpainless-core/src/main/java/org/pgpainless/{key/selection/key/util => util/selection/key/impl}/Or.java (91%) rename pgpainless-core/src/main/java/org/pgpainless/{key => util}/selection/key/impl/SignatureKeySelectionStrategy.java (94%) rename pgpainless-core/src/main/java/org/pgpainless/{key => util}/selection/key/impl/package-info.java (93%) rename pgpainless-core/src/main/java/org/pgpainless/{key => util}/selection/key/package-info.java (93%) rename pgpainless-core/src/main/java/org/pgpainless/{key => util}/selection/keyring/KeyRingSelectionStrategy.java (95%) rename pgpainless-core/src/main/java/org/pgpainless/{key => util}/selection/keyring/PublicKeyRingSelectionStrategy.java (97%) rename pgpainless-core/src/main/java/org/pgpainless/{key => util}/selection/keyring/SecretKeyRingSelectionStrategy.java (97%) rename pgpainless-core/src/main/java/org/pgpainless/{key => util}/selection/keyring/impl/Email.java (95%) rename pgpainless-core/src/main/java/org/pgpainless/{key => util}/selection/keyring/impl/ExactUserId.java (88%) rename pgpainless-core/src/main/java/org/pgpainless/{key => util}/selection/keyring/impl/PartialUserId.java (91%) rename pgpainless-core/src/main/java/org/pgpainless/{key => util}/selection/keyring/impl/Whitelist.java (91%) rename pgpainless-core/src/main/java/org/pgpainless/{key => util}/selection/keyring/impl/Wildcard.java (85%) rename pgpainless-core/src/main/java/org/pgpainless/{key => util}/selection/keyring/impl/XMPP.java (96%) rename pgpainless-core/src/main/java/org/pgpainless/{key => util}/selection/keyring/impl/package-info.java (92%) rename pgpainless-core/src/main/java/org/pgpainless/{key => util}/selection/keyring/package-info.java (93%) create mode 100644 pgpainless-core/src/main/java/org/pgpainless/util/selection/userid/UserIdSelectionStrategy.java rename pgpainless-core/src/main/java/org/pgpainless/{key/selection/key/util => util/selection/userid}/package-info.java (85%) rename pgpainless-core/src/test/java/org/pgpainless/{key => util}/selection/key/AndOrSelectionStrategyTest.java (90%) rename pgpainless-core/src/test/java/org/pgpainless/{key => util}/selection/key/KeyBelongsToKeyRingTest.java (95%) rename pgpainless-core/src/test/java/org/pgpainless/{key => util}/selection/key/KeyFlagBasedSelectionStrategyTest.java (97%) rename pgpainless-core/src/test/java/org/pgpainless/{key => util}/selection/keyring/EmailKeyRingSelectionStrategyTest.java (96%) rename pgpainless-core/src/test/java/org/pgpainless/{key => util}/selection/keyring/KeyRingsFromCollectionTest.java (97%) rename pgpainless-core/src/test/java/org/pgpainless/{key => util}/selection/keyring/WhitelistKeyRingSelectionStrategyTest.java (96%) rename pgpainless-core/src/test/java/org/pgpainless/{key => util}/selection/keyring/WildcardKeyRingSelectionStrategyTest.java (95%) rename pgpainless-core/src/test/java/org/pgpainless/{key => util}/selection/keyring/XmppKeyRingSelectionStrategyTest.java (96%) diff --git a/pgpainless-core/src/main/java/org/pgpainless/encryption_signing/EncryptionBuilder.java b/pgpainless-core/src/main/java/org/pgpainless/encryption_signing/EncryptionBuilder.java index 307cbf39..866b417b 100644 --- a/pgpainless-core/src/main/java/org/pgpainless/encryption_signing/EncryptionBuilder.java +++ b/pgpainless-core/src/main/java/org/pgpainless/encryption_signing/EncryptionBuilder.java @@ -43,14 +43,14 @@ import org.pgpainless.algorithm.SymmetricKeyAlgorithm; import org.pgpainless.exception.SecretKeyNotFoundException; import org.pgpainless.key.OpenPgpV4Fingerprint; import org.pgpainless.key.protection.SecretKeyRingProtector; -import org.pgpainless.key.selection.key.PublicKeySelectionStrategy; -import org.pgpainless.key.selection.key.SecretKeySelectionStrategy; -import org.pgpainless.key.selection.key.impl.EncryptionKeySelectionStrategy; -import org.pgpainless.key.selection.key.impl.NoRevocation; -import org.pgpainless.key.selection.key.impl.SignatureKeySelectionStrategy; -import org.pgpainless.key.selection.key.util.And; -import org.pgpainless.key.selection.keyring.PublicKeyRingSelectionStrategy; -import org.pgpainless.key.selection.keyring.SecretKeyRingSelectionStrategy; +import org.pgpainless.util.selection.key.PublicKeySelectionStrategy; +import org.pgpainless.util.selection.key.SecretKeySelectionStrategy; +import org.pgpainless.util.selection.key.impl.EncryptionKeySelectionStrategy; +import org.pgpainless.util.selection.key.impl.NoRevocation; +import org.pgpainless.util.selection.key.impl.SignatureKeySelectionStrategy; +import org.pgpainless.util.selection.key.impl.And; +import org.pgpainless.util.selection.keyring.PublicKeyRingSelectionStrategy; +import org.pgpainless.util.selection.keyring.SecretKeyRingSelectionStrategy; import org.pgpainless.util.MultiMap; import org.pgpainless.util.Passphrase; diff --git a/pgpainless-core/src/main/java/org/pgpainless/encryption_signing/EncryptionBuilderInterface.java b/pgpainless-core/src/main/java/org/pgpainless/encryption_signing/EncryptionBuilderInterface.java index 5d1b4281..df9a0f84 100644 --- a/pgpainless-core/src/main/java/org/pgpainless/encryption_signing/EncryptionBuilderInterface.java +++ b/pgpainless-core/src/main/java/org/pgpainless/encryption_signing/EncryptionBuilderInterface.java @@ -33,8 +33,8 @@ import org.pgpainless.decryption_verification.OpenPgpMetadata; import org.pgpainless.exception.SecretKeyNotFoundException; import org.pgpainless.key.protection.SecretKeyRingProtector; import org.pgpainless.key.protection.UnprotectedKeysProtector; -import org.pgpainless.key.selection.keyring.PublicKeyRingSelectionStrategy; -import org.pgpainless.key.selection.keyring.SecretKeyRingSelectionStrategy; +import org.pgpainless.util.selection.keyring.PublicKeyRingSelectionStrategy; +import org.pgpainless.util.selection.keyring.SecretKeyRingSelectionStrategy; import org.pgpainless.util.MultiMap; import org.pgpainless.util.Passphrase; @@ -218,7 +218,7 @@ public interface EncryptionBuilderInterface { DocumentType signWith(@Nonnull SecretKeyRingProtector decryptor, @Nonnull PGPSecretKeyRing... keyRings); /** - * Pass in a map of secret keys for signing, as well as a {@link org.pgpainless.key.selection.key.SecretKeySelectionStrategy} + * Pass in a map of secret keys for signing, as well as a {@link org.pgpainless.util.selection.key.SecretKeySelectionStrategy} * that is used to determine suitable secret keys. * If the keys are locked by a password, the provided {@link SecretKeyRingProtector} will be used to unlock the keys. * diff --git a/pgpainless-core/src/main/java/org/pgpainless/key/info/KeyRingInfo.java b/pgpainless-core/src/main/java/org/pgpainless/key/info/KeyRingInfo.java index c0cf8346..16b2086a 100644 --- a/pgpainless-core/src/main/java/org/pgpainless/key/info/KeyRingInfo.java +++ b/pgpainless-core/src/main/java/org/pgpainless/key/info/KeyRingInfo.java @@ -17,6 +17,7 @@ package org.pgpainless.key.info; import static org.pgpainless.key.util.SignatureUtils.getLatestValidSignature; import static org.pgpainless.key.util.SignatureUtils.sortByCreationTimeAscending; +import static org.pgpainless.util.CollectionUtils.iteratorToList; import java.util.ArrayList; import java.util.Collections; @@ -376,13 +377,4 @@ public class KeyRingInfo { } return self.getCreationTime().after(binding.getCreationTime()) ? self : binding; } - - private static List iteratorToList(Iterator iterator) { - List items = new ArrayList<>(); - while (iterator.hasNext()) { - Object o = iterator.next(); - items.add((I) o); - } - return items; - } } diff --git a/pgpainless-core/src/main/java/org/pgpainless/util/BCUtil.java b/pgpainless-core/src/main/java/org/pgpainless/util/BCUtil.java index 0ea23b38..9f02ff1b 100644 --- a/pgpainless-core/src/main/java/org/pgpainless/util/BCUtil.java +++ b/pgpainless-core/src/main/java/org/pgpainless/util/BCUtil.java @@ -40,10 +40,10 @@ import org.bouncycastle.openpgp.PGPSignatureSubpacketVector; import org.bouncycastle.openpgp.PGPUtil; import org.bouncycastle.util.io.Streams; import org.pgpainless.algorithm.KeyFlag; -import org.pgpainless.key.selection.key.PublicKeySelectionStrategy; -import org.pgpainless.key.selection.key.impl.NoRevocation; -import org.pgpainless.key.selection.key.impl.KeyBelongsToKeyRing; -import org.pgpainless.key.selection.key.util.And; +import org.pgpainless.util.selection.key.PublicKeySelectionStrategy; +import org.pgpainless.util.selection.key.impl.NoRevocation; +import org.pgpainless.util.selection.key.impl.KeyBelongsToKeyRing; +import org.pgpainless.util.selection.key.impl.And; public class BCUtil { diff --git a/pgpainless-core/src/main/java/org/pgpainless/util/CollectionUtils.java b/pgpainless-core/src/main/java/org/pgpainless/util/CollectionUtils.java new file mode 100644 index 00000000..bd618e4e --- /dev/null +++ b/pgpainless-core/src/main/java/org/pgpainless/util/CollectionUtils.java @@ -0,0 +1,32 @@ +/* + * Copyright 2021 Paul Schaub. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.pgpainless.util; + +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; + +public class CollectionUtils { + + public static List iteratorToList(Iterator iterator) { + List items = new ArrayList<>(); + while (iterator.hasNext()) { + Object o = iterator.next(); + items.add((I) o); + } + return items; + } +} diff --git a/pgpainless-core/src/main/java/org/pgpainless/key/selection/key/KeySelectionStrategy.java b/pgpainless-core/src/main/java/org/pgpainless/util/selection/key/KeySelectionStrategy.java similarity index 95% rename from pgpainless-core/src/main/java/org/pgpainless/key/selection/key/KeySelectionStrategy.java rename to pgpainless-core/src/main/java/org/pgpainless/util/selection/key/KeySelectionStrategy.java index d32777e9..68884e92 100644 --- a/pgpainless-core/src/main/java/org/pgpainless/key/selection/key/KeySelectionStrategy.java +++ b/pgpainless-core/src/main/java/org/pgpainless/util/selection/key/KeySelectionStrategy.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.pgpainless.key.selection.key; +package org.pgpainless.util.selection.key; import java.util.Set; import javax.annotation.Nonnull; diff --git a/pgpainless-core/src/main/java/org/pgpainless/key/selection/key/PublicKeySelectionStrategy.java b/pgpainless-core/src/main/java/org/pgpainless/util/selection/key/PublicKeySelectionStrategy.java similarity index 97% rename from pgpainless-core/src/main/java/org/pgpainless/key/selection/key/PublicKeySelectionStrategy.java rename to pgpainless-core/src/main/java/org/pgpainless/util/selection/key/PublicKeySelectionStrategy.java index 9393142e..5e0f22bb 100644 --- a/pgpainless-core/src/main/java/org/pgpainless/key/selection/key/PublicKeySelectionStrategy.java +++ b/pgpainless-core/src/main/java/org/pgpainless/util/selection/key/PublicKeySelectionStrategy.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.pgpainless.key.selection.key; +package org.pgpainless.util.selection.key; import java.util.HashSet; import java.util.Iterator; diff --git a/pgpainless-core/src/main/java/org/pgpainless/key/selection/key/SecretKeySelectionStrategy.java b/pgpainless-core/src/main/java/org/pgpainless/util/selection/key/SecretKeySelectionStrategy.java similarity index 97% rename from pgpainless-core/src/main/java/org/pgpainless/key/selection/key/SecretKeySelectionStrategy.java rename to pgpainless-core/src/main/java/org/pgpainless/util/selection/key/SecretKeySelectionStrategy.java index d48e0082..49e40a0d 100644 --- a/pgpainless-core/src/main/java/org/pgpainless/key/selection/key/SecretKeySelectionStrategy.java +++ b/pgpainless-core/src/main/java/org/pgpainless/util/selection/key/SecretKeySelectionStrategy.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.pgpainless.key.selection.key; +package org.pgpainless.util.selection.key; import java.util.HashSet; import java.util.Iterator; diff --git a/pgpainless-core/src/main/java/org/pgpainless/key/selection/key/util/And.java b/pgpainless-core/src/main/java/org/pgpainless/util/selection/key/impl/And.java similarity index 91% rename from pgpainless-core/src/main/java/org/pgpainless/key/selection/key/util/And.java rename to pgpainless-core/src/main/java/org/pgpainless/util/selection/key/impl/And.java index 3128aecb..f2f7194e 100644 --- a/pgpainless-core/src/main/java/org/pgpainless/key/selection/key/util/And.java +++ b/pgpainless-core/src/main/java/org/pgpainless/util/selection/key/impl/And.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.pgpainless.key.selection.key.util; +package org.pgpainless.util.selection.key.impl; import java.util.Arrays; import java.util.HashSet; @@ -22,8 +22,8 @@ import javax.annotation.Nonnull; import org.bouncycastle.openpgp.PGPPublicKey; import org.bouncycastle.openpgp.PGPSecretKey; -import org.pgpainless.key.selection.key.PublicKeySelectionStrategy; -import org.pgpainless.key.selection.key.SecretKeySelectionStrategy; +import org.pgpainless.util.selection.key.PublicKeySelectionStrategy; +import org.pgpainless.util.selection.key.SecretKeySelectionStrategy; public class And { diff --git a/pgpainless-core/src/main/java/org/pgpainless/key/selection/key/impl/EncryptionKeySelectionStrategy.java b/pgpainless-core/src/main/java/org/pgpainless/util/selection/key/impl/EncryptionKeySelectionStrategy.java similarity index 94% rename from pgpainless-core/src/main/java/org/pgpainless/key/selection/key/impl/EncryptionKeySelectionStrategy.java rename to pgpainless-core/src/main/java/org/pgpainless/util/selection/key/impl/EncryptionKeySelectionStrategy.java index 632b4ffd..71c5e26e 100644 --- a/pgpainless-core/src/main/java/org/pgpainless/key/selection/key/impl/EncryptionKeySelectionStrategy.java +++ b/pgpainless-core/src/main/java/org/pgpainless/util/selection/key/impl/EncryptionKeySelectionStrategy.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.pgpainless.key.selection.key.impl; +package org.pgpainless.util.selection.key.impl; import java.util.logging.Level; import java.util.logging.Logger; @@ -22,7 +22,7 @@ import javax.annotation.Nonnull; import org.bouncycastle.openpgp.PGPPublicKey; import org.pgpainless.algorithm.KeyFlag; import org.pgpainless.algorithm.PublicKeyAlgorithm; -import org.pgpainless.key.selection.key.PublicKeySelectionStrategy; +import org.pgpainless.util.selection.key.PublicKeySelectionStrategy; /** * Key Selection Strategy that only accepts {@link PGPPublicKey}s which are capable of encryption. diff --git a/pgpainless-core/src/main/java/org/pgpainless/key/selection/key/impl/HasAllKeyFlagSelectionStrategy.java b/pgpainless-core/src/main/java/org/pgpainless/util/selection/key/impl/HasAllKeyFlagSelectionStrategy.java similarity index 91% rename from pgpainless-core/src/main/java/org/pgpainless/key/selection/key/impl/HasAllKeyFlagSelectionStrategy.java rename to pgpainless-core/src/main/java/org/pgpainless/util/selection/key/impl/HasAllKeyFlagSelectionStrategy.java index a016dc2c..791687ec 100644 --- a/pgpainless-core/src/main/java/org/pgpainless/key/selection/key/impl/HasAllKeyFlagSelectionStrategy.java +++ b/pgpainless-core/src/main/java/org/pgpainless/util/selection/key/impl/HasAllKeyFlagSelectionStrategy.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.pgpainless.key.selection.key.impl; +package org.pgpainless.util.selection.key.impl; import java.util.Iterator; @@ -21,8 +21,8 @@ import org.bouncycastle.openpgp.PGPPublicKey; import org.bouncycastle.openpgp.PGPSecretKey; import org.bouncycastle.openpgp.PGPSignature; import org.pgpainless.algorithm.KeyFlag; -import org.pgpainless.key.selection.key.PublicKeySelectionStrategy; -import org.pgpainless.key.selection.key.SecretKeySelectionStrategy; +import org.pgpainless.util.selection.key.PublicKeySelectionStrategy; +import org.pgpainless.util.selection.key.SecretKeySelectionStrategy; /** * Selection Strategy that accepts a key if it carries all of the specified key flags. diff --git a/pgpainless-core/src/main/java/org/pgpainless/key/selection/key/impl/HasAnyKeyFlagSelectionStrategy.java b/pgpainless-core/src/main/java/org/pgpainless/util/selection/key/impl/HasAnyKeyFlagSelectionStrategy.java similarity index 91% rename from pgpainless-core/src/main/java/org/pgpainless/key/selection/key/impl/HasAnyKeyFlagSelectionStrategy.java rename to pgpainless-core/src/main/java/org/pgpainless/util/selection/key/impl/HasAnyKeyFlagSelectionStrategy.java index e7acfd1e..c186ad97 100644 --- a/pgpainless-core/src/main/java/org/pgpainless/key/selection/key/impl/HasAnyKeyFlagSelectionStrategy.java +++ b/pgpainless-core/src/main/java/org/pgpainless/util/selection/key/impl/HasAnyKeyFlagSelectionStrategy.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.pgpainless.key.selection.key.impl; +package org.pgpainless.util.selection.key.impl; import java.util.Iterator; @@ -21,8 +21,8 @@ import org.bouncycastle.openpgp.PGPPublicKey; import org.bouncycastle.openpgp.PGPSecretKey; import org.bouncycastle.openpgp.PGPSignature; import org.pgpainless.algorithm.KeyFlag; -import org.pgpainless.key.selection.key.PublicKeySelectionStrategy; -import org.pgpainless.key.selection.key.SecretKeySelectionStrategy; +import org.pgpainless.util.selection.key.PublicKeySelectionStrategy; +import org.pgpainless.util.selection.key.SecretKeySelectionStrategy; /** * Selection Strategies that accept a key if it carries at least one of the given key flags. diff --git a/pgpainless-core/src/main/java/org/pgpainless/key/selection/key/impl/KeyBelongsToKeyRing.java b/pgpainless-core/src/main/java/org/pgpainless/util/selection/key/impl/KeyBelongsToKeyRing.java similarity index 95% rename from pgpainless-core/src/main/java/org/pgpainless/key/selection/key/impl/KeyBelongsToKeyRing.java rename to pgpainless-core/src/main/java/org/pgpainless/util/selection/key/impl/KeyBelongsToKeyRing.java index 24ccf530..5e2b4af2 100644 --- a/pgpainless-core/src/main/java/org/pgpainless/key/selection/key/impl/KeyBelongsToKeyRing.java +++ b/pgpainless-core/src/main/java/org/pgpainless/util/selection/key/impl/KeyBelongsToKeyRing.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.pgpainless.key.selection.key.impl; +package org.pgpainless.util.selection.key.impl; import javax.annotation.Nonnull; import java.util.Arrays; @@ -25,7 +25,7 @@ import org.bouncycastle.openpgp.PGPException; import org.bouncycastle.openpgp.PGPPublicKey; import org.bouncycastle.openpgp.PGPSignature; import org.pgpainless.implementation.ImplementationFactory; -import org.pgpainless.key.selection.key.PublicKeySelectionStrategy; +import org.pgpainless.util.selection.key.PublicKeySelectionStrategy; public class KeyBelongsToKeyRing { diff --git a/pgpainless-core/src/main/java/org/pgpainless/key/selection/key/impl/NoRevocation.java b/pgpainless-core/src/main/java/org/pgpainless/util/selection/key/impl/NoRevocation.java similarity index 89% rename from pgpainless-core/src/main/java/org/pgpainless/key/selection/key/impl/NoRevocation.java rename to pgpainless-core/src/main/java/org/pgpainless/util/selection/key/impl/NoRevocation.java index 38224d7b..c5c7899f 100644 --- a/pgpainless-core/src/main/java/org/pgpainless/key/selection/key/impl/NoRevocation.java +++ b/pgpainless-core/src/main/java/org/pgpainless/util/selection/key/impl/NoRevocation.java @@ -13,14 +13,14 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.pgpainless.key.selection.key.impl; +package org.pgpainless.util.selection.key.impl; import javax.annotation.Nonnull; import org.bouncycastle.openpgp.PGPPublicKey; import org.bouncycastle.openpgp.PGPSecretKey; -import org.pgpainless.key.selection.key.PublicKeySelectionStrategy; -import org.pgpainless.key.selection.key.SecretKeySelectionStrategy; +import org.pgpainless.util.selection.key.PublicKeySelectionStrategy; +import org.pgpainless.util.selection.key.SecretKeySelectionStrategy; /** * Key Selection Strategies that do accept only keys, which have no revocation. diff --git a/pgpainless-core/src/main/java/org/pgpainless/key/selection/key/util/Or.java b/pgpainless-core/src/main/java/org/pgpainless/util/selection/key/impl/Or.java similarity index 91% rename from pgpainless-core/src/main/java/org/pgpainless/key/selection/key/util/Or.java rename to pgpainless-core/src/main/java/org/pgpainless/util/selection/key/impl/Or.java index bbd8043c..880df4f1 100644 --- a/pgpainless-core/src/main/java/org/pgpainless/key/selection/key/util/Or.java +++ b/pgpainless-core/src/main/java/org/pgpainless/util/selection/key/impl/Or.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.pgpainless.key.selection.key.util; +package org.pgpainless.util.selection.key.impl; import java.util.Arrays; import java.util.HashSet; @@ -22,8 +22,8 @@ import javax.annotation.Nonnull; import org.bouncycastle.openpgp.PGPPublicKey; import org.bouncycastle.openpgp.PGPSecretKey; -import org.pgpainless.key.selection.key.PublicKeySelectionStrategy; -import org.pgpainless.key.selection.key.SecretKeySelectionStrategy; +import org.pgpainless.util.selection.key.PublicKeySelectionStrategy; +import org.pgpainless.util.selection.key.SecretKeySelectionStrategy; public class Or { diff --git a/pgpainless-core/src/main/java/org/pgpainless/key/selection/key/impl/SignatureKeySelectionStrategy.java b/pgpainless-core/src/main/java/org/pgpainless/util/selection/key/impl/SignatureKeySelectionStrategy.java similarity index 94% rename from pgpainless-core/src/main/java/org/pgpainless/key/selection/key/impl/SignatureKeySelectionStrategy.java rename to pgpainless-core/src/main/java/org/pgpainless/util/selection/key/impl/SignatureKeySelectionStrategy.java index f1e5aa6e..9b5e310b 100644 --- a/pgpainless-core/src/main/java/org/pgpainless/key/selection/key/impl/SignatureKeySelectionStrategy.java +++ b/pgpainless-core/src/main/java/org/pgpainless/util/selection/key/impl/SignatureKeySelectionStrategy.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.pgpainless.key.selection.key.impl; +package org.pgpainless.util.selection.key.impl; import java.util.logging.Level; import java.util.logging.Logger; @@ -22,7 +22,7 @@ import javax.annotation.Nonnull; import org.bouncycastle.openpgp.PGPSecretKey; import org.pgpainless.algorithm.KeyFlag; import org.pgpainless.algorithm.PublicKeyAlgorithm; -import org.pgpainless.key.selection.key.SecretKeySelectionStrategy; +import org.pgpainless.util.selection.key.SecretKeySelectionStrategy; /** * Key Selection Strategy that only accepts {@link PGPSecretKey}s which are capable of signing. diff --git a/pgpainless-core/src/main/java/org/pgpainless/key/selection/key/impl/package-info.java b/pgpainless-core/src/main/java/org/pgpainless/util/selection/key/impl/package-info.java similarity index 93% rename from pgpainless-core/src/main/java/org/pgpainless/key/selection/key/impl/package-info.java rename to pgpainless-core/src/main/java/org/pgpainless/util/selection/key/impl/package-info.java index b1f317ac..6729a311 100644 --- a/pgpainless-core/src/main/java/org/pgpainless/key/selection/key/impl/package-info.java +++ b/pgpainless-core/src/main/java/org/pgpainless/util/selection/key/impl/package-info.java @@ -16,4 +16,4 @@ /** * Implementations of Key Selection Strategies. */ -package org.pgpainless.key.selection.key.impl; +package org.pgpainless.util.selection.key.impl; diff --git a/pgpainless-core/src/main/java/org/pgpainless/key/selection/key/package-info.java b/pgpainless-core/src/main/java/org/pgpainless/util/selection/key/package-info.java similarity index 93% rename from pgpainless-core/src/main/java/org/pgpainless/key/selection/key/package-info.java rename to pgpainless-core/src/main/java/org/pgpainless/util/selection/key/package-info.java index 36cc3712..971fa41c 100644 --- a/pgpainless-core/src/main/java/org/pgpainless/key/selection/key/package-info.java +++ b/pgpainless-core/src/main/java/org/pgpainless/util/selection/key/package-info.java @@ -16,4 +16,4 @@ /** * Different Key Selection Strategies. */ -package org.pgpainless.key.selection.key; +package org.pgpainless.util.selection.key; diff --git a/pgpainless-core/src/main/java/org/pgpainless/key/selection/keyring/KeyRingSelectionStrategy.java b/pgpainless-core/src/main/java/org/pgpainless/util/selection/keyring/KeyRingSelectionStrategy.java similarity index 95% rename from pgpainless-core/src/main/java/org/pgpainless/key/selection/keyring/KeyRingSelectionStrategy.java rename to pgpainless-core/src/main/java/org/pgpainless/util/selection/keyring/KeyRingSelectionStrategy.java index 7285b1d4..32918af2 100644 --- a/pgpainless-core/src/main/java/org/pgpainless/key/selection/keyring/KeyRingSelectionStrategy.java +++ b/pgpainless-core/src/main/java/org/pgpainless/util/selection/keyring/KeyRingSelectionStrategy.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.pgpainless.key.selection.keyring; +package org.pgpainless.util.selection.keyring; import java.util.Set; diff --git a/pgpainless-core/src/main/java/org/pgpainless/key/selection/keyring/PublicKeyRingSelectionStrategy.java b/pgpainless-core/src/main/java/org/pgpainless/util/selection/keyring/PublicKeyRingSelectionStrategy.java similarity index 97% rename from pgpainless-core/src/main/java/org/pgpainless/key/selection/keyring/PublicKeyRingSelectionStrategy.java rename to pgpainless-core/src/main/java/org/pgpainless/util/selection/keyring/PublicKeyRingSelectionStrategy.java index 75ac536f..01a33ab4 100644 --- a/pgpainless-core/src/main/java/org/pgpainless/key/selection/keyring/PublicKeyRingSelectionStrategy.java +++ b/pgpainless-core/src/main/java/org/pgpainless/util/selection/keyring/PublicKeyRingSelectionStrategy.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.pgpainless.key.selection.keyring; +package org.pgpainless.util.selection.keyring; import javax.annotation.Nonnull; import java.util.HashSet; diff --git a/pgpainless-core/src/main/java/org/pgpainless/key/selection/keyring/SecretKeyRingSelectionStrategy.java b/pgpainless-core/src/main/java/org/pgpainless/util/selection/keyring/SecretKeyRingSelectionStrategy.java similarity index 97% rename from pgpainless-core/src/main/java/org/pgpainless/key/selection/keyring/SecretKeyRingSelectionStrategy.java rename to pgpainless-core/src/main/java/org/pgpainless/util/selection/keyring/SecretKeyRingSelectionStrategy.java index 51475652..e53cf591 100644 --- a/pgpainless-core/src/main/java/org/pgpainless/key/selection/keyring/SecretKeyRingSelectionStrategy.java +++ b/pgpainless-core/src/main/java/org/pgpainless/util/selection/keyring/SecretKeyRingSelectionStrategy.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.pgpainless.key.selection.keyring; +package org.pgpainless.util.selection.keyring; import javax.annotation.Nonnull; import java.util.HashSet; diff --git a/pgpainless-core/src/main/java/org/pgpainless/key/selection/keyring/impl/Email.java b/pgpainless-core/src/main/java/org/pgpainless/util/selection/keyring/impl/Email.java similarity index 95% rename from pgpainless-core/src/main/java/org/pgpainless/key/selection/keyring/impl/Email.java rename to pgpainless-core/src/main/java/org/pgpainless/util/selection/keyring/impl/Email.java index e23da2a8..059907df 100644 --- a/pgpainless-core/src/main/java/org/pgpainless/key/selection/keyring/impl/Email.java +++ b/pgpainless-core/src/main/java/org/pgpainless/util/selection/keyring/impl/Email.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.pgpainless.key.selection.keyring.impl; +package org.pgpainless.util.selection.keyring.impl; public class Email { diff --git a/pgpainless-core/src/main/java/org/pgpainless/key/selection/keyring/impl/ExactUserId.java b/pgpainless-core/src/main/java/org/pgpainless/util/selection/keyring/impl/ExactUserId.java similarity index 88% rename from pgpainless-core/src/main/java/org/pgpainless/key/selection/keyring/impl/ExactUserId.java rename to pgpainless-core/src/main/java/org/pgpainless/util/selection/keyring/impl/ExactUserId.java index f0846a30..4501328d 100644 --- a/pgpainless-core/src/main/java/org/pgpainless/key/selection/keyring/impl/ExactUserId.java +++ b/pgpainless-core/src/main/java/org/pgpainless/util/selection/keyring/impl/ExactUserId.java @@ -13,14 +13,14 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.pgpainless.key.selection.keyring.impl; +package org.pgpainless.util.selection.keyring.impl; import java.util.Iterator; import org.bouncycastle.openpgp.PGPPublicKeyRing; import org.bouncycastle.openpgp.PGPSecretKeyRing; -import org.pgpainless.key.selection.keyring.PublicKeyRingSelectionStrategy; -import org.pgpainless.key.selection.keyring.SecretKeyRingSelectionStrategy; +import org.pgpainless.util.selection.keyring.PublicKeyRingSelectionStrategy; +import org.pgpainless.util.selection.keyring.SecretKeyRingSelectionStrategy; public class ExactUserId { diff --git a/pgpainless-core/src/main/java/org/pgpainless/key/selection/keyring/impl/PartialUserId.java b/pgpainless-core/src/main/java/org/pgpainless/util/selection/keyring/impl/PartialUserId.java similarity index 91% rename from pgpainless-core/src/main/java/org/pgpainless/key/selection/keyring/impl/PartialUserId.java rename to pgpainless-core/src/main/java/org/pgpainless/util/selection/keyring/impl/PartialUserId.java index f8057c88..816aca3a 100644 --- a/pgpainless-core/src/main/java/org/pgpainless/key/selection/keyring/impl/PartialUserId.java +++ b/pgpainless-core/src/main/java/org/pgpainless/util/selection/keyring/impl/PartialUserId.java @@ -13,15 +13,15 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.pgpainless.key.selection.keyring.impl; +package org.pgpainless.util.selection.keyring.impl; import javax.annotation.Nonnull; import java.util.Iterator; import org.bouncycastle.openpgp.PGPPublicKey; import org.bouncycastle.openpgp.PGPSecretKey; -import org.pgpainless.key.selection.key.PublicKeySelectionStrategy; -import org.pgpainless.key.selection.key.SecretKeySelectionStrategy; +import org.pgpainless.util.selection.key.PublicKeySelectionStrategy; +import org.pgpainless.util.selection.key.SecretKeySelectionStrategy; public class PartialUserId { diff --git a/pgpainless-core/src/main/java/org/pgpainless/key/selection/keyring/impl/Whitelist.java b/pgpainless-core/src/main/java/org/pgpainless/util/selection/keyring/impl/Whitelist.java similarity index 91% rename from pgpainless-core/src/main/java/org/pgpainless/key/selection/keyring/impl/Whitelist.java rename to pgpainless-core/src/main/java/org/pgpainless/util/selection/keyring/impl/Whitelist.java index 6899941d..1663706a 100644 --- a/pgpainless-core/src/main/java/org/pgpainless/key/selection/keyring/impl/Whitelist.java +++ b/pgpainless-core/src/main/java/org/pgpainless/util/selection/keyring/impl/Whitelist.java @@ -13,15 +13,15 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.pgpainless.key.selection.keyring.impl; +package org.pgpainless.util.selection.keyring.impl; import java.util.Map; import java.util.Set; import org.bouncycastle.openpgp.PGPPublicKeyRing; import org.bouncycastle.openpgp.PGPSecretKeyRing; -import org.pgpainless.key.selection.keyring.PublicKeyRingSelectionStrategy; -import org.pgpainless.key.selection.keyring.SecretKeyRingSelectionStrategy; +import org.pgpainless.util.selection.keyring.PublicKeyRingSelectionStrategy; +import org.pgpainless.util.selection.keyring.SecretKeyRingSelectionStrategy; import org.pgpainless.util.MultiMap; public class Whitelist { diff --git a/pgpainless-core/src/main/java/org/pgpainless/key/selection/keyring/impl/Wildcard.java b/pgpainless-core/src/main/java/org/pgpainless/util/selection/keyring/impl/Wildcard.java similarity index 85% rename from pgpainless-core/src/main/java/org/pgpainless/key/selection/keyring/impl/Wildcard.java rename to pgpainless-core/src/main/java/org/pgpainless/util/selection/keyring/impl/Wildcard.java index 8a373ffa..7337639c 100644 --- a/pgpainless-core/src/main/java/org/pgpainless/key/selection/keyring/impl/Wildcard.java +++ b/pgpainless-core/src/main/java/org/pgpainless/util/selection/keyring/impl/Wildcard.java @@ -13,12 +13,12 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.pgpainless.key.selection.keyring.impl; +package org.pgpainless.util.selection.keyring.impl; import org.bouncycastle.openpgp.PGPPublicKeyRing; import org.bouncycastle.openpgp.PGPSecretKeyRing; -import org.pgpainless.key.selection.keyring.PublicKeyRingSelectionStrategy; -import org.pgpainless.key.selection.keyring.SecretKeyRingSelectionStrategy; +import org.pgpainless.util.selection.keyring.PublicKeyRingSelectionStrategy; +import org.pgpainless.util.selection.keyring.SecretKeyRingSelectionStrategy; public class Wildcard { diff --git a/pgpainless-core/src/main/java/org/pgpainless/key/selection/keyring/impl/XMPP.java b/pgpainless-core/src/main/java/org/pgpainless/util/selection/keyring/impl/XMPP.java similarity index 96% rename from pgpainless-core/src/main/java/org/pgpainless/key/selection/keyring/impl/XMPP.java rename to pgpainless-core/src/main/java/org/pgpainless/util/selection/keyring/impl/XMPP.java index e6b31d97..31b46102 100644 --- a/pgpainless-core/src/main/java/org/pgpainless/key/selection/keyring/impl/XMPP.java +++ b/pgpainless-core/src/main/java/org/pgpainless/util/selection/keyring/impl/XMPP.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.pgpainless.key.selection.keyring.impl; +package org.pgpainless.util.selection.keyring.impl; import org.bouncycastle.openpgp.PGPPublicKeyRing; import org.bouncycastle.openpgp.PGPSecretKeyRing; diff --git a/pgpainless-core/src/main/java/org/pgpainless/key/selection/keyring/impl/package-info.java b/pgpainless-core/src/main/java/org/pgpainless/util/selection/keyring/impl/package-info.java similarity index 92% rename from pgpainless-core/src/main/java/org/pgpainless/key/selection/keyring/impl/package-info.java rename to pgpainless-core/src/main/java/org/pgpainless/util/selection/keyring/impl/package-info.java index 2b5b6ab0..85449597 100644 --- a/pgpainless-core/src/main/java/org/pgpainless/key/selection/keyring/impl/package-info.java +++ b/pgpainless-core/src/main/java/org/pgpainless/util/selection/keyring/impl/package-info.java @@ -16,4 +16,4 @@ /** * Implementations of Key Ring Selection Strategies. */ -package org.pgpainless.key.selection.keyring.impl; +package org.pgpainless.util.selection.keyring.impl; diff --git a/pgpainless-core/src/main/java/org/pgpainless/key/selection/keyring/package-info.java b/pgpainless-core/src/main/java/org/pgpainless/util/selection/keyring/package-info.java similarity index 93% rename from pgpainless-core/src/main/java/org/pgpainless/key/selection/keyring/package-info.java rename to pgpainless-core/src/main/java/org/pgpainless/util/selection/keyring/package-info.java index b4c602fb..394bb400 100644 --- a/pgpainless-core/src/main/java/org/pgpainless/key/selection/keyring/package-info.java +++ b/pgpainless-core/src/main/java/org/pgpainless/util/selection/keyring/package-info.java @@ -16,4 +16,4 @@ /** * Different Key Ring Selection Strategies. */ -package org.pgpainless.key.selection.keyring; +package org.pgpainless.util.selection.keyring; diff --git a/pgpainless-core/src/main/java/org/pgpainless/util/selection/userid/UserIdSelectionStrategy.java b/pgpainless-core/src/main/java/org/pgpainless/util/selection/userid/UserIdSelectionStrategy.java new file mode 100644 index 00000000..cbbb15bd --- /dev/null +++ b/pgpainless-core/src/main/java/org/pgpainless/util/selection/userid/UserIdSelectionStrategy.java @@ -0,0 +1,86 @@ +/* + * Copyright 2021 Paul Schaub. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.pgpainless.util.selection.userid; + +import java.util.ArrayList; +import java.util.List; + +import org.bouncycastle.openpgp.PGPKeyRing; +import org.pgpainless.PGPainless; + +public abstract class UserIdSelectionStrategy { + + protected abstract boolean accept(String userId); + + public List selectUserIds(PGPKeyRing keyRing) { + List userIds = PGPainless.inspectKeyRing(keyRing).getValidUserIds(); + return selectUserIds(userIds); + } + + public List selectUserIds(List userIds) { + List selected = new ArrayList<>(); + for (String userId : userIds) { + if (accept(userId)) { + selected.add(userId); + } + } + return selected; + } + + public String firstMatch(PGPKeyRing keyRing) { + return firstMatch(selectUserIds(keyRing)); + } + + public String firstMatch(List userIds) { + for (String userId : userIds) { + if (accept(userId)) { + return userId; + } + } + return null; + } + + public static UserIdSelectionStrategy containsSubstring(String query) { + return new UserIdSelectionStrategy() { + @Override + protected boolean accept(String userId) { + return userId.contains(query); + } + }; + } + + public static UserIdSelectionStrategy exactMatch(String query) { + return new UserIdSelectionStrategy() { + @Override + protected boolean accept(String userId) { + return userId.equals(query); + } + }; + } + + public static UserIdSelectionStrategy startsWith(String substring) { + return new UserIdSelectionStrategy() { + @Override + protected boolean accept(String userId) { + return userId.startsWith(substring); + } + }; + } + + public static UserIdSelectionStrategy containsEmailAddress(String email) { + return containsSubstring(email.matches("^<.+>$") ? email : '<' + email + '>'); + } +} diff --git a/pgpainless-core/src/main/java/org/pgpainless/key/selection/key/util/package-info.java b/pgpainless-core/src/main/java/org/pgpainless/util/selection/userid/package-info.java similarity index 85% rename from pgpainless-core/src/main/java/org/pgpainless/key/selection/key/util/package-info.java rename to pgpainless-core/src/main/java/org/pgpainless/util/selection/userid/package-info.java index 789d002b..b292d289 100644 --- a/pgpainless-core/src/main/java/org/pgpainless/key/selection/key/util/package-info.java +++ b/pgpainless-core/src/main/java/org/pgpainless/util/selection/userid/package-info.java @@ -14,6 +14,6 @@ * limitations under the License. */ /** - * Implementations of utility Key Selection Strategies. + * UserID selection strategies. */ -package org.pgpainless.key.selection.key.util; +package org.pgpainless.util.selection.userid; diff --git a/pgpainless-core/src/test/java/org/pgpainless/key/selection/key/AndOrSelectionStrategyTest.java b/pgpainless-core/src/test/java/org/pgpainless/util/selection/key/AndOrSelectionStrategyTest.java similarity index 90% rename from pgpainless-core/src/test/java/org/pgpainless/key/selection/key/AndOrSelectionStrategyTest.java rename to pgpainless-core/src/test/java/org/pgpainless/util/selection/key/AndOrSelectionStrategyTest.java index cf55c6e7..32e85006 100644 --- a/pgpainless-core/src/test/java/org/pgpainless/key/selection/key/AndOrSelectionStrategyTest.java +++ b/pgpainless-core/src/test/java/org/pgpainless/util/selection/key/AndOrSelectionStrategyTest.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.pgpainless.key.selection.key; +package org.pgpainless.util.selection.key; import static org.junit.jupiter.api.Assertions.assertFalse; import static org.junit.jupiter.api.Assertions.assertTrue; @@ -28,9 +28,9 @@ import org.bouncycastle.openpgp.PGPSecretKeyRing; import org.junit.jupiter.api.Test; import org.pgpainless.algorithm.KeyFlag; import org.pgpainless.key.TestKeys; -import org.pgpainless.key.selection.key.impl.EncryptionKeySelectionStrategy; -import org.pgpainless.key.selection.key.impl.HasAnyKeyFlagSelectionStrategy; -import org.pgpainless.key.selection.key.util.Or; +import org.pgpainless.util.selection.key.impl.EncryptionKeySelectionStrategy; +import org.pgpainless.util.selection.key.impl.HasAnyKeyFlagSelectionStrategy; +import org.pgpainless.util.selection.key.impl.Or; public class AndOrSelectionStrategyTest { diff --git a/pgpainless-core/src/test/java/org/pgpainless/key/selection/key/KeyBelongsToKeyRingTest.java b/pgpainless-core/src/test/java/org/pgpainless/util/selection/key/KeyBelongsToKeyRingTest.java similarity index 95% rename from pgpainless-core/src/test/java/org/pgpainless/key/selection/key/KeyBelongsToKeyRingTest.java rename to pgpainless-core/src/test/java/org/pgpainless/util/selection/key/KeyBelongsToKeyRingTest.java index 40db5a65..1fd17535 100644 --- a/pgpainless-core/src/test/java/org/pgpainless/key/selection/key/KeyBelongsToKeyRingTest.java +++ b/pgpainless-core/src/test/java/org/pgpainless/util/selection/key/KeyBelongsToKeyRingTest.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.pgpainless.key.selection.key; +package org.pgpainless.util.selection.key; import static org.junit.jupiter.api.Assertions.assertFalse; import static org.junit.jupiter.api.Assertions.assertTrue; @@ -29,7 +29,7 @@ import org.bouncycastle.openpgp.PGPSecretKeyRing; import org.junit.jupiter.api.Test; import org.pgpainless.PGPainless; import org.pgpainless.key.TestKeys; -import org.pgpainless.key.selection.key.impl.KeyBelongsToKeyRing; +import org.pgpainless.util.selection.key.impl.KeyBelongsToKeyRing; public class KeyBelongsToKeyRingTest { diff --git a/pgpainless-core/src/test/java/org/pgpainless/key/selection/key/KeyFlagBasedSelectionStrategyTest.java b/pgpainless-core/src/test/java/org/pgpainless/util/selection/key/KeyFlagBasedSelectionStrategyTest.java similarity index 97% rename from pgpainless-core/src/test/java/org/pgpainless/key/selection/key/KeyFlagBasedSelectionStrategyTest.java rename to pgpainless-core/src/test/java/org/pgpainless/util/selection/key/KeyFlagBasedSelectionStrategyTest.java index 80efb2f2..109a1460 100644 --- a/pgpainless-core/src/test/java/org/pgpainless/key/selection/key/KeyFlagBasedSelectionStrategyTest.java +++ b/pgpainless-core/src/test/java/org/pgpainless/util/selection/key/KeyFlagBasedSelectionStrategyTest.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.pgpainless.key.selection.key; +package org.pgpainless.util.selection.key; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertFalse; @@ -39,8 +39,8 @@ import org.pgpainless.key.generation.type.KeyType; import org.pgpainless.key.generation.type.ecc.EllipticCurve; import org.pgpainless.key.generation.type.eddsa.EdDSACurve; import org.pgpainless.key.generation.type.xdh.XDHCurve; -import org.pgpainless.key.selection.key.impl.HasAllKeyFlagSelectionStrategy; -import org.pgpainless.key.selection.key.impl.HasAnyKeyFlagSelectionStrategy; +import org.pgpainless.util.selection.key.impl.HasAllKeyFlagSelectionStrategy; +import org.pgpainless.util.selection.key.impl.HasAnyKeyFlagSelectionStrategy; import org.pgpainless.key.util.KeyRingUtils; public class KeyFlagBasedSelectionStrategyTest { diff --git a/pgpainless-core/src/test/java/org/pgpainless/key/selection/keyring/EmailKeyRingSelectionStrategyTest.java b/pgpainless-core/src/test/java/org/pgpainless/util/selection/keyring/EmailKeyRingSelectionStrategyTest.java similarity index 96% rename from pgpainless-core/src/test/java/org/pgpainless/key/selection/keyring/EmailKeyRingSelectionStrategyTest.java rename to pgpainless-core/src/test/java/org/pgpainless/util/selection/keyring/EmailKeyRingSelectionStrategyTest.java index 8dc91d17..655af7b8 100644 --- a/pgpainless-core/src/test/java/org/pgpainless/key/selection/keyring/EmailKeyRingSelectionStrategyTest.java +++ b/pgpainless-core/src/test/java/org/pgpainless/util/selection/keyring/EmailKeyRingSelectionStrategyTest.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.pgpainless.key.selection.keyring; +package org.pgpainless.util.selection.keyring; import static org.junit.jupiter.api.Assertions.assertFalse; import static org.junit.jupiter.api.Assertions.assertTrue; @@ -25,7 +25,7 @@ import org.bouncycastle.openpgp.PGPPublicKey; import org.bouncycastle.openpgp.PGPSecretKey; import org.junit.jupiter.api.Test; import org.pgpainless.key.TestKeys; -import org.pgpainless.key.selection.keyring.impl.Email; +import org.pgpainless.util.selection.keyring.impl.Email; public class EmailKeyRingSelectionStrategyTest { diff --git a/pgpainless-core/src/test/java/org/pgpainless/key/selection/keyring/KeyRingsFromCollectionTest.java b/pgpainless-core/src/test/java/org/pgpainless/util/selection/keyring/KeyRingsFromCollectionTest.java similarity index 97% rename from pgpainless-core/src/test/java/org/pgpainless/key/selection/keyring/KeyRingsFromCollectionTest.java rename to pgpainless-core/src/test/java/org/pgpainless/util/selection/keyring/KeyRingsFromCollectionTest.java index 6a915459..dfee07c1 100644 --- a/pgpainless-core/src/test/java/org/pgpainless/key/selection/keyring/KeyRingsFromCollectionTest.java +++ b/pgpainless-core/src/test/java/org/pgpainless/util/selection/keyring/KeyRingsFromCollectionTest.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.pgpainless.key.selection.keyring; +package org.pgpainless.util.selection.keyring; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNull; @@ -30,7 +30,7 @@ import org.bouncycastle.openpgp.PGPSecretKeyRing; import org.bouncycastle.openpgp.PGPSecretKeyRingCollection; import org.junit.jupiter.api.Test; import org.pgpainless.key.TestKeys; -import org.pgpainless.key.selection.keyring.impl.ExactUserId; +import org.pgpainless.util.selection.keyring.impl.ExactUserId; import org.pgpainless.util.MultiMap; public class KeyRingsFromCollectionTest { diff --git a/pgpainless-core/src/test/java/org/pgpainless/key/selection/keyring/WhitelistKeyRingSelectionStrategyTest.java b/pgpainless-core/src/test/java/org/pgpainless/util/selection/keyring/WhitelistKeyRingSelectionStrategyTest.java similarity index 96% rename from pgpainless-core/src/test/java/org/pgpainless/key/selection/keyring/WhitelistKeyRingSelectionStrategyTest.java rename to pgpainless-core/src/test/java/org/pgpainless/util/selection/keyring/WhitelistKeyRingSelectionStrategyTest.java index 698a0104..a03eba91 100644 --- a/pgpainless-core/src/test/java/org/pgpainless/key/selection/keyring/WhitelistKeyRingSelectionStrategyTest.java +++ b/pgpainless-core/src/test/java/org/pgpainless/util/selection/keyring/WhitelistKeyRingSelectionStrategyTest.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.pgpainless.key.selection.keyring; +package org.pgpainless.util.selection.keyring; import static org.junit.jupiter.api.Assertions.assertFalse; import static org.junit.jupiter.api.Assertions.assertTrue; @@ -29,7 +29,7 @@ import org.bouncycastle.openpgp.PGPPublicKeyRing; import org.bouncycastle.openpgp.PGPSecretKeyRing; import org.junit.jupiter.api.Test; import org.pgpainless.key.TestKeys; -import org.pgpainless.key.selection.keyring.impl.Whitelist; +import org.pgpainless.util.selection.keyring.impl.Whitelist; public class WhitelistKeyRingSelectionStrategyTest { diff --git a/pgpainless-core/src/test/java/org/pgpainless/key/selection/keyring/WildcardKeyRingSelectionStrategyTest.java b/pgpainless-core/src/test/java/org/pgpainless/util/selection/keyring/WildcardKeyRingSelectionStrategyTest.java similarity index 95% rename from pgpainless-core/src/test/java/org/pgpainless/key/selection/keyring/WildcardKeyRingSelectionStrategyTest.java rename to pgpainless-core/src/test/java/org/pgpainless/util/selection/keyring/WildcardKeyRingSelectionStrategyTest.java index 8ea4b367..70e0eac3 100644 --- a/pgpainless-core/src/test/java/org/pgpainless/key/selection/keyring/WildcardKeyRingSelectionStrategyTest.java +++ b/pgpainless-core/src/test/java/org/pgpainless/util/selection/keyring/WildcardKeyRingSelectionStrategyTest.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.pgpainless.key.selection.keyring; +package org.pgpainless.util.selection.keyring; import static org.junit.jupiter.api.Assertions.assertTrue; @@ -24,7 +24,7 @@ import org.bouncycastle.openpgp.PGPPublicKeyRing; import org.bouncycastle.openpgp.PGPSecretKeyRing; import org.junit.jupiter.api.Test; import org.pgpainless.key.TestKeys; -import org.pgpainless.key.selection.keyring.impl.Wildcard; +import org.pgpainless.util.selection.keyring.impl.Wildcard; public class WildcardKeyRingSelectionStrategyTest { diff --git a/pgpainless-core/src/test/java/org/pgpainless/key/selection/keyring/XmppKeyRingSelectionStrategyTest.java b/pgpainless-core/src/test/java/org/pgpainless/util/selection/keyring/XmppKeyRingSelectionStrategyTest.java similarity index 96% rename from pgpainless-core/src/test/java/org/pgpainless/key/selection/keyring/XmppKeyRingSelectionStrategyTest.java rename to pgpainless-core/src/test/java/org/pgpainless/util/selection/keyring/XmppKeyRingSelectionStrategyTest.java index d49e81b5..014dfc2f 100644 --- a/pgpainless-core/src/test/java/org/pgpainless/key/selection/keyring/XmppKeyRingSelectionStrategyTest.java +++ b/pgpainless-core/src/test/java/org/pgpainless/util/selection/keyring/XmppKeyRingSelectionStrategyTest.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.pgpainless.key.selection.keyring; +package org.pgpainless.util.selection.keyring; import static org.junit.jupiter.api.Assertions.assertFalse; import static org.junit.jupiter.api.Assertions.assertTrue; @@ -25,7 +25,7 @@ import org.bouncycastle.openpgp.PGPPublicKeyRing; import org.bouncycastle.openpgp.PGPSecretKeyRing; import org.junit.jupiter.api.Test; import org.pgpainless.key.TestKeys; -import org.pgpainless.key.selection.keyring.impl.XMPP; +import org.pgpainless.util.selection.keyring.impl.XMPP; public class XmppKeyRingSelectionStrategyTest {