Add option to BackupOperation to export only secret keys
This commit is contained in:
@@ -129,8 +129,8 @@ public class BackupOperation extends BaseOperation<BackupKeyringParcel> {
|
||||
}
|
||||
|
||||
CountingOutputStream outStream = new CountingOutputStream(new BufferedOutputStream(plainOut));
|
||||
boolean backupSuccess = exportKeysToStream(
|
||||
log, backupInput.getMasterKeyIds(), backupInput.getExportSecret(), outStream);
|
||||
boolean backupSuccess = exportKeysToStream(log, backupInput.getMasterKeyIds(),
|
||||
backupInput.getExportSecret(), backupInput.getExportPublic(), outStream);
|
||||
|
||||
if (!backupSuccess) {
|
||||
// if there was an error, it will be in the log so we just have to return
|
||||
@@ -214,7 +214,8 @@ public class BackupOperation extends BaseOperation<BackupKeyringParcel> {
|
||||
pgpSignEncryptData, CryptoInputParcel.createCryptoInputParcel(), inputData, outStream);
|
||||
}
|
||||
|
||||
boolean exportKeysToStream(OperationLog log, long[] masterKeyIds, boolean exportSecret, OutputStream outStream) {
|
||||
boolean exportKeysToStream(OperationLog log, long[] masterKeyIds, boolean exportSecret, boolean exportPublic,
|
||||
OutputStream outStream) {
|
||||
// noinspection unused TODO use these in a log entry
|
||||
int okSecret = 0, okPublic = 0;
|
||||
|
||||
@@ -240,9 +241,15 @@ public class BackupOperation extends BaseOperation<BackupKeyringParcel> {
|
||||
long masterKeyId = cursor.getLong(INDEX_MASTER_KEY_ID);
|
||||
log.add(LogType.MSG_BACKUP_PUBLIC, 1, KeyFormattingUtils.beautifyKeyId(masterKeyId));
|
||||
|
||||
if (writePublicKeyToStream(masterKeyId, log, outStream)) {
|
||||
okPublic += 1;
|
||||
boolean publicKeyWriteOk = false;
|
||||
if (exportPublic) {
|
||||
publicKeyWriteOk = writePublicKeyToStream(masterKeyId, log, outStream);
|
||||
if (publicKeyWriteOk) {
|
||||
okPublic += 1;
|
||||
}
|
||||
}
|
||||
|
||||
if (publicKeyWriteOk || !exportPublic) {
|
||||
boolean hasSecret = cursor.getInt(INDEX_HAS_ANY_SECRET) > 0;
|
||||
if (exportSecret && hasSecret) {
|
||||
log.add(LogType.MSG_BACKUP_SECRET, 2, KeyFormattingUtils.beautifyKeyId(masterKeyId));
|
||||
|
||||
@@ -731,7 +731,7 @@ public class OpenPgpService extends Service {
|
||||
// the backup code is cached in CryptoInputParcelCacheService, now we can proceed
|
||||
|
||||
BackupKeyringParcel input = BackupKeyringParcel
|
||||
.createBackupKeyringParcel(masterKeyIds, backupSecret, true, enableAsciiArmorOutput, null);
|
||||
.create(masterKeyIds, backupSecret, true, enableAsciiArmorOutput, null);
|
||||
BackupOperation op = new BackupOperation(this, mKeyRepository, null);
|
||||
ExportResult pgpResult = op.execute(input, inputParcel, outputStream);
|
||||
|
||||
|
||||
@@ -31,14 +31,20 @@ public abstract class BackupKeyringParcel implements Parcelable {
|
||||
@SuppressWarnings("mutable")
|
||||
public abstract long[] getMasterKeyIds();
|
||||
public abstract boolean getExportSecret();
|
||||
public abstract boolean getExportPublic();
|
||||
public abstract boolean getIsEncrypted();
|
||||
public abstract boolean getEnableAsciiArmorOutput();
|
||||
@Nullable
|
||||
public abstract Uri getOutputUri();
|
||||
|
||||
public static BackupKeyringParcel createBackupKeyringParcel(long[] masterKeyIds, boolean exportSecret,
|
||||
public static BackupKeyringParcel create(long[] masterKeyIds, boolean exportSecret,
|
||||
boolean isEncrypted, boolean enableAsciiArmorOutput, Uri outputUri) {
|
||||
return new AutoValue_BackupKeyringParcel(
|
||||
masterKeyIds, exportSecret, isEncrypted, enableAsciiArmorOutput, outputUri);
|
||||
masterKeyIds, exportSecret, true, isEncrypted, enableAsciiArmorOutput, outputUri);
|
||||
}
|
||||
|
||||
public static BackupKeyringParcel createExportAutocryptSetupMessage(long[] masterKeyIds) {
|
||||
return new AutoValue_BackupKeyringParcel(
|
||||
masterKeyIds, true, false, true, true, null);
|
||||
}
|
||||
}
|
||||
@@ -610,7 +610,7 @@ public class BackupCodeFragment extends CryptoOperationFragment<BackupKeyringPar
|
||||
@Override
|
||||
public BackupKeyringParcel createOperationInput() {
|
||||
return BackupKeyringParcel
|
||||
.createBackupKeyringParcel(mMasterKeyIds, mExportSecret, true, true, mCachedBackupUri);
|
||||
.create(mMasterKeyIds, mExportSecret, true, true, mCachedBackupUri);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
Reference in New Issue
Block a user