token-import: reset yubikey
This commit is contained in:
@@ -19,12 +19,14 @@ package org.sufficientlysecure.keychain.ui;
|
|||||||
|
|
||||||
|
|
||||||
import android.app.Activity;
|
import android.app.Activity;
|
||||||
|
import android.content.DialogInterface;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.net.Uri;
|
import android.net.Uri;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.support.annotation.Nullable;
|
import android.support.annotation.Nullable;
|
||||||
import android.support.annotation.StringRes;
|
import android.support.annotation.StringRes;
|
||||||
import android.support.v4.app.Fragment;
|
import android.support.v4.app.Fragment;
|
||||||
|
import android.support.v7.app.AlertDialog.Builder;
|
||||||
import android.view.LayoutInflater;
|
import android.view.LayoutInflater;
|
||||||
import android.view.Menu;
|
import android.view.Menu;
|
||||||
import android.view.MenuInflater;
|
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.provider.KeychainContract.KeyRings;
|
||||||
import org.sufficientlysecure.keychain.service.ImportKeyringParcel;
|
import org.sufficientlysecure.keychain.service.ImportKeyringParcel;
|
||||||
import org.sufficientlysecure.keychain.service.PromoteKeyringParcel;
|
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.CreateSecurityTokenImportPresenter.CreateSecurityTokenImportMvpView;
|
||||||
import org.sufficientlysecure.keychain.ui.base.CryptoOperationHelper;
|
import org.sufficientlysecure.keychain.ui.base.CryptoOperationHelper;
|
||||||
import org.sufficientlysecure.keychain.ui.base.CryptoOperationHelper.AbstractCallback;
|
import org.sufficientlysecure.keychain.ui.base.CryptoOperationHelper.AbstractCallback;
|
||||||
import org.sufficientlysecure.keychain.ui.keyview.ViewKeyActivity;
|
import org.sufficientlysecure.keychain.ui.keyview.ViewKeyActivity;
|
||||||
import org.sufficientlysecure.keychain.ui.util.KeyFormattingUtils;
|
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;
|
||||||
import org.sufficientlysecure.keychain.ui.widget.StatusIndicator.Status;
|
import org.sufficientlysecure.keychain.ui.widget.StatusIndicator.Status;
|
||||||
import org.sufficientlysecure.keychain.ui.widget.ToolableViewAnimator;
|
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_USER_ID = "user_ids";
|
||||||
private static final String ARG_URL = "key_uri";
|
private static final String ARG_URL = "key_uri";
|
||||||
public static final int REQUEST_CODE_OPEN_FILE = 0;
|
public static final int REQUEST_CODE_OPEN_FILE = 0;
|
||||||
|
public static final int REQUEST_CODE_RESET = 1;
|
||||||
|
|
||||||
CreateSecurityTokenImportPresenter presenter;
|
CreateSecurityTokenImportPresenter presenter;
|
||||||
private ViewGroup statusLayoutGroup;
|
private ViewGroup statusLayoutGroup;
|
||||||
@@ -232,11 +238,35 @@ public class CreateSecurityTokenImportFragment extends Fragment implements Creat
|
|||||||
cryptoPromoteOperationHelper.cryptoOperation();
|
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
|
@Override
|
||||||
public void showFileSelectDialog() {
|
public void showFileSelectDialog() {
|
||||||
FileHelper.openDocument(this, null, "*/*", false, REQUEST_CODE_OPEN_FILE);
|
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
|
@Override
|
||||||
public void onActivityResult(int requestCode, int resultCode, Intent data) {
|
public void onActivityResult(int requestCode, int resultCode, Intent data) {
|
||||||
switch (requestCode) {
|
switch (requestCode) {
|
||||||
@@ -247,6 +277,12 @@ public class CreateSecurityTokenImportFragment extends Fragment implements Creat
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
case REQUEST_CODE_RESET: {
|
||||||
|
if (resultCode == Activity.RESULT_OK) {
|
||||||
|
presenter.onSecurityTokenResetSuccess();
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
default: {
|
default: {
|
||||||
super.onActivityResult(requestCode, resultCode, data);
|
super.onActivityResult(requestCode, resultCode, data);
|
||||||
}
|
}
|
||||||
@@ -270,6 +306,7 @@ public class CreateSecurityTokenImportFragment extends Fragment implements Creat
|
|||||||
}
|
}
|
||||||
case R.id.button_load_file: {
|
case R.id.button_load_file: {
|
||||||
presenter.onClickLoadFile();
|
presenter.onClickLoadFile();
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
case R.id.button_reset_token_1:
|
case R.id.button_reset_token_1:
|
||||||
case R.id.button_reset_token_2:
|
case R.id.button_reset_token_2:
|
||||||
|
|||||||
@@ -58,7 +58,7 @@ class CreateSecurityTokenImportPresenter {
|
|||||||
private Long masterKeyId;
|
private Long masterKeyId;
|
||||||
|
|
||||||
|
|
||||||
public CreateSecurityTokenImportPresenter(Context context, byte[] tokenFingerprints, byte[] tokenAid,
|
CreateSecurityTokenImportPresenter(Context context, byte[] tokenFingerprints, byte[] tokenAid,
|
||||||
String tokenUserId, String tokenUrl, LoaderManager loaderManager) {
|
String tokenUserId, String tokenUrl, LoaderManager loaderManager) {
|
||||||
this.context = context.getApplicationContext();
|
this.context = context.getApplicationContext();
|
||||||
|
|
||||||
@@ -227,7 +227,15 @@ class CreateSecurityTokenImportPresenter {
|
|||||||
view.finishAndShowKey(masterKeyId);
|
view.finishAndShowKey(masterKeyId);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void onClickResetToken() {
|
void onClickResetToken() {
|
||||||
|
view.showConfirmResetDialog();
|
||||||
|
}
|
||||||
|
|
||||||
|
void onClickConfirmReset() {
|
||||||
|
view.operationResetSecurityToken();
|
||||||
|
}
|
||||||
|
|
||||||
|
void onSecurityTokenResetSuccess() {
|
||||||
// TODO
|
// TODO
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -257,9 +265,11 @@ class CreateSecurityTokenImportPresenter {
|
|||||||
|
|
||||||
void operationImportKey(byte[] importKeyData);
|
void operationImportKey(byte[] importKeyData);
|
||||||
void operationPromote(long masterKeyId, byte[] cardAid);
|
void operationPromote(long masterKeyId, byte[] cardAid);
|
||||||
|
void operationResetSecurityToken();
|
||||||
|
|
||||||
void finishAndShowKey(long masterKeyId);
|
void finishAndShowKey(long masterKeyId);
|
||||||
|
|
||||||
void showFileSelectDialog();
|
void showFileSelectDialog();
|
||||||
|
void showConfirmResetDialog();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1925,5 +1925,8 @@
|
|||||||
<string name="status_token_promote">Setting up key…</string>
|
<string name="status_token_promote">Setting up key…</string>
|
||||||
<string name="status_token_check">Checking key setup…</string>
|
<string name="status_token_check">Checking key setup…</string>
|
||||||
<string name="status_content_uri">Reading file…</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>
|
</resources>
|
||||||
|
|||||||
Reference in New Issue
Block a user