mirror of
https://github.com/oxen-io/session-android.git
synced 2024-11-28 12:35:17 +00:00
b8f663b69c
1) Move all the crypto classes from securesms.crypto. 2) Move all the crypto storage from securesms.database.keys 3) Replace the old imported BC code with spongycastle.
67 lines
2.2 KiB
Java
67 lines
2.2 KiB
Java
package org.thoughtcrime.securesms.database;
|
|
|
|
|
|
import android.content.Context;
|
|
import android.os.Environment;
|
|
|
|
import org.whispersystems.textsecure.crypto.MasterSecret;
|
|
import org.thoughtcrime.securesms.database.model.SmsMessageRecord;
|
|
|
|
import java.io.File;
|
|
import java.io.IOException;
|
|
|
|
public class PlaintextBackupExporter {
|
|
|
|
public static void exportPlaintextToSd(Context context, MasterSecret masterSecret)
|
|
throws NoExternalStorageException, IOException
|
|
{
|
|
verifyExternalStorageForPlaintextExport();
|
|
exportPlaintext(context, masterSecret);
|
|
}
|
|
|
|
private static void verifyExternalStorageForPlaintextExport() throws NoExternalStorageException {
|
|
if (!Environment.getExternalStorageDirectory().canWrite())
|
|
throw new NoExternalStorageException();
|
|
}
|
|
|
|
private static String getPlaintextExportDirectoryPath() {
|
|
File sdDirectory = Environment.getExternalStorageDirectory();
|
|
return sdDirectory.getAbsolutePath() + File.separator + "TextSecurePlaintextBackup.xml";
|
|
}
|
|
|
|
private static void exportPlaintext(Context context, MasterSecret masterSecret)
|
|
throws IOException
|
|
{
|
|
int count = DatabaseFactory.getSmsDatabase(context).getMessageCount();
|
|
XmlBackup.Writer writer = new XmlBackup.Writer(getPlaintextExportDirectoryPath(), count);
|
|
|
|
|
|
SmsMessageRecord record;
|
|
EncryptingSmsDatabase.Reader reader = null;
|
|
int skip = 0;
|
|
int ROW_LIMIT = 500;
|
|
|
|
do {
|
|
if (reader != null)
|
|
reader.close();
|
|
|
|
reader = DatabaseFactory.getEncryptingSmsDatabase(context).getMessages(masterSecret, skip, ROW_LIMIT);
|
|
|
|
while ((record = reader.getNext()) != null) {
|
|
XmlBackup.XmlBackupItem item =
|
|
new XmlBackup.XmlBackupItem(0, record.getIndividualRecipient().getNumber(),
|
|
record.getDateReceived(),
|
|
MmsSmsColumns.Types.translateToSystemBaseType(record.getType()),
|
|
null, record.getDisplayBody().toString(), null,
|
|
1, record.getDeliveryStatus());
|
|
|
|
writer.writeItem(item);
|
|
}
|
|
|
|
skip += ROW_LIMIT;
|
|
} while (reader.getCount() > 0);
|
|
|
|
writer.close();
|
|
}
|
|
}
|