change how empty private cheks happen, speeds things up

This commit is contained in:
Ash Hughes 2013-03-18 16:07:34 +00:00
parent 2ccd3796c4
commit 12d6cfefd7
3 changed files with 12 additions and 11 deletions

View File

@ -164,9 +164,7 @@ public class PgpHelper {
for (int i = 0; i < signingKeys.size(); ++i) { for (int i = 0; i < signingKeys.size(); ++i) {
PGPSecretKey key = signingKeys.get(i); PGPSecretKey key = signingKeys.get(i);
if (key.isMasterKey()) { if (key.isMasterKey()) {
if (!isSecretKeyPrivateEmpty(key)) { masterKey = key;
masterKey = key;
}
} else { } else {
usableKeys.add(key); usableKeys.add(key);
} }

View File

@ -370,11 +370,19 @@ public class ProviderHelper {
private static ContentProviderOperation buildSecretKeyOperations(Context context, private static ContentProviderOperation buildSecretKeyOperations(Context context,
long keyRingRowId, PGPSecretKey key, int rank) throws IOException { long keyRingRowId, PGPSecretKey key, int rank) throws IOException {
ContentValues values = new ContentValues(); ContentValues values = new ContentValues();
boolean has_private = true;
if (key.isMasterKey()) {
if (PgpHelper.isSecretKeyPrivateEmpty(key)) {
has_private = false;
}
}
values.put(Keys.KEY_ID, key.getKeyID()); values.put(Keys.KEY_ID, key.getKeyID());
values.put(Keys.IS_MASTER_KEY, key.isMasterKey()); values.put(Keys.IS_MASTER_KEY, key.isMasterKey());
values.put(Keys.ALGORITHM, key.getPublicKey().getAlgorithm()); values.put(Keys.ALGORITHM, key.getPublicKey().getAlgorithm());
values.put(Keys.KEY_SIZE, key.getPublicKey().getBitStrength()); values.put(Keys.KEY_SIZE, key.getPublicKey().getBitStrength());
values.put(Keys.CAN_SIGN, PgpHelper.isSigningKey(key)); values.put(Keys.CAN_SIGN, (PgpHelper.isSigningKey(key) && has_private));
values.put(Keys.CAN_ENCRYPT, PgpHelper.isEncryptionKey(key)); values.put(Keys.CAN_ENCRYPT, PgpHelper.isEncryptionKey(key));
values.put(Keys.IS_REVOKED, key.getPublicKey().isRevoked()); values.put(Keys.IS_REVOKED, key.getPublicKey().isRevoked());
values.put(Keys.CREATION, PgpHelper.getCreationDate(key).getTime() / 1000); values.put(Keys.CREATION, PgpHelper.getCreationDate(key).getTime() / 1000);

View File

@ -159,13 +159,8 @@ public class KeyListAdapter extends CursorTreeAdapter {
} }
ImageView signIcon = (ImageView) view.findViewById(R.id.ic_signKey); ImageView signIcon = (ImageView) view.findViewById(R.id.ic_signKey);
boolean privateEmpty = false; //Don't show signing icon for master keys without private keys
//TODO: does this need to be done for encrypting icon? Does anyone use master key for encrypt? if (cursor.getInt(cursor.getColumnIndex(Keys.CAN_SIGN)) != 1) {
if (cursor.getInt(cursor.getColumnIndex(Keys.IS_MASTER_KEY)) == 1) {
privateEmpty = PgpHelper.isSecretKeyPrivateEmpty(context,
cursor.getLong(cursor.getColumnIndex(Keys.KEY_ID)));
}
if (privateEmpty || cursor.getInt(cursor.getColumnIndex(Keys.CAN_SIGN)) != 1) {
signIcon.setVisibility(View.GONE); signIcon.setVisibility(View.GONE);
} else { } else {
signIcon.setVisibility(View.VISIBLE); signIcon.setVisibility(View.VISIBLE);