diff options
author | Vincent Breitmoser <valodim@mugenguild.com> | 2015-02-28 15:58:26 +0100 |
---|---|---|
committer | Vincent Breitmoser <valodim@mugenguild.com> | 2015-02-28 15:58:26 +0100 |
commit | 0557e0680e3cdedc32f8ebe35105b772c7b3935b (patch) | |
tree | e957e9d06e11e5956f958fab08136d6aa8a9b76c /OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ViewKeyActivity.java | |
parent | 2ae4d6ce05e6ca1585239b779b1dd6f39f58050a (diff) | |
download | open-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.java | 52 |
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 { |