From 48383211c3185b1468cb774c5a16173bdee26400 Mon Sep 17 00:00:00 2001 From: Vincent Breitmoser Date: Tue, 24 Jul 2018 20:50:11 +0200 Subject: [PATCH] clean up remnants of KeychainContract --- .../keychain/AndroidTestHelpers.java | 2 +- .../keychain/ui/EditKeyTest.java | 2 +- .../keychain/KeychainDatabase.java | 43 ++-------- .../keychain/provider/KeychainContract.java | 83 ------------------- .../provider/KeyRepositorySaveTest.java | 16 +++- 5 files changed, 23 insertions(+), 123 deletions(-) delete mode 100644 OpenKeychain/src/main/java/org/sufficientlysecure/keychain/provider/KeychainContract.java diff --git a/OpenKeychain/src/androidTest/java/org/sufficientlysecure/keychain/AndroidTestHelpers.java b/OpenKeychain/src/androidTest/java/org/sufficientlysecure/keychain/AndroidTestHelpers.java index a29479bf2..c376f7040 100644 --- a/OpenKeychain/src/androidTest/java/org/sufficientlysecure/keychain/AndroidTestHelpers.java +++ b/OpenKeychain/src/androidTest/java/org/sufficientlysecure/keychain/AndroidTestHelpers.java @@ -151,7 +151,7 @@ public class AndroidTestHelpers { public static void cleanupForTests(Context context) throws Exception { - KeychainDatabase.getInstance(context).clearDatabase(); + // KeychainDatabase.getInstance(context).clearDatabase(); // import these two, make sure they're there importKeysFromResource(context, "x.sec.asc"); diff --git a/OpenKeychain/src/androidTest/java/org/sufficientlysecure/keychain/ui/EditKeyTest.java b/OpenKeychain/src/androidTest/java/org/sufficientlysecure/keychain/ui/EditKeyTest.java index 7857eab3f..75429dd89 100644 --- a/OpenKeychain/src/androidTest/java/org/sufficientlysecure/keychain/ui/EditKeyTest.java +++ b/OpenKeychain/src/androidTest/java/org/sufficientlysecure/keychain/ui/EditKeyTest.java @@ -63,7 +63,7 @@ public class EditKeyTest { public void test01Edit() throws Exception { Activity activity = mActivity.getActivity(); - KeychainDatabase.getInstance(activity).clearDatabase(); + // KeychainDatabase.getInstance(activity).clearDatabase(); // import key for testing, get a stable initial state importKeysFromResource(activity, "x.sec.asc"); diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/KeychainDatabase.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/KeychainDatabase.java index 09e4d6755..c3687d921 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/KeychainDatabase.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/KeychainDatabase.java @@ -34,9 +34,6 @@ import android.database.SQLException; import android.database.sqlite.SQLiteException; import org.sufficientlysecure.keychain.daos.LocalSecretKeyStorage; -import org.sufficientlysecure.keychain.provider.KeychainContract.CertsColumns; -import org.sufficientlysecure.keychain.provider.KeychainContract.KeysColumns; -import org.sufficientlysecure.keychain.provider.KeychainContract.UserPacketsColumns; import org.sufficientlysecure.keychain.util.Preferences; import timber.log.Timber; @@ -63,20 +60,6 @@ public class KeychainDatabase { return sInstance; } - public static KeychainDatabase getTemporaryInstance(Context context) { - return new KeychainDatabase(context.getApplicationContext()); - } - - public interface Tables { - String KEY_RINGS_PUBLIC = "keyrings_public"; - String KEYS = "keys"; - String KEY_SIGNATURES = "key_signatures"; - String USER_PACKETS = "user_packets"; - String CERTS = "certs"; - String API_ALLOWED_KEYS = "api_allowed_keys"; - String OVERRIDDEN_WARNINGS = "overridden_warnings"; - } - private KeychainDatabase(Context context) { supportSQLiteOpenHelper = new FrameworkSQLiteOpenHelperFactory() @@ -119,6 +102,7 @@ public class KeychainDatabase { return supportSQLiteOpenHelper.getWritableDatabase(); } + @SuppressWarnings("deprecation") // using some sqldelight constants private void onCreate(SupportSQLiteDatabase db, Context context) { Timber.w("Creating database..."); @@ -136,13 +120,13 @@ public class KeychainDatabase { db.execSQL(KeysModel.VALIDKEYSVIEW); db.execSQL(UserPacketsModel.UIDSTATUS); - db.execSQL("CREATE INDEX keys_by_rank ON keys (" + KeysColumns.RANK + ", " + KeysColumns.MASTER_KEY_ID + ");"); - db.execSQL("CREATE INDEX uids_by_rank ON user_packets (" + UserPacketsColumns.RANK + ", " - + UserPacketsColumns.USER_ID + ", " + UserPacketsColumns.MASTER_KEY_ID + ");"); + db.execSQL("CREATE INDEX keys_by_rank ON keys (" + KeysModel.RANK + ", " + KeysModel.MASTER_KEY_ID + ");"); + db.execSQL("CREATE INDEX uids_by_rank ON user_packets (" + UserPacketsModel.RANK + ", " + + UserPacketsModel.USER_ID + ", " + UserPacketsModel.MASTER_KEY_ID + ");"); db.execSQL("CREATE INDEX verified_certs ON certs (" - + CertsColumns.VERIFIED + ", " + CertsColumns.MASTER_KEY_ID + ");"); + + CertsModel.VERIFIED + ", " + CertsModel.MASTER_KEY_ID + ");"); db.execSQL("CREATE INDEX uids_by_email ON user_packets (" - + UserPacketsColumns.EMAIL + ");"); + + UserPacketsModel.EMAIL + ");"); Preferences.getPreferences(context).setKeySignaturesTableInitialized(); } @@ -243,11 +227,9 @@ public class KeychainDatabase { case 12: // do nothing here, just consolidate case 13: - db.execSQL("CREATE INDEX keys_by_rank ON keys (" + KeysColumns.RANK + ");"); - db.execSQL("CREATE INDEX uids_by_rank ON user_packets (" + UserPacketsColumns.RANK + ", " - + UserPacketsColumns.USER_ID + ", " + UserPacketsColumns.MASTER_KEY_ID + ");"); - db.execSQL("CREATE INDEX verified_certs ON certs (" - + CertsColumns.VERIFIED + ", " + CertsColumns.MASTER_KEY_ID + ");"); + db.execSQL("CREATE INDEX keys_by_rank ON keys (rank);"); + db.execSQL("CREATE INDEX uids_by_rank ON user_packets (rank, user_id, master_key_id);"); + db.execSQL("CREATE INDEX verified_certs ON certs (verified, master_key_id);"); case 14: db.execSQL("ALTER TABLE user_packets ADD COLUMN name TEXT"); db.execSQL("ALTER TABLE user_packets ADD COLUMN email TEXT"); @@ -477,11 +459,4 @@ public class KeychainDatabase { copy(in, out); } - // DANGEROUS, use in test code ONLY! - public void clearDatabase() { - getWritableDatabase().execSQL("delete from " + KeyRingsPublicModel.TABLE_NAME); - getWritableDatabase().execSQL("delete from " + ApiAllowedKeysModel.TABLE_NAME); - getWritableDatabase().execSQL("delete from api_apps"); - } - } diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/provider/KeychainContract.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/provider/KeychainContract.java deleted file mode 100644 index c93f574f2..000000000 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/provider/KeychainContract.java +++ /dev/null @@ -1,83 +0,0 @@ -/* - * Copyright (C) 2017 Schürmann & Breitmoser GbR - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -package org.sufficientlysecure.keychain.provider; - - -import android.provider.BaseColumns; - -public class KeychainContract { - - public interface KeysColumns { - String MASTER_KEY_ID = "master_key_id"; // not a database id - String RANK = "rank"; - - String KEY_ID = "key_id"; // not a database id - String ALGORITHM = "algorithm"; - String FINGERPRINT = "fingerprint"; - - String KEY_SIZE = "key_size"; - String KEY_CURVE_OID = "key_curve_oid"; - String CAN_SIGN = "can_sign"; - String CAN_ENCRYPT = "can_encrypt"; - String CAN_CERTIFY = "can_certify"; - String CAN_AUTHENTICATE = "can_authenticate"; - String IS_REVOKED = "is_revoked"; - String IS_SECURE = "is_secure"; - String HAS_SECRET = "has_secret"; - - String CREATION = "creation"; - String EXPIRY = "expiry"; - } - - public interface UserPacketsColumns { - String MASTER_KEY_ID = "master_key_id"; // foreign key to key_rings._ID - String TYPE = "type"; // not a database id - String USER_ID = "user_id"; // not a database id - String NAME = "name"; - String EMAIL = "email"; - String COMMENT = "comment"; - String ATTRIBUTE_DATA = "attribute_data"; // not a database id - String RANK = "rank"; // ONLY used for sorting! no key, no nothing! - String IS_PRIMARY = "is_primary"; - String IS_REVOKED = "is_revoked"; - } - - public interface CertsColumns { - String MASTER_KEY_ID = "master_key_id"; - String RANK = "rank"; - String KEY_ID_CERTIFIER = "key_id_certifier"; - String TYPE = "type"; - String VERIFIED = "verified"; - String CREATION = "creation"; - String DATA = "data"; - } - - public static class Keys implements KeysColumns, BaseColumns { - } - - public static class UserPackets implements UserPacketsColumns, BaseColumns { - } - - public static class Certs implements CertsColumns, BaseColumns { - public static final int VERIFIED_SECRET = 1; - public static final int VERIFIED_SELF = 2; - } - - private KeychainContract() { - } -} diff --git a/OpenKeychain/src/test/java/org/sufficientlysecure/keychain/provider/KeyRepositorySaveTest.java b/OpenKeychain/src/test/java/org/sufficientlysecure/keychain/provider/KeyRepositorySaveTest.java index 1a04345d4..c595fad8e 100644 --- a/OpenKeychain/src/test/java/org/sufficientlysecure/keychain/provider/KeyRepositorySaveTest.java +++ b/OpenKeychain/src/test/java/org/sufficientlysecure/keychain/provider/KeyRepositorySaveTest.java @@ -54,8 +54,8 @@ public class KeyRepositorySaveTest { ShadowLog.stream = System.out; } - @Test public void testImportCooperPair() throws Exception { - + @Test + public void testImportCooperPairOne() throws Exception { // insert two keys with same long key id, make sure the second one gets rejected either way! UncachedKeyRing first = readRingFromResource("/test-keys/cooperpair/9E669861368BCA0BE42DAF7DDDA252EBB8EBE1AF.asc"); @@ -69,10 +69,18 @@ public class KeyRepositorySaveTest { Assert.assertTrue("first keyring import should succeed", result.success()); result = KeyWritableRepository.create(RuntimeEnvironment.application).savePublicKeyRing(second); Assert.assertFalse("second keyring import should fail", result.success()); + } - KeychainDatabase.getInstance(RuntimeEnvironment.application).clearDatabase(); + @Test + public void testImportCooperPairTwo() throws Exception { + // insert two keys with same long key id, make sure the second one gets rejected either way! + UncachedKeyRing first = + readRingFromResource("/test-keys/cooperpair/9E669861368BCA0BE42DAF7DDDA252EBB8EBE1AF.asc"); + UncachedKeyRing second = + readRingFromResource("/test-keys/cooperpair/A55120427374F3F7AA5F1166DDA252EBB8EBE1AF.asc"); + + SaveKeyringResult result; - // and the other way around result = KeyWritableRepository.create(RuntimeEnvironment.application).savePublicKeyRing(second); Assert.assertTrue("first keyring import should succeed", result.success()); result = KeyWritableRepository.create(RuntimeEnvironment.application).savePublicKeyRing(first);