aboutsummaryrefslogtreecommitdiffstats
path: root/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/provider/CachedPublicKeyRing.java
diff options
context:
space:
mode:
authorVincent Breitmoser <valodim@mugenguild.com>2014-05-21 21:41:51 +0200
committerVincent Breitmoser <valodim@mugenguild.com>2014-05-21 21:41:51 +0200
commit6d7daec37f9ac7efbdd687c97ca45f9c9ddc5602 (patch)
treee8e62537c6fbf70a0d5623e5ae0fbf24221af7fb /OpenKeychain/src/main/java/org/sufficientlysecure/keychain/provider/CachedPublicKeyRing.java
parentab6c47a9b3642b9f7fe2e3bb45ebbd971517d7e1 (diff)
downloadopen-keychain-6d7daec37f9ac7efbdd687c97ca45f9c9ddc5602.tar.gz
open-keychain-6d7daec37f9ac7efbdd687c97ca45f9c9ddc5602.tar.bz2
open-keychain-6d7daec37f9ac7efbdd687c97ca45f9c9ddc5602.zip
wrapped-key-ring: use CachedKeyRing where possible
Diffstat (limited to 'OpenKeychain/src/main/java/org/sufficientlysecure/keychain/provider/CachedPublicKeyRing.java')
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/provider/CachedPublicKeyRing.java24
1 files changed, 22 insertions, 2 deletions
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/provider/CachedPublicKeyRing.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/provider/CachedPublicKeyRing.java
index 6f7623d65..ed1988336 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/provider/CachedPublicKeyRing.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/provider/CachedPublicKeyRing.java
@@ -2,8 +2,10 @@ package org.sufficientlysecure.keychain.provider;
import android.net.Uri;
+import org.sufficientlysecure.keychain.Constants;
import org.sufficientlysecure.keychain.pgp.KeyRing;
import org.sufficientlysecure.keychain.pgp.exception.PgpGeneralException;
+import org.sufficientlysecure.keychain.util.Log;
public class CachedPublicKeyRing extends KeyRing {
@@ -17,12 +19,30 @@ public class CachedPublicKeyRing extends KeyRing {
public long getMasterKeyId() throws PgpGeneralException {
try {
- return mProviderHelper.getMasterKeyId(mUri);
- } catch(ProviderHelper.NotFoundException e) {
+ Object data = mProviderHelper.getGenericData(mUri,
+ KeychainContract.KeyRings.MASTER_KEY_ID, ProviderHelper.FIELD_TYPE_INTEGER);
+ return (Long) data;
+ } catch (ProviderHelper.NotFoundException e) {
throw new PgpGeneralException(e);
}
}
+ /**
+ * Find the master key id related to a given query. The id will either be extracted from the
+ * query, which should work for all specific /key_rings/ queries, or will be queried if it can't.
+ */
+ public long extractOrGetMasterKeyId() throws PgpGeneralException {
+ // try extracting from the uri first
+ String firstSegment = mUri.getPathSegments().get(1);
+ if (!firstSegment.equals("find")) try {
+ return Long.parseLong(firstSegment);
+ } catch (NumberFormatException e) {
+ // didn't work? oh well.
+ Log.d(Constants.TAG, "Couldn't get masterKeyId from URI, querying...");
+ }
+ return getMasterKeyId();
+ }
+
public String getPrimaryUserId() throws PgpGeneralException {
try {
Object data = mProviderHelper.getGenericData(mUri,