introduce CachingDataDecryptorFactory towards cached session keys
this commit introduces the CachingDataDecryptorFactory, which wraps a DataDecryptorFactory but supports caching of decrypted session keys. this change also gets rid of runtimeexception based control flow in PgpDecryptVerify.
This commit is contained in:
@@ -22,6 +22,7 @@ import android.os.Parcel;
|
||||
|
||||
import org.openintents.openpgp.OpenPgpMetadata;
|
||||
import org.openintents.openpgp.OpenPgpSignatureResult;
|
||||
import org.sufficientlysecure.keychain.service.input.CryptoInputParcel;
|
||||
import org.sufficientlysecure.keychain.service.input.RequiredInputParcel;
|
||||
import org.sufficientlysecure.keychain.util.Passphrase;
|
||||
|
||||
@@ -36,6 +37,8 @@ public class DecryptVerifyResult extends InputPendingResult {
|
||||
// https://tools.ietf.org/html/rfc4880#page56
|
||||
String mCharset;
|
||||
|
||||
CryptoInputParcel mCachedCryptoInputParcel;
|
||||
|
||||
byte[] mOutputBytes;
|
||||
|
||||
public DecryptVerifyResult(int result, OperationLog log) {
|
||||
@@ -50,6 +53,7 @@ public class DecryptVerifyResult extends InputPendingResult {
|
||||
super(source);
|
||||
mSignatureResult = source.readParcelable(OpenPgpSignatureResult.class.getClassLoader());
|
||||
mDecryptMetadata = source.readParcelable(OpenPgpMetadata.class.getClassLoader());
|
||||
mCachedCryptoInputParcel = source.readParcelable(CryptoInputParcel.class.getClassLoader());
|
||||
}
|
||||
|
||||
|
||||
@@ -65,6 +69,14 @@ public class DecryptVerifyResult extends InputPendingResult {
|
||||
mSignatureResult = signatureResult;
|
||||
}
|
||||
|
||||
public CryptoInputParcel getCachedCryptoInputParcel() {
|
||||
return mCachedCryptoInputParcel;
|
||||
}
|
||||
|
||||
public void setCachedCryptoInputParcel(CryptoInputParcel cachedCryptoInputParcel) {
|
||||
mCachedCryptoInputParcel = cachedCryptoInputParcel;
|
||||
}
|
||||
|
||||
public OpenPgpMetadata getDecryptMetadata() {
|
||||
return mDecryptMetadata;
|
||||
}
|
||||
@@ -97,6 +109,7 @@ public class DecryptVerifyResult extends InputPendingResult {
|
||||
super.writeToParcel(dest, flags);
|
||||
dest.writeParcelable(mSignatureResult, 0);
|
||||
dest.writeParcelable(mDecryptMetadata, 0);
|
||||
dest.writeParcelable(mCachedCryptoInputParcel, 0);
|
||||
}
|
||||
|
||||
public static final Creator<DecryptVerifyResult> CREATOR = new Creator<DecryptVerifyResult>() {
|
||||
|
||||
Reference in New Issue
Block a user