diff options
author | Thialfihar <thialfihar@gmail.com> | 2010-05-16 13:35:16 +0000 |
---|---|---|
committer | Thialfihar <thialfihar@gmail.com> | 2010-05-16 13:35:16 +0000 |
commit | c7f00417517f947e642b750b031e4af793b8cd57 (patch) | |
tree | e2a401c0e2b571ac33d9eb2a87e3714ec282e16c /src | |
parent | 9855f4d1441ac1e5dc7df19ebd0272e5f94e2aa2 (diff) | |
download | open-keychain-c7f00417517f947e642b750b031e4af793b8cd57.tar.gz open-keychain-c7f00417517f947e642b750b031e4af793b8cd57.tar.bz2 open-keychain-c7f00417517f947e642b750b031e4af793b8cd57.zip |
give key editing its own pass phrase mechanism, as the new cache won't work there
Diffstat (limited to 'src')
-rw-r--r-- | src/org/thialfihar/android/apg/Apg.java | 9 | ||||
-rw-r--r-- | src/org/thialfihar/android/apg/EditKeyActivity.java | 14 | ||||
-rw-r--r-- | src/org/thialfihar/android/apg/SecretKeyListActivity.java | 18 |
3 files changed, 33 insertions, 8 deletions
diff --git a/src/org/thialfihar/android/apg/Apg.java b/src/org/thialfihar/android/apg/Apg.java index 5071e3d01..0697618d4 100644 --- a/src/org/thialfihar/android/apg/Apg.java +++ b/src/org/thialfihar/android/apg/Apg.java @@ -158,6 +158,7 @@ public class Apg { private static HashMap<Long, CachedPassPhrase> mPassPhraseCache =
new HashMap<Long, CachedPassPhrase>();
+ private static String mEditPassPhrase = null;
public static class GeneralException extends Exception {
static final long serialVersionUID = 0xf812773342L;
@@ -273,6 +274,14 @@ public class Apg { }
}
+ public static void setEditPassPhrase(String passPhrase) {
+ mEditPassPhrase = passPhrase;
+ }
+
+ public static String getEditPassPhrase() {
+ return mEditPassPhrase;
+ }
+
public static void setCachedPassPhrase(long keyId, String passPhrase) {
mPassPhraseCache.put(keyId, new CachedPassPhrase(new Date().getTime(), passPhrase));
}
diff --git a/src/org/thialfihar/android/apg/EditKeyActivity.java b/src/org/thialfihar/android/apg/EditKeyActivity.java index a1c74951e..b1e37e8a1 100644 --- a/src/org/thialfihar/android/apg/EditKeyActivity.java +++ b/src/org/thialfihar/android/apg/EditKeyActivity.java @@ -55,6 +55,7 @@ public class EditKeyActivity extends BaseActivity implements OnClickListener { private Button mSaveButton; private Button mDiscardButton; + private String mCurrentPassPhrase = null; private String mNewPassPhrase = null; @Override @@ -106,6 +107,11 @@ public class EditKeyActivity extends BaseActivity implements OnClickListener { mKeys.setKeys(keys); container.addView(mKeys); + mCurrentPassPhrase = Apg.getEditPassPhrase(); + if (mCurrentPassPhrase == null) { + mCurrentPassPhrase = ""; + } + Toast.makeText(this, "Warning: Key editing is still kind of beta.", Toast.LENGTH_LONG).show(); } @@ -117,11 +123,7 @@ public class EditKeyActivity extends BaseActivity implements OnClickListener { } public boolean havePassPhrase() { - long keyId = getMasterKeyId(); - if (keyId == 0) { - return false; - } - return (Apg.getCachedPassPhrase(keyId) != null && !Apg.getCachedPassPhrase(keyId).equals("")) || + return (!mCurrentPassPhrase.equals("")) || (mNewPassPhrase != null && !mNewPassPhrase.equals("")); } @@ -235,7 +237,7 @@ public class EditKeyActivity extends BaseActivity implements OnClickListener { Message msg = new Message(); try { - String oldPassPhrase = Apg.getCachedPassPhrase(getMasterKeyId()); + String oldPassPhrase = mCurrentPassPhrase; String newPassPhrase = mNewPassPhrase; if (newPassPhrase == null) { newPassPhrase = oldPassPhrase; diff --git a/src/org/thialfihar/android/apg/SecretKeyListActivity.java b/src/org/thialfihar/android/apg/SecretKeyListActivity.java index 6272db9ce..a69fc5b9c 100644 --- a/src/org/thialfihar/android/apg/SecretKeyListActivity.java +++ b/src/org/thialfihar/android/apg/SecretKeyListActivity.java @@ -138,7 +138,7 @@ public class SecretKeyListActivity extends BaseActivity implements OnChildClickL switch (menuItem.getItemId()) {
case Id.menu.edit: {
mSelectedItem = groupPosition;
- showDialog(Id.dialog.pass_phrase);
+ checkPassPhraseAndEdit();
return true;
}
@@ -164,7 +164,7 @@ public class SecretKeyListActivity extends BaseActivity implements OnChildClickL public boolean onChildClick(ExpandableListView parent, View v, int groupPosition,
int childPosition, long id) {
mSelectedItem = groupPosition;
- showDialog(Id.dialog.pass_phrase);
+ checkPassPhraseAndEdit();
return true;
}
@@ -269,13 +269,27 @@ public class SecretKeyListActivity extends BaseActivity implements OnChildClickL }
}
+ public void checkPassPhraseAndEdit() {
+ PGPSecretKeyRing keyRing = Apg.getSecretKeyRings().get(mSelectedItem);
+ long keyId = keyRing.getSecretKey().getKeyID();
+ String passPhrase = Apg.getCachedPassPhrase(keyId);
+ if (passPhrase == null) {
+ showDialog(Id.dialog.pass_phrase);
+ } else {
+ Apg.setEditPassPhrase(passPhrase);
+ editKey();
+ }
+ }
+
@Override
public void passPhraseCallback(long keyId, String passPhrase) {
super.passPhraseCallback(keyId, passPhrase);
+ Apg.setEditPassPhrase(passPhrase);
editKey();
}
private void createKey() {
+ Apg.setEditPassPhrase("");
Intent intent = new Intent(this, EditKeyActivity.class);
startActivityForResult(intent, Id.message.create_key);
}
|