mirror of
https://github.com/moparisthebest/open-keychain
synced 2024-11-17 14:25:08 -05:00
Start reworking decrypt ui classes
This commit is contained in:
parent
13f4cc4ad3
commit
b82f273284
@ -39,6 +39,7 @@ import org.sufficientlysecure.keychain.operations.results.DecryptVerifyResult;
|
|||||||
import org.sufficientlysecure.keychain.service.KeychainIntentService;
|
import org.sufficientlysecure.keychain.service.KeychainIntentService;
|
||||||
import org.sufficientlysecure.keychain.service.KeychainIntentService.IOType;
|
import org.sufficientlysecure.keychain.service.KeychainIntentService.IOType;
|
||||||
import org.sufficientlysecure.keychain.service.ServiceProgressHandler;
|
import org.sufficientlysecure.keychain.service.ServiceProgressHandler;
|
||||||
|
import org.sufficientlysecure.keychain.service.input.CryptoInputParcel;
|
||||||
import org.sufficientlysecure.keychain.ui.dialog.DeleteFileDialogFragment;
|
import org.sufficientlysecure.keychain.ui.dialog.DeleteFileDialogFragment;
|
||||||
import org.sufficientlysecure.keychain.ui.dialog.ProgressDialogFragment;
|
import org.sufficientlysecure.keychain.ui.dialog.ProgressDialogFragment;
|
||||||
import org.sufficientlysecure.keychain.ui.util.Notify;
|
import org.sufficientlysecure.keychain.ui.util.Notify;
|
||||||
@ -144,7 +145,7 @@ public class DecryptFilesFragment extends DecryptFragment {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
decryptOriginalFilename();
|
// decryptOriginalFilename();
|
||||||
}
|
}
|
||||||
|
|
||||||
private String removeEncryptedAppend(String name) {
|
private String removeEncryptedAppend(String name) {
|
||||||
@ -174,82 +175,93 @@ public class DecryptFilesFragment extends DecryptFragment {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void decryptOriginalFilename() {
|
|
||||||
Log.d(Constants.TAG, "decryptOriginalFilename");
|
|
||||||
|
|
||||||
Intent intent = new Intent(getActivity(), KeychainIntentService.class);
|
// TODO: also needs to use cryptoOperation!!! (switch between this and normal decrypt
|
||||||
|
// private void decryptOriginalFilename() {
|
||||||
|
// Log.d(Constants.TAG, "decryptOriginalFilename");
|
||||||
|
//
|
||||||
|
// Intent intent = new Intent(getActivity(), KeychainIntentService.class);
|
||||||
|
//
|
||||||
|
// // fill values for this action
|
||||||
|
// Bundle data = new Bundle();
|
||||||
|
// intent.setAction(KeychainIntentService.ACTION_DECRYPT_METADATA);
|
||||||
|
//
|
||||||
|
// // data
|
||||||
|
// Log.d(Constants.TAG, "mInputUri=" + mInputUri + ", mOutputUri=" + mOutputUri);
|
||||||
|
//
|
||||||
|
// data.putInt(KeychainIntentService.SOURCE, IOType.URI.ordinal());
|
||||||
|
// data.putParcelable(KeychainIntentService.ENCRYPT_DECRYPT_INPUT_URI, mInputUri);
|
||||||
|
//
|
||||||
|
// data.putInt(KeychainIntentService.TARGET, IOType.URI.ordinal());
|
||||||
|
// data.putParcelable(KeychainIntentService.ENCRYPT_DECRYPT_OUTPUT_URI, mOutputUri);
|
||||||
|
//
|
||||||
|
// data.putParcelable(KeychainIntentService.DECRYPT_PASSPHRASE, mPassphrase);
|
||||||
|
// data.putByteArray(KeychainIntentService.DECRYPT_NFC_DECRYPTED_SESSION_KEY, mNfcDecryptedSessionKey);
|
||||||
|
//
|
||||||
|
// intent.putExtra(KeychainIntentService.EXTRA_DATA, data);
|
||||||
|
//
|
||||||
|
// // Message is received after decrypting is done in KeychainIntentService
|
||||||
|
// ServiceProgressHandler saveHandler = new ServiceProgressHandler(
|
||||||
|
// getActivity(),
|
||||||
|
// getString(R.string.progress_decrypting),
|
||||||
|
// ProgressDialog.STYLE_HORIZONTAL,
|
||||||
|
// ProgressDialogFragment.ServiceType.KEYCHAIN_INTENT) {
|
||||||
|
// public void handleMessage(Message message) {
|
||||||
|
// // handle messages by standard KeychainIntentServiceHandler first
|
||||||
|
// super.handleMessage(message);
|
||||||
|
//
|
||||||
|
// // handle pending messages
|
||||||
|
// if (handlePendingMessage(message)) {
|
||||||
|
// return;
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// if (message.arg1 == MessageStatus.OKAY.ordinal()) {
|
||||||
|
// // get returned data bundle
|
||||||
|
// Bundle returnData = message.getData();
|
||||||
|
//
|
||||||
|
// DecryptVerifyResult pgpResult =
|
||||||
|
// returnData.getParcelable(DecryptVerifyResult.EXTRA_RESULT);
|
||||||
|
//
|
||||||
|
// if (pgpResult.isPending()) {
|
||||||
|
// if ((pgpResult.getResult() & DecryptVerifyResult.RESULT_PENDING_ASYM_PASSPHRASE) ==
|
||||||
|
// DecryptVerifyResult.RESULT_PENDING_ASYM_PASSPHRASE) {
|
||||||
|
// startPassphraseDialog(pgpResult.getKeyIdPassphraseNeeded());
|
||||||
|
// } else if ((pgpResult.getResult() & DecryptVerifyResult.RESULT_PENDING_SYM_PASSPHRASE) ==
|
||||||
|
// DecryptVerifyResult.RESULT_PENDING_SYM_PASSPHRASE) {
|
||||||
|
// startPassphraseDialog(Constants.key.symmetric);
|
||||||
|
// } else if ((pgpResult.getResult() & DecryptVerifyResult.RESULT_PENDING_NFC) ==
|
||||||
|
// DecryptVerifyResult.RESULT_PENDING_NFC) {
|
||||||
|
// startNfcDecrypt(pgpResult.getNfcSubKeyId(), pgpResult.getNfcPassphrase(), pgpResult.getNfcEncryptedSessionKey());
|
||||||
|
// } else {
|
||||||
|
// throw new RuntimeException("Unhandled pending result!");
|
||||||
|
// }
|
||||||
|
// } else if (pgpResult.success()) {
|
||||||
|
// // go on...
|
||||||
|
// askForOutputFilename(pgpResult.getDecryptMetadata().getFilename());
|
||||||
|
// } else {
|
||||||
|
// pgpResult.createNotify(getActivity()).show();
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// };
|
||||||
|
//
|
||||||
|
// // Create a new Messenger for the communication back
|
||||||
|
// Messenger messenger = new Messenger(saveHandler);
|
||||||
|
// intent.putExtra(KeychainIntentService.EXTRA_MESSENGER, messenger);
|
||||||
|
//
|
||||||
|
// // show progress dialog
|
||||||
|
// saveHandler.showProgressDialog(getActivity());
|
||||||
|
//
|
||||||
|
// // start service with intent
|
||||||
|
// getActivity().startService(intent);
|
||||||
|
// }
|
||||||
|
|
||||||
// fill values for this action
|
private void decryptStart() {
|
||||||
Bundle data = new Bundle();
|
cryptoOperation(new CryptoInputParcel());
|
||||||
intent.setAction(KeychainIntentService.ACTION_DECRYPT_METADATA);
|
|
||||||
|
|
||||||
// data
|
|
||||||
Log.d(Constants.TAG, "mInputUri=" + mInputUri + ", mOutputUri=" + mOutputUri);
|
|
||||||
|
|
||||||
data.putInt(KeychainIntentService.SOURCE, IOType.URI.ordinal());
|
|
||||||
data.putParcelable(KeychainIntentService.ENCRYPT_DECRYPT_INPUT_URI, mInputUri);
|
|
||||||
|
|
||||||
data.putInt(KeychainIntentService.TARGET, IOType.URI.ordinal());
|
|
||||||
data.putParcelable(KeychainIntentService.ENCRYPT_DECRYPT_OUTPUT_URI, mOutputUri);
|
|
||||||
|
|
||||||
data.putParcelable(KeychainIntentService.DECRYPT_PASSPHRASE, mPassphrase);
|
|
||||||
data.putByteArray(KeychainIntentService.DECRYPT_NFC_DECRYPTED_SESSION_KEY, mNfcDecryptedSessionKey);
|
|
||||||
|
|
||||||
intent.putExtra(KeychainIntentService.EXTRA_DATA, data);
|
|
||||||
|
|
||||||
// Message is received after decrypting is done in KeychainIntentService
|
|
||||||
ServiceProgressHandler saveHandler = new ServiceProgressHandler(
|
|
||||||
getActivity(),
|
|
||||||
getString(R.string.progress_decrypting),
|
|
||||||
ProgressDialog.STYLE_HORIZONTAL,
|
|
||||||
ProgressDialogFragment.ServiceType.KEYCHAIN_INTENT) {
|
|
||||||
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();
|
|
||||||
|
|
||||||
DecryptVerifyResult pgpResult =
|
|
||||||
returnData.getParcelable(DecryptVerifyResult.EXTRA_RESULT);
|
|
||||||
|
|
||||||
if (pgpResult.isPending()) {
|
|
||||||
if ((pgpResult.getResult() & DecryptVerifyResult.RESULT_PENDING_ASYM_PASSPHRASE) ==
|
|
||||||
DecryptVerifyResult.RESULT_PENDING_ASYM_PASSPHRASE) {
|
|
||||||
startPassphraseDialog(pgpResult.getKeyIdPassphraseNeeded());
|
|
||||||
} else if ((pgpResult.getResult() & DecryptVerifyResult.RESULT_PENDING_SYM_PASSPHRASE) ==
|
|
||||||
DecryptVerifyResult.RESULT_PENDING_SYM_PASSPHRASE) {
|
|
||||||
startPassphraseDialog(Constants.key.symmetric);
|
|
||||||
} else if ((pgpResult.getResult() & DecryptVerifyResult.RESULT_PENDING_NFC) ==
|
|
||||||
DecryptVerifyResult.RESULT_PENDING_NFC) {
|
|
||||||
startNfcDecrypt(pgpResult.getNfcSubKeyId(), pgpResult.getNfcPassphrase(), pgpResult.getNfcEncryptedSessionKey());
|
|
||||||
} else {
|
|
||||||
throw new RuntimeException("Unhandled pending result!");
|
|
||||||
}
|
|
||||||
} else if (pgpResult.success()) {
|
|
||||||
// go on...
|
|
||||||
askForOutputFilename(pgpResult.getDecryptMetadata().getFilename());
|
|
||||||
} else {
|
|
||||||
pgpResult.createNotify(getActivity()).show();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
// Create a new Messenger for the communication back
|
|
||||||
Messenger messenger = new Messenger(saveHandler);
|
|
||||||
intent.putExtra(KeychainIntentService.EXTRA_MESSENGER, messenger);
|
|
||||||
|
|
||||||
// show progress dialog
|
|
||||||
saveHandler.showProgressDialog(getActivity());
|
|
||||||
|
|
||||||
// start service with intent
|
|
||||||
getActivity().startService(intent);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void decryptStart() {
|
protected void cryptoOperation(CryptoInputParcel cryptoInput) {
|
||||||
Log.d(Constants.TAG, "decryptStart");
|
Log.d(Constants.TAG, "decryptStart");
|
||||||
|
|
||||||
// Send all information needed to service to decrypt in other thread
|
// Send all information needed to service to decrypt in other thread
|
||||||
@ -284,6 +296,11 @@ public class DecryptFilesFragment extends DecryptFragment {
|
|||||||
// handle messages by standard KeychainIntentServiceHandler first
|
// handle messages by standard KeychainIntentServiceHandler first
|
||||||
super.handleMessage(message);
|
super.handleMessage(message);
|
||||||
|
|
||||||
|
// handle pending messages
|
||||||
|
if (handlePendingMessage(message)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (message.arg1 == MessageStatus.OKAY.ordinal()) {
|
if (message.arg1 == MessageStatus.OKAY.ordinal()) {
|
||||||
// get returned data bundle
|
// get returned data bundle
|
||||||
Bundle returnData = message.getData();
|
Bundle returnData = message.getData();
|
||||||
@ -291,20 +308,21 @@ public class DecryptFilesFragment extends DecryptFragment {
|
|||||||
DecryptVerifyResult pgpResult =
|
DecryptVerifyResult pgpResult =
|
||||||
returnData.getParcelable(DecryptVerifyResult.EXTRA_RESULT);
|
returnData.getParcelable(DecryptVerifyResult.EXTRA_RESULT);
|
||||||
|
|
||||||
if (pgpResult.isPending()) {
|
// if (pgpResult.isPending()) {
|
||||||
if ((pgpResult.getResult() & DecryptVerifyResult.RESULT_PENDING_ASYM_PASSPHRASE) ==
|
// if ((pgpResult.getResult() & DecryptVerifyResult.RESULT_PENDING_ASYM_PASSPHRASE) ==
|
||||||
DecryptVerifyResult.RESULT_PENDING_ASYM_PASSPHRASE) {
|
// DecryptVerifyResult.RESULT_PENDING_ASYM_PASSPHRASE) {
|
||||||
startPassphraseDialog(pgpResult.getKeyIdPassphraseNeeded());
|
// startPassphraseDialog(pgpResult.getKeyIdPassphraseNeeded());
|
||||||
} else if ((pgpResult.getResult() & DecryptVerifyResult.RESULT_PENDING_SYM_PASSPHRASE) ==
|
// } else if ((pgpResult.getResult() & DecryptVerifyResult.RESULT_PENDING_SYM_PASSPHRASE) ==
|
||||||
DecryptVerifyResult.RESULT_PENDING_SYM_PASSPHRASE) {
|
// DecryptVerifyResult.RESULT_PENDING_SYM_PASSPHRASE) {
|
||||||
startPassphraseDialog(Constants.key.symmetric);
|
// startPassphraseDialog(Constants.key.symmetric);
|
||||||
} else if ((pgpResult.getResult() & DecryptVerifyResult.RESULT_PENDING_NFC) ==
|
// } else if ((pgpResult.getResult() & DecryptVerifyResult.RESULT_PENDING_NFC) ==
|
||||||
DecryptVerifyResult.RESULT_PENDING_NFC) {
|
// DecryptVerifyResult.RESULT_PENDING_NFC) {
|
||||||
startNfcDecrypt(pgpResult.getNfcSubKeyId(), pgpResult.getNfcPassphrase(), pgpResult.getNfcEncryptedSessionKey());
|
// startNfcDecrypt(pgpResult.getNfcSubKeyId(), pgpResult.getNfcPassphrase(), pgpResult.getNfcEncryptedSessionKey());
|
||||||
} else {
|
// } else {
|
||||||
throw new RuntimeException("Unhandled pending result!");
|
// throw new RuntimeException("Unhandled pending result!");
|
||||||
}
|
// }
|
||||||
} else if (pgpResult.success()) {
|
|
||||||
|
if (pgpResult.success()) {
|
||||||
|
|
||||||
// display signature result in activity
|
// display signature result in activity
|
||||||
onResult(pgpResult);
|
onResult(pgpResult);
|
||||||
@ -346,21 +364,21 @@ public class DecryptFilesFragment extends DecryptFragment {
|
|||||||
@Override
|
@Override
|
||||||
public void onActivityResult(int requestCode, int resultCode, Intent data) {
|
public void onActivityResult(int requestCode, int resultCode, Intent data) {
|
||||||
switch (requestCode) {
|
switch (requestCode) {
|
||||||
case REQUEST_CODE_PASSPHRASE: {
|
// case REQUEST_CODE_PASSPHRASE: {
|
||||||
if (resultCode == Activity.RESULT_OK && data != null) {
|
// if (resultCode == Activity.RESULT_OK && data != null) {
|
||||||
mPassphrase = data.getParcelableExtra(PassphraseDialogActivity.MESSAGE_DATA_PASSPHRASE);
|
// mPassphrase = data.getParcelableExtra(PassphraseDialogActivity.MESSAGE_DATA_PASSPHRASE);
|
||||||
decryptOriginalFilename();
|
//// decryptOriginalFilename();
|
||||||
}
|
// }
|
||||||
return;
|
// return;
|
||||||
}
|
// }
|
||||||
|
//
|
||||||
case REQUEST_CODE_NFC_DECRYPT: {
|
// case REQUEST_CODE_NFC_DECRYPT: {
|
||||||
if (resultCode == Activity.RESULT_OK && data != null) {
|
// if (resultCode == Activity.RESULT_OK && data != null) {
|
||||||
mNfcDecryptedSessionKey = data.getByteArrayExtra(OpenPgpApi.EXTRA_NFC_DECRYPTED_SESSION_KEY);
|
// mNfcDecryptedSessionKey = data.getByteArrayExtra(OpenPgpApi.EXTRA_NFC_DECRYPTED_SESSION_KEY);
|
||||||
decryptOriginalFilename();
|
//// decryptOriginalFilename();
|
||||||
}
|
// }
|
||||||
return;
|
// return;
|
||||||
}
|
// }
|
||||||
|
|
||||||
case REQUEST_CODE_INPUT: {
|
case REQUEST_CODE_INPUT: {
|
||||||
if (resultCode == Activity.RESULT_OK && data != null) {
|
if (resultCode == Activity.RESULT_OK && data != null) {
|
||||||
@ -383,4 +401,5 @@ public class DecryptFilesFragment extends DecryptFragment {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -34,11 +34,11 @@ import org.sufficientlysecure.keychain.ui.util.KeyFormattingUtils;
|
|||||||
import org.sufficientlysecure.keychain.ui.util.KeyFormattingUtils.State;
|
import org.sufficientlysecure.keychain.ui.util.KeyFormattingUtils.State;
|
||||||
import org.sufficientlysecure.keychain.util.Passphrase;
|
import org.sufficientlysecure.keychain.util.Passphrase;
|
||||||
|
|
||||||
public abstract class DecryptFragment extends Fragment {
|
public abstract class DecryptFragment extends CryptoOperationFragment {
|
||||||
private static final int RESULT_CODE_LOOKUP_KEY = 0x00007006;
|
private static final int RESULT_CODE_LOOKUP_KEY = 0x00007006;
|
||||||
|
|
||||||
public static final int REQUEST_CODE_PASSPHRASE = 0x00008001;
|
// public static final int REQUEST_CODE_PASSPHRASE = 0x00008001;
|
||||||
public static final int REQUEST_CODE_NFC_DECRYPT = 0x00008002;
|
// public static final int REQUEST_CODE_NFC_DECRYPT = 0x00008002;
|
||||||
|
|
||||||
protected long mSignatureKeyId = 0;
|
protected long mSignatureKeyId = 0;
|
||||||
|
|
||||||
@ -95,24 +95,24 @@ public abstract class DecryptFragment extends Fragment {
|
|||||||
startActivity(viewKeyIntent);
|
startActivity(viewKeyIntent);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void startPassphraseDialog(long subkeyId) {
|
// protected void startPassphraseDialog(long subkeyId) {
|
||||||
Intent intent = new Intent(getActivity(), PassphraseDialogActivity.class);
|
// Intent intent = new Intent(getActivity(), PassphraseDialogActivity.class);
|
||||||
intent.putExtra(PassphraseDialogActivity.EXTRA_SUBKEY_ID, subkeyId);
|
// intent.putExtra(PassphraseDialogActivity.EXTRA_SUBKEY_ID, subkeyId);
|
||||||
startActivityForResult(intent, REQUEST_CODE_PASSPHRASE);
|
// startActivityForResult(intent, REQUEST_CODE_PASSPHRASE);
|
||||||
}
|
// }
|
||||||
|
//
|
||||||
protected void startNfcDecrypt(long subKeyId, Passphrase pin, byte[] encryptedSessionKey) {
|
// protected void startNfcDecrypt(long subKeyId, Passphrase pin, byte[] encryptedSessionKey) {
|
||||||
// build PendingIntent for Yubikey NFC operations
|
// // build PendingIntent for Yubikey NFC operations
|
||||||
Intent intent = new Intent(getActivity(), NfcActivity.class);
|
// Intent intent = new Intent(getActivity(), NfcActivity.class);
|
||||||
intent.setAction(NfcActivity.ACTION_DECRYPT_SESSION_KEY);
|
// intent.setAction(NfcActivity.ACTION_DECRYPT_SESSION_KEY);
|
||||||
intent.putExtra(NfcActivity.EXTRA_DATA, new Intent()); // not used, only relevant to OpenPgpService
|
// intent.putExtra(NfcActivity.EXTRA_DATA, new Intent()); // not used, only relevant to OpenPgpService
|
||||||
intent.putExtra(NfcActivity.EXTRA_KEY_ID, subKeyId);
|
// intent.putExtra(NfcActivity.EXTRA_KEY_ID, subKeyId);
|
||||||
intent.putExtra(NfcActivity.EXTRA_PIN, pin);
|
// intent.putExtra(NfcActivity.EXTRA_PIN, pin);
|
||||||
|
//
|
||||||
intent.putExtra(NfcActivity.EXTRA_NFC_ENC_SESSION_KEY, encryptedSessionKey);
|
// intent.putExtra(NfcActivity.EXTRA_NFC_ENC_SESSION_KEY, encryptedSessionKey);
|
||||||
|
//
|
||||||
startActivityForResult(intent, REQUEST_CODE_NFC_DECRYPT);
|
// startActivityForResult(intent, REQUEST_CODE_NFC_DECRYPT);
|
||||||
}
|
// }
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
@ -253,9 +253,4 @@ public abstract class DecryptFragment extends Fragment {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Should be overridden by MessageFragment and FileFragment to start actual decryption
|
|
||||||
*/
|
|
||||||
protected abstract void decryptStart();
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -38,6 +38,7 @@ import org.sufficientlysecure.keychain.operations.results.DecryptVerifyResult;
|
|||||||
import org.sufficientlysecure.keychain.service.KeychainIntentService;
|
import org.sufficientlysecure.keychain.service.KeychainIntentService;
|
||||||
import org.sufficientlysecure.keychain.service.KeychainIntentService.IOType;
|
import org.sufficientlysecure.keychain.service.KeychainIntentService.IOType;
|
||||||
import org.sufficientlysecure.keychain.service.ServiceProgressHandler;
|
import org.sufficientlysecure.keychain.service.ServiceProgressHandler;
|
||||||
|
import org.sufficientlysecure.keychain.service.input.CryptoInputParcel;
|
||||||
import org.sufficientlysecure.keychain.ui.dialog.ProgressDialogFragment;
|
import org.sufficientlysecure.keychain.ui.dialog.ProgressDialogFragment;
|
||||||
import org.sufficientlysecure.keychain.ui.util.Notify;
|
import org.sufficientlysecure.keychain.ui.util.Notify;
|
||||||
import org.sufficientlysecure.keychain.util.Log;
|
import org.sufficientlysecure.keychain.util.Log;
|
||||||
@ -147,8 +148,13 @@ public class DecryptTextFragment extends DecryptFragment {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void decryptStart() {
|
||||||
|
cryptoOperation(new CryptoInputParcel());
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void decryptStart() {
|
protected void cryptoOperation(CryptoInputParcel cryptoInput) {
|
||||||
|
|
||||||
Log.d(Constants.TAG, "decryptStart");
|
Log.d(Constants.TAG, "decryptStart");
|
||||||
|
|
||||||
// Send all information needed to service to decrypt in other thread
|
// Send all information needed to service to decrypt in other thread
|
||||||
@ -177,6 +183,11 @@ public class DecryptTextFragment extends DecryptFragment {
|
|||||||
// handle messages by standard KeychainIntentServiceHandler first
|
// handle messages by standard KeychainIntentServiceHandler first
|
||||||
super.handleMessage(message);
|
super.handleMessage(message);
|
||||||
|
|
||||||
|
// handle pending messages
|
||||||
|
if (handlePendingMessage(message)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (message.arg1 == MessageStatus.OKAY.ordinal()) {
|
if (message.arg1 == MessageStatus.OKAY.ordinal()) {
|
||||||
// get returned data bundle
|
// get returned data bundle
|
||||||
Bundle returnData = message.getData();
|
Bundle returnData = message.getData();
|
||||||
@ -184,20 +195,20 @@ public class DecryptTextFragment extends DecryptFragment {
|
|||||||
DecryptVerifyResult pgpResult =
|
DecryptVerifyResult pgpResult =
|
||||||
returnData.getParcelable(DecryptVerifyResult.EXTRA_RESULT);
|
returnData.getParcelable(DecryptVerifyResult.EXTRA_RESULT);
|
||||||
|
|
||||||
if (pgpResult.isPending()) {
|
// if (pgpResult.isPending()) {
|
||||||
if ((pgpResult.getResult() & DecryptVerifyResult.RESULT_PENDING_ASYM_PASSPHRASE) ==
|
// if ((pgpResult.getResult() & DecryptVerifyResult.RESULT_PENDING_ASYM_PASSPHRASE) ==
|
||||||
DecryptVerifyResult.RESULT_PENDING_ASYM_PASSPHRASE) {
|
// DecryptVerifyResult.RESULT_PENDING_ASYM_PASSPHRASE) {
|
||||||
startPassphraseDialog(pgpResult.getKeyIdPassphraseNeeded());
|
// startPassphraseDialog(pgpResult.getKeyIdPassphraseNeeded());
|
||||||
} else if ((pgpResult.getResult() & DecryptVerifyResult.RESULT_PENDING_SYM_PASSPHRASE) ==
|
// } else if ((pgpResult.getResult() & DecryptVerifyResult.RESULT_PENDING_SYM_PASSPHRASE) ==
|
||||||
DecryptVerifyResult.RESULT_PENDING_SYM_PASSPHRASE) {
|
// DecryptVerifyResult.RESULT_PENDING_SYM_PASSPHRASE) {
|
||||||
startPassphraseDialog(Constants.key.symmetric);
|
// startPassphraseDialog(Constants.key.symmetric);
|
||||||
} else if ((pgpResult.getResult() & DecryptVerifyResult.RESULT_PENDING_NFC) ==
|
// } else if ((pgpResult.getResult() & DecryptVerifyResult.RESULT_PENDING_NFC) ==
|
||||||
DecryptVerifyResult.RESULT_PENDING_NFC) {
|
// DecryptVerifyResult.RESULT_PENDING_NFC) {
|
||||||
startNfcDecrypt(pgpResult.getNfcSubKeyId(), pgpResult.getNfcPassphrase(), pgpResult.getNfcEncryptedSessionKey());
|
// startNfcDecrypt(pgpResult.getNfcSubKeyId(), pgpResult.getNfcPassphrase(), pgpResult.getNfcEncryptedSessionKey());
|
||||||
} else {
|
// } else {
|
||||||
throw new RuntimeException("Unhandled pending result!");
|
// throw new RuntimeException("Unhandled pending result!");
|
||||||
}
|
// }
|
||||||
} else if (pgpResult.success()) {
|
if (pgpResult.success()) {
|
||||||
|
|
||||||
byte[] decryptedMessage = returnData
|
byte[] decryptedMessage = returnData
|
||||||
.getByteArray(KeychainIntentService.RESULT_DECRYPTED_BYTES);
|
.getByteArray(KeychainIntentService.RESULT_DECRYPTED_BYTES);
|
||||||
@ -245,34 +256,34 @@ public class DecryptTextFragment extends DecryptFragment {
|
|||||||
getActivity().startService(intent);
|
getActivity().startService(intent);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
// @Override
|
||||||
public void onActivityResult(int requestCode, int resultCode, Intent data) {
|
// public void onActivityResult(int requestCode, int resultCode, Intent data) {
|
||||||
switch (requestCode) {
|
// switch (requestCode) {
|
||||||
|
//
|
||||||
case REQUEST_CODE_PASSPHRASE: {
|
// case REQUEST_CODE_PASSPHRASE: {
|
||||||
if (resultCode == Activity.RESULT_OK && data != null) {
|
// if (resultCode == Activity.RESULT_OK && data != null) {
|
||||||
mPassphrase = data.getParcelableExtra(PassphraseDialogActivity.MESSAGE_DATA_PASSPHRASE);
|
// mPassphrase = data.getParcelableExtra(PassphraseDialogActivity.MESSAGE_DATA_PASSPHRASE);
|
||||||
decryptStart();
|
// decryptStart();
|
||||||
} else {
|
// } else {
|
||||||
getActivity().finish();
|
// getActivity().finish();
|
||||||
}
|
// }
|
||||||
return;
|
// return;
|
||||||
}
|
// }
|
||||||
|
//
|
||||||
case REQUEST_CODE_NFC_DECRYPT: {
|
// case REQUEST_CODE_NFC_DECRYPT: {
|
||||||
if (resultCode == Activity.RESULT_OK && data != null) {
|
// if (resultCode == Activity.RESULT_OK && data != null) {
|
||||||
mNfcDecryptedSessionKey = data.getByteArrayExtra(OpenPgpApi.EXTRA_NFC_DECRYPTED_SESSION_KEY);
|
// mNfcDecryptedSessionKey = data.getByteArrayExtra(OpenPgpApi.EXTRA_NFC_DECRYPTED_SESSION_KEY);
|
||||||
decryptStart();
|
// decryptStart();
|
||||||
} else {
|
// } else {
|
||||||
getActivity().finish();
|
// getActivity().finish();
|
||||||
}
|
// }
|
||||||
return;
|
// return;
|
||||||
}
|
// }
|
||||||
|
//
|
||||||
default: {
|
// default: {
|
||||||
super.onActivityResult(requestCode, resultCode, data);
|
// super.onActivityResult(requestCode, resultCode, data);
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user