From 66f713c847efe9d3d317113b523013692064d3a5 Mon Sep 17 00:00:00 2001 From: Vincent Breitmoser Date: Thu, 23 Nov 2017 11:39:43 +0100 Subject: [PATCH] add simple unit test for more than decryption one key candidate --- .../service/input/RequiredInputParcel.java | 8 +++++++ .../keychain/pgp/PgpEncryptDecryptTest.java | 20 ++++++++++++++++++ .../resources/test-ciphertexts/two_keys.asc | Bin 0 -> 465 bytes 3 files changed, 28 insertions(+) create mode 100644 OpenKeychain/src/test/resources/test-ciphertexts/two_keys.asc diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/input/RequiredInputParcel.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/input/RequiredInputParcel.java index 99f4fa069..28f53892c 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/input/RequiredInputParcel.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/input/RequiredInputParcel.java @@ -90,6 +90,14 @@ public class RequiredInputParcel implements Parcelable { return mSubKeyIds == null ? null : mSubKeyIds[0]; } + public long[] getMasterKeyIds() { + return mMasterKeyIds; + } + + public long[] getSubKeyIds() { + return mSubKeyIds; + } + public static RequiredInputParcel createRetryUploadOperation() { return new RequiredInputParcel(RequiredInputType.UPLOAD_FAIL_RETRY, null, null, null, 0L, 0L); diff --git a/OpenKeychain/src/test/java/org/sufficientlysecure/keychain/pgp/PgpEncryptDecryptTest.java b/OpenKeychain/src/test/java/org/sufficientlysecure/keychain/pgp/PgpEncryptDecryptTest.java index 2fa7e3895..943446728 100644 --- a/OpenKeychain/src/test/java/org/sufficientlysecure/keychain/pgp/PgpEncryptDecryptTest.java +++ b/OpenKeychain/src/test/java/org/sufficientlysecure/keychain/pgp/PgpEncryptDecryptTest.java @@ -58,6 +58,7 @@ import org.sufficientlysecure.keychain.provider.KeychainContract.KeyRingData; import org.sufficientlysecure.keychain.service.SaveKeyringParcel; import org.sufficientlysecure.keychain.service.SaveKeyringParcel.SubkeyChange; import org.sufficientlysecure.keychain.service.input.CryptoInputParcel; +import org.sufficientlysecure.keychain.service.input.RequiredInputParcel; import org.sufficientlysecure.keychain.service.input.RequiredInputParcel.RequiredInputType; import org.sufficientlysecure.keychain.support.KeyringTestingHelper; import org.sufficientlysecure.keychain.support.KeyringTestingHelper.RawPacket; @@ -1064,6 +1065,25 @@ public class PgpEncryptDecryptTest { Assert.assertEquals(1024, encryptionKeySecurityProblem.bitStrength); } + @Test + public void testDecryptForTwoKeys() throws Exception { + InputStream in = getResourceAsStream("/test-ciphertexts/two_keys.asc"); + + ByteArrayOutputStream out = new ByteArrayOutputStream(); + InputData data = new InputData(in, in.available()); + + PgpDecryptVerifyOperation op = operationWithFakePassphraseCache(null, null, null); + PgpDecryptVerifyInputParcel input = PgpDecryptVerifyInputParcel.builder().build(); + DecryptVerifyResult result = op.execute(input, CryptoInputParcel.createCryptoInputParcel(), data, out); + + RequiredInputParcel requiredInputParcel = result.getRequiredInputParcel(); + Assert.assertNotNull(requiredInputParcel); + Assert.assertEquals(3, requiredInputParcel.getMasterKeyIds().length); + Assert.assertEquals(mStaticRing1.getMasterKeyId(), requiredInputParcel.getMasterKeyIds()[0]); + Assert.assertEquals(mStaticRing1.getMasterKeyId(), requiredInputParcel.getMasterKeyIds()[1]); + Assert.assertEquals(mStaticRing2.getMasterKeyId(), requiredInputParcel.getMasterKeyIds()[2]); + } + private PgpDecryptVerifyOperation operationWithFakePassphraseCache( final Passphrase passphrase, final Long checkMasterKeyId, final Long checkSubKeyId) { diff --git a/OpenKeychain/src/test/resources/test-ciphertexts/two_keys.asc b/OpenKeychain/src/test/resources/test-ciphertexts/two_keys.asc new file mode 100644 index 0000000000000000000000000000000000000000..9c7b345cbd738f141acdd7ae32bfe7b6e1c493cb GIT binary patch literal 465 zcmV;?0WSW8eghc*beP&SsjU(M0|W!odKW`EF}o1BlS7%K6-QjwYb_LvTJfm_a7cRo z){{f-X}Uo?B!yGjn&Egm;_Q)(guj&IT&=9OOjA0TO^Ps!#jIc%-U0YMVBH7Qgs;%$ zo|qT);*&cwVAB7QTwKiI#IP+D^1o~!rU}onE`T_Megj7RuuBFvZo?7+0|XBU=HO+~ z_vfJ+J<3EMycA8>#kqTMMT{0<;*$6|&?B{n%h2?n@uO?YuDmMR4Q2M#r%BAl|kWUs(&G=nw1^ z5#eX