From 55bffbbcbe7daf9132e87227b0ce5b856c4424f6 Mon Sep 17 00:00:00 2001 From: Vincent Breitmoser Date: Mon, 28 Nov 2016 08:11:34 +0100 Subject: [PATCH] add trust id database table --- .../keychain/provider/KeychainContract.java | 7 ++++ .../keychain/provider/KeychainDatabase.java | 37 ++++++++++++++++++- 2 files changed, 42 insertions(+), 2 deletions(-) diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/provider/KeychainContract.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/provider/KeychainContract.java index 79bef905c..87fb5992f 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/provider/KeychainContract.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/provider/KeychainContract.java @@ -95,6 +95,13 @@ public class KeychainContract { String IDENTIFIER = "identifier"; } + interface ApiTrustIdentityColumns { + String PACKAGE_NAME = "package_name"; + String IDENTIFIER = "identifier"; + String LAST_UPDATED = "last_updated"; + String MASTER_KEY_ID = "master_key_id"; + } + public static final String CONTENT_AUTHORITY = Constants.PROVIDER_AUTHORITY; private static final Uri BASE_CONTENT_URI_INTERNAL = Uri diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/provider/KeychainDatabase.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/provider/KeychainDatabase.java index 8c45264ab..983b4fab2 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/provider/KeychainDatabase.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/provider/KeychainDatabase.java @@ -33,6 +33,7 @@ import android.provider.BaseColumns; import org.sufficientlysecure.keychain.Constants; import org.sufficientlysecure.keychain.provider.KeychainContract.ApiAppsAllowedKeysColumns; import org.sufficientlysecure.keychain.provider.KeychainContract.ApiAppsColumns; +import org.sufficientlysecure.keychain.provider.KeychainContract.ApiTrustIdentityColumns; import org.sufficientlysecure.keychain.provider.KeychainContract.CertsColumns; import org.sufficientlysecure.keychain.provider.KeychainContract.KeyRingsColumns; import org.sufficientlysecure.keychain.provider.KeychainContract.KeysColumns; @@ -52,7 +53,7 @@ import org.sufficientlysecure.keychain.util.Log; */ public class KeychainDatabase extends SQLiteOpenHelper { private static final String DATABASE_NAME = "openkeychain.db"; - private static final int DATABASE_VERSION = 22; + private static final int DATABASE_VERSION = 23; private Context mContext; public interface Tables { @@ -65,6 +66,7 @@ public class KeychainDatabase extends SQLiteOpenHelper { String API_APPS = "api_apps"; String API_ALLOWED_KEYS = "api_allowed_keys"; String OVERRIDDEN_WARNINGS = "overridden_warnings"; + String API_TRUST_IDENTITIES = "api_trust_identities"; } private static final String CREATE_KEYRINGS_PUBLIC = @@ -156,6 +158,20 @@ public class KeychainDatabase extends SQLiteOpenHelper { + Tables.KEY_RINGS_PUBLIC + "(" + KeyRingsColumns.MASTER_KEY_ID + ") ON DELETE CASCADE" + ")"; + private static final String CREATE_API_TRUST_IDENTITIES = + "CREATE TABLE IF NOT EXISTS " + Tables.API_TRUST_IDENTITIES + " (" + + ApiTrustIdentityColumns.PACKAGE_NAME + " TEXT NOT NULL, " + + ApiTrustIdentityColumns.IDENTIFIER + " TEXT NOT NULL, " + + ApiTrustIdentityColumns.LAST_UPDATED + " INTEGER NOT NULL, " + + ApiTrustIdentityColumns.MASTER_KEY_ID + " INTEGER NOT NULL, " + + "PRIMARY KEY(" + ApiTrustIdentityColumns.PACKAGE_NAME + ", " + + ApiTrustIdentityColumns.IDENTIFIER + "), " + + "FOREIGN KEY(" + ApiTrustIdentityColumns.MASTER_KEY_ID + ") REFERENCES " + + Tables.KEY_RINGS_PUBLIC + "(" + KeyRingsColumns.MASTER_KEY_ID + ") ON DELETE CASCADE, " + + "FOREIGN KEY(" + ApiTrustIdentityColumns.PACKAGE_NAME + ") REFERENCES " + + Tables.API_APPS + "(" + ApiAppsColumns.PACKAGE_NAME + ") ON DELETE CASCADE" + + ")"; + private static final String CREATE_API_APPS = "CREATE TABLE IF NOT EXISTS " + Tables.API_APPS + " (" + BaseColumns._ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " @@ -199,6 +215,7 @@ public class KeychainDatabase extends SQLiteOpenHelper { db.execSQL(CREATE_API_APPS); db.execSQL(CREATE_API_APPS_ALLOWED_KEYS); db.execSQL(CREATE_OVERRIDDEN_WARNINGS); + db.execSQL(CREATE_API_TRUST_IDENTITIES); db.execSQL("CREATE INDEX keys_by_rank ON keys (" + KeysColumns.RANK + ");"); db.execSQL("CREATE INDEX uids_by_rank ON user_packets (" + UserPacketsColumns.RANK + ", " @@ -318,7 +335,23 @@ public class KeychainDatabase extends SQLiteOpenHelper { case 21: db.execSQL("ALTER TABLE updated_keys ADD COLUMN seen_on_keyservers INTEGER;"); - if (oldVersion == 18 || oldVersion == 19 || oldVersion == 20 || oldVersion == 21) { + case 22: + db.execSQL( + "CREATE TABLE IF NOT EXISTS " + Tables.API_TRUST_IDENTITIES + " (" + + ApiTrustIdentityColumns.PACKAGE_NAME + " TEXT NOT NULL, " + + ApiTrustIdentityColumns.IDENTIFIER + " TEXT NOT NULL, " + + ApiTrustIdentityColumns.LAST_UPDATED + " INTEGER NOT NULL, " + + ApiTrustIdentityColumns.MASTER_KEY_ID + " INTEGER NOT NULL, " + + "PRIMARY KEY(" + ApiTrustIdentityColumns.PACKAGE_NAME + ", " + + ApiTrustIdentityColumns.IDENTIFIER + "), " + + "FOREIGN KEY(" + ApiTrustIdentityColumns.MASTER_KEY_ID + ") REFERENCES " + + Tables.KEY_RINGS_PUBLIC + "(" + KeyRingsColumns.MASTER_KEY_ID + ") ON DELETE CASCADE, " + + "FOREIGN KEY(" + ApiTrustIdentityColumns.PACKAGE_NAME + ") REFERENCES " + + Tables.API_APPS + "(" + ApiAppsColumns.PACKAGE_NAME + ") ON DELETE CASCADE" + + ")" + ); + + if (oldVersion == 18 || oldVersion == 19 || oldVersion == 20 || oldVersion == 21 || oldVersion == 22) { // no consolidate for now, often crashes! return; }