migrated key creation to KeychainNewService
This commit is contained in:
@@ -103,11 +103,6 @@ public class KeychainService extends Service implements Progressable {
|
|||||||
public static final String KEYBASE_REQUIRED_FINGERPRINT = "keybase_required_fingerprint";
|
public static final String KEYBASE_REQUIRED_FINGERPRINT = "keybase_required_fingerprint";
|
||||||
public static final String KEYBASE_PROOF = "keybase_proof";
|
public static final String KEYBASE_PROOF = "keybase_proof";
|
||||||
|
|
||||||
// save keyring
|
|
||||||
public static final String EDIT_KEYRING_PARCEL = "save_parcel";
|
|
||||||
public static final String EDIT_KEYRING_PASSPHRASE = "passphrase";
|
|
||||||
public static final String EXTRA_CRYPTO_INPUT = "crypto_input";
|
|
||||||
|
|
||||||
// delete keyring(s)
|
// delete keyring(s)
|
||||||
public static final String DELETE_KEY_LIST = "delete_list";
|
public static final String DELETE_KEY_LIST = "delete_list";
|
||||||
public static final String DELETE_IS_SECRET = "delete_is_secret";
|
public static final String DELETE_IS_SECRET = "delete_is_secret";
|
||||||
@@ -301,22 +296,6 @@ public class KeychainService extends Service implements Progressable {
|
|||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case ACTION_EDIT_KEYRING: {
|
|
||||||
|
|
||||||
// Input
|
|
||||||
SaveKeyringParcel saveParcel = data.getParcelable(EDIT_KEYRING_PARCEL);
|
|
||||||
CryptoInputParcel cryptoInput = data.getParcelable(EXTRA_CRYPTO_INPUT);
|
|
||||||
|
|
||||||
// Operation
|
|
||||||
EditKeyOperation op = new EditKeyOperation(KeychainService.this, providerHelper,
|
|
||||||
KeychainService.this, mActionCanceled);
|
|
||||||
OperationResult result = op.execute(saveParcel, cryptoInput);
|
|
||||||
|
|
||||||
// Result
|
|
||||||
sendMessageToHandler(MessageStatus.OKAY, result);
|
|
||||||
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case ACTION_PROMOTE_KEYRING: {
|
case ACTION_PROMOTE_KEYRING: {
|
||||||
|
|
||||||
// Input
|
// Input
|
||||||
|
|||||||
@@ -24,7 +24,6 @@ import android.net.Uri;
|
|||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.os.Message;
|
import android.os.Message;
|
||||||
import android.os.Messenger;
|
import android.os.Messenger;
|
||||||
import android.support.v4.app.Fragment;
|
|
||||||
import android.view.LayoutInflater;
|
import android.view.LayoutInflater;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.view.ViewGroup;
|
import android.view.ViewGroup;
|
||||||
@@ -46,13 +45,15 @@ import org.sufficientlysecure.keychain.service.SaveKeyringParcel;
|
|||||||
import org.sufficientlysecure.keychain.service.SaveKeyringParcel.Algorithm;
|
import org.sufficientlysecure.keychain.service.SaveKeyringParcel.Algorithm;
|
||||||
import org.sufficientlysecure.keychain.service.SaveKeyringParcel.ChangeUnlockParcel;
|
import org.sufficientlysecure.keychain.service.SaveKeyringParcel.ChangeUnlockParcel;
|
||||||
import org.sufficientlysecure.keychain.ui.CreateKeyActivity.FragAction;
|
import org.sufficientlysecure.keychain.ui.CreateKeyActivity.FragAction;
|
||||||
|
import org.sufficientlysecure.keychain.ui.base.CryptoOperationFragment;
|
||||||
import org.sufficientlysecure.keychain.ui.base.CryptoOperationHelper;
|
import org.sufficientlysecure.keychain.ui.base.CryptoOperationHelper;
|
||||||
import org.sufficientlysecure.keychain.util.Log;
|
import org.sufficientlysecure.keychain.util.Log;
|
||||||
import org.sufficientlysecure.keychain.util.Preferences;
|
import org.sufficientlysecure.keychain.util.Preferences;
|
||||||
|
|
||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
|
|
||||||
public class CreateKeyFinalFragment extends Fragment {
|
public class CreateKeyFinalFragment
|
||||||
|
extends CryptoOperationFragment<SaveKeyringParcel, EditKeyResult> {
|
||||||
|
|
||||||
public static final int REQUEST_EDIT_KEY = 0x00008007;
|
public static final int REQUEST_EDIT_KEY = 0x00008007;
|
||||||
|
|
||||||
@@ -66,7 +67,7 @@ public class CreateKeyFinalFragment extends Fragment {
|
|||||||
|
|
||||||
SaveKeyringParcel mSaveKeyringParcel;
|
SaveKeyringParcel mSaveKeyringParcel;
|
||||||
|
|
||||||
private CryptoOperationHelper<ExportKeyringParcel, ExportResult> mOperationHelper;
|
private CryptoOperationHelper<ExportKeyringParcel, ExportResult> mUploadOpHelper;
|
||||||
|
|
||||||
public static CreateKeyFinalFragment newInstance() {
|
public static CreateKeyFinalFragment newInstance() {
|
||||||
CreateKeyFinalFragment frag = new CreateKeyFinalFragment();
|
CreateKeyFinalFragment frag = new CreateKeyFinalFragment();
|
||||||
@@ -139,8 +140,8 @@ public class CreateKeyFinalFragment extends Fragment {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onActivityResult(int requestCode, int resultCode, Intent data) {
|
public void onActivityResult(int requestCode, int resultCode, Intent data) {
|
||||||
if (mOperationHelper != null) {
|
if (mUploadOpHelper != null) {
|
||||||
mOperationHelper.handleActivityResult(requestCode, resultCode, data);
|
mUploadOpHelper.handleActivityResult(requestCode, resultCode, data);
|
||||||
}
|
}
|
||||||
switch (requestCode) {
|
switch (requestCode) {
|
||||||
case REQUEST_EDIT_KEY: {
|
case REQUEST_EDIT_KEY: {
|
||||||
@@ -156,6 +157,30 @@ public class CreateKeyFinalFragment extends Fragment {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected SaveKeyringParcel createOperationInput() {
|
||||||
|
return mSaveKeyringParcel;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onCryptoOperationSuccess(EditKeyResult result) {
|
||||||
|
if (result.mMasterKeyId != null && mUploadCheckbox.isChecked()) {
|
||||||
|
// result will be displayed after upload
|
||||||
|
uploadKey(result);
|
||||||
|
} else {
|
||||||
|
Intent data = new Intent();
|
||||||
|
data.putExtra(OperationResult.EXTRA_RESULT, result);
|
||||||
|
getActivity().setResult(Activity.RESULT_OK, data);
|
||||||
|
getActivity().finish();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onCryptoOperationResult(EditKeyResult result) {
|
||||||
|
// do something else?
|
||||||
|
super.onCryptoOperationResult(result);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onActivityCreated(Bundle savedInstanceState) {
|
public void onActivityCreated(Bundle savedInstanceState) {
|
||||||
super.onActivityCreated(savedInstanceState);
|
super.onActivityCreated(savedInstanceState);
|
||||||
@@ -202,57 +227,8 @@ public class CreateKeyFinalFragment extends Fragment {
|
|||||||
|
|
||||||
|
|
||||||
private void createKey() {
|
private void createKey() {
|
||||||
Intent intent = new Intent(getActivity(), KeychainService.class);
|
super.setProgressMessageResource(R.string.progress_building_key);
|
||||||
intent.setAction(KeychainService.ACTION_EDIT_KEYRING);
|
super.cryptoOperation();
|
||||||
|
|
||||||
ServiceProgressHandler saveHandler = new ServiceProgressHandler(getActivity()) {
|
|
||||||
@Override
|
|
||||||
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();
|
|
||||||
if (returnData == null) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
final EditKeyResult result =
|
|
||||||
returnData.getParcelable(OperationResult.EXTRA_RESULT);
|
|
||||||
if (result == null) {
|
|
||||||
Log.e(Constants.TAG, "result == null");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (result.mMasterKeyId != null && mUploadCheckbox.isChecked()) {
|
|
||||||
// result will be displayed after upload
|
|
||||||
uploadKey(result);
|
|
||||||
} else {
|
|
||||||
Intent data = new Intent();
|
|
||||||
data.putExtra(OperationResult.EXTRA_RESULT, result);
|
|
||||||
getActivity().setResult(Activity.RESULT_OK, data);
|
|
||||||
getActivity().finish();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
// fill values for this action
|
|
||||||
Bundle data = new Bundle();
|
|
||||||
|
|
||||||
// get selected key entries
|
|
||||||
data.putParcelable(KeychainService.EDIT_KEYRING_PARCEL, mSaveKeyringParcel);
|
|
||||||
|
|
||||||
intent.putExtra(KeychainService.EXTRA_DATA, data);
|
|
||||||
|
|
||||||
// Create a new Messenger for the communication back
|
|
||||||
Messenger messenger = new Messenger(saveHandler);
|
|
||||||
intent.putExtra(KeychainService.EXTRA_MESSENGER, messenger);
|
|
||||||
|
|
||||||
saveHandler.showProgressDialog(getString(R.string.progress_building_key),
|
|
||||||
ProgressDialog.STYLE_HORIZONTAL, false);
|
|
||||||
|
|
||||||
getActivity().startService(intent);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO move into EditKeyOperation
|
// TODO move into EditKeyOperation
|
||||||
@@ -274,16 +250,7 @@ public class CreateKeyFinalFragment extends Fragment {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onCryptoOperationSuccess(ExportResult result) {
|
public void onCryptoOperationSuccess(ExportResult result) {
|
||||||
// TODO: upload operation needs a result!
|
handleResult(result);
|
||||||
// TODO: then combine these results (saveKeyResult and update op result)
|
|
||||||
//if (result.getResult() == OperationResultParcel.RESULT_OK) {
|
|
||||||
//Notify.create(getActivity(), R.string.key_send_success,
|
|
||||||
//Notify.Style.OK).show();
|
|
||||||
|
|
||||||
Intent data = new Intent();
|
|
||||||
data.putExtra(OperationResult.EXTRA_RESULT, saveKeyResult);
|
|
||||||
getActivity().setResult(Activity.RESULT_OK, data);
|
|
||||||
getActivity().finish();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -293,8 +260,11 @@ public class CreateKeyFinalFragment extends Fragment {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onCryptoOperationError(ExportResult result) {
|
public void onCryptoOperationError(ExportResult result) {
|
||||||
|
handleResult(result);
|
||||||
|
}
|
||||||
|
|
||||||
// TODO: upload operation needs a result!
|
public void handleResult(ExportResult result) {
|
||||||
|
// TODO: upload operation needs a result! "result" is not currenlty used
|
||||||
// TODO: then combine these results (saveKeyResult and update op result)
|
// TODO: then combine these results (saveKeyResult and update op result)
|
||||||
//if (result.getResult() == OperationResultParcel.RESULT_OK) {
|
//if (result.getResult() == OperationResultParcel.RESULT_OK) {
|
||||||
//Notify.create(getActivity(), R.string.key_send_success,
|
//Notify.create(getActivity(), R.string.key_send_success,
|
||||||
@@ -307,8 +277,9 @@ public class CreateKeyFinalFragment extends Fragment {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
mOperationHelper = new CryptoOperationHelper<>(this, callback, R.string.progress_uploading);
|
|
||||||
mOperationHelper.cryptoOperation();
|
mUploadOpHelper = new CryptoOperationHelper<>(this, callback, R.string.progress_uploading);
|
||||||
|
mUploadOpHelper.cryptoOperation();
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -84,15 +84,25 @@ public abstract class CryptoOperationFragment<T extends Parcelable, S extends Op
|
|||||||
}
|
}
|
||||||
|
|
||||||
protected void onCryptoOperationError(S result) {
|
protected void onCryptoOperationError(S result) {
|
||||||
|
onCryptoOperationResult(result);
|
||||||
result.createNotify(getActivity()).show();
|
result.createNotify(getActivity()).show();
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void onCryptoOperationCancelled() {
|
protected void onCryptoOperationCancelled() {
|
||||||
}
|
}
|
||||||
|
|
||||||
abstract protected void onCryptoOperationSuccess(S result);
|
protected void onCryptoOperationSuccess(S result) {
|
||||||
|
onCryptoOperationResult(result);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* To be overriden by subclasses, if desired. Provides a way to access the method by the
|
||||||
|
* same name in CryptoOperationHelper, if super.onCryptoOperationSuccess and
|
||||||
|
* super.onCryptoOperationError are called at the start of the respective functions in the
|
||||||
|
* subclass overriding them
|
||||||
|
* @param result
|
||||||
|
*/
|
||||||
protected void onCryptoOperationResult(S result) {
|
protected void onCryptoOperationResult(S result) {
|
||||||
mOperationHelper.onCryptoOperationResult(result);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user