aboutsummaryrefslogtreecommitdiffstats
path: root/OpenKeychain/src/main/java
diff options
context:
space:
mode:
authorDominik Schürmann <dominik@dominikschuermann.de>2014-09-18 15:28:51 +0200
committerDominik Schürmann <dominik@dominikschuermann.de>2014-09-18 15:28:51 +0200
commita77c217b82a567a71ff22a419772fce861c9df95 (patch)
treec68c9adb7846ce80421f865bfe64829b6cc20de1 /OpenKeychain/src/main/java
parent1837dc89fa9b15d3da425bf895b3ff4a92cfb69d (diff)
downloadopen-keychain-a77c217b82a567a71ff22a419772fce861c9df95.tar.gz
open-keychain-a77c217b82a567a71ff22a419772fce861c9df95.tar.bz2
open-keychain-a77c217b82a567a71ff22a419772fce861c9df95.zip
Fixes for nfc decrypt
Diffstat (limited to 'OpenKeychain/src/main/java')
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/PgpDecryptVerify.java3
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/remote/OpenPgpService.java9
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/results/DecryptVerifyResult.java15
3 files changed, 18 insertions, 9 deletions
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/PgpDecryptVerify.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/PgpDecryptVerify.java
index e8f139b22..9d21e89b3 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/PgpDecryptVerify.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/PgpDecryptVerify.java
@@ -418,8 +418,7 @@ public class PgpDecryptVerify {
log.add(LogType.MSG_DC_PENDING_NFC, indent +1);
DecryptVerifyResult result =
new DecryptVerifyResult(DecryptVerifyResult.RESULT_PENDING_NFC, log);
- result.setNfcEncryptedSessionKey(e.encryptedSessionKey);
- // TODO save passphrase here?
+ result.setNfcState(e.encryptedSessionKey, mPassphrase);
return result;
}
encryptedData = encryptedDataAsymmetric;
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/remote/OpenPgpService.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/remote/OpenPgpService.java
index b23662a6e..31427cce2 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/remote/OpenPgpService.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/remote/OpenPgpService.java
@@ -277,7 +277,8 @@ public class OpenPgpService extends RemoteService {
}
}
},
- inputData, os);
+ inputData, os
+ );
builder.setEnableAsciiArmorOutput(asciiArmor)
.setVersionHeader(PgpHelper.getVersionForHeader(this))
.setSignatureHashAlgorithm(accSettings.getHashAlgorithm())
@@ -379,7 +380,8 @@ public class OpenPgpService extends RemoteService {
}
}
},
- inputData, os);
+ inputData, os
+ );
builder.setEnableAsciiArmorOutput(asciiArmor)
.setVersionHeader(PgpHelper.getVersionForHeader(this))
.setCompressionId(accSettings.getCompression())
@@ -524,9 +526,8 @@ public class OpenPgpService extends RemoteService {
"Decryption of symmetric content not supported by API!");
} else if ((pgpResult.getResult() & DecryptVerifyResult.RESULT_PENDING_NFC) ==
DecryptVerifyResult.RESULT_PENDING_NFC) {
- // TODO get passphrase here? currently not in DecryptVerifyResult
return getNfcDecryptIntent(
- data, null, pgpResult.getNfcEncryptedSessionKey());
+ data, pgpResult.getNfcPassphrase(), pgpResult.getNfcEncryptedSessionKey());
} else {
throw new PgpGeneralException(
"Encountered unhandled type of pending action not supported by API!");
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/results/DecryptVerifyResult.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/results/DecryptVerifyResult.java
index 2113c1ab1..4a0aec548 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/results/DecryptVerifyResult.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/results/DecryptVerifyResult.java
@@ -31,10 +31,12 @@ public class DecryptVerifyResult extends OperationResult {
// fifth to sixth bit in addition indicate specific type of pending
public static final int RESULT_PENDING_ASYM_PASSPHRASE = RESULT_PENDING + 16;
public static final int RESULT_PENDING_SYM_PASSPHRASE = RESULT_PENDING + 32;
- public static final int RESULT_PENDING_NFC = RESULT_PENDING + 48;
+ public static final int RESULT_PENDING_NFC = RESULT_PENDING + 64;
long mKeyIdPassphraseNeeded;
+
byte[] mNfcSessionKey;
+ String mNfcPassphrase;
OpenPgpSignatureResult mSignatureResult;
OpenPgpMetadata mDecryptMetadata;
@@ -47,14 +49,19 @@ public class DecryptVerifyResult extends OperationResult {
mKeyIdPassphraseNeeded = keyIdPassphraseNeeded;
}
- public void setNfcEncryptedSessionKey(byte[] sessionKey) {
+ public void setNfcState(byte[] sessionKey, String passphrase) {
mNfcSessionKey = sessionKey;
+ mNfcPassphrase = passphrase;
}
public byte[] getNfcEncryptedSessionKey() {
return mNfcSessionKey;
}
+ public String getNfcPassphrase() {
+ return mNfcPassphrase;
+ }
+
public OpenPgpSignatureResult getSignatureResult() {
return mSignatureResult;
}
@@ -72,7 +79,7 @@ public class DecryptVerifyResult extends OperationResult {
}
public boolean isPending() {
- return (mResult & RESULT_PENDING) != 0;
+ return (mResult & RESULT_PENDING) == RESULT_PENDING;
}
public DecryptVerifyResult(int result, OperationLog log) {
@@ -85,6 +92,7 @@ public class DecryptVerifyResult extends OperationResult {
mSignatureResult = source.readParcelable(OpenPgpSignatureResult.class.getClassLoader());
mDecryptMetadata = source.readParcelable(OpenPgpMetadata.class.getClassLoader());
mNfcSessionKey = source.readInt() != 0 ? source.createByteArray() : null;
+ mNfcPassphrase = source.readString();
}
public int describeContents() {
@@ -102,6 +110,7 @@ public class DecryptVerifyResult extends OperationResult {
} else {
dest.writeInt(0);
}
+ dest.writeString(mNfcPassphrase);
}
public static final Creator<DecryptVerifyResult> CREATOR = new Creator<DecryptVerifyResult>() {