token-import: reset yubikey
This commit is contained in:
@@ -19,12 +19,14 @@ package org.sufficientlysecure.keychain.ui;
|
||||
|
||||
|
||||
import android.app.Activity;
|
||||
import android.content.DialogInterface;
|
||||
import android.content.Intent;
|
||||
import android.net.Uri;
|
||||
import android.os.Bundle;
|
||||
import android.support.annotation.Nullable;
|
||||
import android.support.annotation.StringRes;
|
||||
import android.support.v4.app.Fragment;
|
||||
import android.support.v7.app.AlertDialog.Builder;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.Menu;
|
||||
import android.view.MenuInflater;
|
||||
@@ -41,11 +43,14 @@ import org.sufficientlysecure.keychain.operations.results.PromoteKeyResult;
|
||||
import org.sufficientlysecure.keychain.provider.KeychainContract.KeyRings;
|
||||
import org.sufficientlysecure.keychain.service.ImportKeyringParcel;
|
||||
import org.sufficientlysecure.keychain.service.PromoteKeyringParcel;
|
||||
import org.sufficientlysecure.keychain.service.input.CryptoInputParcel;
|
||||
import org.sufficientlysecure.keychain.service.input.RequiredInputParcel;
|
||||
import org.sufficientlysecure.keychain.ui.CreateSecurityTokenImportPresenter.CreateSecurityTokenImportMvpView;
|
||||
import org.sufficientlysecure.keychain.ui.base.CryptoOperationHelper;
|
||||
import org.sufficientlysecure.keychain.ui.base.CryptoOperationHelper.AbstractCallback;
|
||||
import org.sufficientlysecure.keychain.ui.keyview.ViewKeyActivity;
|
||||
import org.sufficientlysecure.keychain.ui.util.KeyFormattingUtils;
|
||||
import org.sufficientlysecure.keychain.ui.util.ThemeChanger;
|
||||
import org.sufficientlysecure.keychain.ui.widget.StatusIndicator;
|
||||
import org.sufficientlysecure.keychain.ui.widget.StatusIndicator.Status;
|
||||
import org.sufficientlysecure.keychain.ui.widget.ToolableViewAnimator;
|
||||
@@ -59,6 +64,7 @@ public class CreateSecurityTokenImportFragment extends Fragment implements Creat
|
||||
private static final String ARG_USER_ID = "user_ids";
|
||||
private static final String ARG_URL = "key_uri";
|
||||
public static final int REQUEST_CODE_OPEN_FILE = 0;
|
||||
public static final int REQUEST_CODE_RESET = 1;
|
||||
|
||||
CreateSecurityTokenImportPresenter presenter;
|
||||
private ViewGroup statusLayoutGroup;
|
||||
@@ -232,11 +238,35 @@ public class CreateSecurityTokenImportFragment extends Fragment implements Creat
|
||||
cryptoPromoteOperationHelper.cryptoOperation();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void operationResetSecurityToken() {
|
||||
Intent intent = new Intent(getActivity(), SecurityTokenOperationActivity.class);
|
||||
RequiredInputParcel resetP = RequiredInputParcel.createSecurityTokenReset();
|
||||
intent.putExtra(SecurityTokenOperationActivity.EXTRA_REQUIRED_INPUT, resetP);
|
||||
intent.putExtra(SecurityTokenOperationActivity.EXTRA_CRYPTO_INPUT, CryptoInputParcel.createCryptoInputParcel());
|
||||
startActivityForResult(intent, REQUEST_CODE_RESET);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void showFileSelectDialog() {
|
||||
FileHelper.openDocument(this, null, "*/*", false, REQUEST_CODE_OPEN_FILE);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void showConfirmResetDialog() {
|
||||
new Builder(ThemeChanger.getDialogThemeWrapper(getContext()))
|
||||
.setTitle(R.string.token_reset_confirm_title)
|
||||
.setMessage(R.string.token_reset_confirm_message)
|
||||
.setNegativeButton(R.string.button_cancel, null)
|
||||
.setPositiveButton(R.string.token_reset_confirm_ok, new DialogInterface.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(DialogInterface dialog, int which) {
|
||||
dialog.dismiss();
|
||||
presenter.onClickConfirmReset();
|
||||
}
|
||||
}).show();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onActivityResult(int requestCode, int resultCode, Intent data) {
|
||||
switch (requestCode) {
|
||||
@@ -247,6 +277,12 @@ public class CreateSecurityTokenImportFragment extends Fragment implements Creat
|
||||
}
|
||||
break;
|
||||
}
|
||||
case REQUEST_CODE_RESET: {
|
||||
if (resultCode == Activity.RESULT_OK) {
|
||||
presenter.onSecurityTokenResetSuccess();
|
||||
}
|
||||
break;
|
||||
}
|
||||
default: {
|
||||
super.onActivityResult(requestCode, resultCode, data);
|
||||
}
|
||||
@@ -270,6 +306,7 @@ public class CreateSecurityTokenImportFragment extends Fragment implements Creat
|
||||
}
|
||||
case R.id.button_load_file: {
|
||||
presenter.onClickLoadFile();
|
||||
break;
|
||||
}
|
||||
case R.id.button_reset_token_1:
|
||||
case R.id.button_reset_token_2:
|
||||
|
||||
@@ -58,7 +58,7 @@ class CreateSecurityTokenImportPresenter {
|
||||
private Long masterKeyId;
|
||||
|
||||
|
||||
public CreateSecurityTokenImportPresenter(Context context, byte[] tokenFingerprints, byte[] tokenAid,
|
||||
CreateSecurityTokenImportPresenter(Context context, byte[] tokenFingerprints, byte[] tokenAid,
|
||||
String tokenUserId, String tokenUrl, LoaderManager loaderManager) {
|
||||
this.context = context.getApplicationContext();
|
||||
|
||||
@@ -227,7 +227,15 @@ class CreateSecurityTokenImportPresenter {
|
||||
view.finishAndShowKey(masterKeyId);
|
||||
}
|
||||
|
||||
public void onClickResetToken() {
|
||||
void onClickResetToken() {
|
||||
view.showConfirmResetDialog();
|
||||
}
|
||||
|
||||
void onClickConfirmReset() {
|
||||
view.operationResetSecurityToken();
|
||||
}
|
||||
|
||||
void onSecurityTokenResetSuccess() {
|
||||
// TODO
|
||||
}
|
||||
|
||||
@@ -257,9 +265,11 @@ class CreateSecurityTokenImportPresenter {
|
||||
|
||||
void operationImportKey(byte[] importKeyData);
|
||||
void operationPromote(long masterKeyId, byte[] cardAid);
|
||||
void operationResetSecurityToken();
|
||||
|
||||
void finishAndShowKey(long masterKeyId);
|
||||
|
||||
void showFileSelectDialog();
|
||||
void showConfirmResetDialog();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1925,5 +1925,8 @@
|
||||
<string name="status_token_promote">Setting up key…</string>
|
||||
<string name="status_token_check">Checking key setup…</string>
|
||||
<string name="status_content_uri">Reading file…</string>
|
||||
<string name="token_reset_confirm_title">Reset Security Token?</string>
|
||||
<string name="token_reset_confirm_message">This will irrecoverably delete the key stored on this Security Token. You will no longer be able to use this key for decryption! Are you sure?</string>
|
||||
<string name="token_reset_confirm_ok">Reset</string>
|
||||
|
||||
</resources>
|
||||
|
||||
Reference in New Issue
Block a user