aboutsummaryrefslogtreecommitdiffstats
path: root/OpenKeychain/src/main/java/org/sufficientlysecure
diff options
context:
space:
mode:
authormar-v-in <github@rvin.mooo.com>2014-05-29 11:43:41 +0200
committermar-v-in <github@rvin.mooo.com>2014-05-29 11:43:41 +0200
commit34b97cb136376d14d4a1a48ccd89afa7d8abbb48 (patch)
tree0840093254fc1a58d4ac5f9cad27882befe2afbf /OpenKeychain/src/main/java/org/sufficientlysecure
parentd4cdc36448645c26b95f453a0790a4a9fc1d0b52 (diff)
downloadopen-keychain-34b97cb136376d14d4a1a48ccd89afa7d8abbb48.tar.gz
open-keychain-34b97cb136376d14d4a1a48ccd89afa7d8abbb48.tar.bz2
open-keychain-34b97cb136376d14d4a1a48ccd89afa7d8abbb48.zip
Merge ACTION_DOWNLOAD_AND_IMPORT_KEYS and ACTION_IMPORT_KEYBASE_KEYS
Diffstat (limited to 'OpenKeychain/src/main/java/org/sufficientlysecure')
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/KeychainIntentService.java69
1 files changed, 15 insertions, 54 deletions
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/KeychainIntentService.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/KeychainIntentService.java
index b6ee234f4..2b8745f0a 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/KeychainIntentService.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/KeychainIntentService.java
@@ -40,6 +40,7 @@ import org.sufficientlysecure.keychain.helper.FileHelper;
import org.sufficientlysecure.keychain.helper.OtherHelper;
import org.sufficientlysecure.keychain.helper.Preferences;
import org.sufficientlysecure.keychain.keyimport.HkpKeyserver;
+import org.sufficientlysecure.keychain.keyimport.Keyserver;
import org.sufficientlysecure.keychain.pgp.PgpConversionHelper;
import org.sufficientlysecure.keychain.pgp.PgpDecryptVerify;
import org.sufficientlysecure.keychain.pgp.PgpDecryptVerifyResult;
@@ -742,68 +743,28 @@ public class KeychainIntentService extends IntentService
} catch (Exception e) {
sendErrorToHandler(e);
}
- } else if (ACTION_IMPORT_KEYBASE_KEYS.equals(action)) {
- ArrayList<ImportKeysListEntry> entries = data.getParcelableArrayList(DOWNLOAD_KEY_LIST);
-
- try {
- KeybaseKeyserver server = new KeybaseKeyserver();
- for (ImportKeysListEntry entry : entries) {
- // the keybase handle is in userId(1)
- String keybaseId = entry.getExtraData();
- byte[] downloadedKeyBytes = server.get(keybaseId).getBytes();
-
- // create PGPKeyRing object based on downloaded armored key
- PGPKeyRing downloadedKey = null;
- BufferedInputStream bufferedInput =
- new BufferedInputStream(new ByteArrayInputStream(downloadedKeyBytes));
- if (bufferedInput.available() > 0) {
- InputStream in = PGPUtil.getDecoderStream(bufferedInput);
- PGPObjectFactory objectFactory = new PGPObjectFactory(in);
-
- // get first object in block
- Object obj;
- if ((obj = objectFactory.nextObject()) != null) {
-
- if (obj instanceof PGPKeyRing) {
- downloadedKey = (PGPKeyRing) obj;
- } else {
- throw new PgpGeneralException("Object not recognized as PGPKeyRing!");
- }
- }
- }
-
- // save key bytes in entry object for doing the
- // actual import afterwards
- entry.setBytes(downloadedKey.getEncoded());
- }
-
- Intent importIntent = new Intent(this, KeychainIntentService.class);
- importIntent.setAction(ACTION_IMPORT_KEYRING);
- Bundle importData = new Bundle();
- importData.putParcelableArrayList(IMPORT_KEY_LIST, entries);
- importIntent.putExtra(EXTRA_DATA, importData);
- importIntent.putExtra(EXTRA_MESSENGER, mMessenger);
-
- // now import it with this service
- onHandleIntent(importIntent);
-
- // result is handled in ACTION_IMPORT_KEYRING
- } catch (Exception e) {
- sendErrorToHandler(e);
- }
- } else if (ACTION_DOWNLOAD_AND_IMPORT_KEYS.equals(action)) {
+ } else if (ACTION_DOWNLOAD_AND_IMPORT_KEYS.equals(action) || ACTION_IMPORT_KEYBASE_KEYS.equals(action)) {
try {
ArrayList<ImportKeysListEntry> entries = data.getParcelableArrayList(DOWNLOAD_KEY_LIST);
String keyServer = data.getString(DOWNLOAD_KEY_SERVER);
+ // this downloads the keys and places them into the ImportKeysListEntry entries
for (ImportKeysListEntry entry : entries) {
- // this downloads the keys and places them into the ImportKeysListEntry entries
- HkpKeyserver server = new HkpKeyserver(entry.getOrigin() != null ? entry.getOrigin() : keyServer);
+ Keyserver server;
+ if (entry.getOrigin() == null) {
+ server = new HkpKeyserver(keyServer);
+ } else if (KeybaseKeyserver.ORIGIN.equals(entry.getOrigin())) {
+ server = new KeybaseKeyserver();
+ } else {
+ server = new HkpKeyserver(entry.getOrigin());
+ }
// if available use complete fingerprint for get request
byte[] downloadedKeyBytes;
- if (entry.getFingerprintHex() != null) {
+ if (KeybaseKeyserver.ORIGIN.equals(entry.getOrigin())) {
+ downloadedKeyBytes = server.get(entry.getExtraData()).getBytes();
+ } else if (entry.getFingerprintHex() != null) {
downloadedKeyBytes = server.get("0x" + entry.getFingerprintHex()).getBytes();
} else {
downloadedKeyBytes = server.get(entry.getKeyIdHex()).getBytes();
@@ -833,7 +794,7 @@ public class KeychainIntentService extends IntentService
if (entry.getFingerprintHex() != null) {
String downloadedKeyFp = PgpKeyHelper.convertFingerprintToHex(
downloadedKey.getPublicKey().getFingerprint());
- if (downloadedKeyFp.equals(entry.getFingerprintHex())) {
+ if (downloadedKeyFp.equalsIgnoreCase(entry.getFingerprintHex())) {
Log.d(Constants.TAG, "fingerprint of downloaded key is the same as " +
"the requested fingerprint!");
} else {