diff options
| author | Dominik Schürmann <dominik@dominikschuermann.de> | 2012-12-12 19:14:09 +0100 | 
|---|---|---|
| committer | Dominik Schürmann <dominik@dominikschuermann.de> | 2012-12-12 19:14:09 +0100 | 
| commit | 2dcaad3d3b6f8757f01e4abd2295431f24cdfed5 (patch) | |
| tree | 66f3d65e1e1e4e30ad6aa3ebe8e8eee5816cc15b | |
| parent | e3fea30abe9f9f16dbfa5e989e7058842b085b7e (diff) | |
| download | open-keychain-2dcaad3d3b6f8757f01e4abd2295431f24cdfed5.tar.gz open-keychain-2dcaad3d3b6f8757f01e4abd2295431f24cdfed5.tar.bz2 open-keychain-2dcaad3d3b6f8757f01e4abd2295431f24cdfed5.zip | |
API changes
34 files changed, 303 insertions, 787 deletions
| diff --git a/APG-API-Lib/src/org/thialfihar/android/apg/integration/ApgData.java b/APG-API-Lib/src/org/thialfihar/android/apg/integration/ApgData.java index 5ef20bfbb..538e591df 100644 --- a/APG-API-Lib/src/org/thialfihar/android/apg/integration/ApgData.java +++ b/APG-API-Lib/src/org/thialfihar/android/apg/integration/ApgData.java @@ -22,36 +22,36 @@ import java.util.Arrays;  public class ApgData implements Serializable {      private static final long serialVersionUID = 6314045536270848410L; -    protected long mEncryptionKeyIds[] = null; -    protected long mSignatureKeyId = 0; -    protected String mSignatureUserId = null; +    protected long mPublicKeyIds[] = null; +    protected long mSecretKeyId = 0; +    protected String mSecretKeyUserId = null;      protected boolean mSignatureSuccess = false;      protected boolean mSignatureUnknown = false;      protected String mDecryptedData = null;      protected String mEncryptedData = null; -    public void setSignatureKeyId(long keyId) { -        mSignatureKeyId = keyId; +    public void setSecretKeyId(long keyId) { +        mSecretKeyId = keyId;      } -    public long getSignatureKeyId() { -        return mSignatureKeyId; +    public long getSecretKeyId() { +        return mSecretKeyId;      } -    public void setEncryptionKeys(long keyIds[]) { -        mEncryptionKeyIds = keyIds; +    public void setPublicKeys(long keyIds[]) { +        mPublicKeyIds = keyIds;      } -    public long[] getEncryptionKeys() { -        return mEncryptionKeyIds; +    public long[] getPublicKeys() { +        return mPublicKeyIds;      } -    public boolean hasSignatureKey() { -        return mSignatureKeyId != 0; +    public boolean hasSecretKey() { +        return mSecretKeyId != 0;      } -    public boolean hasEncryptionKeys() { -        return (mEncryptionKeyIds != null) && (mEncryptionKeyIds.length > 0); +    public boolean hasPublicKeys() { +        return (mPublicKeyIds != null) && (mPublicKeyIds.length > 0);      }      public String getEncryptedData() { @@ -70,12 +70,12 @@ public class ApgData implements Serializable {          mDecryptedData = data;      } -    public void setSignatureUserId(String userId) { -        mSignatureUserId = userId; +    public void setSecretKeyUserId(String userId) { +        mSecretKeyUserId = userId;      } -    public String getSignatureUserId() { -        return mSignatureUserId; +    public String getSecretKeyUserId() { +        return mSecretKeyUserId;      }      public boolean getSignatureSuccess() { @@ -96,11 +96,11 @@ public class ApgData implements Serializable {      @Override      public String toString() { -        String output = "mEncryptionKeyIds: " + Arrays.toString(mEncryptionKeyIds) -                + "\nmSignatureKeyId: " + mSignatureKeyId + "\nmSignatureUserId: " -                + mSignatureUserId + "\nmSignatureSuccess: " + mSignatureSuccess -                + "\nmSignatureUnknown: " + mSignatureUnknown + "\nmDecryptedData: " -                + mDecryptedData + "\nmEncryptedData: " + mEncryptedData; +        String output = "mPublicKeyIds: " + Arrays.toString(mPublicKeyIds) + "\nmSecretKeyId: " +                + mSecretKeyId + "\nmSecretKeyUserId: " + mSecretKeyUserId +                + "\nmSignatureSuccess: " + mSignatureSuccess + "\nmSignatureUnknown: " +                + mSignatureUnknown + "\nmDecryptedData: " + mDecryptedData + "\nmEncryptedData: " +                + mEncryptedData;          return output;      } diff --git a/APG-API-Lib/src/org/thialfihar/android/apg/integration/ApgIntentHelper.java b/APG-API-Lib/src/org/thialfihar/android/apg/integration/ApgIntentHelper.java index 09a544f26..cbd438f2f 100644 --- a/APG-API-Lib/src/org/thialfihar/android/apg/integration/ApgIntentHelper.java +++ b/APG-API-Lib/src/org/thialfihar/android/apg/integration/ApgIntentHelper.java @@ -27,12 +27,32 @@ public class ApgIntentHelper {      public static final String APG_INTENT_PREFIX = "org.thialfihar.android.apg.intent.";      // Intents -    public static final String ACTION_DECRYPT = APG_INTENT_PREFIX + "DECRYPT"; +    /** +     * Encrypt +     */ +    // without permission      public static final String ACTION_ENCRYPT = APG_INTENT_PREFIX + "ENCRYPT"; -    public static final String ACTION_DECRYPT_FILE = APG_INTENT_PREFIX + "DECRYPT_FILE";      public static final String ACTION_ENCRYPT_FILE = APG_INTENT_PREFIX + "ENCRYPT_FILE"; -    public static final String ACTION_DECRYPT_AND_RETURN = APG_INTENT_PREFIX + "DECRYPT_AND_RETURN"; + +    // with permission      public static final String ACTION_ENCRYPT_AND_RETURN = APG_INTENT_PREFIX + "ENCRYPT_AND_RETURN"; +    public static final String ACTION_GENERATE_SIGNATURE_AND_RETURN = APG_INTENT_PREFIX +            + "GENERATE_SIGNATURE_AND_RETURN"; +    public static final String ACTION_ENCRYPT_STREAM_AND_RETURN = APG_INTENT_PREFIX +            + "ENCRYPT_STREAM_AND_RETURN"; + +    /** +     * Decrypt +     */ +    // without permission +    public static final String ACTION_DECRYPT = APG_INTENT_PREFIX + "DECRYPT"; +    public static final String ACTION_DECRYPT_FILE = APG_INTENT_PREFIX + "DECRYPT_FILE"; + +    // with permission +    public static final String ACTION_DECRYPT_AND_RETURN = APG_INTENT_PREFIX + "DECRYPT_AND_RETURN"; +    public static final String ACTION_DECRYPT_STREAM_AND_RETURN = APG_INTENT_PREFIX +            + "DECRYPT_STREAM_AND_RETURN"; +      public static final String ACTION_SELECT_PUBLIC_KEYS = APG_INTENT_PREFIX + "SELECT_PUBLIC_KEYS";      public static final String ACTION_SELECT_SECRET_KEY = APG_INTENT_PREFIX + "SELECT_SECRET_KEY";      public static final String ACTION_CREATE_KEY = APG_INTENT_PREFIX + "CREATE_KEY"; @@ -60,15 +80,19 @@ public class ApgIntentHelper {      public static final String RESULT_EXTRA_MASTER_KEY_IDS = "masterKeyIds";      public static final String RESULT_EXTRA_USER_IDS = "userIds"; +     +    // result from EditKey +    public static final String RESULT_EXTRA_MASTER_KEY_ID = "masterKeyId"; +    public static final String RESULT_EXTRA_USER_ID = "userId";      public static final String INTENT_VERSION = "1"; -    public static final int DECRYPT_MESSAGE = 0x21070001; -    public static final int ENCRYPT_MESSAGE = 0x21070002; -    public static final int SELECT_PUBLIC_KEYS = 0x21070003; -    public static final int SELECT_SECRET_KEY = 0x21070004; -    public static final int CREATE_KEY = 0x21070005; -    public static final int EDIT_KEY = 0x21070006; +    public static final int DECRYPT_MESSAGE = 0x00007121; +    public static final int ENCRYPT_MESSAGE = 0x00007122; +    public static final int SELECT_PUBLIC_KEYS = 0x00007123; +    public static final int SELECT_SECRET_KEY = 0x00007124; +    public static final int CREATE_KEY = 0x00007125; +    public static final int EDIT_KEY = 0x00007126;      private Activity activity; @@ -221,44 +245,53 @@ public class ApgIntentHelper {      public boolean onActivityResult(int requestCode, int resultCode, Intent data, ApgData apgData) {          switch (requestCode) { -        case SELECT_SECRET_KEY: +        case CREATE_KEY:              if (resultCode != Activity.RESULT_OK || data == null) {                  // user canceled!                  break;              } -            apgData.setSignatureKeyId(data.getLongExtra(EXTRA_KEY_ID, 0)); -            apgData.setSignatureUserId(data.getStringExtra(EXTRA_USER_ID)); +            apgData.setSecretKeyId(data.getLongExtra(RESULT_EXTRA_MASTER_KEY_ID, 0)); +            apgData.setSecretKeyUserId(data.getStringExtra(RESULT_EXTRA_USER_ID)); +              break; +        case SELECT_SECRET_KEY: +            if (resultCode != Activity.RESULT_OK || data == null) { +                // user canceled! +                break; +            } +            apgData.setSecretKeyId(data.getLongExtra(EXTRA_KEY_ID, 0)); +            apgData.setSecretKeyUserId(data.getStringExtra(EXTRA_USER_ID)); +            break;          case SELECT_PUBLIC_KEYS:              if (resultCode != Activity.RESULT_OK || data == null) { -                apgData.setEncryptionKeys(null); +                apgData.setPublicKeys(null);                  break;              } -            apgData.setEncryptionKeys(data.getLongArrayExtra(RESULT_EXTRA_MASTER_KEY_IDS)); -            break; +            apgData.setPublicKeys(data.getLongArrayExtra(RESULT_EXTRA_MASTER_KEY_IDS)); +            break;          case ENCRYPT_MESSAGE:              if (resultCode != Activity.RESULT_OK || data == null) { -                apgData.setEncryptionKeys(null); +                apgData.setPublicKeys(null);                  break;              }              apgData.setEncryptedData(data.getStringExtra(EXTRA_ENCRYPTED_MESSAGE)); -            break; +            break;          case DECRYPT_MESSAGE:              if (resultCode != Activity.RESULT_OK || data == null) {                  break;              } -            apgData.setSignatureUserId(data.getStringExtra(EXTRA_SIGNATURE_USER_ID)); -            apgData.setSignatureKeyId(data.getLongExtra(EXTRA_SIGNATURE_KEY_ID, 0)); +            apgData.setSecretKeyUserId(data.getStringExtra(EXTRA_SIGNATURE_USER_ID)); +            apgData.setSecretKeyId(data.getLongExtra(EXTRA_SIGNATURE_KEY_ID, 0));              apgData.setSignatureSuccess(data.getBooleanExtra(EXTRA_SIGNATURE_SUCCESS, false));              apgData.setSignatureUnknown(data.getBooleanExtra(EXTRA_SIGNATURE_UNKNOWN, false));              apgData.setDecryptedData(data.getStringExtra(EXTRA_DECRYPTED_MESSAGE)); -            break; +            break;          default:              return false;          } @@ -273,8 +306,8 @@ public class ApgIntentHelper {       *            The emails that should be used for preselection.       * @return true when activity was found and executed successfully       */ -    public boolean selectEncryptionKeys(String emails) { -        return selectEncryptionKeys(emails, null); +    public boolean selectPublicKeys(String emails) { +        return selectPublicKeys(emails, null);      }      /** @@ -286,19 +319,17 @@ public class ApgIntentHelper {       *            ApgData with encryption keys and signature keys preselected       * @return true when activity was found and executed successfully       */ -    public boolean selectEncryptionKeys(String emails, ApgData apgData) { +    public boolean selectPublicKeys(String emails, ApgData apgData) {          Intent intent = new Intent(ACTION_SELECT_PUBLIC_KEYS);          intent.putExtra(EXTRA_INTENT_VERSION, INTENT_VERSION);          long[] initialKeyIds = null; -        if (apgData == null || !apgData.hasEncryptionKeys()) { - +        if (apgData == null || !apgData.hasPublicKeys()) {              ApgContentProviderHelper cPHelper = new ApgContentProviderHelper(activity);              initialKeyIds = cPHelper.getPublicKeyIdsFromEmail(emails); -          } else { -            initialKeyIds = apgData.getEncryptionKeys(); +            initialKeyIds = apgData.getPublicKeys();          }          intent.putExtra(EXTRA_SELECTION, initialKeyIds); diff --git a/APG-API-Lib/src/org/thialfihar/android/apg/integration/Util.java b/APG-API-Lib/src/org/thialfihar/android/apg/integration/ApgUtil.java index 01c6bb699..a8a01f913 100644 --- a/APG-API-Lib/src/org/thialfihar/android/apg/integration/Util.java +++ b/APG-API-Lib/src/org/thialfihar/android/apg/integration/ApgUtil.java @@ -23,7 +23,7 @@ import android.content.pm.PackageManager.NameNotFoundException;  import android.widget.Toast; -public class Util { +public class ApgUtil {      /**       * Check whether APG is installed and at a high enough version. @@ -48,4 +48,25 @@ public class Util {          return false;      } + +    /** +     * Splits userId string into naming part and email part +     *  +     * @param userId +     * @return array with naming (0) and email (1) +     */ +    public static String[] splitUserId(String userId) { +        String[] output = new String[2]; + +        String chunks[] = userId.split(" <", 2); +        userId = chunks[0]; +        if (chunks.length > 1) { +            output[1] = "<" + chunks[1]; +            output[1] = output[1].replaceAll("<", ""); +            output[1] = output[1].replaceAll(">", ""); +        } +        output[0] = userId; + +        return output; +    }  } diff --git a/APG/AndroidManifest.xml b/APG/AndroidManifest.xml index 1361d3318..ea5dcb1f8 100644 --- a/APG/AndroidManifest.xml +++ b/APG/AndroidManifest.xml @@ -77,7 +77,7 @@          android:hardwareAccelerated="true"          android:icon="@drawable/icon"          android:label="@string/app_name" -        android:theme="@style/Theme.Sherlock.Light.ForceOverflow" > +        android:theme="@style/Theme.Sherlock.Light" >          <activity              android:name=".ui.MainActivity"              android:configChanges="orientation|screenSize|keyboardHidden|keyboard" diff --git a/APG/android-libs/ActionBarSherlock/res/drawable-hdpi/abs__ab_stacked_solid_inverse_holo.9.png b/APG/android-libs/ActionBarSherlock/res/drawable-hdpi/abs__ab_stacked_solid_inverse_holo.9.pngBinary files differ deleted file mode 100644 index 42528b157..000000000 --- a/APG/android-libs/ActionBarSherlock/res/drawable-hdpi/abs__ab_stacked_solid_inverse_holo.9.png +++ /dev/null diff --git a/APG/android-libs/ActionBarSherlock/res/drawable-hdpi/abs__tab_unselected_focused_holo.9.png b/APG/android-libs/ActionBarSherlock/res/drawable-hdpi/abs__tab_unselected_focused_holo.9.pngBinary files differ deleted file mode 100644 index 294991d79..000000000 --- a/APG/android-libs/ActionBarSherlock/res/drawable-hdpi/abs__tab_unselected_focused_holo.9.png +++ /dev/null diff --git a/APG/android-libs/ActionBarSherlock/res/drawable-hdpi/abs__tab_unselected_holo.9.png b/APG/android-libs/ActionBarSherlock/res/drawable-hdpi/abs__tab_unselected_holo.9.pngBinary files differ deleted file mode 100644 index 19532ab10..000000000 --- a/APG/android-libs/ActionBarSherlock/res/drawable-hdpi/abs__tab_unselected_holo.9.png +++ /dev/null diff --git a/APG/android-libs/ActionBarSherlock/res/drawable-mdpi/abs__ab_stacked_solid_inverse_holo.9.png b/APG/android-libs/ActionBarSherlock/res/drawable-mdpi/abs__ab_stacked_solid_inverse_holo.9.pngBinary files differ deleted file mode 100644 index a823841c5..000000000 --- a/APG/android-libs/ActionBarSherlock/res/drawable-mdpi/abs__ab_stacked_solid_inverse_holo.9.png +++ /dev/null diff --git a/APG/android-libs/ActionBarSherlock/res/drawable-mdpi/abs__dialog_bottom_holo_dark.9.png b/APG/android-libs/ActionBarSherlock/res/drawable-mdpi/abs__dialog_bottom_holo_dark.9.pngBinary files differ deleted file mode 100644 index 611d53890..000000000 --- a/APG/android-libs/ActionBarSherlock/res/drawable-mdpi/abs__dialog_bottom_holo_dark.9.png +++ /dev/null diff --git a/APG/android-libs/ActionBarSherlock/res/drawable-mdpi/abs__dialog_bottom_holo_light.9.png b/APG/android-libs/ActionBarSherlock/res/drawable-mdpi/abs__dialog_bottom_holo_light.9.pngBinary files differ deleted file mode 100644 index cf2f01b1f..000000000 --- a/APG/android-libs/ActionBarSherlock/res/drawable-mdpi/abs__dialog_bottom_holo_light.9.png +++ /dev/null diff --git a/APG/android-libs/ActionBarSherlock/res/drawable-mdpi/abs__tab_unselected_focused_holo.9.png b/APG/android-libs/ActionBarSherlock/res/drawable-mdpi/abs__tab_unselected_focused_holo.9.pngBinary files differ deleted file mode 100644 index f0cecd183..000000000 --- a/APG/android-libs/ActionBarSherlock/res/drawable-mdpi/abs__tab_unselected_focused_holo.9.png +++ /dev/null diff --git a/APG/android-libs/ActionBarSherlock/res/drawable-mdpi/abs__tab_unselected_holo.9.png b/APG/android-libs/ActionBarSherlock/res/drawable-mdpi/abs__tab_unselected_holo.9.pngBinary files differ deleted file mode 100644 index a2dbf42b7..000000000 --- a/APG/android-libs/ActionBarSherlock/res/drawable-mdpi/abs__tab_unselected_holo.9.png +++ /dev/null diff --git a/APG/android-libs/ActionBarSherlock/res/drawable-xhdpi/abs__ab_stacked_solid_inverse_holo.9.png b/APG/android-libs/ActionBarSherlock/res/drawable-xhdpi/abs__ab_stacked_solid_inverse_holo.9.pngBinary files differ deleted file mode 100644 index 16b9bef12..000000000 --- a/APG/android-libs/ActionBarSherlock/res/drawable-xhdpi/abs__ab_stacked_solid_inverse_holo.9.png +++ /dev/null diff --git a/APG/android-libs/ActionBarSherlock/res/drawable-xhdpi/abs__dialog_bottom_holo_dark.9.png b/APG/android-libs/ActionBarSherlock/res/drawable-xhdpi/abs__dialog_bottom_holo_dark.9.pngBinary files differ deleted file mode 100644 index 94bb8e140..000000000 --- a/APG/android-libs/ActionBarSherlock/res/drawable-xhdpi/abs__dialog_bottom_holo_dark.9.png +++ /dev/null diff --git a/APG/android-libs/ActionBarSherlock/res/drawable-xhdpi/abs__dialog_bottom_holo_light.9.png b/APG/android-libs/ActionBarSherlock/res/drawable-xhdpi/abs__dialog_bottom_holo_light.9.pngBinary files differ deleted file mode 100644 index ef58e2924..000000000 --- a/APG/android-libs/ActionBarSherlock/res/drawable-xhdpi/abs__dialog_bottom_holo_light.9.png +++ /dev/null diff --git a/APG/android-libs/ActionBarSherlock/res/drawable-xhdpi/abs__spinner_20_inner_holo.png b/APG/android-libs/ActionBarSherlock/res/drawable-xhdpi/abs__spinner_20_inner_holo.pngBinary files differ deleted file mode 100644 index 76e9428be..000000000 --- a/APG/android-libs/ActionBarSherlock/res/drawable-xhdpi/abs__spinner_20_inner_holo.png +++ /dev/null diff --git a/APG/android-libs/ActionBarSherlock/res/drawable-xhdpi/abs__spinner_20_outer_holo.png b/APG/android-libs/ActionBarSherlock/res/drawable-xhdpi/abs__spinner_20_outer_holo.pngBinary files differ deleted file mode 100644 index 6f693d631..000000000 --- a/APG/android-libs/ActionBarSherlock/res/drawable-xhdpi/abs__spinner_20_outer_holo.png +++ /dev/null diff --git a/APG/android-libs/ActionBarSherlock/res/drawable-xhdpi/abs__tab_unselected_focused_holo.9.png b/APG/android-libs/ActionBarSherlock/res/drawable-xhdpi/abs__tab_unselected_focused_holo.9.pngBinary files differ deleted file mode 100644 index f3a5cbde8..000000000 --- a/APG/android-libs/ActionBarSherlock/res/drawable-xhdpi/abs__tab_unselected_focused_holo.9.png +++ /dev/null diff --git a/APG/android-libs/ActionBarSherlock/res/drawable-xhdpi/abs__tab_unselected_holo.9.png b/APG/android-libs/ActionBarSherlock/res/drawable-xhdpi/abs__tab_unselected_holo.9.pngBinary files differ deleted file mode 100644 index 946517378..000000000 --- a/APG/android-libs/ActionBarSherlock/res/drawable-xhdpi/abs__tab_unselected_holo.9.png +++ /dev/null diff --git a/APG/android-libs/ActionBarSherlock/res/drawable/abs__tab_indicator_holo.xml b/APG/android-libs/ActionBarSherlock/res/drawable/abs__tab_indicator_holo.xml deleted file mode 100644 index 61f76efc6..000000000 --- a/APG/android-libs/ActionBarSherlock/res/drawable/abs__tab_indicator_holo.xml +++ /dev/null @@ -1,34 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Copyright (C) 2008 The Android Open Source Project - -     Licensed under the Apache License, Version 2.0 (the "License"); -     you may not use this file except in compliance with the License. -     You may obtain a copy of the License at -   -          http://www.apache.org/licenses/LICENSE-2.0 -   -     Unless required by applicable law or agreed to in writing, software -     distributed under the License is distributed on an "AS IS" BASIS, -     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -     See the License for the specific language governing permissions and -     limitations under the License. ---> - -<selector xmlns:android="http://schemas.android.com/apk/res/android"> -    <!-- Non focused states --> -    <item android:state_focused="false" android:state_selected="false" android:state_pressed="false" android:drawable="@drawable/abs__tab_unselected_holo" /> -    <item android:state_focused="false" android:state_selected="true"  android:state_pressed="false" android:drawable="@drawable/abs__tab_selected_holo" /> - -    <!-- Focused states --> -    <item android:state_focused="true" android:state_selected="false" android:state_pressed="false" android:drawable="@drawable/abs__tab_unselected_focused_holo" /> -    <item android:state_focused="true" android:state_selected="true"  android:state_pressed="false" android:drawable="@drawable/abs__tab_selected_focused_holo" /> - -    <!-- Pressed --> -    <!--    Non focused states --> -    <item android:state_focused="false" android:state_selected="false" android:state_pressed="true" android:drawable="@drawable/abs__tab_unselected_pressed_holo" /> -    <item android:state_focused="false" android:state_selected="true"  android:state_pressed="true" android:drawable="@drawable/abs__tab_selected_pressed_holo" /> - -    <!--    Focused states --> -    <item android:state_focused="true" android:state_selected="false" android:state_pressed="true" android:drawable="@drawable/abs__tab_unselected_pressed_holo" /> -    <item android:state_focused="true" android:state_selected="true"  android:state_pressed="true" android:drawable="@drawable/abs__tab_selected_pressed_holo" /> -</selector> diff --git a/APG/android-libs/ActionBarSherlock/src/android/support/v4/app/_ActionBarSherlockTrojanHorse.java b/APG/android-libs/ActionBarSherlock/src/android/support/v4/app/_ActionBarSherlockTrojanHorse.java deleted file mode 100644 index 3e3db62b7..000000000 --- a/APG/android-libs/ActionBarSherlock/src/android/support/v4/app/_ActionBarSherlockTrojanHorse.java +++ /dev/null @@ -1,144 +0,0 @@ -package android.support.v4.app; - -import android.util.Log; -import android.view.View; -import android.view.Window; -import com.actionbarsherlock.ActionBarSherlock.OnCreatePanelMenuListener; -import com.actionbarsherlock.ActionBarSherlock.OnMenuItemSelectedListener; -import com.actionbarsherlock.ActionBarSherlock.OnPreparePanelListener; -import com.actionbarsherlock.view.Menu; -import com.actionbarsherlock.view.MenuInflater; -import com.actionbarsherlock.view.MenuItem; - -import java.util.ArrayList; - -/** I'm in ur package. Stealing ur variables. */ -public abstract class _ActionBarSherlockTrojanHorse extends FragmentActivity implements OnCreatePanelMenuListener, OnPreparePanelListener, OnMenuItemSelectedListener { -    private static final boolean DEBUG = false; -    private static final String TAG = "_ActionBarSherlockTrojanHorse"; - -    /** Fragment interface for menu creation callback. */ -    public interface OnCreateOptionsMenuListener { -        public void onCreateOptionsMenu(Menu menu, MenuInflater inflater); -    } -    /** Fragment interface for menu preparation callback. */ -    public interface OnPrepareOptionsMenuListener { -        public void onPrepareOptionsMenu(Menu menu); -    } -    /** Fragment interface for menu item selection callback. */ -    public interface OnOptionsItemSelectedListener { -      public boolean onOptionsItemSelected(MenuItem item); -    } - -    private ArrayList<Fragment> mCreatedMenus; - - -    /////////////////////////////////////////////////////////////////////////// -    // Sherlock menu handling -    /////////////////////////////////////////////////////////////////////////// - -    @Override -    public boolean onCreatePanelMenu(int featureId, Menu menu) { -        if (DEBUG) Log.d(TAG, "[onCreatePanelMenu] featureId: " + featureId + ", menu: " + menu); - -        if (featureId == Window.FEATURE_OPTIONS_PANEL) { -            boolean result = onCreateOptionsMenu(menu); -            if (DEBUG) Log.d(TAG, "[onCreatePanelMenu] activity create result: " + result); - -            MenuInflater inflater = getSupportMenuInflater(); -            boolean show = false; -            ArrayList<Fragment> newMenus = null; -            if (mFragments.mActive != null) { -                for (int i = 0; i < mFragments.mAdded.size(); i++) { -                    Fragment f = mFragments.mAdded.get(i); -                    if (f != null && !f.mHidden && f.mHasMenu && f.mMenuVisible && f instanceof OnCreateOptionsMenuListener) { -                        show = true; -                        ((OnCreateOptionsMenuListener)f).onCreateOptionsMenu(menu, inflater); -                        if (newMenus == null) { -                            newMenus = new ArrayList<Fragment>(); -                        } -                        newMenus.add(f); -                    } -                } -            } - -            if (mCreatedMenus != null) { -                for (int i = 0; i < mCreatedMenus.size(); i++) { -                    Fragment f = mCreatedMenus.get(i); -                    if (newMenus == null || !newMenus.contains(f)) { -                        f.onDestroyOptionsMenu(); -                    } -                } -            } - -            mCreatedMenus = newMenus; - -            if (DEBUG) Log.d(TAG, "[onCreatePanelMenu] fragments create result: " + show); -            result |= show; - -            if (DEBUG) Log.d(TAG, "[onCreatePanelMenu] returning " + result); -            return result; -        } -        return false; -    } - -    @Override -    public boolean onPreparePanel(int featureId, View view, Menu menu) { -        if (DEBUG) Log.d(TAG, "[onPreparePanel] featureId: " + featureId + ", view: " + view + " menu: " + menu); - -        if (featureId == Window.FEATURE_OPTIONS_PANEL) { -            boolean result = onPrepareOptionsMenu(menu); -            if (DEBUG) Log.d(TAG, "[onPreparePanel] activity prepare result: " + result); - -            boolean show = false; -            if (mFragments.mActive != null) { -                for (int i = 0; i < mFragments.mAdded.size(); i++) { -                    Fragment f = mFragments.mAdded.get(i); -                    if (f != null && !f.mHidden && f.mHasMenu && f.mMenuVisible && f instanceof OnPrepareOptionsMenuListener) { -                        show = true; -                        ((OnPrepareOptionsMenuListener)f).onPrepareOptionsMenu(menu); -                    } -                } -            } - -            if (DEBUG) Log.d(TAG, "[onPreparePanel] fragments prepare result: " + show); -            result |= show; - -            result &= menu.hasVisibleItems(); -            if (DEBUG) Log.d(TAG, "[onPreparePanel] returning " + result); -            return result; -        } -        return false; -    } - -    @Override -    public boolean onMenuItemSelected(int featureId, MenuItem item) { -        if (DEBUG) Log.d(TAG, "[onMenuItemSelected] featureId: " + featureId + ", item: " + item); - -        if (featureId == Window.FEATURE_OPTIONS_PANEL) { -            if (onOptionsItemSelected(item)) { -                return true; -            } - -            if (mFragments.mActive != null) { -                for (int i = 0; i < mFragments.mAdded.size(); i++) { -                    Fragment f = mFragments.mAdded.get(i); -                    if (f != null && !f.mHidden && f.mHasMenu && f.mMenuVisible && f instanceof OnOptionsItemSelectedListener) { -                        if (((OnOptionsItemSelectedListener)f).onOptionsItemSelected(item)) { -                            return true; -                        } -                    } -                } -            } -        } -        return false; -    } - -    public abstract boolean onCreateOptionsMenu(Menu menu); - -    public abstract boolean onPrepareOptionsMenu(Menu menu); - -    public abstract boolean onOptionsItemSelected(MenuItem item); - -    public abstract MenuInflater getSupportMenuInflater(); -} diff --git a/APG/android-libs/ActionBarSherlock/src/com/actionbarsherlock/internal/view/menu/MenuItemMule.java b/APG/android-libs/ActionBarSherlock/src/com/actionbarsherlock/internal/view/menu/MenuItemMule.java deleted file mode 100644 index 5a8099832..000000000 --- a/APG/android-libs/ActionBarSherlock/src/com/actionbarsherlock/internal/view/menu/MenuItemMule.java +++ /dev/null @@ -1,234 +0,0 @@ -package com.actionbarsherlock.internal.view.menu; - -import android.content.Intent; -import android.graphics.drawable.Drawable; -import android.view.ActionProvider; -import android.view.MenuItem; -import android.view.SubMenu; -import android.view.View; -import android.view.ContextMenu.ContextMenuInfo; - -/** Used to carry an instance of our version of MenuItem through a native channel. */ -public class MenuItemMule implements MenuItem { -    private static final String ERROR = "Cannot interact with object designed for temporary " -            + "instance passing. Make sure you using both SherlockFragmentActivity and " -            + "SherlockFragment."; - - -    private final com.actionbarsherlock.view.MenuItem mItem; - -    public MenuItemMule(com.actionbarsherlock.view.MenuItem item) { -        mItem = item; -    } - -    public com.actionbarsherlock.view.MenuItem unwrap() { -        return mItem; -    } - - -    @Override -    public boolean collapseActionView() { -        throw new IllegalStateException(ERROR); -    } - -    @Override -    public boolean expandActionView() { -        throw new IllegalStateException(ERROR); -    } - -    @Override -    public ActionProvider getActionProvider() { -        throw new IllegalStateException(ERROR); -    } - -    @Override -    public View getActionView() { -        throw new IllegalStateException(ERROR); -    } - -    @Override -    public char getAlphabeticShortcut() { -        throw new IllegalStateException(ERROR); -    } - -    @Override -    public int getGroupId() { -        throw new IllegalStateException(ERROR); -    } - -    @Override -    public Drawable getIcon() { -        throw new IllegalStateException(ERROR); -    } - -    @Override -    public Intent getIntent() { -        throw new IllegalStateException(ERROR); -    } - -    @Override -    public int getItemId() { -        throw new IllegalStateException(ERROR); -    } - -    @Override -    public ContextMenuInfo getMenuInfo() { -        throw new IllegalStateException(ERROR); -    } - -    @Override -    public char getNumericShortcut() { -        throw new IllegalStateException(ERROR); -    } - -    @Override -    public int getOrder() { -        throw new IllegalStateException(ERROR); -    } - -    @Override -    public SubMenu getSubMenu() { -        throw new IllegalStateException(ERROR); -    } - -    @Override -    public CharSequence getTitle() { -        throw new IllegalStateException(ERROR); -    } - -    @Override -    public CharSequence getTitleCondensed() { -        return mItem.getTitleCondensed(); -        //throw new IllegalStateException(ERROR); -    } - -    @Override -    public boolean hasSubMenu() { -        throw new IllegalStateException(ERROR); -    } - -    @Override -    public boolean isActionViewExpanded() { -        throw new IllegalStateException(ERROR); -    } - -    @Override -    public boolean isCheckable() { -        throw new IllegalStateException(ERROR); -    } - -    @Override -    public boolean isChecked() { -        throw new IllegalStateException(ERROR); -    } - -    @Override -    public boolean isEnabled() { -        throw new IllegalStateException(ERROR); -    } - -    @Override -    public boolean isVisible() { -        throw new IllegalStateException(ERROR); -    } - -    @Override -    public MenuItem setActionProvider(ActionProvider arg0) { -        throw new IllegalStateException(ERROR); -    } - -    @Override -    public MenuItem setActionView(View arg0) { -        throw new IllegalStateException(ERROR); -    } - -    @Override -    public MenuItem setActionView(int arg0) { -        throw new IllegalStateException(ERROR); -    } - -    @Override -    public MenuItem setAlphabeticShortcut(char arg0) { -        throw new IllegalStateException(ERROR); -    } - -    @Override -    public MenuItem setCheckable(boolean arg0) { -        throw new IllegalStateException(ERROR); -    } - -    @Override -    public MenuItem setChecked(boolean arg0) { -        throw new IllegalStateException(ERROR); -    } - -    @Override -    public MenuItem setEnabled(boolean arg0) { -        throw new IllegalStateException(ERROR); -    } - -    @Override -    public MenuItem setIcon(Drawable arg0) { -        throw new IllegalStateException(ERROR); -    } - -    @Override -    public MenuItem setIcon(int arg0) { -        throw new IllegalStateException(ERROR); -    } - -    @Override -    public MenuItem setIntent(Intent arg0) { -        throw new IllegalStateException(ERROR); -    } - -    @Override -    public MenuItem setNumericShortcut(char arg0) { -        throw new IllegalStateException(ERROR); -    } - -    @Override -    public MenuItem setOnActionExpandListener(OnActionExpandListener arg0) { -        throw new IllegalStateException(ERROR); -    } - -    @Override -    public MenuItem setOnMenuItemClickListener(OnMenuItemClickListener arg0) { -        throw new IllegalStateException(ERROR); -    } - -    @Override -    public MenuItem setShortcut(char arg0, char arg1) { -        throw new IllegalStateException(ERROR); -    } - -    @Override -    public void setShowAsAction(int arg0) { -        throw new IllegalStateException(ERROR); -    } - -    @Override -    public MenuItem setShowAsActionFlags(int arg0) { -        throw new IllegalStateException(ERROR); -    } - -    @Override -    public MenuItem setTitle(CharSequence arg0) { -        throw new IllegalStateException(ERROR); -    } - -    @Override -    public MenuItem setTitle(int arg0) { -        throw new IllegalStateException(ERROR); -    } - -    @Override -    public MenuItem setTitleCondensed(CharSequence arg0) { -        throw new IllegalStateException(ERROR); -    } - -    @Override -    public MenuItem setVisible(boolean arg0) { -        throw new IllegalStateException(ERROR); -    } -} diff --git a/APG/android-libs/ActionBarSherlock/src/com/actionbarsherlock/internal/view/menu/MenuMule.java b/APG/android-libs/ActionBarSherlock/src/com/actionbarsherlock/internal/view/menu/MenuMule.java deleted file mode 100644 index b2385b904..000000000 --- a/APG/android-libs/ActionBarSherlock/src/com/actionbarsherlock/internal/view/menu/MenuMule.java +++ /dev/null @@ -1,151 +0,0 @@ -package com.actionbarsherlock.internal.view.menu; - -import android.content.ComponentName; -import android.content.Intent; -import android.view.KeyEvent; -import android.view.Menu; -import android.view.MenuItem; -import android.view.SubMenu; - -/** Used to carry an instance of our version of Menu through a native channel. */ -public class MenuMule implements Menu { -    private static final String ERROR = "Cannot interact with object designed for temporary " -            + "instance passing. Make sure you using both SherlockFragmentActivity and " -            + "SherlockFragment."; - - -    private final com.actionbarsherlock.view.Menu mMenu; -    public boolean mDispatchShow = false; - -    public MenuMule(com.actionbarsherlock.view.Menu menu) { -        mMenu = menu; -    } - -    public com.actionbarsherlock.view.Menu unwrap() { -        return mMenu; -    } - - -    @Override -    public MenuItem add(CharSequence arg0) { -        throw new IllegalStateException(ERROR); -    } - -    @Override -    public MenuItem add(int arg0) { -        throw new IllegalStateException(ERROR); -    } - -    @Override -    public MenuItem add(int arg0, int arg1, int arg2, CharSequence arg3) { -        throw new IllegalStateException(ERROR); -    } - -    @Override -    public MenuItem add(int arg0, int arg1, int arg2, int arg3) { -        throw new IllegalStateException(ERROR); -    } - -    @Override -    public int addIntentOptions(int arg0, int arg1, int arg2, -            ComponentName arg3, Intent[] arg4, Intent arg5, int arg6, -            MenuItem[] arg7) { -        throw new IllegalStateException(ERROR); -    } - -    @Override -    public SubMenu addSubMenu(CharSequence arg0) { -        throw new IllegalStateException(ERROR); -    } - -    @Override -    public SubMenu addSubMenu(int arg0) { -        throw new IllegalStateException(ERROR); -    } - -    @Override -    public SubMenu addSubMenu(int arg0, int arg1, int arg2, CharSequence arg3) { -        throw new IllegalStateException(ERROR); -    } - -    @Override -    public SubMenu addSubMenu(int arg0, int arg1, int arg2, int arg3) { -        throw new IllegalStateException(ERROR); -    } - -    @Override -    public void clear() { -        throw new IllegalStateException(ERROR); -    } - -    @Override -    public void close() { -        throw new IllegalStateException(ERROR); -    } - -    @Override -    public MenuItem findItem(int arg0) { -        throw new IllegalStateException(ERROR); -    } - -    @Override -    public MenuItem getItem(int arg0) { -        throw new IllegalStateException(ERROR); -    } - -    @Override -    public boolean hasVisibleItems() { -        return mMenu.hasVisibleItems(); -        //throw new IllegalStateException(ERROR); -    } - -    @Override -    public boolean isShortcutKey(int arg0, KeyEvent arg1) { -        throw new IllegalStateException(ERROR); -    } - -    @Override -    public boolean performIdentifierAction(int arg0, int arg1) { -        throw new IllegalStateException(ERROR); -    } - -    @Override -    public boolean performShortcut(int arg0, KeyEvent arg1, int arg2) { -        throw new IllegalStateException(ERROR); -    } - -    @Override -    public void removeGroup(int arg0) { -        throw new IllegalStateException(ERROR); -    } - -    @Override -    public void removeItem(int arg0) { -        throw new IllegalStateException(ERROR); -    } - -    @Override -    public void setGroupCheckable(int arg0, boolean arg1, boolean arg2) { -        throw new IllegalStateException(ERROR); -    } - -    @Override -    public void setGroupEnabled(int arg0, boolean arg1) { -        throw new IllegalStateException(ERROR); -    } - -    @Override -    public void setGroupVisible(int arg0, boolean arg1) { -        throw new IllegalStateException(ERROR); -    } - -    @Override -    public void setQwertyMode(boolean arg0) { -        throw new IllegalStateException(ERROR); -    } - -    @Override -    public int size() { -        throw new IllegalStateException(ERROR); -    } -} diff --git a/APG/res/values/strings.xml b/APG/res/values/strings.xml index 1360660c7..08e285299 100644 --- a/APG/res/values/strings.xml +++ b/APG/res/values/strings.xml @@ -22,8 +22,8 @@      <string name="title_mailInbox">Mail Inbox</string>      <string name="title_managePublicKeys">Manage Public Keys</string>      <string name="title_manageSecretKeys">Manage Secret Keys</string> -    <string name="title_selectRecipients">Select Recipients</string> -    <string name="title_selectSignature">Select Signature</string> +    <string name="title_selectRecipients">Select Public Key</string> +    <string name="title_selectSignature">Select Secret Key</string>      <string name="title_encrypt">Encrypt</string>      <string name="title_decrypt">Decrypt</string>      <string name="title_authentication">Passphrase</string> @@ -324,8 +324,8 @@      <!-- Dashboard --> -    <string name="dashboard_manage_keys">Manage Keys</string> -    <string name="dashboard_my_keys">My Keys</string> +    <string name="dashboard_manage_keys">Manage Public Keys</string> +    <string name="dashboard_my_keys">My Secret Keys</string>      <string name="dashboard_encrypt">Encrypt</string>      <string name="dashboard_decrypt">Decrypt</string>      <string name="dashboard_help">Help</string> diff --git a/APG/src/org/thialfihar/android/apg/service/ApgIntentService.java b/APG/src/org/thialfihar/android/apg/service/ApgIntentService.java index b50cb1789..e738b4193 100644 --- a/APG/src/org/thialfihar/android/apg/service/ApgIntentService.java +++ b/APG/src/org/thialfihar/android/apg/service/ApgIntentService.java @@ -98,37 +98,37 @@ public class ApgIntentService extends IntentService implements ProgressDialogUpd      public static final int TARGET_STREAM = 3;      // encrypt -    public static final String SECRET_KEY_ID = "secretKeyId"; -    public static final String USE_ASCII_AMOR = "useAsciiAmor"; -    public static final String ENCRYPTION_KEYS_IDS = "encryptionKeysIds"; -    public static final String COMPRESSION_ID = "compressionId"; -    public static final String GENERATE_SIGNATURE = "generateSignature"; -    public static final String SIGN_ONLY = "signOnly"; -    public static final String MESSAGE_BYTES = "messageBytes"; -    public static final String INPUT_FILE = "inputFile"; -    public static final String OUTPUT_FILE = "outputFile"; -    public static final String PROVIDER_URI = "providerUri"; +    public static final String ENCRYPT_SECRET_KEY_ID = "secretKeyId"; +    public static final String ENCRYPT_USE_ASCII_AMOR = "useAsciiAmor"; +    public static final String ENCRYPT_ENCRYPTION_KEYS_IDS = "encryptionKeysIds"; +    public static final String ENCRYPT_COMPRESSION_ID = "compressionId"; +    public static final String ENCRYPT_GENERATE_SIGNATURE = "generateSignature"; +    public static final String ENCRYPT_SIGN_ONLY = "signOnly"; +    public static final String ENCRYPT_MESSAGE_BYTES = "messageBytes"; +    public static final String ENCRYPT_INPUT_FILE = "inputFile"; +    public static final String ENCRYPT_OUTPUT_FILE = "outputFile"; +    public static final String ENCRYPT_PROVIDER_URI = "providerUri";      // decrypt/verify -    public static final String SIGNED_ONLY = "signedOnly"; -    public static final String RETURN_BYTES = "returnBinary"; -    public static final String CIPHERTEXT_BYTES = "ciphertextBytes"; -    public static final String ASSUME_SYMMETRIC = "assumeSymmetric"; -    public static final String LOOKUP_UNKNOWN_KEY = "lookupUnknownKey"; - -    // edit keys -    public static final String NEW_PASSPHRASE = "newPassphrase"; -    public static final String CURRENT_PASSPHRASE = "currentPassphrase"; -    public static final String USER_IDS = "userIds"; -    public static final String KEYS = "keys"; -    public static final String KEYS_USAGES = "keysUsages"; -    public static final String MASTER_KEY_ID = "masterKeyId"; +    public static final String DECRYPT_SIGNED_ONLY = "signedOnly"; +    public static final String DECRYPT_RETURN_BYTES = "returnBinary"; +    public static final String DECRYPT_CIPHERTEXT_BYTES = "ciphertextBytes"; +    public static final String DECRYPT_ASSUME_SYMMETRIC = "assumeSymmetric"; +    public static final String DECRYPT_LOOKUP_UNKNOWN_KEY = "lookupUnknownKey"; + +    // save keyring +    public static final String SAVE_KEYRING_NEW_PASSPHRASE = "newPassphrase"; +    public static final String SAVE_KEYRING_CURRENT_PASSPHRASE = "currentPassphrase"; +    public static final String SAVE_KEYRING_USER_IDS = "userIds"; +    public static final String SAVE_KEYRING_KEYS = "keys"; +    public static final String SAVE_KEYRING_KEYS_USAGES = "keysUsages"; +    public static final String SAVE_KEYRING_MASTER_KEY_ID = "masterKeyId";      // generate key -    public static final String ALGORITHM = "algorithm"; -    public static final String KEY_SIZE = "keySize"; -    public static final String SYMMETRIC_PASSPHRASE = "passphrase"; -    public static final String MASTER_KEY = "masterKey"; +    public static final String GENERATE_KEY_ALGORITHM = "algorithm"; +    public static final String GENERATE_KEY_KEY_SIZE = "keySize"; +    public static final String GENERATE_KEY_SYMMETRIC_PASSPHRASE = "passphrase"; +    public static final String GENERATE_KEY_MASTER_KEY = "masterKey";      // delete file securely      public static final String DELETE_FILE = "deleteFile"; @@ -238,14 +238,14 @@ public class ApgIntentService extends IntentService implements ProgressDialogUpd                  /* Input */                  int target = data.getInt(TARGET); -                long secretKeyId = data.getLong(SECRET_KEY_ID); -                String encryptionPassphrase = data.getString(SYMMETRIC_PASSPHRASE); +                long secretKeyId = data.getLong(ENCRYPT_SECRET_KEY_ID); +                String encryptionPassphrase = data.getString(GENERATE_KEY_SYMMETRIC_PASSPHRASE); -                boolean useAsciiArmor = data.getBoolean(USE_ASCII_AMOR); -                long encryptionKeyIds[] = data.getLongArray(ENCRYPTION_KEYS_IDS); -                int compressionId = data.getInt(COMPRESSION_ID); -                boolean generateSignature = data.getBoolean(GENERATE_SIGNATURE); -                boolean signOnly = data.getBoolean(SIGN_ONLY); +                boolean useAsciiArmor = data.getBoolean(ENCRYPT_USE_ASCII_AMOR); +                long encryptionKeyIds[] = data.getLongArray(ENCRYPT_ENCRYPTION_KEYS_IDS); +                int compressionId = data.getInt(ENCRYPT_COMPRESSION_ID); +                boolean generateSignature = data.getBoolean(ENCRYPT_GENERATE_SIGNATURE); +                boolean signOnly = data.getBoolean(ENCRYPT_SIGN_ONLY);                  InputStream inStream = null;                  long inLength = -1; @@ -254,7 +254,7 @@ public class ApgIntentService extends IntentService implements ProgressDialogUpd                  String streamFilename = null;                  switch (target) {                  case TARGET_BYTES: /* encrypting bytes directly */ -                    byte[] bytes = data.getByteArray(MESSAGE_BYTES); +                    byte[] bytes = data.getByteArray(ENCRYPT_MESSAGE_BYTES);                      inStream = new ByteArrayInputStream(bytes);                      inLength = bytes.length; @@ -264,8 +264,8 @@ public class ApgIntentService extends IntentService implements ProgressDialogUpd                      break;                  case TARGET_FILE: /* encrypting file */ -                    String inputFile = data.getString(INPUT_FILE); -                    String outputFile = data.getString(OUTPUT_FILE); +                    String inputFile = data.getString(ENCRYPT_INPUT_FILE); +                    String outputFile = data.getString(ENCRYPT_OUTPUT_FILE);                      // check if storage is ready                      if (!FileHelper.isStorageMounted(inputFile) @@ -284,7 +284,7 @@ public class ApgIntentService extends IntentService implements ProgressDialogUpd                      break;                  case TARGET_STREAM: /* Encrypting stream from content uri */ -                    Uri providerUri = (Uri) data.getParcelable(PROVIDER_URI); +                    Uri providerUri = (Uri) data.getParcelable(ENCRYPT_PROVIDER_URI);                      // InputStream                      InputStream in = getContentResolver().openInputStream(providerUri); @@ -390,13 +390,13 @@ public class ApgIntentService extends IntentService implements ProgressDialogUpd                  /* Input */                  int target = data.getInt(TARGET); -                long secretKeyId = data.getLong(SECRET_KEY_ID); -                byte[] bytes = data.getByteArray(CIPHERTEXT_BYTES); -                boolean signedOnly = data.getBoolean(SIGNED_ONLY); -                boolean returnBytes = data.getBoolean(RETURN_BYTES); -                boolean assumeSymmetricEncryption = data.getBoolean(ASSUME_SYMMETRIC); +                long secretKeyId = data.getLong(ENCRYPT_SECRET_KEY_ID); +                byte[] bytes = data.getByteArray(DECRYPT_CIPHERTEXT_BYTES); +                boolean signedOnly = data.getBoolean(DECRYPT_SIGNED_ONLY); +                boolean returnBytes = data.getBoolean(DECRYPT_RETURN_BYTES); +                boolean assumeSymmetricEncryption = data.getBoolean(DECRYPT_ASSUME_SYMMETRIC); -                boolean lookupUnknownKey = data.getBoolean(LOOKUP_UNKNOWN_KEY); +                boolean lookupUnknownKey = data.getBoolean(DECRYPT_LOOKUP_UNKNOWN_KEY);                  InputStream inStream = null;                  long inLength = -1; @@ -414,8 +414,8 @@ public class ApgIntentService extends IntentService implements ProgressDialogUpd                      break;                  case TARGET_FILE: /* decrypting file */ -                    String inputFile = data.getString(INPUT_FILE); -                    String outputFile = data.getString(OUTPUT_FILE); +                    String inputFile = data.getString(ENCRYPT_INPUT_FILE); +                    String outputFile = data.getString(ENCRYPT_OUTPUT_FILE);                      // check if storage is ready                      if (!FileHelper.isStorageMounted(inputFile) @@ -437,7 +437,7 @@ public class ApgIntentService extends IntentService implements ProgressDialogUpd                      break;                  case TARGET_STREAM: /* decrypting stream from content uri */ -                    Uri providerUri = (Uri) data.getParcelable(PROVIDER_URI); +                    Uri providerUri = (Uri) data.getParcelable(ENCRYPT_PROVIDER_URI);                      // InputStream                      InputStream in = getContentResolver().openInputStream(providerUri); @@ -521,16 +521,16 @@ public class ApgIntentService extends IntentService implements ProgressDialogUpd              try {                  /* Input */ -                String oldPassPhrase = data.getString(CURRENT_PASSPHRASE); -                String newPassPhrase = data.getString(NEW_PASSPHRASE); +                String oldPassPhrase = data.getString(SAVE_KEYRING_CURRENT_PASSPHRASE); +                String newPassPhrase = data.getString(SAVE_KEYRING_NEW_PASSPHRASE);                  if (newPassPhrase == null) {                      newPassPhrase = oldPassPhrase;                  } -                ArrayList<String> userIds = data.getStringArrayList(USER_IDS); +                ArrayList<String> userIds = data.getStringArrayList(SAVE_KEYRING_USER_IDS);                  ArrayList<PGPSecretKey> keys = PGPConversionHelper.BytesToPGPSecretKeyList(data -                        .getByteArray(KEYS)); -                ArrayList<Integer> keysUsages = data.getIntegerArrayList(KEYS_USAGES); -                long masterKeyId = data.getLong(MASTER_KEY_ID); +                        .getByteArray(SAVE_KEYRING_KEYS)); +                ArrayList<Integer> keysUsages = data.getIntegerArrayList(SAVE_KEYRING_KEYS_USAGES); +                long masterKeyId = data.getLong(SAVE_KEYRING_MASTER_KEY_ID);                  /* Operation */                  PGPMain.buildSecretKey(this, userIds, keys, keysUsages, masterKeyId, oldPassPhrase, @@ -549,13 +549,13 @@ public class ApgIntentService extends IntentService implements ProgressDialogUpd              try {                  /* Input */ -                int algorithm = data.getInt(ALGORITHM); -                String passphrase = data.getString(SYMMETRIC_PASSPHRASE); -                int keysize = data.getInt(KEY_SIZE); +                int algorithm = data.getInt(GENERATE_KEY_ALGORITHM); +                String passphrase = data.getString(GENERATE_KEY_SYMMETRIC_PASSPHRASE); +                int keysize = data.getInt(GENERATE_KEY_KEY_SIZE);                  PGPSecretKey masterKey = null; -                if (data.containsKey(MASTER_KEY)) { +                if (data.containsKey(GENERATE_KEY_MASTER_KEY)) {                      masterKey = PGPConversionHelper.BytesToPGPSecretKey(data -                            .getByteArray(MASTER_KEY)); +                            .getByteArray(GENERATE_KEY_MASTER_KEY));                  }                  /* Operation */ @@ -580,7 +580,7 @@ public class ApgIntentService extends IntentService implements ProgressDialogUpd              // generate one RSA 2048 key for signing and one subkey for encrypting!              try {                  /* Input */ -                String passphrase = data.getString(SYMMETRIC_PASSPHRASE); +                String passphrase = data.getString(GENERATE_KEY_SYMMETRIC_PASSPHRASE);                  /* Operation */                  PGPSecretKeyRing masterKeyRing = PGPMain.createKey(this, Id.choice.algorithm.rsa, @@ -739,7 +739,8 @@ public class ApgIntentService extends IntentService implements ProgressDialogUpd                  /* Operation */                  HkpKeyServer server = new HkpKeyServer(keyServer); -                PGPPublicKeyRing keyring = ProviderHelper.getPGPPublicKeyRingByRowId(this, keyRingRowId); +                PGPPublicKeyRing keyring = ProviderHelper.getPGPPublicKeyRingByRowId(this, +                        keyRingRowId);                  if (keyring != null) {                      boolean uploaded = PGPMain.uploadKeyRingToServer(server,                              (PGPPublicKeyRing) keyring); diff --git a/APG/src/org/thialfihar/android/apg/service/ApgService.java b/APG/src/org/thialfihar/android/apg/service/ApgService.java index 9e618b545..a94887ba4 100644 --- a/APG/src/org/thialfihar/android/apg/service/ApgService.java +++ b/APG/src/org/thialfihar/android/apg/service/ApgService.java @@ -76,27 +76,27 @@ public class ApgService extends Service {          }      } -    void encryptAndSignImplementation(byte[] inputBytes, String inputUri, boolean useAsciiArmor, -            int compression, long[] encryptionKeyIds, String encryptionPassphrase, -            int symmetricEncryptionAlgorithm, long signatureKeyId, int signatureHashAlgorithm, -            boolean signatureForceV3, String signaturePassphrase, IApgEncryptDecryptHandler handler) -            throws RemoteException { +    private void encryptAndSignImplementation(byte[] inputBytes, String inputUri, +            boolean useAsciiArmor, int compression, long[] encryptionKeyIds, +            String encryptionPassphrase, int symmetricEncryptionAlgorithm, long signatureKeyId, +            int signatureHashAlgorithm, boolean signatureForceV3, String signaturePassphrase, +            IApgEncryptSignHandler handler) throws RemoteException {          try {              // TODO use inputUri -             -//            InputStream inStream = null; -//          if (isBlob) { -//              ContentResolver cr = getContentResolver(); -//              try { -//                  inStream = cr.openInputStream(Uri.parse(pArgs.getString(arg.BLOB.name()))); -//              } catch (Exception e) { -//                  Log.e(TAG, "... exception on opening blob", e); -//              } -//          } else { -//              inStream = new ByteArrayInputStream(pArgs.getString(arg.MESSAGE.name()).getBytes()); -//          } -//          InputData in = new InputData(inStream, 0); // XXX Size second param? + +            // InputStream inStream = null; +            // if (isBlob) { +            // ContentResolver cr = getContentResolver(); +            // try { +            // inStream = cr.openInputStream(Uri.parse(pArgs.getString(arg.BLOB.name()))); +            // } catch (Exception e) { +            // Log.e(TAG, "... exception on opening blob", e); +            // } +            // } else { +            // inStream = new ByteArrayInputStream(pArgs.getString(arg.MESSAGE.name()).getBytes()); +            // } +            // InputData in = new InputData(inStream, 0); // XXX Size second param?              // build InputData and write into OutputStream              InputStream inputStream = new ByteArrayInputStream(inputBytes); @@ -110,20 +110,20 @@ public class ApgService extends Service {                      signatureKeyId, signatureHashAlgorithm, signatureForceV3, signaturePassphrase);              output.close(); -             -//            if (isBlob) { -//              ContentResolver cr = getContentResolver(); -//              try { -//                  OutputStream outStream = cr.openOutputStream(Uri.parse(pArgs.getString(arg.BLOB -//                          .name()))); -//                  writeToOutputStream(new ByteArrayInputStream(out.toString().getBytes()), outStream); -//                  outStream.close(); -//              } catch (Exception e) { -//                  Log.e(TAG, "... exception on writing blob", e); -//              } -//          } else { -//              pReturn.putString(ret.RESULT.name(), out.toString()); -//          } + +            // if (isBlob) { +            // ContentResolver cr = getContentResolver(); +            // try { +            // OutputStream outStream = cr.openOutputStream(Uri.parse(pArgs.getString(arg.BLOB +            // .name()))); +            // writeToOutputStream(new ByteArrayInputStream(out.toString().getBytes()), outStream); +            // outStream.close(); +            // } catch (Exception e) { +            // Log.e(TAG, "... exception on writing blob", e); +            // } +            // } else { +            // pReturn.putString(ret.RESULT.name(), out.toString()); +            // }              byte[] outputBytes = ((ByteArrayOutputStream) output).toByteArray(); @@ -140,8 +140,8 @@ public class ApgService extends Service {          }      } -    public void decryptAndVerifyImplementation(byte[] inputBytes, String inputUri, -            String passphrase, boolean assumeSymmetric, IApgEncryptDecryptHandler handler) +    private void decryptAndVerifyImplementation(byte[] inputBytes, String inputUri, +            String passphrase, boolean assumeSymmetric, IApgDecryptVerifyHandler handler)              throws RemoteException {          try { @@ -232,7 +232,7 @@ public class ApgService extends Service {          @Override          public void encryptAsymmetric(byte[] inputBytes, String inputUri, boolean useAsciiArmor,                  int compression, long[] encryptionKeyIds, int symmetricEncryptionAlgorithm, -                IApgEncryptDecryptHandler handler) throws RemoteException { +                IApgEncryptSignHandler handler) throws RemoteException {              encryptAndSignImplementation(inputBytes, inputUri, useAsciiArmor, compression,                      encryptionKeyIds, null, symmetricEncryptionAlgorithm, Id.key.none, 0, false, @@ -242,7 +242,7 @@ public class ApgService extends Service {          @Override          public void encryptSymmetric(byte[] inputBytes, String inputUri, boolean useAsciiArmor,                  int compression, String encryptionPassphrase, int symmetricEncryptionAlgorithm, -                IApgEncryptDecryptHandler handler) throws RemoteException { +                IApgEncryptSignHandler handler) throws RemoteException {              encryptAndSignImplementation(inputBytes, inputUri, useAsciiArmor, compression, null,                      encryptionPassphrase, symmetricEncryptionAlgorithm, Id.key.none, 0, false, @@ -253,8 +253,8 @@ public class ApgService extends Service {          public void encryptAndSignAsymmetric(byte[] inputBytes, String inputUri,                  boolean useAsciiArmor, int compression, long[] encryptionKeyIds,                  int symmetricEncryptionAlgorithm, long signatureKeyId, int signatureHashAlgorithm, -                boolean signatureForceV3, String signaturePassphrase, -                IApgEncryptDecryptHandler handler) throws RemoteException { +                boolean signatureForceV3, String signaturePassphrase, IApgEncryptSignHandler handler) +                throws RemoteException {              encryptAndSignImplementation(inputBytes, inputUri, useAsciiArmor, compression,                      encryptionKeyIds, null, symmetricEncryptionAlgorithm, signatureKeyId, @@ -265,8 +265,8 @@ public class ApgService extends Service {          public void encryptAndSignSymmetric(byte[] inputBytes, String inputUri,                  boolean useAsciiArmor, int compression, String encryptionPassphrase,                  int symmetricEncryptionAlgorithm, long signatureKeyId, int signatureHashAlgorithm, -                boolean signatureForceV3, String signaturePassphrase, -                IApgEncryptDecryptHandler handler) throws RemoteException { +                boolean signatureForceV3, String signaturePassphrase, IApgEncryptSignHandler handler) +                throws RemoteException {              encryptAndSignImplementation(inputBytes, inputUri, useAsciiArmor, compression, null,                      encryptionPassphrase, symmetricEncryptionAlgorithm, signatureKeyId, @@ -275,14 +275,14 @@ public class ApgService extends Service {          @Override          public void decryptAndVerifyAsymmetric(byte[] inputBytes, String inputUri, -                String keyPassphrase, IApgEncryptDecryptHandler handler) throws RemoteException { +                String keyPassphrase, IApgDecryptVerifyHandler handler) throws RemoteException {              decryptAndVerifyImplementation(inputBytes, inputUri, keyPassphrase, false, handler);          }          @Override          public void decryptAndVerifySymmetric(byte[] inputBytes, String inputUri, -                String encryptionPassphrase, IApgEncryptDecryptHandler handler) +                String encryptionPassphrase, IApgDecryptVerifyHandler handler)                  throws RemoteException {              decryptAndVerifyImplementation(inputBytes, inputUri, encryptionPassphrase, true, diff --git a/APG/src/org/thialfihar/android/apg/service/IApgEncryptDecryptHandler.aidl b/APG/src/org/thialfihar/android/apg/service/IApgDecryptVerifyHandler.aidl index 318e5f344..ad74340bf 100644 --- a/APG/src/org/thialfihar/android/apg/service/IApgEncryptDecryptHandler.aidl +++ b/APG/src/org/thialfihar/android/apg/service/IApgDecryptVerifyHandler.aidl @@ -16,17 +16,15 @@  package org.thialfihar.android.apg.service; -interface IApgEncryptDecryptHandler { -    /** -     * Either output or streamUri is given. One of them is null -     * -     */ -    oneway void onSuccessEncrypt(in byte[] outputBytes, in String outputUri); +interface IApgDecryptVerifyHandler {      oneway void onSuccessDecrypt(in byte[] outputBytes, in String outputUri, in boolean signature,              in long signatureKeyId, in String signatureUserId, in boolean signatureSuccess,              in boolean signatureUnknown); +    oneway void onSuccessVerify(in boolean signature, in long signatureKeyId, +            in String signatureUserId, in boolean signatureSuccess, in boolean signatureUnknown); +          oneway void onException(in int exceptionNumber, in String message);  }
\ No newline at end of file diff --git a/APG/src/org/thialfihar/android/apg/service/IApgSignVerifyHandler.aidl b/APG/src/org/thialfihar/android/apg/service/IApgEncryptSignHandler.aidl index cc854e540..ea3e2ae86 100644 --- a/APG/src/org/thialfihar/android/apg/service/IApgSignVerifyHandler.aidl +++ b/APG/src/org/thialfihar/android/apg/service/IApgEncryptSignHandler.aidl @@ -16,11 +16,14 @@  package org.thialfihar.android.apg.service; -interface IApgSignVerifyHandler { -    oneway void onSuccessSign(in byte[] outputBytes, in String outputUri); +interface IApgEncryptSignHandler { +    /** +     * Either output or streamUri is given. One of them is null +     * +     */ +    oneway void onSuccessEncrypt(in byte[] outputBytes, in String outputUri); -    oneway void onSuccessVerify(in boolean signature, in long signatureKeyId, -            in String signatureUserId, in boolean signatureSuccess, in boolean signatureUnknown); +    oneway void onSuccessSign(in byte[] outputBytes, in String outputUri);      oneway void onException(in int exceptionNumber, in String message); diff --git a/APG/src/org/thialfihar/android/apg/service/IApgService.aidl b/APG/src/org/thialfihar/android/apg/service/IApgService.aidl index 7753d1e3d..98c08c62b 100644 --- a/APG/src/org/thialfihar/android/apg/service/IApgService.aidl +++ b/APG/src/org/thialfihar/android/apg/service/IApgService.aidl @@ -16,8 +16,8 @@  package org.thialfihar.android.apg.service; -import org.thialfihar.android.apg.service.IApgEncryptDecryptHandler; -import org.thialfihar.android.apg.service.IApgSignVerifyHandler; +import org.thialfihar.android.apg.service.IApgEncryptSignHandler; +import org.thialfihar.android.apg.service.IApgDecryptVerifyHandler;  import org.thialfihar.android.apg.service.IApgHelperHandler;  /** @@ -50,7 +50,7 @@ interface IApgService {       */      oneway void encryptAsymmetric(in byte[] inputBytes, in String inputUri, in boolean useAsciiArmor,              in int compression, in long[] encryptionKeyIds, in int symmetricEncryptionAlgorithm, -            in IApgEncryptDecryptHandler handler); +            in IApgEncryptSignHandler handler);      /**       * Same as encryptAsymmetric but using a passphrase for symmetric encryption @@ -60,7 +60,7 @@ interface IApgService {       */      oneway void encryptSymmetric(in byte[] inputBytes, in String inputUri, in boolean useAsciiArmor,              in int compression, in String encryptionPassphrase, in int symmetricEncryptionAlgorithm, -            in IApgEncryptDecryptHandler handler); +            in IApgEncryptSignHandler handler);      /**       * Encrypt and sign @@ -97,7 +97,7 @@ interface IApgService {              in boolean useAsciiArmor, in int compression, in long[] encryptionKeyIds,              in int symmetricEncryptionAlgorithm, in long signatureKeyId, in int signatureHashAlgorithm,              in boolean signatureForceV3, in String signaturePassphrase, -            in IApgEncryptDecryptHandler handler); +            in IApgEncryptSignHandler handler);      /**       * Same as encryptAndSignAsymmetric but using a passphrase for symmetric encryption @@ -109,7 +109,7 @@ interface IApgService {              in boolean useAsciiArmor, in int compression, in String encryptionPassphrase,              in int symmetricEncryptionAlgorithm, in long signatureKeyId, in int signatureHashAlgorithm,              in boolean signatureForceV3, in String signaturePassphrase, -            in IApgEncryptDecryptHandler handler); +            in IApgEncryptSignHandler handler);      /**       * Decrypts and verifies given input bytes. If no signature is present this method @@ -125,7 +125,7 @@ interface IApgService {       *            Handler where to return results to after successful encryption       */      oneway void decryptAndVerifyAsymmetric(in byte[] inputBytes, in String inputUri, -            in String keyPassphrase, in IApgEncryptDecryptHandler handler); +            in String keyPassphrase, in IApgDecryptVerifyHandler handler);      /**       * Same as decryptAndVerifyAsymmetric but for symmetric decryption. @@ -134,7 +134,7 @@ interface IApgService {       *            Passphrase to decrypt       */      oneway void decryptAndVerifySymmetric(in byte[] inputBytes, in String inputUri, -            in String encryptionPassphrase, in IApgEncryptDecryptHandler handler); +            in String encryptionPassphrase, in IApgDecryptVerifyHandler handler);      /**       * diff --git a/APG/src/org/thialfihar/android/apg/ui/DecryptActivity.java b/APG/src/org/thialfihar/android/apg/ui/DecryptActivity.java index 21e75f7ea..3c4911420 100644 --- a/APG/src/org/thialfihar/android/apg/ui/DecryptActivity.java +++ b/APG/src/org/thialfihar/android/apg/ui/DecryptActivity.java @@ -68,16 +68,18 @@ import java.util.regex.Matcher;  public class DecryptActivity extends SherlockFragmentActivity { -    // possible intent actions for this activity +    /* Intents */ +    // without permission      public static final String ACTION_DECRYPT = Constants.INTENT_PREFIX + "DECRYPT"; +    public static final String ACTION_DECRYPT_FILE = Constants.INTENT_PREFIX + "DECRYPT_FILE"; + +    // with permission      public static final String ACTION_DECRYPT_AND_RETURN = Constants.INTENT_PREFIX              + "DECRYPT_AND_RETURN"; - -    public static final String ACTION_DECRYPT_FILE = Constants.INTENT_PREFIX + "DECRYPT_FILE";      public static final String ACTION_DECRYPT_STREAM_AND_RETURN = Constants.INTENT_PREFIX              + "DECRYPT_STREAM_AND_RETURN"; -    // possible extra keys +    /* EXTRA keys for input */      public static final String EXTRA_TEXT = "text";      public static final String EXTRA_DATA = "data";      public static final String EXTRA_REPLY_TO = "replyTo"; @@ -755,32 +757,32 @@ public class DecryptActivity extends SherlockFragmentActivity {          if (mContentUri != null) {              data.putInt(ApgIntentService.TARGET, ApgIntentService.TARGET_STREAM); -            data.putParcelable(ApgIntentService.PROVIDER_URI, mContentUri); +            data.putParcelable(ApgIntentService.ENCRYPT_PROVIDER_URI, mContentUri);          } else if (mDecryptTarget == Id.target.file) {              data.putInt(ApgIntentService.TARGET, ApgIntentService.TARGET_FILE);              Log.d(Constants.TAG, "mInputFilename=" + mInputFilename + ", mOutputFilename="                      + mOutputFilename); -            data.putString(ApgIntentService.INPUT_FILE, mInputFilename); -            data.putString(ApgIntentService.OUTPUT_FILE, mOutputFilename); +            data.putString(ApgIntentService.ENCRYPT_INPUT_FILE, mInputFilename); +            data.putString(ApgIntentService.ENCRYPT_OUTPUT_FILE, mOutputFilename);          } else {              data.putInt(ApgIntentService.TARGET, ApgIntentService.TARGET_BYTES);              if (mDataBytes != null) { -                data.putByteArray(ApgIntentService.CIPHERTEXT_BYTES, mDataBytes); +                data.putByteArray(ApgIntentService.DECRYPT_CIPHERTEXT_BYTES, mDataBytes);              } else {                  String message = mMessage.getText().toString(); -                data.putByteArray(ApgIntentService.CIPHERTEXT_BYTES, message.getBytes()); +                data.putByteArray(ApgIntentService.DECRYPT_CIPHERTEXT_BYTES, message.getBytes());              }          } -        data.putLong(ApgIntentService.SECRET_KEY_ID, mSecretKeyId); +        data.putLong(ApgIntentService.ENCRYPT_SECRET_KEY_ID, mSecretKeyId); -        data.putBoolean(ApgIntentService.SIGNED_ONLY, mSignedOnly); -        data.putBoolean(ApgIntentService.LOOKUP_UNKNOWN_KEY, mLookupUnknownKey); -        data.putBoolean(ApgIntentService.RETURN_BYTES, mReturnBinary); -        data.putBoolean(ApgIntentService.ASSUME_SYMMETRIC, mAssumeSymmetricEncryption); +        data.putBoolean(ApgIntentService.DECRYPT_SIGNED_ONLY, mSignedOnly); +        data.putBoolean(ApgIntentService.DECRYPT_LOOKUP_UNKNOWN_KEY, mLookupUnknownKey); +        data.putBoolean(ApgIntentService.DECRYPT_RETURN_BYTES, mReturnBinary); +        data.putBoolean(ApgIntentService.DECRYPT_ASSUME_SYMMETRIC, mAssumeSymmetricEncryption);          intent.putExtra(ApgIntentService.EXTRA_DATA, data); diff --git a/APG/src/org/thialfihar/android/apg/ui/EditKeyActivity.java b/APG/src/org/thialfihar/android/apg/ui/EditKeyActivity.java index 0e480a3ae..d4859cc86 100644 --- a/APG/src/org/thialfihar/android/apg/ui/EditKeyActivity.java +++ b/APG/src/org/thialfihar/android/apg/ui/EditKeyActivity.java @@ -25,6 +25,7 @@ import org.thialfihar.android.apg.helper.OtherHelper;  import org.thialfihar.android.apg.helper.PGPHelper;  import org.thialfihar.android.apg.helper.PGPMain;  import org.thialfihar.android.apg.helper.PGPConversionHelper; +import org.thialfihar.android.apg.helper.PGPMain.ApgGeneralException;  import org.thialfihar.android.apg.provider.ProviderHelper;  import org.thialfihar.android.apg.service.ApgIntentServiceHandler;  import org.thialfihar.android.apg.service.ApgIntentService; @@ -75,6 +76,10 @@ public class EditKeyActivity extends SherlockFragmentActivity {      public static final String EXTRA_GENERATE_DEFAULT_KEYS = "generateDefaultKeys";      public static final String EXTRA_KEY_ID = "keyId"; +    // results when saving key +    public static final String RESULT_EXTRA_MASTER_KEY_ID = "masterKeyId"; +    public static final String RESULT_EXTRA_USER_ID = "userId"; +      private ActionBar mActionBar;      private PGPSecretKeyRing mKeyRing = null; @@ -121,7 +126,7 @@ public class EditKeyActivity extends SherlockFragmentActivity {              return true;          case Id.menu.option.cancel: -            finish(); +            cancelClicked();              return true;          default: @@ -236,7 +241,8 @@ public class EditKeyActivity extends SherlockFragmentActivity {                      // fill values for this action                      Bundle data = new Bundle(); -                    data.putString(ApgIntentService.SYMMETRIC_PASSPHRASE, mCurrentPassPhrase); +                    data.putString(ApgIntentService.GENERATE_KEY_SYMMETRIC_PASSPHRASE, +                            mCurrentPassPhrase);                      serviceIntent.putExtra(ApgIntentService.EXTRA_DATA, data); @@ -424,14 +430,16 @@ public class EditKeyActivity extends SherlockFragmentActivity {              // fill values for this action              Bundle data = new Bundle(); -            data.putString(ApgIntentService.CURRENT_PASSPHRASE, mCurrentPassPhrase); -            data.putString(ApgIntentService.NEW_PASSPHRASE, mNewPassPhrase); -            data.putStringArrayList(ApgIntentService.USER_IDS, getUserIds(mUserIdsView)); +            data.putString(ApgIntentService.SAVE_KEYRING_CURRENT_PASSPHRASE, mCurrentPassPhrase); +            data.putString(ApgIntentService.SAVE_KEYRING_NEW_PASSPHRASE, mNewPassPhrase); +            data.putStringArrayList(ApgIntentService.SAVE_KEYRING_USER_IDS, +                    getUserIds(mUserIdsView));              ArrayList<PGPSecretKey> keys = getKeys(mKeysView); -            data.putByteArray(ApgIntentService.KEYS, +            data.putByteArray(ApgIntentService.SAVE_KEYRING_KEYS,                      PGPConversionHelper.PGPSecretKeyArrayListToBytes(keys)); -            data.putIntegerArrayList(ApgIntentService.KEYS_USAGES, getKeysUsages(mKeysView)); -            data.putLong(ApgIntentService.MASTER_KEY_ID, getMasterKeyId()); +            data.putIntegerArrayList(ApgIntentService.SAVE_KEYRING_KEYS_USAGES, +                    getKeysUsages(mKeysView)); +            data.putLong(ApgIntentService.SAVE_KEYRING_MASTER_KEY_ID, getMasterKeyId());              intent.putExtra(ApgIntentService.EXTRA_DATA, data); @@ -443,6 +451,16 @@ public class EditKeyActivity extends SherlockFragmentActivity {                      super.handleMessage(message);                      if (message.arg1 == ApgIntentServiceHandler.MESSAGE_OKAY) { +                        Intent data = new Intent(); +                        data.putExtra(RESULT_EXTRA_MASTER_KEY_ID, getMasterKeyId()); +                        ArrayList<String> userIds = null; +                        try { +                            userIds = getUserIds(mUserIdsView); +                        } catch (ApgGeneralException e) { +                            Log.e(Constants.TAG, "exception while getting user ids", e); +                        } +                        data.putExtra(RESULT_EXTRA_USER_ID, userIds.get(0)); +                        setResult(RESULT_OK, data);                          finish();                      }                  }; @@ -462,6 +480,11 @@ public class EditKeyActivity extends SherlockFragmentActivity {          }      } +    private void cancelClicked() { +        setResult(RESULT_CANCELED); +        finish(); +    } +      /**       * Returns user ids from the SectionView       *  diff --git a/APG/src/org/thialfihar/android/apg/ui/EncryptActivity.java b/APG/src/org/thialfihar/android/apg/ui/EncryptActivity.java index 6ff97a796..3014892a3 100644 --- a/APG/src/org/thialfihar/android/apg/ui/EncryptActivity.java +++ b/APG/src/org/thialfihar/android/apg/ui/EncryptActivity.java @@ -70,18 +70,20 @@ import java.util.Vector;  public class EncryptActivity extends SherlockFragmentActivity { -    // possible intent actions for this activity +    /* Intents */ +    // without permission      public static final String ACTION_ENCRYPT = Constants.INTENT_PREFIX + "ENCRYPT"; +    public static final String ACTION_ENCRYPT_FILE = Constants.INTENT_PREFIX + "ENCRYPT_FILE"; + +    // with permission      public static final String ACTION_ENCRYPT_AND_RETURN = Constants.INTENT_PREFIX              + "ENCRYPT_AND_RETURN";      public static final String ACTION_GENERATE_SIGNATURE_AND_RETURN = Constants.INTENT_PREFIX -            + "GENERATE_SIGNATURE"; - -    public static final String ACTION_ENCRYPT_FILE = Constants.INTENT_PREFIX + "ENCRYPT_FILE"; +            + "GENERATE_SIGNATURE_AND_RETURN";      public static final String ACTION_ENCRYPT_STREAM_AND_RETURN = Constants.INTENT_PREFIX              + "ENCRYPT_STREAM_AND_RETURN"; -    // possible extra keys +    /* EXTRA keys for input */      public static final String EXTRA_TEXT = "text";      public static final String EXTRA_DATA = "data";      public static final String EXTRA_ASCII_ARMOUR = "asciiArmour"; @@ -339,7 +341,7 @@ public class EncryptActivity extends SherlockFragmentActivity {          } else if (ACTION_ENCRYPT_STREAM_AND_RETURN.equals(action)) {              // TODO: Set mStreamAndReturnUri that is used later to encrypt a stream! -            mStreamAndReturnUri = null; +            mStreamAndReturnUri = uri;          }      } @@ -684,7 +686,7 @@ public class EncryptActivity extends SherlockFragmentActivity {                  passPhrase = null;              } -            data.putString(ApgIntentService.SYMMETRIC_PASSPHRASE, passPhrase); +            data.putString(ApgIntentService.GENERATE_KEY_SYMMETRIC_PASSPHRASE, passPhrase);          } else {              encryptionKeyIds = mEncryptionKeyIds;              signOnly = (mEncryptionKeyIds == null || mEncryptionKeyIds.length == 0); @@ -696,7 +698,7 @@ public class EncryptActivity extends SherlockFragmentActivity {          if (mStreamAndReturnUri != null) {              // mIntentDataUri is only defined when ACTION_ENCRYPT_STREAM_AND_RETURN is used              data.putInt(ApgIntentService.TARGET, ApgIntentService.TARGET_STREAM); -            data.putParcelable(ApgIntentService.PROVIDER_URI, mStreamAndReturnUri); +            data.putParcelable(ApgIntentService.ENCRYPT_PROVIDER_URI, mStreamAndReturnUri);          } else if (mEncryptTarget == Id.target.file) {              useAsciiArmor = mAsciiArmour.isChecked(); @@ -707,8 +709,8 @@ public class EncryptActivity extends SherlockFragmentActivity {              Log.d(Constants.TAG, "mInputFilename=" + mInputFilename + ", mOutputFilename="                      + mOutputFilename); -            data.putString(ApgIntentService.INPUT_FILE, mInputFilename); -            data.putString(ApgIntentService.OUTPUT_FILE, mOutputFilename); +            data.putString(ApgIntentService.ENCRYPT_INPUT_FILE, mInputFilename); +            data.putString(ApgIntentService.ENCRYPT_OUTPUT_FILE, mOutputFilename);          } else {              useAsciiArmor = true; @@ -717,13 +719,13 @@ public class EncryptActivity extends SherlockFragmentActivity {              data.putInt(ApgIntentService.TARGET, ApgIntentService.TARGET_BYTES);              if (mData != null) { -                data.putByteArray(ApgIntentService.MESSAGE_BYTES, mData); +                data.putByteArray(ApgIntentService.ENCRYPT_MESSAGE_BYTES, mData);              } else {                  String message = mMessage.getText().toString();                  if (signOnly && !mEncryptImmediately) {                      fixBadCharactersForGmail(message);                  } -                data.putByteArray(ApgIntentService.MESSAGE_BYTES, message.getBytes()); +                data.putByteArray(ApgIntentService.ENCRYPT_MESSAGE_BYTES, message.getBytes());              }          } @@ -731,12 +733,12 @@ public class EncryptActivity extends SherlockFragmentActivity {              useAsciiArmor = mAsciiArmorDemand;          } -        data.putLong(ApgIntentService.SECRET_KEY_ID, mSecretKeyId); -        data.putBoolean(ApgIntentService.USE_ASCII_AMOR, useAsciiArmor); -        data.putLongArray(ApgIntentService.ENCRYPTION_KEYS_IDS, encryptionKeyIds); -        data.putInt(ApgIntentService.COMPRESSION_ID, compressionId); -        data.putBoolean(ApgIntentService.GENERATE_SIGNATURE, mGenerateSignature); -        data.putBoolean(ApgIntentService.SIGN_ONLY, signOnly); +        data.putLong(ApgIntentService.ENCRYPT_SECRET_KEY_ID, mSecretKeyId); +        data.putBoolean(ApgIntentService.ENCRYPT_USE_ASCII_AMOR, useAsciiArmor); +        data.putLongArray(ApgIntentService.ENCRYPT_ENCRYPTION_KEYS_IDS, encryptionKeyIds); +        data.putInt(ApgIntentService.ENCRYPT_COMPRESSION_ID, compressionId); +        data.putBoolean(ApgIntentService.ENCRYPT_GENERATE_SIGNATURE, mGenerateSignature); +        data.putBoolean(ApgIntentService.ENCRYPT_SIGN_ONLY, signOnly);          intent.putExtra(ApgIntentService.EXTRA_DATA, data); diff --git a/APG/src/org/thialfihar/android/apg/ui/KeyListActivity.java b/APG/src/org/thialfihar/android/apg/ui/KeyListActivity.java index b36300769..2dc09d545 100644 --- a/APG/src/org/thialfihar/android/apg/ui/KeyListActivity.java +++ b/APG/src/org/thialfihar/android/apg/ui/KeyListActivity.java @@ -281,7 +281,7 @@ public class KeyListActivity extends SherlockFragmentActivity {              @Override              public void handleMessage(Message message) {                  if (message.what == DeleteKeyDialogFragment.MESSAGE_OKAY) { -                    // refreshList(); +                    // no further actions needed                  }              }          }; @@ -368,8 +368,6 @@ public class KeyListActivity extends SherlockFragmentActivity {                                  .newInstance(mImportFilename);                          deleteFileDialog.show(getSupportFragmentManager(), "deleteDialog");                      } -                    // refreshList(); -                  }              };          }; diff --git a/APG/src/org/thialfihar/android/apg/ui/widget/SectionView.java b/APG/src/org/thialfihar/android/apg/ui/widget/SectionView.java index 45fbbaba1..c7e8087cb 100644 --- a/APG/src/org/thialfihar/android/apg/ui/widget/SectionView.java +++ b/APG/src/org/thialfihar/android/apg/ui/widget/SectionView.java @@ -262,14 +262,14 @@ public class SectionView extends LinearLayout implements OnClickListener, Editor              passPhrase = PassphraseCacheService                      .getCachedPassphrase(mActivity, masterKey.getKeyID()); -            data.putByteArray(ApgIntentService.MASTER_KEY, +            data.putByteArray(ApgIntentService.GENERATE_KEY_MASTER_KEY,                      PGPConversionHelper.PGPSecretKeyToBytes(masterKey));          } else {              passPhrase = "";          } -        data.putString(ApgIntentService.SYMMETRIC_PASSPHRASE, passPhrase); -        data.putInt(ApgIntentService.ALGORITHM, mNewKeyAlgorithmChoice.getId()); -        data.putInt(ApgIntentService.KEY_SIZE, mNewKeySize); +        data.putString(ApgIntentService.GENERATE_KEY_SYMMETRIC_PASSPHRASE, passPhrase); +        data.putInt(ApgIntentService.GENERATE_KEY_ALGORITHM, mNewKeyAlgorithmChoice.getId()); +        data.putInt(ApgIntentService.GENERATE_KEY_KEY_SIZE, mNewKeySize);          intent.putExtra(ApgIntentService.EXTRA_DATA, data); | 
