aboutsummaryrefslogtreecommitdiffstats
path: root/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/PassphraseChangeParcel.java
diff options
context:
space:
mode:
authorAlex Fong <alexfongg@gmail.com>2016-03-15 10:24:28 +0800
committerAlex Fong <alexfongg@gmail.com>2016-05-04 22:36:23 +0800
commit525788359c6821a958ee7306ef3aa34d7b211a6f (patch)
treedf76551c2d2b187db62bba313eda1886fa1e7bf1 /OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/PassphraseChangeParcel.java
parent6b7a0597af7aa42b375ca34d8a47515fa8adcc9f (diff)
downloadopen-keychain-525788359c6821a958ee7306ef3aa34d7b211a6f.tar.gz
open-keychain-525788359c6821a958ee7306ef3aa34d7b211a6f.tar.bz2
open-keychain-525788359c6821a958ee7306ef3aa34d7b211a6f.zip
(WIP) Change password when key is stripped #1692
Approach: Find the first unstripped secret key and use it for passphrase verification All unstripped keys will have their passphrase changed to new passphrase, if possible. Current Progress: Changing the passphrase of keys works fine. Refactoring to combine "modifySecretKeyring" and newly added method, "modifyKeyRingPassword" may be possible if given the go-ahead.
Diffstat (limited to 'OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/PassphraseChangeParcel.java')
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/PassphraseChangeParcel.java64
1 files changed, 64 insertions, 0 deletions
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/PassphraseChangeParcel.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/PassphraseChangeParcel.java
new file mode 100644
index 000000000..8b08aa115
--- /dev/null
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/PassphraseChangeParcel.java
@@ -0,0 +1,64 @@
+package org.sufficientlysecure.keychain.service;
+
+import android.os.Parcel;
+import android.os.Parcelable;
+
+public class PassphraseChangeParcel implements Parcelable {
+
+ // the master key id to be edited.
+ public Long mMasterKeyId;
+ // the first sub key id that is not stripped.
+ public Long mValidSubkeyId;
+ // the key fingerprint, for safety.
+ public byte[] mFingerprint;
+
+ public ChangeUnlockParcel mNewUnlock;
+
+
+ public PassphraseChangeParcel(long masterKeyId, byte[] fingerprint) {
+ mMasterKeyId = masterKeyId;
+ mFingerprint = fingerprint;
+ }
+
+ public PassphraseChangeParcel(Parcel source) {
+ mValidSubkeyId = source.readInt() != 0 ? source.readLong() : null;
+ mMasterKeyId = source.readLong();
+ mFingerprint = source.createByteArray();
+
+ mNewUnlock = source.readParcelable(getClass().getClassLoader());
+ }
+
+
+ @Override
+ public int describeContents() {
+ return 0;
+ }
+
+ @Override
+ public void writeToParcel(Parcel destination, int flags) {
+ destination.writeInt(mValidSubkeyId == null ? 0 : 1);
+ if (mValidSubkeyId != null) {
+ destination.writeLong(mValidSubkeyId);
+ }
+ destination.writeLong(mMasterKeyId);
+ destination.writeByteArray(mFingerprint);
+ destination.writeParcelable(mNewUnlock, flags);
+ }
+
+ public static final Creator<PassphraseChangeParcel> CREATOR = new Creator<PassphraseChangeParcel>() {
+ public PassphraseChangeParcel createFromParcel(final Parcel source) {
+ return new PassphraseChangeParcel(source);
+ }
+
+ public PassphraseChangeParcel[] newArray(final int size) {
+ return new PassphraseChangeParcel[size];
+ }
+ };
+
+ public String toString() {
+ String out = "mMasterKeyId: " + mMasterKeyId + "\n";
+ out += "mNewUnlock: " + mNewUnlock + "\n";
+
+ return out;
+ }
+}