aboutsummaryrefslogtreecommitdiffstats
path: root/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/CreateKeyYubiFragment.java
diff options
context:
space:
mode:
Diffstat (limited to 'OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/CreateKeyYubiFragment.java')
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/CreateKeyYubiFragment.java149
1 files changed, 2 insertions, 147 deletions
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/CreateKeyYubiFragment.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/CreateKeyYubiFragment.java
index 63549c3d6..a1668d22e 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/CreateKeyYubiFragment.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/CreateKeyYubiFragment.java
@@ -17,48 +17,33 @@
package org.sufficientlysecure.keychain.ui;
-import java.io.IOException;
import java.nio.ByteBuffer;
import java.util.ArrayList;
-import java.util.Arrays;
import android.app.Activity;
import android.content.Intent;
import android.database.Cursor;
-import android.net.Uri;
import android.os.Bundle;
import android.os.Message;
import android.os.Messenger;
import android.support.v4.app.Fragment;
import android.support.v4.app.LoaderManager;
-import android.support.v4.content.CursorLoader;
-import android.support.v4.content.Loader;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
-import android.widget.ViewAnimator;
import org.sufficientlysecure.keychain.R;
import org.sufficientlysecure.keychain.keyimport.ParcelableKeyRing;
import org.sufficientlysecure.keychain.operations.results.DecryptVerifyResult;
import org.sufficientlysecure.keychain.operations.results.ImportKeyResult;
-import org.sufficientlysecure.keychain.operations.results.PromoteKeyResult;
-import org.sufficientlysecure.keychain.provider.KeychainContract;
-import org.sufficientlysecure.keychain.provider.KeychainContract.KeyRings;
import org.sufficientlysecure.keychain.service.KeychainIntentService;
import org.sufficientlysecure.keychain.service.KeychainIntentServiceHandler;
import org.sufficientlysecure.keychain.ui.CreateKeyActivity.FragAction;
-import org.sufficientlysecure.keychain.ui.CreateKeyActivity.NfcListenerFragment;
import org.sufficientlysecure.keychain.ui.util.KeyFormattingUtils;
-import org.sufficientlysecure.keychain.ui.util.Notify;
-import org.sufficientlysecure.keychain.ui.util.Notify.Style;
-import org.sufficientlysecure.keychain.ui.widget.NameEditText;
import org.sufficientlysecure.keychain.util.Preferences;
-
-public class CreateKeyYubiFragment extends Fragment
- implements LoaderManager.LoaderCallbacks<Cursor> {
+public class CreateKeyYubiFragment extends Fragment {
private static final String ARG_FINGERPRINT = "fingerprint";
@@ -67,12 +52,7 @@ public class CreateKeyYubiFragment extends Fragment
private byte[] mScannedFingerprint;
private long mScannedMasterKeyId;
- private ViewAnimator mAnimator;
private TextView mUnknownFingerprint;
- private TextView mFingerprint;
- private TextView mUserId;
-
- private YubiImportState mState;
public static Fragment createInstance(byte[] scannedFingerprint) {
Bundle args = new Bundle();
@@ -91,26 +71,14 @@ public class CreateKeyYubiFragment extends Fragment
mScannedFingerprint = getArguments().getByteArray(ARG_FINGERPRINT);
mScannedMasterKeyId = getKeyIdFromFingerprint(mScannedFingerprint);
- getLoaderManager().initLoader(0, null, this);
- }
-
- enum YubiImportState {
- UNKNOWN, // scanned unknown key (ready to import)
- BAD_FINGERPRINT, // scanned key, bad fingerprint
- IMPORTED, // imported key (ready to promote)
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.create_yubikey_fragment, container, false);
- mAnimator = (ViewAnimator) view.findViewById(R.id.create_yubikey_animator);
-
mUnknownFingerprint = (TextView) view.findViewById(R.id.create_yubikey_unknown_fp);
- mFingerprint = (TextView) view.findViewById(R.id.create_yubikey_fingerprint);
- mUserId = (TextView) view.findViewById(R.id.create_yubikey_user_id);
-
View mBackButton = view.findViewById(R.id.create_key_back_button);
View mNextButton = view.findViewById(R.id.create_key_next_button);
@@ -136,115 +104,8 @@ public class CreateKeyYubiFragment extends Fragment
mCreateKeyActivity = (CreateKeyActivity) getActivity();
}
- // These are the rows that we will retrieve.
- static final String[] UNIFIED_PROJECTION = new String[]{
- KeychainContract.KeyRings._ID,
- KeychainContract.KeyRings.MASTER_KEY_ID,
- KeychainContract.KeyRings.USER_ID,
- KeychainContract.KeyRings.IS_REVOKED,
- KeychainContract.KeyRings.IS_EXPIRED,
- KeychainContract.KeyRings.HAS_ANY_SECRET,
- KeychainContract.KeyRings.FINGERPRINT,
- };
-
- static final int INDEX_MASTER_KEY_ID = 1;
- static final int INDEX_USER_ID = 2;
- static final int INDEX_IS_REVOKED = 3;
- static final int INDEX_IS_EXPIRED = 4;
- static final int INDEX_HAS_ANY_SECRET = 5;
- static final int INDEX_FINGERPRINT = 6;
-
- @Override
- public Loader<Cursor> onCreateLoader(int id, Bundle args) {
- Uri baseUri = KeychainContract.KeyRings.buildUnifiedKeyRingUri(
- KeyRings.buildUnifiedKeyRingUri(mScannedMasterKeyId)
- );
- return new CursorLoader(getActivity(), baseUri, UNIFIED_PROJECTION, null, null, null);
- }
-
- @Override
- public void onLoadFinished(Loader<Cursor> loader, Cursor data) {
- if (data.moveToFirst()) {
-
- byte[] fingerprint = data.getBlob(INDEX_FINGERPRINT);
- if (!Arrays.equals(fingerprint, mScannedFingerprint)) {
- mState = YubiImportState.BAD_FINGERPRINT;
- Notify.create(getActivity(), "Fingerprint mismatch!", Style.ERROR);
- return;
- }
-
- String userId = data.getString(INDEX_USER_ID);
- boolean hasSecret = data.getInt(INDEX_HAS_ANY_SECRET) != 0;
-
- String fp = KeyFormattingUtils.convertFingerprintToHex(mScannedFingerprint);
- mFingerprint.setText(KeyFormattingUtils.colorizeFingerprint(fp));
-
- mUserId.setText(userId);
-
- mAnimator.setDisplayedChild(2);
- mState = YubiImportState.IMPORTED;
-
- } else {
- String fp = KeyFormattingUtils.convertFingerprintToHex(mScannedFingerprint);
- mUnknownFingerprint.setText(KeyFormattingUtils.colorizeFingerprint(fp));
-
- mAnimator.setDisplayedChild(1);
- mState = YubiImportState.UNKNOWN;
- }
- }
-
private void nextClicked() {
-
- switch (mState) {
- case UNKNOWN:
- importKey();
- break;
- case IMPORTED:
- promoteKey();
- break;
- }
-
- }
-
- public void promoteKey() {
-
- // Message is received after decrypting is done in KeychainIntentService
- KeychainIntentServiceHandler saveHandler = new KeychainIntentServiceHandler(getActivity()) {
- public void handleMessage(Message message) {
- // handle messages by standard KeychainIntentServiceHandler first
- super.handleMessage(message);
-
- if (message.arg1 == MessageStatus.OKAY.ordinal()) {
- // get returned data bundle
- Bundle returnData = message.getData();
-
- PromoteKeyResult result =
- returnData.getParcelable(DecryptVerifyResult.EXTRA_RESULT);
-
- result.createNotify(getActivity()).show();
- }
-
- }
- };
-
- // Send all information needed to service to decrypt in other thread
- Intent intent = new Intent(getActivity(), KeychainIntentService.class);
-
- // fill values for this action
-
- intent.setAction(KeychainIntentService.ACTION_PROMOTE_KEYRING);
-
- Bundle data = new Bundle();
- data.putLong(KeychainIntentService.PROMOTE_MASTER_KEY_ID, mScannedMasterKeyId);
- intent.putExtra(KeychainIntentService.EXTRA_DATA, data);
-
- // Create a new Messenger for the communication back
- Messenger messenger = new Messenger(saveHandler);
- intent.putExtra(KeychainIntentService.EXTRA_MESSENGER, messenger);
-
- // start service with intent
- getActivity().startService(intent);
-
+ importKey();
}
public void importKey() {
@@ -299,12 +160,6 @@ public class CreateKeyYubiFragment extends Fragment
}
-
- @Override
- public void onLoaderReset(Loader<Cursor> loader) {
-
- }
-
static long getKeyIdFromFingerprint(byte[] fingerprint) {
ByteBuffer buf = ByteBuffer.wrap(fingerprint);
// skip first 12 bytes of the fingerprint