aboutsummaryrefslogtreecommitdiffstats
path: root/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/provider
diff options
context:
space:
mode:
Diffstat (limited to 'OpenKeychain/src/main/java/org/sufficientlysecure/keychain/provider')
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/provider/ProviderHelper.java41
1 files changed, 33 insertions, 8 deletions
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/provider/ProviderHelper.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/provider/ProviderHelper.java
index f71fcbd80..fdf8c1f38 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/provider/ProviderHelper.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/provider/ProviderHelper.java
@@ -28,6 +28,7 @@ import android.net.Uri;
import android.os.RemoteException;
import android.support.v4.util.LongSparseArray;
+import org.spongycastle.util.Strings;
import org.sufficientlysecure.keychain.Constants;
import org.sufficientlysecure.keychain.R;
import org.sufficientlysecure.keychain.helper.Preferences;
@@ -154,7 +155,7 @@ public class ProviderHelper {
}
public HashMap<String, Object> getGenericData(Uri uri, String[] proj, int[] types)
- throws NotFoundException {
+ throws NotFoundException {
return getGenericData(uri, proj, types, null);
}
@@ -208,7 +209,7 @@ public class ProviderHelper {
KeyRings.HAS_ANY_SECRET, KeyRings.VERIFIED,
// and of course, ring data
KeyRings.PUBKEY_DATA
- }, KeyRings.HAS_ANY_SECRET + " = 1", null, null);
+ }, KeyRings.HAS_ANY_SECRET + " = 1", null, null);
try {
LongSparseArray<CanonicalizedPublicKey> result = new LongSparseArray<CanonicalizedPublicKey>();
@@ -406,11 +407,11 @@ public class ProviderHelper {
values.put(Keys.EXPIRY, expiryDate.getTime() / 1000);
if (key.isExpired()) {
log(LogLevel.DEBUG, keyId == masterKeyId ?
- LogType.MSG_IP_MASTER_EXPIRED : LogType.MSG_IP_SUBKEY_EXPIRED,
+ LogType.MSG_IP_MASTER_EXPIRED : LogType.MSG_IP_SUBKEY_EXPIRED,
expiryDate.toString());
} else {
log(LogLevel.DEBUG, keyId == masterKeyId ?
- LogType.MSG_IP_MASTER_EXPIRES : LogType.MSG_IP_SUBKEY_EXPIRES,
+ LogType.MSG_IP_MASTER_EXPIRES : LogType.MSG_IP_SUBKEY_EXPIRES,
expiryDate.toString());
}
}
@@ -434,8 +435,11 @@ public class ProviderHelper {
}
mIndent += 1;
List<UserIdItem> uids = new ArrayList<UserIdItem>();
- for (String userId : new IterableIterator<String>(
- masterKey.getUnorderedUserIds().iterator())) {
+ for (byte[] rawUserId : new IterableIterator<byte[]>(
+ masterKey.getUnorderedRawUserIds().iterator())) {
+ String userId = Strings.fromUTF8ByteArray(rawUserId);
+ Log.d(Constants.TAG, "userId: "+userId);
+
UserIdItem item = new UserIdItem();
uids.add(item);
item.userId = userId;
@@ -446,7 +450,7 @@ public class ProviderHelper {
mIndent += 1;
// look through signatures for this specific key
for (WrappedSignature cert : new IterableIterator<WrappedSignature>(
- masterKey.getSignaturesForId(userId))) {
+ masterKey.getSignaturesForRawId(rawUserId))) {
long certId = cert.getKeyId();
try {
// self signature
@@ -469,7 +473,7 @@ public class ProviderHelper {
if (trustedKeys.indexOfKey(certId) >= 0) {
CanonicalizedPublicKey trustedKey = trustedKeys.get(certId);
cert.init(trustedKey);
- if (cert.verifySignature(masterKey, userId)) {
+ if (cert.verifySignature(masterKey, rawUserId)) {
item.trustedCerts.add(cert);
log(LogLevel.INFO, LogType.MSG_IP_UID_CERT_GOOD,
PgpKeyHelper.convertKeyIdToHexShort(trustedKey.getKeyId())
@@ -1308,6 +1312,27 @@ public class ProviderHelper {
return keyIds;
}
+ public Set<String> getAllFingerprints(Uri uri) {
+ Set<String> fingerprints = new HashSet<String>();
+ String[] projection = new String[]{KeyRings.FINGERPRINT};
+ Cursor cursor = mContentResolver.query(uri, projection, null, null, null);
+ try {
+ if(cursor != null) {
+ int fingerprintColumn = cursor.getColumnIndex(KeyRings.FINGERPRINT);
+ while(cursor.moveToNext()) {
+ fingerprints.add(
+ PgpKeyHelper.convertFingerprintToHex(cursor.getBlob(fingerprintColumn))
+ );
+ }
+ }
+ } finally {
+ if (cursor != null) {
+ cursor.close();
+ }
+ }
+ return fingerprints;
+ }
+
public byte[] getApiAppSignature(String packageName) {
Uri queryUri = ApiApps.buildByPackageNameUri(packageName);