aboutsummaryrefslogtreecommitdiffstats
path: root/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ViewKeyActivity.java
diff options
context:
space:
mode:
authorVincent Breitmoser <valodim@mugenguild.com>2015-02-28 15:58:26 +0100
committerVincent Breitmoser <valodim@mugenguild.com>2015-02-28 15:58:26 +0100
commit0557e0680e3cdedc32f8ebe35105b772c7b3935b (patch)
treee957e9d06e11e5956f958fab08136d6aa8a9b76c /OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ViewKeyActivity.java
parent2ae4d6ce05e6ca1585239b779b1dd6f39f58050a (diff)
downloadopen-keychain-0557e0680e3cdedc32f8ebe35105b772c7b3935b.tar.gz
open-keychain-0557e0680e3cdedc32f8ebe35105b772c7b3935b.tar.bz2
open-keychain-0557e0680e3cdedc32f8ebe35105b772c7b3935b.zip
some changes to qr scan logic
Diffstat (limited to 'OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ViewKeyActivity.java')
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ViewKeyActivity.java52
1 files changed, 46 insertions, 6 deletions
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ViewKeyActivity.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ViewKeyActivity.java
index f7d402c0b..3bc207419 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ViewKeyActivity.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ViewKeyActivity.java
@@ -88,6 +88,8 @@ import java.util.HashMap;
public class ViewKeyActivity extends BaseActivity implements
LoaderManager.LoaderCallbacks<Cursor> {
+ static final int REQUEST_QR_FINGERPRINT = 1;
+
ExportHelper mExportHelper;
ProviderHelper mProviderHelper;
@@ -122,6 +124,8 @@ public class ViewKeyActivity extends BaseActivity implements
private boolean mIsRefreshing;
private Animation mRotate, mRotateSpin;
private View mRefresh;
+ private String mFingerprint;
+ private long mMasterKeyId;
@Override
protected void onCreate(Bundle savedInstanceState) {
@@ -380,13 +384,24 @@ public class ViewKeyActivity extends BaseActivity implements
private void scanQrCode() {
Intent scanQrCode = new Intent(this, ImportKeysProxyActivity.class);
scanQrCode.setAction(ImportKeysProxyActivity.ACTION_SCAN_WITH_RESULT);
- startActivityForResult(scanQrCode, 0);
+ startActivityForResult(scanQrCode, REQUEST_QR_FINGERPRINT);
}
private void certifyFingeprint(Uri dataUri) {
Intent intent = new Intent(this, CertifyFingerprintActivity.class);
intent.setData(dataUri);
+ startCertifyIntent(intent);
+ }
+
+ private void certifyImmediate() {
+ Intent intent = new Intent(this, CertifyKeyActivity.class);
+ intent.putExtra(CertifyKeyActivity.EXTRA_KEY_IDS, new long[]{ mMasterKeyId });
+
+ startCertifyIntent(intent);
+ }
+
+ private void startCertifyIntent (Intent intent) {
// Message is received after signing is done in KeychainIntentService
KeychainIntentServiceHandler saveHandler = new KeychainIntentServiceHandler(this) {
public void handleMessage(Message message) {
@@ -456,7 +471,31 @@ public class ViewKeyActivity extends BaseActivity implements
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
- // if a result has been returned, display a notify
+ if (requestCode == REQUEST_QR_FINGERPRINT && resultCode == Activity.RESULT_OK) {
+
+ // If there is an EXTRA_RESULT, that's an error. Just show it.
+ if (data.hasExtra(OperationResult.EXTRA_RESULT)) {
+ OperationResult result = data.getParcelableExtra(OperationResult.EXTRA_RESULT);
+ result.createNotify(this).show();
+ return;
+ }
+
+ String fp = data.getStringExtra(ImportKeysProxyActivity.EXTRA_FINGERPRINT);
+ if (fp == null) {
+ Notify.createNotify(this, "Error scanning fingerprint!",
+ Notify.LENGTH_LONG, Notify.Style.ERROR).show();
+ return;
+ }
+ if (mFingerprint.equalsIgnoreCase(fp)) {
+ certifyImmediate();
+ } else {
+ Notify.createNotify(this, "Fingerprints did not match!",
+ Notify.LENGTH_LONG, Notify.Style.ERROR).show();
+ }
+
+ return;
+ }
+
if (data != null && data.hasExtra(OperationResult.EXTRA_RESULT)) {
OperationResult result = data.getParcelableExtra(OperationResult.EXTRA_RESULT);
result.createNotify(this).show();
@@ -764,7 +803,8 @@ public class ViewKeyActivity extends BaseActivity implements
mName.setText(R.string.user_id_no_name);
}
- String fingerprint = KeyFormattingUtils.convertFingerprintToHex(data.getBlob(INDEX_FINGERPRINT));
+ mMasterKeyId = data.getLong(INDEX_MASTER_KEY_ID);
+ mFingerprint = KeyFormattingUtils.convertFingerprintToHex(data.getBlob(INDEX_FINGERPRINT));
mIsSecret = data.getInt(INDEX_HAS_ANY_SECRET) != 0;
mHasEncrypt = data.getInt(INDEX_HAS_ENCRYPT) != 0;
@@ -826,8 +866,8 @@ public class ViewKeyActivity extends BaseActivity implements
mStatusText.setText(R.string.view_key_my_key);
mStatusImage.setVisibility(View.GONE);
color = getResources().getColor(R.color.primary);
- photoTask.execute(fingerprint);
- loadQrCode(fingerprint);
+ photoTask.execute(mFingerprint);
+ loadQrCode(mFingerprint);
mQrCodeLayout.setVisibility(View.VISIBLE);
// and place leftOf qr code
@@ -873,7 +913,7 @@ public class ViewKeyActivity extends BaseActivity implements
KeyFormattingUtils.setStatusImage(this, mStatusImage, mStatusText,
KeyFormattingUtils.STATE_VERIFIED, R.color.icons, true);
color = getResources().getColor(R.color.primary);
- photoTask.execute(fingerprint);
+ photoTask.execute(mFingerprint);
mFab.setVisibility(View.GONE);
} else {