diff --git a/pgpainless-core/src/main/kotlin/org/pgpainless/decryption_verification/ConsumerOptions.kt b/pgpainless-core/src/main/kotlin/org/pgpainless/decryption_verification/ConsumerOptions.kt index 1ab218e5..9e85d71d 100644 --- a/pgpainless-core/src/main/kotlin/org/pgpainless/decryption_verification/ConsumerOptions.kt +++ b/pgpainless-core/src/main/kotlin/org/pgpainless/decryption_verification/ConsumerOptions.kt @@ -329,8 +329,8 @@ class ConsumerOptions { fun isIgnoreMDCErrors(): Boolean = ignoreMDCErrors - fun setAllowDecryptionWithNonEncryptionKey(allow: Boolean): ConsumerOptions = apply { - allowDecryptionWithNonEncryptionKey = allow + fun setAllowDecryptionWithMissingKeyFlags(): ConsumerOptions = apply { + allowDecryptionWithNonEncryptionKey = true } fun getAllowDecryptionWithNonEncryptionKey(): Boolean { diff --git a/pgpainless-core/src/main/kotlin/org/pgpainless/key/modification/secretkeyring/SecretKeyRingEditor.kt b/pgpainless-core/src/main/kotlin/org/pgpainless/key/modification/secretkeyring/SecretKeyRingEditor.kt index f22e44bb..55647f52 100644 --- a/pgpainless-core/src/main/kotlin/org/pgpainless/key/modification/secretkeyring/SecretKeyRingEditor.kt +++ b/pgpainless-core/src/main/kotlin/org/pgpainless/key/modification/secretkeyring/SecretKeyRingEditor.kt @@ -310,7 +310,7 @@ class SecretKeyRingEditor(var key: OpenPGPKey, override val referenceTime: Date if (subkeyAlgorithm.isSigningCapable()) { val pkBindingBuilder = PrimaryKeyBindingSignatureBuilder( - key.primarySecretKey, subkeyProtector, hashAlgorithm) + key.primarySecretKey, primaryKeyProtector, hashAlgorithm) pkBindingBuilder.hashedSubpackets.setSignatureCreationTime(referenceTime) hashedSubpackets.addEmbeddedSignature(pkBindingBuilder.build(primaryKey.publicKey)) } diff --git a/pgpainless-core/src/test/java/org/pgpainless/decryption_verification/PreventDecryptionUsingNonEncryptionKeyTest.java b/pgpainless-core/src/test/java/org/pgpainless/decryption_verification/PreventDecryptionUsingNonEncryptionKeyTest.java index 9a80667d..be30f40d 100644 --- a/pgpainless-core/src/test/java/org/pgpainless/decryption_verification/PreventDecryptionUsingNonEncryptionKeyTest.java +++ b/pgpainless-core/src/test/java/org/pgpainless/decryption_verification/PreventDecryptionUsingNonEncryptionKeyTest.java @@ -195,7 +195,9 @@ public class PreventDecryptionUsingNonEncryptionKeyTest { ByteArrayInputStream msgIn = new ByteArrayInputStream(MSG.getBytes(StandardCharsets.UTF_8)); DecryptionStream decryptionStream = PGPainless.decryptAndOrVerify() .onInputStream(msgIn) - .withOptions(ConsumerOptions.get().addDecryptionKey(secretKeys)); + .withOptions(ConsumerOptions.get() + .setAllowDecryptionWithMissingKeyFlags() + .addDecryptionKey(secretKeys)); Streams.drain(decryptionStream); decryptionStream.close(); @@ -225,7 +227,7 @@ public class PreventDecryptionUsingNonEncryptionKeyTest { DecryptionStream decryptionStream = PGPainless.decryptAndOrVerify() .onInputStream(msgIn) .withOptions(ConsumerOptions.get() - .setAllowDecryptionWithNonEncryptionKey(true) + .setAllowDecryptionWithMissingKeyFlags() .addDecryptionKey(secretKeys)); byte[] decrypted = Streams.readAll(decryptionStream); diff --git a/pgpainless-core/src/test/java/org/pgpainless/encryption_signing/EncryptionWithMissingKeyFlagsTest.java b/pgpainless-core/src/test/java/org/pgpainless/encryption_signing/EncryptionWithMissingKeyFlagsTest.java index 5fd4a674..10b1656c 100644 --- a/pgpainless-core/src/test/java/org/pgpainless/encryption_signing/EncryptionWithMissingKeyFlagsTest.java +++ b/pgpainless-core/src/test/java/org/pgpainless/encryption_signing/EncryptionWithMissingKeyFlagsTest.java @@ -179,7 +179,9 @@ public class EncryptionWithMissingKeyFlagsTest { ByteArrayInputStream in = new ByteArrayInputStream(out.toByteArray()); DecryptionStream decryptionStream = PGPainless.decryptAndOrVerify() .onInputStream(in) - .withOptions(ConsumerOptions.get().addDecryptionKey(secretKeys)); + .withOptions(ConsumerOptions.get() + .setAllowDecryptionWithMissingKeyFlags() + .addDecryptionKey(secretKeys)); ByteArrayOutputStream plain = new ByteArrayOutputStream(); // Decrypt diff --git a/pgpainless-core/src/test/java/org/pgpainless/key/modification/AddSubkeyWithModifiedBindingSignatureSubpacketsTest.java b/pgpainless-core/src/test/java/org/pgpainless/key/modification/AddSubkeyWithModifiedBindingSignatureSubpacketsTest.java index 043c1188..a3aea2f0 100644 --- a/pgpainless-core/src/test/java/org/pgpainless/key/modification/AddSubkeyWithModifiedBindingSignatureSubpacketsTest.java +++ b/pgpainless-core/src/test/java/org/pgpainless/key/modification/AddSubkeyWithModifiedBindingSignatureSubpacketsTest.java @@ -43,6 +43,7 @@ public class AddSubkeyWithModifiedBindingSignatureSubpacketsTest { .modernKeyRing("Alice ") .getPGPSecretKeyRing(); KeyRingInfo before = PGPainless.inspectKeyRing(secretKeys); + List signingKeysBefore = before.getSigningSubkeys(); PGPKeyPair secretSubkey = KeyRingBuilder.generateKeyPair( KeySpec.getBuilder(KeyType.EDDSA_LEGACY(EdDSALegacyCurve._Ed25519), KeyFlag.SIGN_DATA).build(), @@ -60,11 +61,11 @@ public class AddSubkeyWithModifiedBindingSignatureSubpacketsTest { .done(); KeyRingInfo after = PGPainless.inspectKeyRing(secretKeys); - List signingKeys = after.getSigningSubkeys(); - signingKeys.removeAll(before.getSigningSubkeys()); - assertFalse(signingKeys.isEmpty()); + List signingKeysAfter = after.getSigningSubkeys(); + signingKeysAfter.removeAll(signingKeysBefore); + assertFalse(signingKeysAfter.isEmpty()); - OpenPGPCertificate.OpenPGPComponentKey newKey = signingKeys.get(0); + OpenPGPCertificate.OpenPGPComponentKey newKey = signingKeysAfter.get(0); Date newExpirationDate = after.getSubkeyExpirationDate(new OpenPgpV4Fingerprint(newKey.getPGPPublicKey())); assertNotNull(newExpirationDate); Date now = new Date(); diff --git a/pgpainless-core/src/test/java/org/pgpainless/signature/builder/ThirdPartyDirectKeySignatureBuilderTest.java b/pgpainless-core/src/test/java/org/pgpainless/signature/builder/ThirdPartyDirectKeySignatureBuilderTest.java index 616b538e..d0e2aa39 100644 --- a/pgpainless-core/src/test/java/org/pgpainless/signature/builder/ThirdPartyDirectKeySignatureBuilderTest.java +++ b/pgpainless-core/src/test/java/org/pgpainless/signature/builder/ThirdPartyDirectKeySignatureBuilderTest.java @@ -66,7 +66,7 @@ public class ThirdPartyDirectKeySignatureBuilderTest { PGPSignature signature = info.getLatestDirectKeySelfSignature(); assertNotNull(signature); - assertEquals(directKeySig, signature); + assertEquals(directKeySig.getSignature(), signature); assertEquals(SignatureType.DIRECT_KEY, SignatureType.valueOf(signature.getSignatureType())); assertEquals(Collections.singletonList(KeyFlag.CERTIFY_OTHER), SignatureSubpacketsUtil.parseKeyFlags(signature));