aboutsummaryrefslogtreecommitdiffstats
path: root/src/org/thialfihar/android
diff options
context:
space:
mode:
authorThialfihar <thialfihar@gmail.com>2010-05-16 13:35:16 +0000
committerThialfihar <thialfihar@gmail.com>2010-05-16 13:35:16 +0000
commitc7f00417517f947e642b750b031e4af793b8cd57 (patch)
treee2a401c0e2b571ac33d9eb2a87e3714ec282e16c /src/org/thialfihar/android
parent9855f4d1441ac1e5dc7df19ebd0272e5f94e2aa2 (diff)
downloadopen-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/org/thialfihar/android')
-rw-r--r--src/org/thialfihar/android/apg/Apg.java9
-rw-r--r--src/org/thialfihar/android/apg/EditKeyActivity.java14
-rw-r--r--src/org/thialfihar/android/apg/SecretKeyListActivity.java18
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);
}