Migrate from SQLite and ciphertext blobs to SQLCipher + KeyStore

This commit is contained in:
Moxie Marlinspike
2018-01-24 19:17:44 -08:00
parent d1819b6361
commit f36b296e2e
134 changed files with 3633 additions and 3544 deletions

View File

@@ -1,5 +1,6 @@
package org.thoughtcrime.securesms.scribbles;
import android.annotation.SuppressLint;
import android.annotation.TargetApi;
import android.content.Intent;
import android.graphics.Bitmap;
@@ -49,14 +50,12 @@ public class ScribbleActivity extends PassphraseRequiredActionBarActivity implem
private VerticalSlideColorPicker colorPicker;
private ScribbleToolbar toolbar;
private ScribbleView scribbleView;
private MasterSecret masterSecret;
private GlideRequests glideRequests;
@Override
protected void onCreate(Bundle savedInstanceState, @NonNull MasterSecret masterSecret) {
setContentView(R.layout.scribble_activity);
this.masterSecret = masterSecret;
this.glideRequests = GlideApp.with(this);
this.scribbleView = findViewById(R.id.scribble_view);
this.toolbar = findViewById(R.id.toolbar);
@@ -67,7 +66,7 @@ public class ScribbleActivity extends PassphraseRequiredActionBarActivity implem
scribbleView.setMotionViewCallback(motionViewCallback);
scribbleView.setDrawingMode(false);
scribbleView.setImage(masterSecret, glideRequests, getIntent().getData());
scribbleView.setImage(glideRequests, getIntent().getData());
colorPicker.setOnColorChangeListener(this);
colorPicker.setVisibility(View.GONE);
@@ -144,6 +143,7 @@ public class ScribbleActivity extends PassphraseRequiredActionBarActivity implem
return textLayer;
}
@SuppressLint("StaticFieldLeak")
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
@@ -231,7 +231,7 @@ public class ScribbleActivity extends PassphraseRequiredActionBarActivity implem
baos = null;
result = null;
Uri uri = provider.create(masterSecret, data, MediaUtil.IMAGE_JPEG, null);
Uri uri = provider.create(ScribbleActivity.this, data, MediaUtil.IMAGE_JPEG, null);
Intent intent = new Intent();
intent.setData(uri);
setResult(RESULT_OK, intent);

View File

@@ -16,6 +16,7 @@
*/
package org.thoughtcrime.securesms.scribbles.widget;
import android.annotation.SuppressLint;
import android.annotation.TargetApi;
import android.content.Context;
import android.graphics.Bitmap;
@@ -34,7 +35,6 @@ import com.bumptech.glide.load.engine.DiskCacheStrategy;
import com.bumptech.glide.request.target.Target;
import org.thoughtcrime.securesms.R;
import org.thoughtcrime.securesms.crypto.MasterSecret;
import org.thoughtcrime.securesms.mms.DecryptableStreamUriLoader.DecryptableUri;
import org.thoughtcrime.securesms.mms.GlideRequests;
import org.thoughtcrime.securesms.scribbles.widget.entity.MotionEntity;
@@ -53,8 +53,7 @@ public class ScribbleView extends FrameLayout {
private MotionView motionView;
private CanvasView canvasView;
private @Nullable Uri imageUri;
private @Nullable MasterSecret masterSecret;
private @Nullable Uri imageUri;
public ScribbleView(Context context) {
super(context);
@@ -77,22 +76,22 @@ public class ScribbleView extends FrameLayout {
initialize(context);
}
public void setImage(@NonNull MasterSecret masterSecret, @NonNull GlideRequests glideRequests, @NonNull Uri uri) {
public void setImage(@NonNull GlideRequests glideRequests, @NonNull Uri uri) {
this.imageUri = uri;
this.masterSecret = masterSecret;
glideRequests.load(new DecryptableUri(masterSecret, uri))
glideRequests.load(new DecryptableUri(uri))
.diskCacheStrategy(DiskCacheStrategy.NONE)
.fitCenter()
.into(imageView);
}
@SuppressLint("StaticFieldLeak")
public @NonNull ListenableFuture<Bitmap> getRenderedImage(@NonNull GlideRequests glideRequests) {
final SettableFuture<Bitmap> future = new SettableFuture<>();
final Context context = getContext();
final boolean isLowMemory = Util.isLowMemory(context);
if (imageUri == null || masterSecret == null) {
if (imageUri == null) {
future.set(null);
return future;
}
@@ -110,7 +109,7 @@ public class ScribbleView extends FrameLayout {
}
return glideRequests.asBitmap()
.load(new DecryptableUri(masterSecret, imageUri))
.load(new DecryptableUri(imageUri))
.diskCacheStrategy(DiskCacheStrategy.NONE)
.skipMemoryCache(true)
.into(width, height)