diff options
author | Dominik Schürmann <dominik@dominikschuermann.de> | 2014-04-11 17:45:52 +0200 |
---|---|---|
committer | Dominik Schürmann <dominik@dominikschuermann.de> | 2014-04-11 17:45:52 +0200 |
commit | 094fb698deca4aa269a754e89acacde2f339a97f (patch) | |
tree | 7c90ee0a02a6b3183dd1ee78e72b80142c354d5f /OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui | |
parent | bbd97cf8004b2de49f2b8cf3b9ea1bf82b5882d5 (diff) | |
download | open-keychain-094fb698deca4aa269a754e89acacde2f339a97f.tar.gz open-keychain-094fb698deca4aa269a754e89acacde2f339a97f.tar.bz2 open-keychain-094fb698deca4aa269a754e89acacde2f339a97f.zip |
Refactor ProviderHelper to be non-static using a constructor based on context (first commit to get context out of pgp classes)
Diffstat (limited to 'OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui')
9 files changed, 56 insertions, 43 deletions
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/CertifyKeyActivity.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/CertifyKeyActivity.java index 910365394..2617e9a48 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/CertifyKeyActivity.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/CertifyKeyActivity.java @@ -39,6 +39,7 @@ import android.widget.CompoundButton.OnCheckedChangeListener; import android.widget.ListView; import android.widget.Spinner; import android.widget.TextView; + import com.beardedhen.androidbootstrap.BootstrapButton; import com.devspark.appmsg.AppMsg; @@ -159,7 +160,7 @@ public class CertifyKeyActivity extends ActionBarActivity implements static final String USER_IDS_SELECTION = UserIds.IS_REVOKED + " = 0"; static final String[] KEYRING_PROJECTION = - new String[] { + new String[]{ KeyRings._ID, KeyRings.MASTER_KEY_ID, KeyRings.FINGERPRINT, @@ -171,7 +172,7 @@ public class CertifyKeyActivity extends ActionBarActivity implements @Override public Loader<Cursor> onCreateLoader(int id, Bundle args) { - switch(id) { + switch (id) { case LOADER_ID_KEYRING: { Uri uri = KeyRings.buildUnifiedKeyRingUri(mDataUri); return new CursorLoader(this, uri, KEYRING_PROJECTION, null, null, null); @@ -187,7 +188,7 @@ public class CertifyKeyActivity extends ActionBarActivity implements @Override public void onLoadFinished(Loader<Cursor> loader, Cursor data) { - switch(loader.getId()) { + switch (loader.getId()) { case LOADER_ID_KEYRING: // the first key here is our master key if (data.moveToFirst()) { @@ -202,7 +203,7 @@ public class CertifyKeyActivity extends ActionBarActivity implements byte[] fingerprintBlob = data.getBlob(INDEX_FINGERPRINT); String fingerprint = PgpKeyHelper.convertFingerprintToHex(fingerprintBlob); ((TextView) findViewById(R.id.fingerprint)) - .setText(PgpKeyHelper.colorizeFingerprint(fingerprint)); + .setText(PgpKeyHelper.colorizeFingerprint(fingerprint)); } break; case LOADER_ID_USER_IDS: @@ -213,7 +214,7 @@ public class CertifyKeyActivity extends ActionBarActivity implements @Override public void onLoaderReset(Loader<Cursor> loader) { - switch(loader.getId()) { + switch (loader.getId()) { case LOADER_ID_USER_IDS: mUserIdsAdapter.swapCursor(null); break; @@ -225,7 +226,7 @@ public class CertifyKeyActivity extends ActionBarActivity implements */ private void initiateSigning() { try { - PGPPublicKeyRing pubring = ProviderHelper.getPGPPublicKeyRing(this, mPubKeyId); + PGPPublicKeyRing pubring = new ProviderHelper(this).getPGPPublicKeyRing(mPubKeyId); // if we have already signed this key, dont bother doing it again boolean alreadySigned = false; diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/EditKeyActivity.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/EditKeyActivity.java index 696f79cd7..5e8ca17a1 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/EditKeyActivity.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/EditKeyActivity.java @@ -290,7 +290,7 @@ public class EditKeyActivity extends ActionBarActivity implements EditorListener try { Uri secretUri = KeychainContract.KeyRingData.buildSecretKeyRingUri(mDataUri); - mKeyRing = (PGPSecretKeyRing) ProviderHelper.getPGPKeyRing(this, secretUri); + mKeyRing = (PGPSecretKeyRing) new ProviderHelper(this).getPGPKeyRing(secretUri); PGPSecretKey masterKey = mKeyRing.getSecretKey(); mMasterCanSign = PgpKeyHelper.isCertificationKey(mKeyRing.getSecretKey()); diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/EncryptAsymmetricFragment.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/EncryptAsymmetricFragment.java index a276b6382..e8e5b14bc 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/EncryptAsymmetricFragment.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/EncryptAsymmetricFragment.java @@ -53,6 +53,8 @@ public class EncryptAsymmetricFragment extends Fragment { public static final int RESULT_CODE_PUBLIC_KEYS = 0x00007001; public static final int RESULT_CODE_SECRET_KEYS = 0x00007002; + ProviderHelper mProviderHelper; + OnAsymmetricKeySelection mKeySelectionListener; // view @@ -133,8 +135,10 @@ public class EncryptAsymmetricFragment extends Fragment { long signatureKeyId = getArguments().getLong(ARG_SIGNATURE_KEY_ID); long[] encryptionKeyIds = getArguments().getLongArray(ARG_ENCRYPTION_KEY_IDS); + mProviderHelper = new ProviderHelper(getActivity()); + // preselect keys given by arguments (given by Intent to EncryptActivity) - preselectKeys(signatureKeyId, encryptionKeyIds); + preselectKeys(signatureKeyId, encryptionKeyIds, mProviderHelper); } /** @@ -143,11 +147,12 @@ public class EncryptAsymmetricFragment extends Fragment { * @param preselectedSignatureKeyId * @param preselectedEncryptionKeyIds */ - private void preselectKeys(long preselectedSignatureKeyId, long[] preselectedEncryptionKeyIds) { + private void preselectKeys(long preselectedSignatureKeyId, long[] preselectedEncryptionKeyIds, + ProviderHelper providerHelper) { if (preselectedSignatureKeyId != 0) { // TODO: don't use bouncy castle objects! try { - PGPSecretKeyRing keyRing = ProviderHelper.getPGPSecretKeyRingWithKeyId(getActivity(), + PGPSecretKeyRing keyRing = providerHelper.getPGPSecretKeyRingWithKeyId( preselectedSignatureKeyId); PGPSecretKey masterKey = keyRing.getSecretKey(); @@ -167,7 +172,7 @@ public class EncryptAsymmetricFragment extends Fragment { for (int i = 0; i < preselectedEncryptionKeyIds.length; ++i) { // TODO One query per selected key?! wtf try { - long id = ProviderHelper.getMasterKeyId(getActivity(), + long id = providerHelper.getMasterKeyId( KeyRings.buildUnifiedKeyRingsFindBySubkeyUri( Long.toString(preselectedEncryptionKeyIds[i])) ); @@ -201,8 +206,8 @@ public class EncryptAsymmetricFragment extends Fragment { mMainUserIdRest.setText(""); } else { // See if we can get a user_id from a unified query - String userIdResult = (String) ProviderHelper.getUnifiedData( - getActivity(), mSecretKeyId, KeyRings.USER_ID, ProviderHelper.FIELD_TYPE_STRING); + String userIdResult = (String) mProviderHelper.getUnifiedData( + mSecretKeyId, KeyRings.USER_ID, ProviderHelper.FIELD_TYPE_STRING); String[] userId = PgpKeyHelper.splitUserId(userIdResult); if (userId[0] != null) { mMainUserId.setText(userId[0]); diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ViewCertActivity.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ViewCertActivity.java index 155e653b4..283d57f67 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ViewCertActivity.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ViewCertActivity.java @@ -145,10 +145,11 @@ public class ViewCertActivity extends ActionBarActivity PGPSignature sig = PgpConversionHelper.BytesToPGPSignature(data.getBlob(INDEX_DATA)); try { - PGPKeyRing signeeRing = ProviderHelper.getPGPKeyRing(this, + ProviderHelper providerHelper = new ProviderHelper(this); + PGPKeyRing signeeRing = providerHelper.getPGPKeyRing( KeychainContract.KeyRingData.buildPublicKeyRingUri( Long.toString(data.getLong(INDEX_MASTER_KEY_ID)))); - PGPKeyRing signerRing = ProviderHelper.getPGPKeyRing(this, + PGPKeyRing signerRing = providerHelper.getPGPKeyRing( KeychainContract.KeyRingData.buildPublicKeyRingUri( Long.toString(sig.getKeyID()))); @@ -230,7 +231,8 @@ public class ViewCertActivity extends ActionBarActivity Intent viewIntent = new Intent(this, ViewKeyActivity.class); try { - long signerMasterKeyId = ProviderHelper.getMasterKeyId(this, + ProviderHelper providerHelper = new ProviderHelper(this); + long signerMasterKeyId = providerHelper.getMasterKeyId( KeyRings.buildUnifiedKeyRingsFindBySubkeyUri(Long.toString(mSignerKeyId)) ); viewIntent.setData(KeyRings.buildGenericKeyRingUri( diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ViewKeyActivity.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ViewKeyActivity.java index ca26cac1c..76b69ac37 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ViewKeyActivity.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ViewKeyActivity.java @@ -54,12 +54,14 @@ import org.sufficientlysecure.keychain.ui.dialog.ShareQrCodeDialogFragment; import org.sufficientlysecure.keychain.util.Log; import java.io.IOException; +import java.security.Provider; import java.util.ArrayList; import java.util.HashMap; public class ViewKeyActivity extends ActionBarActivity { ExportHelper mExportHelper; + ProviderHelper mProviderHelper; protected Uri mDataUri; @@ -83,6 +85,7 @@ public class ViewKeyActivity extends ActionBarActivity { super.onCreate(savedInstanceState); mExportHelper = new ExportHelper(this); + mProviderHelper = new ProviderHelper(this); // let the actionbar look like Android's contact app ActionBar actionBar = getSupportActionBar(); @@ -134,19 +137,19 @@ public class ViewKeyActivity extends ActionBarActivity { startActivity(homeIntent); return true; case R.id.menu_key_view_update: - updateFromKeyserver(mDataUri); + updateFromKeyserver(mDataUri, mProviderHelper); return true; case R.id.menu_key_view_export_keyserver: uploadToKeyserver(mDataUri); return true; case R.id.menu_key_view_export_file: - exportToFile(mDataUri, mExportHelper); + exportToFile(mDataUri, mExportHelper, mProviderHelper); return true; case R.id.menu_key_view_share_default_fingerprint: - shareKey(mDataUri, true); + shareKey(mDataUri, true, mProviderHelper); return true; case R.id.menu_key_view_share_default: - shareKey(mDataUri, false); + shareKey(mDataUri, false, mProviderHelper); return true; case R.id.menu_key_view_share_qr_code_fingerprint: shareKeyQrCode(mDataUri, true); @@ -158,7 +161,7 @@ public class ViewKeyActivity extends ActionBarActivity { shareNfc(); return true; case R.id.menu_key_view_share_clipboard: - copyToClipboard(mDataUri); + copyToClipboard(mDataUri, mProviderHelper); return true; case R.id.menu_key_view_delete: { deleteKey(mDataUri, mExportHelper); @@ -168,10 +171,10 @@ public class ViewKeyActivity extends ActionBarActivity { return super.onOptionsItemSelected(item); } - private void exportToFile(Uri dataUri, ExportHelper exportHelper) { + private void exportToFile(Uri dataUri, ExportHelper exportHelper, ProviderHelper providerHelper) { Uri baseUri = KeychainContract.KeyRings.buildUnifiedKeyRingUri(dataUri); - HashMap<String, Object> data = ProviderHelper.getGenericData(this, + HashMap<String, Object> data = providerHelper.getGenericData( baseUri, new String[]{KeychainContract.Keys.MASTER_KEY_ID, KeychainContract.KeyRings.HAS_SECRET}, new int[]{ProviderHelper.FIELD_TYPE_INTEGER, ProviderHelper.FIELD_TYPE_INTEGER}); @@ -189,9 +192,9 @@ public class ViewKeyActivity extends ActionBarActivity { startActivityForResult(uploadIntent, Id.request.export_to_server); } - private void updateFromKeyserver(Uri dataUri) { - byte[] blob = (byte[]) ProviderHelper.getGenericData( - this, KeychainContract.KeyRings.buildUnifiedKeyRingUri(dataUri), + private void updateFromKeyserver(Uri dataUri, ProviderHelper providerHelper) { + byte[] blob = (byte[]) providerHelper.getGenericData( + KeychainContract.KeyRings.buildUnifiedKeyRingUri(dataUri), KeychainContract.Keys.FINGERPRINT, ProviderHelper.FIELD_TYPE_BLOB); String fingerprint = PgpKeyHelper.convertFingerprintToHex(blob); @@ -202,11 +205,11 @@ public class ViewKeyActivity extends ActionBarActivity { startActivityForResult(queryIntent, RESULT_CODE_LOOKUP_KEY); } - private void shareKey(Uri dataUri, boolean fingerprintOnly) { + private void shareKey(Uri dataUri, boolean fingerprintOnly, ProviderHelper providerHelper) { String content = null; if (fingerprintOnly) { - byte[] data = (byte[]) ProviderHelper.getGenericData( - this, KeychainContract.KeyRings.buildUnifiedKeyRingUri(dataUri), + byte[] data = (byte[]) providerHelper.getGenericData( + KeychainContract.KeyRings.buildUnifiedKeyRingUri(dataUri), KeychainContract.Keys.FINGERPRINT, ProviderHelper.FIELD_TYPE_BLOB); if (data != null) { String fingerprint = PgpKeyHelper.convertFingerprintToHex(data); @@ -220,7 +223,7 @@ public class ViewKeyActivity extends ActionBarActivity { // get public keyring as ascii armored string try { Uri uri = KeychainContract.KeyRingData.buildPublicKeyRingUri(dataUri); - content = ProviderHelper.getKeyRingAsArmoredString(this, uri); + content = providerHelper.getKeyRingAsArmoredString(uri); // Android will fail with android.os.TransactionTooLargeException if key is too big // see http://www.lonestarprod.com/?p=34 @@ -256,11 +259,11 @@ public class ViewKeyActivity extends ActionBarActivity { dialog.show(getSupportFragmentManager(), "shareQrCodeDialog"); } - private void copyToClipboard(Uri dataUri) { + private void copyToClipboard(Uri dataUri, ProviderHelper providerHelper) { // get public keyring as ascii armored string try { Uri uri = KeychainContract.KeyRingData.buildPublicKeyRingUri(dataUri); - String keyringArmored = ProviderHelper.getKeyRingAsArmoredString(this, uri); + String keyringArmored = providerHelper.getKeyRingAsArmoredString(uri); ClipboardReflection.copyToClipboard(this, keyringArmored); AppMsg.makeText(this, R.string.key_copied_to_clipboard, AppMsg.STYLE_INFO) @@ -359,8 +362,8 @@ public class ViewKeyActivity extends ActionBarActivity { try { Uri blobUri = KeychainContract.KeyRingData.buildPublicKeyRingUri(dataUri); - mNfcKeyringBytes = ProviderHelper.getPGPKeyRing( - ViewKeyActivity.this, blobUri).getEncoded(); + mNfcKeyringBytes = mProviderHelper.getPGPKeyRing( + blobUri).getEncoded(); } catch (IOException e) { Log.e(Constants.TAG, "Error parsing keyring", e); } catch (ProviderHelper.NotFoundException e) { diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ViewKeyMainFragment.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ViewKeyMainFragment.java index 386342a48..89f6a467b 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ViewKeyMainFragment.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ViewKeyMainFragment.java @@ -332,7 +332,7 @@ public class ViewKeyMainFragment extends Fragment implements private void encryptToContact(Uri dataUri) { try { - long keyId = ProviderHelper.extractOrGetMasterKeyId(getActivity(), dataUri); + long keyId = new ProviderHelper(getActivity()).extractOrGetMasterKeyId(dataUri); long[] encryptionKeyIds = new long[]{ keyId }; Intent intent = new Intent(getActivity(), EncryptActivity.class); intent.setAction(EncryptActivity.ACTION_ENCRYPT); diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/dialog/DeleteKeyDialogFragment.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/dialog/DeleteKeyDialogFragment.java index 72ea4c013..c717f80ec 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/dialog/DeleteKeyDialogFragment.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/dialog/DeleteKeyDialogFragment.java @@ -102,7 +102,7 @@ public class DeleteKeyDialogFragment extends DialogFragment { long masterKeyId = masterKeyIds[0]; - HashMap<String, Object> data = ProviderHelper.getUnifiedData(activity, masterKeyId, new String[]{ + HashMap<String, Object> data = new ProviderHelper(activity).getUnifiedData(masterKeyId, new String[]{ KeyRings.USER_ID, KeyRings.HAS_SECRET }, new int[] { ProviderHelper.FIELD_TYPE_STRING, ProviderHelper.FIELD_TYPE_INTEGER }); diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/dialog/PassphraseDialogFragment.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/dialog/PassphraseDialogFragment.java index 74bc73952..eaf4ddf6d 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/dialog/PassphraseDialogFragment.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/dialog/PassphraseDialogFragment.java @@ -140,7 +140,7 @@ public class PassphraseDialogFragment extends DialogFragment implements OnEditor alert.setMessage(R.string.passphrase_for_symmetric_encryption); } else { try { - secretKey = ProviderHelper.getPGPSecretKeyRing(activity, secretKeyId).getSecretKey(); + secretKey = new ProviderHelper(activity).getPGPSecretKeyRing(secretKeyId).getSecretKey(); } catch (ProviderHelper.NotFoundException e) { alert.setTitle(R.string.title_key_not_found); alert.setMessage(getString(R.string.key_not_found, secretKeyId)); @@ -196,8 +196,8 @@ public class PassphraseDialogFragment extends DialogFragment implements OnEditor return; } else { try { - clickSecretKey = PgpKeyHelper.getKeyNum(ProviderHelper - .getPGPSecretKeyRingWithKeyId(activity, secretKeyId), + clickSecretKey = PgpKeyHelper.getKeyNum(new ProviderHelper(activity) + .getPGPSecretKeyRingWithKeyId(secretKeyId), curKeyIndex); } catch (ProviderHelper.NotFoundException e) { Log.e(Constants.TAG, "key not found!", e); diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/dialog/ShareQrCodeDialogFragment.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/dialog/ShareQrCodeDialogFragment.java index 7e9a3d800..fa6317d1d 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/dialog/ShareQrCodeDialogFragment.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/dialog/ShareQrCodeDialogFragment.java @@ -41,6 +41,7 @@ import org.sufficientlysecure.keychain.util.Log; import org.sufficientlysecure.keychain.util.QrCodeUtils; import java.io.IOException; +import java.security.Provider; import java.util.ArrayList; public class ShareQrCodeDialogFragment extends DialogFragment { @@ -91,14 +92,15 @@ public class ShareQrCodeDialogFragment extends DialogFragment { mImage = (ImageView) view.findViewById(R.id.share_qr_code_dialog_image); mText = (TextView) view.findViewById(R.id.share_qr_code_dialog_text); + ProviderHelper providerHelper = new ProviderHelper(getActivity()); String content = null; if (mFingerprintOnly) { alert.setPositiveButton(R.string.btn_okay, null); - byte[] blob = (byte[]) ProviderHelper.getGenericData( - getActivity(), KeyRings.buildUnifiedKeyRingUri(dataUri), + byte[] blob = (byte[]) providerHelper.getGenericData( + KeyRings.buildUnifiedKeyRingUri(dataUri), KeyRings.FINGERPRINT, ProviderHelper.FIELD_TYPE_BLOB); - if(blob == null) { + if (blob == null) { Log.e(Constants.TAG, "key not found!"); AppMsg.makeText(getActivity(), R.string.error_key_not_found, AppMsg.STYLE_ALERT).show(); return null; @@ -113,7 +115,7 @@ public class ShareQrCodeDialogFragment extends DialogFragment { try { Uri uri = KeychainContract.KeyRingData.buildPublicKeyRingUri(dataUri); - content = ProviderHelper.getKeyRingAsArmoredString(getActivity(), uri); + content = providerHelper.getKeyRingAsArmoredString(uri); } catch (IOException e) { Log.e(Constants.TAG, "error processing key!", e); AppMsg.makeText(getActivity(), R.string.error_invalid_data, AppMsg.STYLE_ALERT).show(); |