From 4760a21c403ec1190321a58e5474b37df5f9bdd7 Mon Sep 17 00:00:00 2001 From: Vincent Breitmoser Date: Fri, 13 Apr 2018 19:34:16 +0200 Subject: [PATCH] Add passphrase-format and passphrase-begin headers in BackupOperation, if appropriate --- .../keychain/operations/BackupOperation.java | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/operations/BackupOperation.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/operations/BackupOperation.java index a31f7e4e1..8e40ee114 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/operations/BackupOperation.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/operations/BackupOperation.java @@ -58,8 +58,10 @@ import org.sufficientlysecure.keychain.provider.TemporaryFileProvider; import org.sufficientlysecure.keychain.service.BackupKeyringParcel; import org.sufficientlysecure.keychain.service.input.CryptoInputParcel; import org.sufficientlysecure.keychain.ui.util.KeyFormattingUtils; +import org.sufficientlysecure.keychain.util.Numeric9x4PassphraseUtil; import org.sufficientlysecure.keychain.util.CountingOutputStream; import org.sufficientlysecure.keychain.util.InputData; +import org.sufficientlysecure.keychain.util.Passphrase; import timber.log.Timber; @@ -169,9 +171,15 @@ public class BackupOperation extends BaseOperation { PgpSignEncryptOperation signEncryptOperation = new PgpSignEncryptOperation(mContext, mKeyRepository, mProgressable, mCancelled); PgpSignEncryptData.Builder builder = PgpSignEncryptData.builder(); - builder.setSymmetricPassphrase(cryptoInput.getPassphrase()); + Passphrase passphrase = cryptoInput.getPassphrase(); + builder.setSymmetricPassphrase(passphrase); builder.setEnableAsciiArmorOutput(backupInput.getEnableAsciiArmorOutput()); - builder.setAddBackupHeader(true); + boolean isNumeric9x4Passphrase = passphrase != null && Numeric9x4PassphraseUtil.isNumeric9x4Passphrase(passphrase); + if (isNumeric9x4Passphrase) { + builder.setPassphraseFormat("numeric9x4"); + char[] passphraseChars = passphrase.getCharArray(); + builder.setPassphraseBegin("" + passphraseChars[0] + passphraseChars[1]); + } PgpSignEncryptData pgpSignEncryptData = builder.build(); InputStream inStream = mContext.getContentResolver().openInputStream(plainUri);