diff options
| author | Vincent Breitmoser <valodim@mugenguild.com> | 2014-10-26 05:25:54 +0100 | 
|---|---|---|
| committer | Vincent Breitmoser <valodim@mugenguild.com> | 2014-10-26 05:25:54 +0100 | 
| commit | b8ed54bc699978355ffb5e9802902c6bc19a2e7a (patch) | |
| tree | 5a16699c8587f9eb98a6b113dda1fb933fe01360 /OpenKeychain/src/main/java | |
| parent | 84a57411a502795b3f58ac289fd735e99f6b86b9 (diff) | |
| parent | aaa475350348810ea4b6167b802cd8dba0783805 (diff) | |
| download | open-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.java | 102 | 
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); | 
