diff options
| author | Thialfihar <thialfihar@gmail.com> | 2010-04-28 23:35:11 +0000 | 
|---|---|---|
| committer | Thialfihar <thialfihar@gmail.com> | 2010-04-28 23:35:11 +0000 | 
| commit | e83a5311aed0671c044287ca571cb88fe2bcd522 (patch) | |
| tree | 59dbbbfcfe79748783da8f6e39de6480d5657a22 /src | |
| parent | 86192e39d90a329b327e6b9255b08a17ae5ede0b (diff) | |
| download | open-keychain-e83a5311aed0671c044287ca571cb88fe2bcd522.tar.gz open-keychain-e83a5311aed0671c044287ca571cb88fe2bcd522.tar.bz2 open-keychain-e83a5311aed0671c044287ca571cb88fe2bcd522.zip | |
add preferences, use them where applicable
Diffstat (limited to 'src')
| -rw-r--r-- | src/org/thialfihar/android/apg/Apg.java | 4 | ||||
| -rw-r--r-- | src/org/thialfihar/android/apg/BaseActivity.java | 50 | ||||
| -rw-r--r-- | src/org/thialfihar/android/apg/Constants.java | 3 | ||||
| -rw-r--r-- | src/org/thialfihar/android/apg/EncryptFileActivity.java | 4 | ||||
| -rw-r--r-- | src/org/thialfihar/android/apg/EncryptMessageActivity.java | 6 | ||||
| -rw-r--r-- | src/org/thialfihar/android/apg/Id.java | 1 | ||||
| -rw-r--r-- | src/org/thialfihar/android/apg/MainActivity.java | 65 | ||||
| -rw-r--r-- | src/org/thialfihar/android/apg/PreferencesActivity.java | 124 | 
8 files changed, 207 insertions, 50 deletions
| diff --git a/src/org/thialfihar/android/apg/Apg.java b/src/org/thialfihar/android/apg/Apg.java index 16c743676..8596bdafc 100644 --- a/src/org/thialfihar/android/apg/Apg.java +++ b/src/org/thialfihar/android/apg/Apg.java @@ -1175,7 +1175,7 @@ public class Apg {                                 long encryptionKeyIds[], long signatureKeyId,
                                 String signaturePassPhrase,
                                 ProgressDialogUpdater progress,
 -                               int symmetricAlgorithm,
 +                               int symmetricAlgorithm, int hashAlgorithm,
                                 String passPhrase)
              throws IOException, GeneralException, PGPException, NoSuchProviderException,
              NoSuchAlgorithmException, SignatureException {
 @@ -1251,7 +1251,7 @@ public class Apg {              progress.setProgress("preparing signature...", 30, 100);
              signatureGenerator =
                      new PGPSignatureGenerator(signingKey.getPublicKey().getAlgorithm(),
 -                                              HashAlgorithmTags.SHA1,
 +                                              hashAlgorithm,
                                                new BouncyCastleProvider());
              signatureGenerator.initSign(PGPSignature.BINARY_DOCUMENT, signaturePrivateKey);
              String userId = getMainUserId(getMasterKey(signingKeyRing));
 diff --git a/src/org/thialfihar/android/apg/BaseActivity.java b/src/org/thialfihar/android/apg/BaseActivity.java index 3365270dd..01415734b 100644 --- a/src/org/thialfihar/android/apg/BaseActivity.java +++ b/src/org/thialfihar/android/apg/BaseActivity.java @@ -16,12 +16,16 @@  package org.thialfihar.android.apg;
 +import org.bouncycastle2.bcpg.HashAlgorithmTags;
 +import org.bouncycastle2.openpgp.PGPEncryptedData;
 +
  import android.app.Activity;
  import android.app.AlertDialog;
  import android.app.Dialog;
  import android.app.ProgressDialog;
  import android.content.DialogInterface;
  import android.content.Intent;
 +import android.content.SharedPreferences;
  import android.os.Bundle;
  import android.os.Handler;
  import android.os.Message;
 @@ -34,6 +38,7 @@ public class BaseActivity extends Activity      private Thread mRunningThread = null;
      private long mSecretKeyId = 0;
 +    protected static SharedPreferences mPreferences = null;
      private Handler mHandler = new Handler() {
          @Override
 @@ -46,6 +51,9 @@ public class BaseActivity extends Activity      protected void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
 +        if (mPreferences == null) {
 +            mPreferences = getPreferences(MODE_PRIVATE);
 +        }
          Apg.initialize(this);
      }
 @@ -245,4 +253,46 @@ public class BaseActivity extends Activity      public long getSecretKeyId() {
          return mSecretKeyId;
      }
 +
 +    public int getDefaultEncryptionAlgorithm() {
 +        return mPreferences.getInt(Constants.pref.default_encryption_algorithm,
 +                                   PGPEncryptedData.AES_256);
 +    }
 +
 +    public void setDefaultEncryptionAlgorithm(int value) {
 +        SharedPreferences.Editor editor = mPreferences.edit();
 +        editor.putInt(Constants.pref.default_encryption_algorithm, value);
 +        editor.commit();
 +    }
 +
 +    public int getDefaultHashAlgorithm() {
 +        return mPreferences.getInt(Constants.pref.default_hash_algorithm,
 +                                   HashAlgorithmTags.SHA256);
 +    }
 +
 +    public void setDefaultHashAlgorithm(int value) {
 +        SharedPreferences.Editor editor = mPreferences.edit();
 +        editor.putInt(Constants.pref.default_hash_algorithm, value);
 +        editor.commit();
 +    }
 +
 +    public boolean getDefaultAsciiArmour() {
 +        return mPreferences.getBoolean(Constants.pref.default_ascii_armour, false);
 +    }
 +
 +    public void setDefaultAsciiArmour(boolean value) {
 +        SharedPreferences.Editor editor = mPreferences.edit();
 +        editor.putBoolean(Constants.pref.default_ascii_armour, value);
 +        editor.commit();
 +    }
 +
 +    public boolean hasSeenChangeLog() {
 +        return mPreferences.getBoolean(Constants.pref.has_seen_change_log, false);
 +    }
 +
 +    public void setHasSeenChangeLog(boolean value) {
 +        SharedPreferences.Editor editor = mPreferences.edit();
 +        editor.putBoolean(Constants.pref.has_seen_change_log, value);
 +        editor.commit();
 +    }
  }
 diff --git a/src/org/thialfihar/android/apg/Constants.java b/src/org/thialfihar/android/apg/Constants.java index fdd71578e..7ddc13985 100644 --- a/src/org/thialfihar/android/apg/Constants.java +++ b/src/org/thialfihar/android/apg/Constants.java @@ -25,5 +25,8 @@ public final class Constants {      public static final class pref {
          public static final String has_seen_change_log = "seenChangeLogDialog" + Apg.VERSION;
 +        public static final String default_encryption_algorithm = "defaultEncryptionAlgorithm";
 +        public static final String default_hash_algorithm = "defaultHashAlgorithm";
 +        public static final String default_ascii_armour = "defaultAsciiArmour";
      }
  }
 diff --git a/src/org/thialfihar/android/apg/EncryptFileActivity.java b/src/org/thialfihar/android/apg/EncryptFileActivity.java index 9ee49f9b5..0c5ce20c0 100644 --- a/src/org/thialfihar/android/apg/EncryptFileActivity.java +++ b/src/org/thialfihar/android/apg/EncryptFileActivity.java @@ -81,6 +81,7 @@ public class EncryptFileActivity extends BaseActivity {          setContentView(R.layout.encrypt_file);
          mAsciiArmour = (CheckBox) findViewById(R.id.ascii_armour);
 +        mAsciiArmour.setChecked(getDefaultAsciiArmour());
          // asymmetric tab
          mSelectKeysButton = (Button) findViewById(R.id.btn_selectEncryptKeys);
 @@ -138,7 +139,7 @@ public class EncryptFileActivity extends BaseActivity {          adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
          mAlgorithm.setAdapter(adapter);
          for (int i = 0; i < choices.length; ++i) {
 -            if (choices[i].getId() == PGPEncryptedData.AES_256) {
 +            if (choices[i].getId() == getDefaultEncryptionAlgorithm()) {
                  mAlgorithm.setSelection(i);
                  break;
              }
 @@ -331,6 +332,7 @@ public class EncryptFileActivity extends BaseActivity {                                  mEncryptionKeyIds, getSecretKeyId(),
                                  Apg.getPassPhrase(), this,
                                  ((Choice) mAlgorithm.getSelectedItem()).getId(),
 +                                getDefaultHashAlgorithm(),
                                  passPhrase);
              out.close();
 diff --git a/src/org/thialfihar/android/apg/EncryptMessageActivity.java b/src/org/thialfihar/android/apg/EncryptMessageActivity.java index f03e6ea09..da49bf26b 100644 --- a/src/org/thialfihar/android/apg/EncryptMessageActivity.java +++ b/src/org/thialfihar/android/apg/EncryptMessageActivity.java @@ -25,7 +25,6 @@ import java.security.SignatureException;  import java.util.Vector;  import org.bouncycastle2.bcpg.HashAlgorithmTags; -import org.bouncycastle2.openpgp.PGPEncryptedData;  import org.bouncycastle2.openpgp.PGPException;  import org.bouncycastle2.openpgp.PGPPublicKey;  import org.bouncycastle2.openpgp.PGPPublicKeyRing; @@ -202,10 +201,11 @@ public class EncryptMessageActivity extends BaseActivity {              if (encryptIt) {                  Apg.encrypt(in, out, true, mEncryptionKeyIds, getSecretKeyId(),                              Apg.getPassPhrase(), this, -                            PGPEncryptedData.AES_256, null); +                            getDefaultEncryptionAlgorithm(), getDefaultHashAlgorithm(), +                            null);              } else {                  Apg.signText(in, out, getSecretKeyId(), -                             Apg.getPassPhrase(), HashAlgorithmTags.SHA256, this); +                             Apg.getPassPhrase(), getDefaultHashAlgorithm(), this);              }              data.putString("message", new String(out.toByteArray()));          } catch (IOException e) { diff --git a/src/org/thialfihar/android/apg/Id.java b/src/org/thialfihar/android/apg/Id.java index c96b4ccb7..b0c8368e6 100644 --- a/src/org/thialfihar/android/apg/Id.java +++ b/src/org/thialfihar/android/apg/Id.java @@ -30,6 +30,7 @@ public final class Id {              public static final int manage_secret_keys = 0x21070005;
              public static final int import_keys = 0x21070006;
              public static final int export_keys = 0x21070007;
 +            public static final int preferences = 0x21070008;
          }
      }
 diff --git a/src/org/thialfihar/android/apg/MainActivity.java b/src/org/thialfihar/android/apg/MainActivity.java index 30551c4ad..baa875ee2 100644 --- a/src/org/thialfihar/android/apg/MainActivity.java +++ b/src/org/thialfihar/android/apg/MainActivity.java @@ -67,28 +67,28 @@ public class MainActivity extends BaseActivity {          encryptMessageButton.setOnClickListener(new OnClickListener() {              @Override              public void onClick(View v) { -                startEncryptMessageActivity(); +                startActivity(new Intent(MainActivity.this, EncryptMessageActivity.class));              }          });          decryptMessageButton.setOnClickListener(new OnClickListener() {              @Override              public void onClick(View v) { -                startDecryptMessageActivity(); +                startActivity(new Intent(MainActivity.this, DecryptMessageActivity.class));              }          });          encryptFileButton.setOnClickListener(new OnClickListener() {              @Override              public void onClick(View v) { -                startEncryptFileActivity(); +                startActivity(new Intent(MainActivity.this, EncryptFileActivity.class));              }          });          decryptFileButton.setOnClickListener(new OnClickListener() {              @Override              public void onClick(View v) { -                startDecryptFileActivity(); +                startActivity(new Intent(MainActivity.this, DecryptFileActivity.class));              }          }); @@ -105,14 +105,14 @@ public class MainActivity extends BaseActivity {                      cursor.moveToFirst();                      int nameIndex = cursor.getColumnIndex(Accounts.NAME);                      String accountName = cursor.getString(nameIndex); -                    startMailListActivity(accountName); +                    startActivity(new Intent(MainActivity.this, MailListActivity.class) +                                        .putExtra("account", accountName));                  }              }          });          registerForContextMenu(mAccounts); -        SharedPreferences prefs = getPreferences(MODE_PRIVATE); -        if (!prefs.getBoolean(Constants.pref.has_seen_change_log, false)) { +        if (!hasSeenChangeLog()) {              showDialog(Id.dialog.change_log);          }      } @@ -248,10 +248,7 @@ public class MainActivity extends BaseActivity {                                          new DialogInterface.OnClickListener() {                                              public void onClick(DialogInterface dialog, int id) {                                                  MainActivity.this.removeDialog(Id.dialog.change_log); -                                                SharedPreferences prefs = getPreferences(MODE_PRIVATE); -                                                SharedPreferences.Editor editor = prefs.edit(); -                                                editor.putBoolean(Constants.pref.has_seen_change_log, true); -                                                editor.commit(); +                                                setHasSeenChangeLog(true);                                              }                  }); @@ -268,13 +265,15 @@ public class MainActivity extends BaseActivity {      @Override      public boolean onCreateOptionsMenu(Menu menu) { -        menu.add(0, Id.menu.option.manage_public_keys, 0, R.string.menu_managePublicKeys) +        menu.add(0, Id.menu.option.preferences, 0, R.string.menu_preferences) +        .setIcon(android.R.drawable.ic_menu_preferences); +        menu.add(1, Id.menu.option.manage_public_keys, 1, R.string.menu_managePublicKeys)                  .setIcon(android.R.drawable.ic_menu_manage); -        menu.add(0, Id.menu.option.manage_secret_keys, 1, R.string.menu_manageSecretKeys) +        menu.add(1, Id.menu.option.manage_secret_keys, 2, R.string.menu_manageSecretKeys)                  .setIcon(android.R.drawable.ic_menu_manage); -        menu.add(1, Id.menu.option.create, 2, R.string.menu_addAccount) +        menu.add(2, Id.menu.option.create, 3, R.string.menu_addAccount)                  .setIcon(android.R.drawable.ic_menu_add); -        menu.add(1, Id.menu.option.about, 3, R.string.menu_about) +        menu.add(2, Id.menu.option.about, 4, R.string.menu_about)                  .setIcon(android.R.drawable.ic_menu_info_details);          return true;      } @@ -293,12 +292,17 @@ public class MainActivity extends BaseActivity {              }              case Id.menu.option.manage_public_keys: { -                startPublicKeyManager(); +                startActivity(new Intent(this, PublicKeyListActivity.class));                  return true;              }              case Id.menu.option.manage_secret_keys: { -                startSecretKeyManager(); +                startActivity(new Intent(this, SecretKeyListActivity.class)); +                return true; +            } + +            case Id.menu.option.preferences: { +                startActivity(new Intent(this, PreferencesActivity.class));                  return true;              } @@ -338,33 +342,6 @@ public class MainActivity extends BaseActivity {          }      } -    public void startPublicKeyManager() { -        startActivity(new Intent(this, PublicKeyListActivity.class)); -    } - -    public void startSecretKeyManager() { -        startActivity(new Intent(this, SecretKeyListActivity.class)); -    } - -    public void startEncryptMessageActivity() { -        startActivity(new Intent(this, EncryptMessageActivity.class)); -    } - -    public void startDecryptMessageActivity() { -        startActivity(new Intent(this, DecryptMessageActivity.class)); -    } - -    public void startEncryptFileActivity() { -        startActivity(new Intent(this, EncryptFileActivity.class)); -    } - -    public void startDecryptFileActivity() { -        startActivity(new Intent(this, DecryptFileActivity.class)); -    } - -    public void startMailListActivity(String account) { -        startActivity(new Intent(this, MailListActivity.class).putExtra("account", account)); -    }      private static class AccountListAdapter extends CursorAdapter {          private LayoutInflater minflater; diff --git a/src/org/thialfihar/android/apg/PreferencesActivity.java b/src/org/thialfihar/android/apg/PreferencesActivity.java new file mode 100644 index 000000000..12deb11fe --- /dev/null +++ b/src/org/thialfihar/android/apg/PreferencesActivity.java @@ -0,0 +1,124 @@ +/*
 + * Copyright (C) 2010 Thialfihar <thi@thialfihar.org>
 + *
 + * 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.
 + */
 +
 +package org.thialfihar.android.apg;
 +
 +import org.bouncycastle2.bcpg.HashAlgorithmTags;
 +import org.bouncycastle2.openpgp.PGPEncryptedData;
 +import org.thialfihar.android.apg.utils.Choice;
 +
 +import android.os.Bundle;
 +import android.util.Log;
 +import android.view.View;
 +import android.view.View.OnClickListener;
 +import android.widget.AdapterView;
 +import android.widget.ArrayAdapter;
 +import android.widget.CheckBox;
 +import android.widget.Spinner;
 +import android.widget.AdapterView.OnItemSelectedListener;
 +
 +public class PreferencesActivity extends BaseActivity {
 +    private Spinner mEncryptionAlgorithm = null;
 +    private Spinner mHashAlgorithm = null;
 +    private CheckBox mAsciiArmour = null;
 +
 +    @Override
 +    protected void onCreate(Bundle savedInstanceState) {
 +        super.onCreate(savedInstanceState);
 +        setContentView(R.layout.preferences);
 +
 +        mEncryptionAlgorithm = (Spinner) findViewById(R.id.encryption_algorithm);
 +        mHashAlgorithm = (Spinner) findViewById(R.id.hash_algorithm);
 +        mAsciiArmour = (CheckBox) findViewById(R.id.ascii_armour);
 +
 +        mAsciiArmour.setChecked(getDefaultAsciiArmour());
 +
 +        Choice choices[] = {
 +                new Choice(PGPEncryptedData.AES_128, "AES 128"),
 +                new Choice(PGPEncryptedData.AES_192, "AES 192"),
 +                new Choice(PGPEncryptedData.AES_256, "AES 256"),
 +                new Choice(PGPEncryptedData.BLOWFISH, "Blowfish"),
 +                new Choice(PGPEncryptedData.TWOFISH, "Twofish"),
 +                new Choice(PGPEncryptedData.CAST5, "CAST5"),
 +                new Choice(PGPEncryptedData.DES, "DES"),
 +                new Choice(PGPEncryptedData.TRIPLE_DES, "Triple DES"),
 +                new Choice(PGPEncryptedData.IDEA, "IDEA"),
 +        };
 +        ArrayAdapter<Choice> adapter =
 +                new ArrayAdapter<Choice>(this, android.R.layout.simple_spinner_item, choices);
 +        adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
 +        mEncryptionAlgorithm.setAdapter(adapter);
 +
 +        for (int i = 0; i < choices.length; ++i) {
 +            if (choices[i].getId() == getDefaultEncryptionAlgorithm()) {
 +                mEncryptionAlgorithm.setSelection(i);
 +                break;
 +            }
 +        }
 +
 +        mEncryptionAlgorithm.setOnItemSelectedListener(new OnItemSelectedListener() {
 +            @Override
 +            public void onItemSelected(AdapterView<?> adapter, View view, int index, long id) {
 +                setDefaultEncryptionAlgorithm(((Choice) mEncryptionAlgorithm.getSelectedItem()).getId());
 +            }
 +
 +            @Override
 +            public void onNothingSelected(AdapterView<?> adapter) {
 +                // nothing to do
 +            }
 +        });
 +
 +        Choice choices2[] = {
 +                new Choice(HashAlgorithmTags.MD5, "MD5"),
 +                new Choice(HashAlgorithmTags.RIPEMD160, "RIPEMD160"),
 +                new Choice(HashAlgorithmTags.SHA1, "SHA1"),
 +                new Choice(HashAlgorithmTags.SHA224, "SHA224"),
 +                new Choice(HashAlgorithmTags.SHA256, "SHA256"),
 +                new Choice(HashAlgorithmTags.SHA384, "SHA384"),
 +                new Choice(HashAlgorithmTags.SHA512, "SHA512"),
 +        };
 +        adapter = new ArrayAdapter<Choice>(this, android.R.layout.simple_spinner_item, choices2);
 +        adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
 +        mHashAlgorithm.setAdapter(adapter);
 +
 +        for (int i = 0; i < choices2.length; ++i) {
 +            if (choices2[i].getId() == getDefaultHashAlgorithm()) {
 +                mHashAlgorithm.setSelection(i);
 +                break;
 +            }
 +        }
 +
 +        mHashAlgorithm.setOnItemSelectedListener(new OnItemSelectedListener() {
 +            @Override
 +            public void onItemSelected(AdapterView<?> adapter, View view, int index, long id) {
 +                setDefaultHashAlgorithm(((Choice) mHashAlgorithm.getSelectedItem()).getId());
 +            }
 +
 +            @Override
 +            public void onNothingSelected(AdapterView<?> adapter) {
 +                // nothing to do
 +            }
 +        });
 +
 +        mAsciiArmour.setOnClickListener(new OnClickListener() {
 +            @Override
 +            public void onClick(View v) {
 +                setDefaultAsciiArmour(mAsciiArmour.isChecked());
 +            }
 +        });
 +    }
 +}
 +
 | 
