do not pre-select revoked or expired keys

This commit is contained in:
Dominik Schürmann 2014-08-16 04:11:39 +02:00
parent 8d60d9f103
commit 443170b876

View File

@ -36,6 +36,7 @@ import org.sufficientlysecure.keychain.pgp.PgpDecryptVerifyResult;
import org.sufficientlysecure.keychain.pgp.PgpHelper; import org.sufficientlysecure.keychain.pgp.PgpHelper;
import org.sufficientlysecure.keychain.pgp.PgpSignEncrypt; import org.sufficientlysecure.keychain.pgp.PgpSignEncrypt;
import org.sufficientlysecure.keychain.pgp.exception.PgpGeneralException; import org.sufficientlysecure.keychain.pgp.exception.PgpGeneralException;
import org.sufficientlysecure.keychain.provider.KeychainContract;
import org.sufficientlysecure.keychain.provider.KeychainContract.ApiAccounts; import org.sufficientlysecure.keychain.provider.KeychainContract.ApiAccounts;
import org.sufficientlysecure.keychain.provider.KeychainContract.KeyRings; import org.sufficientlysecure.keychain.provider.KeychainContract.KeyRings;
import org.sufficientlysecure.keychain.provider.ProviderHelper; import org.sufficientlysecure.keychain.provider.ProviderHelper;
@ -53,11 +54,16 @@ import java.util.Set;
public class OpenPgpService extends RemoteService { public class OpenPgpService extends RemoteService {
static final String[] KEYRING_PROJECTION = static final String[] EMAIL_SEARCH_PROJECTION = new String[]{
new String[]{ KeyRings._ID,
KeyRings._ID, KeyRings.MASTER_KEY_ID,
KeyRings.MASTER_KEY_ID, KeyRings.IS_EXPIRED,
}; KeyRings.IS_REVOKED,
};
// do not pre-select revoked or expired keys
static final String EMAIL_SEARCH_WHERE = KeychainContract.KeyRings.IS_REVOKED + " = 0 AND "
+ KeychainContract.KeyRings.IS_EXPIRED + " = 0";
/** /**
* Search database for key ids based on emails. * Search database for key ids based on emails.
@ -76,7 +82,7 @@ public class OpenPgpService extends RemoteService {
for (String email : encryptionUserIds) { for (String email : encryptionUserIds) {
Uri uri = KeyRings.buildUnifiedKeyRingsFindByEmailUri(email); Uri uri = KeyRings.buildUnifiedKeyRingsFindByEmailUri(email);
Cursor cursor = getContentResolver().query(uri, KEYRING_PROJECTION, null, null, null); Cursor cursor = getContentResolver().query(uri, EMAIL_SEARCH_PROJECTION, EMAIL_SEARCH_WHERE, null, null);
try { try {
if (cursor != null && cursor.moveToFirst()) { if (cursor != null && cursor.moveToFirst()) {
long id = cursor.getLong(cursor.getColumnIndex(KeyRings.MASTER_KEY_ID)); long id = cursor.getLong(cursor.getColumnIndex(KeyRings.MASTER_KEY_ID));