aboutsummaryrefslogtreecommitdiffstats
path: root/OpenKeychain/src/main/java
diff options
context:
space:
mode:
authorVincent Breitmoser <valodim@mugenguild.com>2014-10-26 05:25:54 +0100
committerVincent Breitmoser <valodim@mugenguild.com>2014-10-26 05:25:54 +0100
commitb8ed54bc699978355ffb5e9802902c6bc19a2e7a (patch)
tree5a16699c8587f9eb98a6b113dda1fb933fe01360 /OpenKeychain/src/main/java
parent84a57411a502795b3f58ac289fd735e99f6b86b9 (diff)
parentaaa475350348810ea4b6167b802cd8dba0783805 (diff)
downloadopen-keychain-b8ed54bc699978355ffb5e9802902c6bc19a2e7a.tar.gz
open-keychain-b8ed54bc699978355ffb5e9802902c6bc19a2e7a.tar.bz2
open-keychain-b8ed54bc699978355ffb5e9802902c6bc19a2e7a.zip
Merge branch 'development' of github.com:open-keychain/open-keychain into development
Diffstat (limited to 'OpenKeychain/src/main/java')
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ViewKeyShareFragment.java102
1 files changed, 26 insertions, 76 deletions
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ViewKeyShareFragment.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ViewKeyShareFragment.java
index a913057f0..aa260b654 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ViewKeyShareFragment.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ViewKeyShareFragment.java
@@ -41,23 +41,20 @@ import android.widget.TextView;
import org.sufficientlysecure.keychain.Constants;
import org.sufficientlysecure.keychain.R;
import org.sufficientlysecure.keychain.compatibility.ClipboardReflection;
-import org.sufficientlysecure.keychain.ui.util.KeyFormattingUtils;
import org.sufficientlysecure.keychain.pgp.exception.PgpGeneralException;
+import org.sufficientlysecure.keychain.pgp.exception.PgpKeyNotFoundException;
import org.sufficientlysecure.keychain.provider.KeychainContract;
import org.sufficientlysecure.keychain.provider.KeychainContract.KeyRings;
import org.sufficientlysecure.keychain.provider.KeychainContract.Keys;
import org.sufficientlysecure.keychain.provider.ProviderHelper;
import org.sufficientlysecure.keychain.ui.dialog.ShareNfcDialogFragment;
-import org.sufficientlysecure.keychain.util.Log;
+import org.sufficientlysecure.keychain.ui.util.KeyFormattingUtils;
import org.sufficientlysecure.keychain.ui.util.Notify;
import org.sufficientlysecure.keychain.ui.util.QrCodeUtils;
+import org.sufficientlysecure.keychain.util.Log;
-import java.io.ByteArrayOutputStream;
import java.io.IOException;
-import edu.cmu.cylab.starslinger.exchange.ExchangeActivity;
-import edu.cmu.cylab.starslinger.exchange.ExchangeConfig;
-
public class ViewKeyShareFragment extends LoaderFragment implements
LoaderManager.LoaderCallbacks<Cursor> {
@@ -77,12 +74,8 @@ public class ViewKeyShareFragment extends LoaderFragment implements
ProviderHelper mProviderHelper;
- private static final int QR_CODE_SIZE = 1000;
-
private static final int LOADER_ID_UNIFIED = 0;
- private static final int REQUEST_CODE_SAFESLINGER = 1;
-
private Uri mDataUri;
@Override
@@ -122,31 +115,31 @@ public class ViewKeyShareFragment extends LoaderFragment implements
mFingerprintShareButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
- share(mDataUri, mProviderHelper, true, false, false);
+ share(mDataUri, mProviderHelper, true, false);
}
});
mFingerprintClipboardButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
- share(mDataUri, mProviderHelper, true, true, false);
+ share(mDataUri, mProviderHelper, true, true);
}
});
mKeyShareButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
- share(mDataUri, mProviderHelper, false, false, false);
+ share(mDataUri, mProviderHelper, false, false);
}
});
mKeyClipboardButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
- share(mDataUri, mProviderHelper, false, true, false);
+ share(mDataUri, mProviderHelper, false, true);
}
});
mKeySafeSlingerButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
- share(mDataUri, mProviderHelper, false, false, true);
+ startSafeSlinger(mDataUri);
}
});
mNfcHelpButton.setOnClickListener(new View.OnClickListener() {
@@ -171,11 +164,24 @@ public class ViewKeyShareFragment extends LoaderFragment implements
return root;
}
+ private void startSafeSlinger(Uri dataUri) {
+ long keyId = 0;
+ try {
+ keyId = new ProviderHelper(getActivity())
+ .getCachedPublicKeyRing(dataUri)
+ .extractOrGetMasterKeyId();
+ } catch (PgpKeyNotFoundException e) {
+ Log.e(Constants.TAG, "key not found!", e);
+ }
+ Intent safeSlingerIntent = new Intent(getActivity(), SafeSlingerActivity.class);
+ safeSlingerIntent.putExtra(SafeSlingerActivity.EXTRA_MASTER_KEY_ID, keyId);
+ startActivityForResult(safeSlingerIntent, 0);
+ }
+
private void share(Uri dataUri, ProviderHelper providerHelper, boolean fingerprintOnly,
- boolean toClipboard, boolean toSafeSlinger) {
+ boolean toClipboard) {
try {
- String content = null;
- byte[] keyBlob = null;
+ String content;
if (fingerprintOnly) {
byte[] data = (byte[]) providerHelper.getGenericData(
KeyRings.buildUnifiedKeyRingUri(dataUri),
@@ -188,13 +194,8 @@ public class ViewKeyShareFragment extends LoaderFragment implements
}
} else {
Uri uri = KeychainContract.KeyRingData.buildPublicKeyRingUri(dataUri);
- if (toSafeSlinger) {
- keyBlob = (byte[]) providerHelper.getGenericData(
- uri, KeychainContract.KeyRingData.KEY_RING_DATA, ProviderHelper.FIELD_TYPE_BLOB);
- } else {
- // get public keyring as ascii armored string
- content = providerHelper.getKeyRingAsArmoredString(uri);
- }
+ // get public keyring as ascii armored string
+ content = providerHelper.getKeyRingAsArmoredString(uri);
}
if (toClipboard) {
@@ -206,11 +207,6 @@ public class ViewKeyShareFragment extends LoaderFragment implements
message = getResources().getString(R.string.key_copied_to_clipboard);
}
Notify.showNotify(getActivity(), message, Notify.Style.OK);
- } else if (toSafeSlinger) {
- Intent slingerIntent = new Intent(getActivity(), ExchangeActivity.class);
- slingerIntent.putExtra(ExchangeConfig.extra.USER_DATA, keyBlob);
- slingerIntent.putExtra(ExchangeConfig.extra.HOST_NAME, Constants.SAFESLINGER_SERVER);
- startActivityForResult(slingerIntent, REQUEST_CODE_SAFESLINGER);
} else {
// Android will fail with android.os.TransactionTooLargeException if key is too big
// see http://www.lonestarprod.com/?p=34
@@ -244,52 +240,6 @@ public class ViewKeyShareFragment extends LoaderFragment implements
}
}
- @Override
- public void onActivityResult(int requestCode, int resultCode, Intent data) {
- switch (requestCode) {
- case REQUEST_CODE_SAFESLINGER:
- switch (resultCode) {
- case ExchangeActivity.RESULT_EXCHANGE_OK:
- // import exchanged keys
- Intent importIntent = new Intent(getActivity(), ImportKeysActivity.class);
- importIntent.setAction(ImportKeysActivity.ACTION_IMPORT_KEY);
- importIntent.putExtra(ImportKeysActivity.EXTRA_KEY_BYTES, getSlingedKeys(data));
- startActivity(importIntent);
- break;
- case ExchangeActivity.RESULT_EXCHANGE_CANCELED:
- // handle canceled result
- // ...
- break;
- }
- break;
- }
- super.onActivityResult(requestCode, resultCode, data);
- }
-
- private static byte[] getSlingedKeys(Intent data) {
- ByteArrayOutputStream out = new ByteArrayOutputStream();
-
- Bundle extras = data.getExtras();
- if (extras != null) {
- byte[] d;
- int i = 0;
- do {
- d = extras.getByteArray(ExchangeConfig.extra.MEMBER_DATA + i);
- if (d != null) {
- try {
- out.write(d);
- } catch (IOException e) {
- Log.e(Constants.TAG, "IOException", e);
- }
- i++;
- }
- } while (d != null);
- }
-
- return out.toByteArray();
- }
-
-
private void showQrCodeDialog() {
Intent qrCodeIntent = new Intent(getActivity(), QrCodeViewActivity.class);
qrCodeIntent.setData(mDataUri);