diff options
author | Dominik Schürmann <dominik@dominikschuermann.de> | 2014-08-11 17:29:41 +0200 |
---|---|---|
committer | Dominik Schürmann <dominik@dominikschuermann.de> | 2014-08-11 17:29:41 +0200 |
commit | d5b40de70a9a53372a3c538ad4ec2656a63b7984 (patch) | |
tree | e84254cbb2cf4ff731c2fe034a6f94ffd8f324c6 /OpenKeychain/src/main | |
parent | 59096b37fdfef1d9294990a64c755080585b1da6 (diff) | |
download | open-keychain-d5b40de70a9a53372a3c538ad4ec2656a63b7984.tar.gz open-keychain-d5b40de70a9a53372a3c538ad4ec2656a63b7984.tar.bz2 open-keychain-d5b40de70a9a53372a3c538ad4ec2656a63b7984.zip |
Decrypt metadata api
Diffstat (limited to 'OpenKeychain/src/main')
3 files changed, 24 insertions, 10 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 2ab93ca41..5a5e51f99 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/PgpDecryptVerify.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/PgpDecryptVerify.java @@ -71,7 +71,7 @@ public class PgpDecryptVerify { private boolean mAllowSymmetricDecryption; private String mPassphrase; private Set<Long> mAllowedKeyIds; - private boolean mReturnMetadataOnly; + private boolean mDecryptMetadataOnly; private PgpDecryptVerify(Builder builder) { // private Constructor can only be called from Builder @@ -84,7 +84,7 @@ public class PgpDecryptVerify { this.mAllowSymmetricDecryption = builder.mAllowSymmetricDecryption; this.mPassphrase = builder.mPassphrase; this.mAllowedKeyIds = builder.mAllowedKeyIds; - this.mReturnMetadataOnly = builder.mReturnMetadataOnly; + this.mDecryptMetadataOnly = builder.mDecryptMetadataOnly; } public static class Builder { @@ -99,7 +99,7 @@ public class PgpDecryptVerify { private boolean mAllowSymmetricDecryption = true; private String mPassphrase = null; private Set<Long> mAllowedKeyIds = null; - private boolean mReturnMetadataOnly = false; + private boolean mDecryptMetadataOnly = false; public Builder(ProviderHelper providerHelper, PassphraseCache passphraseCache, InputData data, OutputStream outStream) { @@ -137,8 +137,8 @@ public class PgpDecryptVerify { * If enabled, the actual decryption/verification of the content will not be executed. * The metadata only will be decrypted and returned. */ - public Builder setReturnMetadataOnly(boolean returnMetadataOnly) { - mReturnMetadataOnly = returnMetadataOnly; + public Builder setDecryptMetadataOnly(boolean decryptMetadataOnly) { + mDecryptMetadataOnly = decryptMetadataOnly; return this; } @@ -470,7 +470,7 @@ public class PgpDecryptVerify { Log.d(Constants.TAG, "metadata: " + metadata); // return here if we want to decrypt the metadata only - if (mReturnMetadataOnly) { + if (mDecryptMetadataOnly) { return result; } 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 d3a38c5d7..5c94f4796 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/remote/OpenPgpService.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/remote/OpenPgpService.java @@ -25,6 +25,7 @@ import android.os.IBinder; import android.os.ParcelFileDescriptor; import org.openintents.openpgp.IOpenPgpService; +import org.openintents.openpgp.OpenPgpDecryptMetadata; import org.openintents.openpgp.OpenPgpError; import org.openintents.openpgp.OpenPgpSignatureResult; import org.openintents.openpgp.util.OpenPgpApi; @@ -326,7 +327,8 @@ public class OpenPgpService extends RemoteService { } private Intent decryptAndVerifyImpl(Intent data, ParcelFileDescriptor input, - ParcelFileDescriptor output, Set<Long> allowedKeyIds) { + ParcelFileDescriptor output, Set<Long> allowedKeyIds, + boolean decryptMetadataOnly) { try { // Get Input- and OutputStream from ParcelFileDescriptor InputStream is = new ParcelFileDescriptor.AutoCloseInputStream(input); @@ -353,7 +355,8 @@ public class OpenPgpService extends RemoteService { builder.setAllowSymmetricDecryption(false) // no support for symmetric encryption .setAllowedKeyIds(allowedKeyIds) // allow only private keys associated with // accounts of this app - .setPassphrase(passphrase); + .setPassphrase(passphrase) + .setDecryptMetadataOnly(decryptMetadataOnly); PgpDecryptVerifyResult decryptVerifyResult; try { @@ -403,6 +406,11 @@ public class OpenPgpService extends RemoteService { } } + OpenPgpDecryptMetadata metadata = decryptVerifyResult.getDecryptMetadata(); + if (metadata != null) { + result.putExtra(OpenPgpApi.RESULT_METADATA, metadata); + } + } finally { is.close(); os.close(); @@ -561,7 +569,13 @@ public class OpenPgpService extends RemoteService { Set<Long> allowedKeyIds = mProviderHelper.getAllKeyIdsForApp( ApiAccounts.buildBaseUri(currentPkg)); - return decryptAndVerifyImpl(data, input, output, allowedKeyIds); + return decryptAndVerifyImpl(data, input, output, allowedKeyIds, false); + } else if (OpenPgpApi.ACTION_DECRYPT_METADATA.equals(action)) { + String currentPkg = getCurrentCallingPackage(); + Set<Long> allowedKeyIds = + mProviderHelper.getAllKeyIdsForApp( + ApiAccounts.buildBaseUri(currentPkg)); + return decryptAndVerifyImpl(data, input, output, allowedKeyIds, true); } else if (OpenPgpApi.ACTION_GET_KEY.equals(action)) { return getKeyImpl(data); } else if (OpenPgpApi.ACTION_GET_KEY_IDS.equals(action)) { diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/KeychainIntentService.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/KeychainIntentService.java index 680f2fb27..54895973b 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/KeychainIntentService.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/KeychainIntentService.java @@ -361,7 +361,7 @@ public class KeychainIntentService extends IntentService builder.setProgressable(this) .setAllowSymmetricDecryption(true) .setPassphrase(passphrase) - .setReturnMetadataOnly(true); + .setDecryptMetadataOnly(true); PgpDecryptVerifyResult decryptVerifyResult = builder.build().execute(); |