aboutsummaryrefslogtreecommitdiffstats
path: root/OpenKeychain-Test/src
diff options
context:
space:
mode:
Diffstat (limited to 'OpenKeychain-Test/src')
-rw-r--r--OpenKeychain-Test/src/test/java/org/sufficientlysecure/keychain/pgp/UncachedKeyringCanonicalizeTest.java3
-rw-r--r--OpenKeychain-Test/src/test/java/org/sufficientlysecure/keychain/pgp/UncachedKeyringMergeTest.java3
-rw-r--r--OpenKeychain-Test/src/test/java/org/sufficientlysecure/keychain/provider/ProviderHelperSaveTest.java31
-rw-r--r--OpenKeychain-Test/src/test/resources/test-keys/bad_user_id_encoding.asc60
4 files changed, 94 insertions, 3 deletions
diff --git a/OpenKeychain-Test/src/test/java/org/sufficientlysecure/keychain/pgp/UncachedKeyringCanonicalizeTest.java b/OpenKeychain-Test/src/test/java/org/sufficientlysecure/keychain/pgp/UncachedKeyringCanonicalizeTest.java
index 2457eeb51..08dcacea5 100644
--- a/OpenKeychain-Test/src/test/java/org/sufficientlysecure/keychain/pgp/UncachedKeyringCanonicalizeTest.java
+++ b/OpenKeychain-Test/src/test/java/org/sufficientlysecure/keychain/pgp/UncachedKeyringCanonicalizeTest.java
@@ -44,6 +44,7 @@ import org.spongycastle.openpgp.operator.PGPContentSignerBuilder;
import org.spongycastle.openpgp.operator.jcajce.JcaKeyFingerprintCalculator;
import org.spongycastle.openpgp.operator.jcajce.JcaPGPContentSignerBuilder;
import org.spongycastle.openpgp.operator.jcajce.JcePBESecretKeyDecryptorBuilder;
+import org.spongycastle.util.Strings;
import org.sufficientlysecure.keychain.Constants;
import org.sufficientlysecure.keychain.service.results.OperationResultParcel;
import org.sufficientlysecure.keychain.service.results.EditKeyResult;
@@ -157,7 +158,7 @@ public class UncachedKeyringCanonicalizeTest {
@Test public void testUidSignature() throws Exception {
UncachedPublicKey masterKey = ring.getPublicKey();
- final WrappedSignature sig = masterKey.getSignaturesForId("twi").next();
+ final WrappedSignature sig = masterKey.getSignaturesForRawId(Strings.toUTF8ByteArray("twi")).next();
byte[] raw = sig.getEncoded();
// destroy the signature
diff --git a/OpenKeychain-Test/src/test/java/org/sufficientlysecure/keychain/pgp/UncachedKeyringMergeTest.java b/OpenKeychain-Test/src/test/java/org/sufficientlysecure/keychain/pgp/UncachedKeyringMergeTest.java
index 3ffdb8262..8cfed42e4 100644
--- a/OpenKeychain-Test/src/test/java/org/sufficientlysecure/keychain/pgp/UncachedKeyringMergeTest.java
+++ b/OpenKeychain-Test/src/test/java/org/sufficientlysecure/keychain/pgp/UncachedKeyringMergeTest.java
@@ -31,6 +31,7 @@ import org.spongycastle.bcpg.S2K;
import org.spongycastle.bcpg.SecretKeyPacket;
import org.spongycastle.bcpg.sig.KeyFlags;
import org.spongycastle.jce.provider.BouncyCastleProvider;
+import org.spongycastle.util.Strings;
import org.sufficientlysecure.keychain.service.results.OperationResultParcel;
import org.sufficientlysecure.keychain.service.results.EditKeyResult;
import org.sufficientlysecure.keychain.service.SaveKeyringParcel;
@@ -296,7 +297,7 @@ public class UncachedKeyringMergeTest {
{
byte[] sig = KeyringTestingHelper.getNth(
- modified.getPublicKey().getSignaturesForId("twi"), 1).getEncoded();
+ modified.getPublicKey().getSignaturesForRawId(Strings.toUTF8ByteArray("twi")), 1).getEncoded();
// inject the (foreign!) signature into subkey signature position
UncachedKeyRing moreModified = KeyringTestingHelper.injectPacket(modified, sig, 1);
diff --git a/OpenKeychain-Test/src/test/java/org/sufficientlysecure/keychain/provider/ProviderHelperSaveTest.java b/OpenKeychain-Test/src/test/java/org/sufficientlysecure/keychain/provider/ProviderHelperSaveTest.java
index 44f3f9145..c431dff1b 100644
--- a/OpenKeychain-Test/src/test/java/org/sufficientlysecure/keychain/provider/ProviderHelperSaveTest.java
+++ b/OpenKeychain-Test/src/test/java/org/sufficientlysecure/keychain/provider/ProviderHelperSaveTest.java
@@ -25,14 +25,18 @@ import org.junit.runner.RunWith;
import org.robolectric.Robolectric;
import org.robolectric.RobolectricTestRunner;
import org.robolectric.shadows.ShadowLog;
+import org.spongycastle.util.encoders.Hex;
import org.sufficientlysecure.keychain.pgp.CanonicalizedPublicKeyRing;
import org.sufficientlysecure.keychain.pgp.CanonicalizedSecretKey;
import org.sufficientlysecure.keychain.pgp.CanonicalizedSecretKey.SecretKeyType;
import org.sufficientlysecure.keychain.pgp.CanonicalizedSecretKeyRing;
import org.sufficientlysecure.keychain.pgp.UncachedKeyRing;
import org.sufficientlysecure.keychain.service.results.SaveKeyringResult;
+import org.sufficientlysecure.keychain.util.IterableIterator;
import org.sufficientlysecure.keychain.util.ProgressScaler;
+import java.util.Arrays;
+
@RunWith(RobolectricTestRunner.class)
@org.robolectric.annotation.Config(emulateSdk = 18) // Robolectric doesn't yet support 19
public class ProviderHelperSaveTest {
@@ -102,7 +106,6 @@ public class ProviderHelperSaveTest {
SaveKeyringResult result;
- // insert both keys, second should fail
result = mProviderHelper.saveSecretKeyRing(sec, new ProgressScaler());
Assert.assertTrue("import of secret keyring should succeed", result.success());
@@ -119,6 +122,32 @@ public class ProviderHelperSaveTest {
}
+ @Test public void testImportBadEncodedUserId() throws Exception {
+
+ UncachedKeyRing key =
+ readRingFromResource("/test-keys/bad_user_id_encoding.asc");
+ long keyId = key.getMasterKeyId();
+
+ SaveKeyringResult result;
+
+ result = mProviderHelper.savePublicKeyRing(key, new ProgressScaler());
+ Assert.assertTrue("import of keyring should succeed", result.success());
+
+ // make sure both the CanonicalizedSecretKeyRing as well as the CachedPublicKeyRing correctly
+ // indicate the secret key type
+ CanonicalizedPublicKeyRing ring = mProviderHelper.getCanonicalizedPublicKeyRing(keyId);
+ boolean found = false;
+ byte[] badUserId = Hex.decode("436c61757320467261656e6b656c203c436c6175732e4672e46e6b656c4068616c696661782e727774682d61616368656e2e64653e");
+ for (byte[] rawUserId : new IterableIterator<byte[]>(
+ ring.getUnorderedRawUserIds().iterator())) {
+ if (Arrays.equals(rawUserId, badUserId)) {
+ found = true;
+ }
+ }
+
+ Assert.assertTrue("import of the badly encoded user id should succeed", found);
+ }
+
UncachedKeyRing readRingFromResource(String name) throws Exception {
return UncachedKeyRing.fromStream(ProviderHelperSaveTest.class.getResourceAsStream(name)).next();
}
diff --git a/OpenKeychain-Test/src/test/resources/test-keys/bad_user_id_encoding.asc b/OpenKeychain-Test/src/test/resources/test-keys/bad_user_id_encoding.asc
new file mode 100644
index 000000000..332747f84
--- /dev/null
+++ b/OpenKeychain-Test/src/test/resources/test-keys/bad_user_id_encoding.asc
@@ -0,0 +1,60 @@
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: SKS 1.1.5
+Comment: Hostname: keyserver.codinginfinity.com
+
+mQGiBDhOth4RBADOAh3T2bWx+os6LBE+C55EBykg2WdC5AOnRe457ro5X1YuhZomY31hcxvH
+m+hro4Lh43SP2xTcyAz4G2UcLJch9qdgJ7W32wb+kOyEi/WTkfLpU2OiXRS975euqex4kARK
+l2alJfmu8FI4p1WinbGDDPyb6DyiqhW3KP/i3ukQwQCg/zOQEvnI0RgHwFSi1V+dvvCR5ZUD
+/0WCch+cD8Aje0EUtztBx2DL/JKXRA0B/9jivwd/QgQy2hIYYXL5+OFrRBWcpPNFKqhZLyXn
+82OEaZZpJGHEpfGeb8uHZ3fv8NTaPxNGwYx99AwiOVatNX88gCnlQ2ZBWQuuN1rrK/oKduPK
+35yZbNSR3nT8fJsWg/+h1L2eB00qA/0cgovkdYnjVzq3ztt43jXQEzrZzYMRJCK9q1CYSeZ4
+g/zjFwCROgQoVnVcLYfJDCJWM/3zJvlqfgGikhKcT4UepGadLD0ACJ9gchsc0Zrx+gUlgr/K
+aWGdRh+j4i5ykc0HNO/TFo5ESBBrGx3WtyxI1ob+2MAH8RAa18HZq2M1irQgQ2xhdXMgRnJh
+ZW5rZWwgPGFsaWVuQG9ubGluZS5kZT6IRgQQEQIABgUCOFQy1gAKCRA81crJrp6K4xFhAJ93
+JV8PJRdgcHrLrlgKrG9zSpjqRQCgvbImT0pBuZIj058FoklOw7OiBjaISwQQEQIACwUCOE62
+7AQLAwIBAAoJELXPGfg2YSW2elEAn1hrbuR8/I3/OBxReVor0wzQ3tYTAJ44UFUL3VmHweHB
+t+kfPDVl93bMY7QiQ2xhdXMgRnJhZW5rZWwgPGNmcmFlbmtlbEBnbXgubmV0PohGBBARAgAG
+BQI4VDKRAAoJEDzVysmunorjI3AAn2nfyP1nsRpSMzPs8Vm+KUyvTY68AJ9q3evrzGG1Qbtl
+VZgtcbprQKnaX4hGBBARAgAGBQI6uRZFAAoJEDxoxauoLKe5e6sAn3ZDhTsVaNOgFrpzNZQ6
+meeoJTjgAKDdSqyUit+pSzK//pqEdKJUJ2N93ohGBBARAgAGBQI8Niv5AAoJEIPL/xBv5hfH
+GgEAoKMcltZIsfaagIV86tlQsETsleJeAJ9Puwxt/n455EQWHkAQz109noNIVIhLBBARAgAL
+BQI4TrYeBAsDAgEACgkQtc8Z+DZhJbbveQCfUOPT34HElA7KEPTchx4/nBINqKAAoMIk8G+r
+UFzHJo3w7mjeS2OEHCoutCJDbGF1cyBGcmFlbmtlbCA8Y2ZyYWVua2VsQHVzYS5uZXQ+iEYE
+EBECAAYFAjhUMp4ACgkQPNXKya6eiuMuqgCg1WcZAJYFF3/jUA85GJ4BVLdQkpsAoK37bsBz
+tvhUQE/dObJduMsK9462iEsEEBECAAsFAjhOtj4ECwMCAQAKCRC1zxn4NmElts+/AKD9cnve
+ShBQe95eF98yomHFJ8CgHQCfTNyhyJgLhTfYd2wI8jrTePr2zhi0JENsYXVzIEZyYWVua2Vs
+IDxjY19mYXN0amFja0BnbXgubmV0PohGBBARAgAGBQI4VDKsAAoJEDzVysmunorj2mEAoLf9
+yqSFRla7rfVSD2cTSozHrGt4AJ9L4VDELJjDoaTC0ZTxwuVaSPxSxIhLBBARAgALBQI4TrZZ
+BAsDAgEACgkQtc8Z+DZhJbZC2gCgvjEKlK22N+RSKbPEN4XyjrNLh3QAoPVHXqRght5VG3+k
+XzA/zDYWQ+/2tDBDbGF1cyBGcmFlbmtlbCA8ZmFzdGphY2tAaGFsaWZheC5yd3RoLWFhY2hl
+bi5kZT6IRgQQEQIABgUCOFQyyQAKCRA81crJrp6K41yrAKDrCcfzexdQCDFtfbxuwyeUibST
+zgCbBGPP4qeXfAf0l07kY5Of1/PyniiISwQQEQIACwUCOE62uwQLAwIBAAoJELXPGfg2YSW2
+nhoAnRu89DXOd1zOUagpwcqLmj542JwOAKDhN736B2Zd9xtxaw2mT46Qu6YTULQ1Q2xhdXMg
+RnJhZW5rZWwgPENsYXVzLkZy5G5rZWxAaGFsaWZheC5yd3RoLWFhY2hlbi5kZT6IRgQQEQIA
+BgUCOFQy6QAKCRA81crJrp6K47VGAKDvlogjYHaN6t650M6CteLCXh5SqQCghfGa7tk327WE
+St4WER8cXbADd62ISwQQEQIACwUCOE63LwQLAwIBAAoJELXPGfg2YSW2FuUAmQGG/lfpeNad
+fgB61x37ugaFgE9oAJ0QgfdXhalOPRjHnBksxYzzrWFCVLkEDQQ4TrYeEBAA+RigfloGYXpD
+kJXcBWyHhuxh7M1FHw7Y4KN5xsncegus5D/jRpS2MEpT13wCFkiAtRXlKZmpnwd00//jocWW
+IE6YZbjYDe4QXau2FxxR2FDKIldDKb6V6FYrOHhcC9v4TE3V46pGzPvOF+gqnRRh44SpT9GD
+hKh5tu+Pp0NGCMbMHXdXJDhK4sTw6I4TZ5dOkhNh9tvrJQ4X/faY98h8ebByHTh1+/bBc8SD
+ESYrQ2DD4+jWCv2hKCYLrqmus2UPogBTAaB81qujEh76DyrOH3SET8rzF/OkQOnX0ne2Qi0C
+NsEmy2henXyYCQqNfi3t5F159dSST5sYjvwqp0t8MvZCV7cIfwgXcqK61qlC8wXo+VMROU+2
+8W65Szgg2gGnVqMU6Y9AVfPQB8bLQ6mUrfdMZIZJ+AyDvWXpF9Sh01D49Vlf3HZSTz09jdvO
+meFXklnN/biudE/F/Ha8g8VHMGHOfMlm/xX5u/2RXscBqtNbno2gpXI61Brwv0YAWCvl9Ij9
+WE5J280gtJ3kkQc2azNsOA1FHQ98iLMcfFstjvbzySPAQ/ClWxiNjrtVjLhdONM0/XwXV0Oj
+HRhs3jMhLLUq/zzhsSlAGBGNfISnCnLWhsQDGcgHKXrKlQzZlp+r0ApQmwJG0wg9ZqRdQZ+c
+fL2JSyIZJrqrol7DVes91hcAAgIQAIbS27fz+cIoDbWDQ4UhfHFGqPK51uixRfw2fIWmXsV0
+yFChqjaPRieERsP4Y26IGL7jB+yr+Q8fNp+YcevH2YWluMcXAZMXkEMi8Lvz9lDUVZxrgILm
+ZHyBycHXXhn8mFZJufUnn33cr8JC/6D+QBHdF1lly40s1877Om10W14bHTo1SBNN7PoAO/fC
+w+GL0QEIK3iTqEI+bEs+vxLqBKZa1+NkKg/s5L6OXMgBTFuXqZvzWAHLK7wR1QT3DgKgY4go
+YZeJkSzGmmQkZRCVBLZ0MQx1x6CiqMI9VN/5/7h5jA7QuhXhHZHuNmucITU05wHQty2yOH+D
+nWsPCcWRjaXVe0pFqD6pJGBZB58B1N/7uGdn+PkR3TSDOt9IdXqWoY/dvLNc38uoL31FXko8
+ITwzua5LzwGhjwYoNiM31Cehx/zfzzLsQlzIvVjgdNX4rZcMTfi3cJ/RkVue2bOlrRSvCCzk
+58lW+3PsHJ/Rk4yGngOimEK1okcjgSrVQamuK1kG0aKKv//ql1Ehd0WibKZTlq/n644Yb3Yd
+HrVXK2JhdJ1opTmYHbGDS9rE6HUc+cq9DsL4ZZDHwPnsi5FXtjCs3q3k5d2y9P1szFgVXm54
+vNbolRY2J3/shMf0382KfyVNWLjqlC1DEtxNP+Xfk9XJsBe+PD3ClLfbPxG989BJiEYEGBEC
+AAYFAjhOth4ACgkQtc8Z+DZhJbZvegCeJEWNkQYaPDTAx19s+GBBZJo1K6AAmwc006dQTrDf
+ykezF64bvFWd+vuO
+=5FoN
+-----END PGP PUBLIC KEY BLOCK-----
+