aboutsummaryrefslogtreecommitdiffstats
path: root/OpenPGP-Keychain/src
diff options
context:
space:
mode:
authorAshley Hughes <spirit.returned@gmail.com>2014-02-08 21:04:38 +0000
committerAshley Hughes <spirit.returned@gmail.com>2014-02-08 21:04:38 +0000
commit75640934a080d21113f501ed604b85de3eab6b51 (patch)
tree62ab684b3f29630aa688f71ba9792c19a9302e2b /OpenPGP-Keychain/src
parentadc6a3ea64c00f35e881e856d2877c2ea88c7e51 (diff)
downloadopen-keychain-75640934a080d21113f501ed604b85de3eab6b51.tar.gz
open-keychain-75640934a080d21113f501ed604b85de3eab6b51.tar.bz2
open-keychain-75640934a080d21113f501ed604b85de3eab6b51.zip
saving fixes
Diffstat (limited to 'OpenPGP-Keychain/src')
-rw-r--r--OpenPGP-Keychain/src/main/java/org/sufficientlysecure/keychain/ui/EditKeyActivity.java26
-rw-r--r--OpenPGP-Keychain/src/main/java/org/sufficientlysecure/keychain/ui/widget/KeyEditor.java20
-rw-r--r--OpenPGP-Keychain/src/main/java/org/sufficientlysecure/keychain/ui/widget/SectionView.java10
3 files changed, 33 insertions, 23 deletions
diff --git a/OpenPGP-Keychain/src/main/java/org/sufficientlysecure/keychain/ui/EditKeyActivity.java b/OpenPGP-Keychain/src/main/java/org/sufficientlysecure/keychain/ui/EditKeyActivity.java
index d12a5479d..132141bc5 100644
--- a/OpenPGP-Keychain/src/main/java/org/sufficientlysecure/keychain/ui/EditKeyActivity.java
+++ b/OpenPGP-Keychain/src/main/java/org/sufficientlysecure/keychain/ui/EditKeyActivity.java
@@ -21,6 +21,7 @@ import java.util.ArrayList;
import java.util.GregorianCalendar;
import java.util.Vector;
+import org.spongycastle.bcpg.sig.KeyFlags;
import org.spongycastle.openpgp.PGPSecretKey;
import org.spongycastle.openpgp.PGPSecretKeyRing;
import org.sufficientlysecure.keychain.Constants;
@@ -224,15 +225,17 @@ public class EditKeyActivity extends ActionBarActivity implements EditorListener
.BytesToPGPSecretKey(data
.getByteArray(KeychainIntentService.RESULT_NEW_KEY2));
+ //We must set the key flags here as they are not set when we make the
+ //key pair. Because we are not generating hashed packets there...
// add master key
mKeys.add(masterKey);
- mKeysUsages.add(Id.choice.usage.sign_only); //TODO: get from key flags
+ mKeysUsages.add(KeyFlags.CERTIFY_OTHER);
// add sub key
mKeys.add(subKey);
- mKeysUsages.add(Id.choice.usage.encrypt_only); //TODO: get from key flags
+ mKeysUsages.add(KeyFlags.ENCRYPT_COMMS + KeyFlags.ENCRYPT_STORAGE);
- buildLayout();
+ buildLayout(true);
}
}
};
@@ -248,7 +251,7 @@ public class EditKeyActivity extends ActionBarActivity implements EditorListener
}
}
} else {
- buildLayout();
+ buildLayout(false);
}
}
@@ -390,7 +393,7 @@ public class EditKeyActivity extends ActionBarActivity implements EditorListener
mCurrentPassPhrase = "";
- buildLayout();
+ buildLayout(false);
mIsPassPhraseSet = PassphraseCacheService.hasPassphrase(this, masterKeyId);
if (!mIsPassPhraseSet) {
// check "no passphrase" checkbox and remove button
@@ -440,8 +443,9 @@ public class EditKeyActivity extends ActionBarActivity implements EditorListener
/**
* Build layout based on mUserId, mKeys and mKeysUsages Vectors. It creates Views for every user
* id and key.
+ * @param newKeys
*/
- private void buildLayout() {
+ private void buildLayout(boolean newKeys) {
setContentView(R.layout.edit_key_activity);
// find views
@@ -461,7 +465,7 @@ public class EditKeyActivity extends ActionBarActivity implements EditorListener
mKeysView = (SectionView) inflater.inflate(R.layout.edit_key_section, container, false);
mKeysView.setType(Id.type.key);
mKeysView.setCanEdit(masterCanSign);
- mKeysView.setKeys(mKeys, mKeysUsages);
+ mKeysView.setKeys(mKeys, mKeysUsages, newKeys);
mKeysView.setEditorListener(this);
container.addView(mKeysView);
@@ -607,8 +611,8 @@ public class EditKeyActivity extends ActionBarActivity implements EditorListener
// start service with intent
startService(intent);
} catch (PgpGeneralException e) {
- //Toast.makeText(this, getString(R.string.error_message, e.getMessage()),
- // Toast.LENGTH_SHORT).show();
+ Toast.makeText(this, getString(R.string.error_message, e.getMessage()),
+ Toast.LENGTH_SHORT).show();
}
}
@@ -665,10 +669,6 @@ public class EditKeyActivity extends ActionBarActivity implements EditorListener
throw new PgpGeneralException(e.getMessage());
}
- if (userId.equals("")) {
- continue;
- }
-
if (editor.isMainUserId()) {
userIds.add(0, userId);
gotMainUserId = true;
diff --git a/OpenPGP-Keychain/src/main/java/org/sufficientlysecure/keychain/ui/widget/KeyEditor.java b/OpenPGP-Keychain/src/main/java/org/sufficientlysecure/keychain/ui/widget/KeyEditor.java
index fa220313c..5ce5d89d7 100644
--- a/OpenPGP-Keychain/src/main/java/org/sufficientlysecure/keychain/ui/widget/KeyEditor.java
+++ b/OpenPGP-Keychain/src/main/java/org/sufficientlysecure/keychain/ui/widget/KeyEditor.java
@@ -24,6 +24,7 @@ import java.util.TimeZone;
import java.util.Vector;
import org.spongycastle.bcpg.sig.KeyFlags;
+import org.spongycastle.openpgp.PGPKeyFlags;
import org.spongycastle.openpgp.PGPPublicKey;
import org.spongycastle.openpgp.PGPSecretKey;
import org.sufficientlysecure.keychain.R;
@@ -216,17 +217,22 @@ public class KeyEditor extends LinearLayout implements Editor, OnClickListener {
}
int selectId = 0;
- if (key.isMasterKey())
- mChkCertify.setChecked(PgpKeyHelper.isCertificationKey(key));
- mChkSign.setChecked(PgpKeyHelper.isSigningKey(key));
- mChkEncrypt.setChecked(PgpKeyHelper.isEncryptionKey(key));
- mChkAuthenticate.setChecked(PgpKeyHelper.isAuthenticationKey(key));
mIsNewKey = isNewKey;
- if (isNewKey)
+ if (isNewKey) {
mUsage = usage;
- else {
+ mChkCertify.setChecked((usage &= KeyFlags.CERTIFY_OTHER) == KeyFlags.CERTIFY_OTHER);
+ mChkSign.setChecked((usage &= KeyFlags.SIGN_DATA) == KeyFlags.SIGN_DATA);
+ mChkEncrypt.setChecked(((usage &= KeyFlags.ENCRYPT_COMMS) == KeyFlags.ENCRYPT_COMMS) ||
+ ((usage &= KeyFlags.ENCRYPT_STORAGE) == KeyFlags.ENCRYPT_STORAGE));
+ mChkAuthenticate.setChecked((usage &= KeyFlags.AUTHENTICATION) == KeyFlags.AUTHENTICATION);
+ } else {
mUsage = PgpKeyHelper.getKeyUsage(key);
mOriginalUsage = mUsage;
+ if (key.isMasterKey())
+ mChkCertify.setChecked(PgpKeyHelper.isCertificationKey(key));
+ mChkSign.setChecked(PgpKeyHelper.isSigningKey(key));
+ mChkEncrypt.setChecked(PgpKeyHelper.isEncryptionKey(key));
+ mChkAuthenticate.setChecked(PgpKeyHelper.isAuthenticationKey(key));
}
GregorianCalendar cal = new GregorianCalendar(TimeZone.getTimeZone("UTC"));
diff --git a/OpenPGP-Keychain/src/main/java/org/sufficientlysecure/keychain/ui/widget/SectionView.java b/OpenPGP-Keychain/src/main/java/org/sufficientlysecure/keychain/ui/widget/SectionView.java
index 21ebff102..315a8faba 100644
--- a/OpenPGP-Keychain/src/main/java/org/sufficientlysecure/keychain/ui/widget/SectionView.java
+++ b/OpenPGP-Keychain/src/main/java/org/sufficientlysecure/keychain/ui/widget/SectionView.java
@@ -18,6 +18,7 @@ package org.sufficientlysecure.keychain.ui.widget;
import java.util.Vector;
+import org.spongycastle.openpgp.PGPKeyFlags;
import org.spongycastle.openpgp.PGPSecretKey;
import org.sufficientlysecure.keychain.Id;
import org.sufficientlysecure.keychain.R;
@@ -285,7 +286,7 @@ public class SectionView extends LinearLayout implements OnClickListener, Editor
this.updateEditorsVisible();
}
- public void setKeys(Vector<PGPSecretKey> list, Vector<Integer> usages) {
+ public void setKeys(Vector<PGPSecretKey> list, Vector<Integer> usages, boolean newKeys) {
if (mType != Id.type.key) {
return;
}
@@ -298,7 +299,7 @@ public class SectionView extends LinearLayout implements OnClickListener, Editor
false);
view.setEditorListener(this);
boolean isMasterKey = (mEditors.getChildCount() == 0);
- view.setValue(list.get(i), isMasterKey, usages.get(i), false);
+ view.setValue(list.get(i), isMasterKey, usages.get(i), newKeys);
view.setCanEdit(canEdit);
mEditors.addView(view);
}
@@ -370,7 +371,10 @@ public class SectionView extends LinearLayout implements OnClickListener, Editor
KeyEditor view = (KeyEditor) mInflater.inflate(R.layout.edit_key_key_item,
mEditors, false);
view.setEditorListener(SectionView.this);
- view.setValue(newKey, newKey.isMasterKey(), -1, true);
+ int usage = 0;
+ if (mEditors.getChildCount() == 0)
+ usage = PGPKeyFlags.CAN_CERTIFY;
+ view.setValue(newKey, newKey.isMasterKey(), usage, true);
mEditors.addView(view);
SectionView.this.updateEditorsVisible();
if (mEditorListener != null) {