diff options
author | Ash Hughes <ashes-iontach@hotmail.com> | 2013-03-21 14:18:38 +0000 |
---|---|---|
committer | Ash Hughes <ashes-iontach@hotmail.com> | 2013-03-21 14:18:38 +0000 |
commit | cf34a1720e02ed7bf853e66bd4b451f791dac23b (patch) | |
tree | 9a8a2ed8c2a849c38fa6a73c022d425c742d198d /OpenPGP-Keychain/src/org/sufficientlysecure/keychain/provider/ProviderHelper.java | |
parent | 650b22d5e9512ede43b0c742799d49b061dda587 (diff) | |
download | open-keychain-cf34a1720e02ed7bf853e66bd4b451f791dac23b.tar.gz open-keychain-cf34a1720e02ed7bf853e66bd4b451f791dac23b.tar.bz2 open-keychain-cf34a1720e02ed7bf853e66bd4b451f791dac23b.zip |
change edit key for empty private master keys
Diffstat (limited to 'OpenPGP-Keychain/src/org/sufficientlysecure/keychain/provider/ProviderHelper.java')
-rw-r--r-- | OpenPGP-Keychain/src/org/sufficientlysecure/keychain/provider/ProviderHelper.java | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/OpenPGP-Keychain/src/org/sufficientlysecure/keychain/provider/ProviderHelper.java b/OpenPGP-Keychain/src/org/sufficientlysecure/keychain/provider/ProviderHelper.java index 7190d72c4..2665456ea 100644 --- a/OpenPGP-Keychain/src/org/sufficientlysecure/keychain/provider/ProviderHelper.java +++ b/OpenPGP-Keychain/src/org/sufficientlysecure/keychain/provider/ProviderHelper.java @@ -34,6 +34,7 @@ import org.sufficientlysecure.keychain.helper.PgpMain; import org.sufficientlysecure.keychain.provider.KeychainContract.KeyRings; import org.sufficientlysecure.keychain.provider.KeychainContract.Keys; import org.sufficientlysecure.keychain.provider.KeychainContract.UserIds; +import org.sufficientlysecure.keychain.provider.KeychainDatabase.Tables; import org.sufficientlysecure.keychain.util.IterableIterator; import org.sufficientlysecure.keychain.util.Log; @@ -495,6 +496,49 @@ public class ProviderHelper { } /** + * Get empty status of master key of keyring by its row id + * + * @param context + * @param keyRingRowId + * @return + */ + public static boolean getSecretMasterKeyCanSign(Context context, long keyRingRowId) { + Uri queryUri = KeyRings.buildSecretKeyRingsUri(String.valueOf(keyRingRowId)); + return getMasterKeyCanSign(context, queryUri, keyRingRowId); + } + + /** + * Private helper method to get master key private empty status of keyring by its row id + * + * @param context + * @param queryUri + * @param keyRingRowId + * @return + */ + private static boolean getMasterKeyCanSign(Context context, Uri queryUri, long keyRingRowId) { + String[] projection = new String[] { KeyRings.MASTER_KEY_ID, "(SELECT COUNT(sign_keys." + + Keys._ID + ") FROM " + Tables.KEYS + " AS sign_keys WHERE sign_keys." + Keys.KEY_RING_ROW_ID + " = " + + KeychainDatabase.Tables.KEY_RINGS + "." + KeyRings._ID + " AND sign_keys." + + Keys.CAN_SIGN + " = '1' AND " + Keys.IS_MASTER_KEY + " = 1) AS sign", }; + + ContentResolver cr = context.getContentResolver(); + Cursor cursor = cr.query(queryUri, projection, null, null, null); + + long masterKeyId = -1; + if (cursor != null && cursor.moveToFirst()) { + int masterKeyIdCol = cursor.getColumnIndex("sign"); + + masterKeyId = cursor.getLong(masterKeyIdCol); + } + + if (cursor != null) { + cursor.close(); + } + + return (masterKeyId > 0); + } + + /** * Get master key id of keyring by its row id * * @param context |