diff --git a/app/src/main/java/org/thoughtcrime/securesms/mms/AttachmentStreamLocalUriFetcher.java b/app/src/main/java/org/thoughtcrime/securesms/mms/AttachmentStreamLocalUriFetcher.java index 058d14a887..cd0c654324 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/mms/AttachmentStreamLocalUriFetcher.java +++ b/app/src/main/java/org/thoughtcrime/securesms/mms/AttachmentStreamLocalUriFetcher.java @@ -22,18 +22,14 @@ class AttachmentStreamLocalUriFetcher implements DataFetcher { private final File attachment; private final byte[] key; private final Optional digest; - private final Optional incrementalDigest; - private final int incrementalMacChunkSize; private final long plaintextLength; private InputStream is; - AttachmentStreamLocalUriFetcher(File attachment, long plaintextLength, byte[] key, Optional digest, Optional incrementalDigest, int incrementalMacChunkSize) { + AttachmentStreamLocalUriFetcher(File attachment, long plaintextLength, byte[] key, Optional digest) { this.attachment = attachment; this.plaintextLength = plaintextLength; this.digest = digest; - this.incrementalDigest = incrementalDigest; - this.incrementalMacChunkSize = incrementalMacChunkSize; this.key = key; } @@ -41,7 +37,7 @@ class AttachmentStreamLocalUriFetcher implements DataFetcher { public void loadData(@NonNull Priority priority, @NonNull DataCallback callback) { try { if (!digest.isPresent()) throw new InvalidMessageException("No attachment digest!"); - is = AttachmentCipherInputStream.createForAttachment(attachment, plaintextLength, key, digest.get(), incrementalDigest.orElse(null), incrementalMacChunkSize); + is = AttachmentCipherInputStream.createForAttachment(attachment, plaintextLength, key, digest.get(), null, 0); callback.onDataReady(is); } catch (IOException | InvalidMessageException e) { callback.onLoadFailed(e); diff --git a/app/src/main/java/org/thoughtcrime/securesms/mms/AttachmentStreamUriLoader.java b/app/src/main/java/org/thoughtcrime/securesms/mms/AttachmentStreamUriLoader.java index e00caf7f1a..cdb902f509 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/mms/AttachmentStreamUriLoader.java +++ b/app/src/main/java/org/thoughtcrime/securesms/mms/AttachmentStreamUriLoader.java @@ -20,7 +20,7 @@ public class AttachmentStreamUriLoader implements ModelLoader buildLoadData(@NonNull AttachmentModel attachmentModel, int width, int height, @NonNull Options options) { - return new LoadData<>(attachmentModel, new AttachmentStreamLocalUriFetcher(attachmentModel.attachment, attachmentModel.plaintextLength, attachmentModel.key, attachmentModel.digest, attachmentModel.incrementalDigest, attachmentModel.incrementalMacChunkSize)); + return new LoadData<>(attachmentModel, new AttachmentStreamLocalUriFetcher(attachmentModel.attachment, attachmentModel.plaintextLength, attachmentModel.key, attachmentModel.digest)); } @Override diff --git a/libsignal/service/src/main/java/org/whispersystems/signalservice/api/crypto/AttachmentCipherInputStream.java b/libsignal/service/src/main/java/org/whispersystems/signalservice/api/crypto/AttachmentCipherInputStream.java index 366a85a972..b07d66b95d 100644 --- a/libsignal/service/src/main/java/org/whispersystems/signalservice/api/crypto/AttachmentCipherInputStream.java +++ b/libsignal/service/src/main/java/org/whispersystems/signalservice/api/crypto/AttachmentCipherInputStream.java @@ -53,6 +53,9 @@ public class AttachmentCipherInputStream extends FilterInputStream { private long totalRead; private byte[] overflowBuffer; + /** + * Passing in a null incrementalDigest and/or 0 for the chunk size at the call site disables incremental mac validation. + */ public static InputStream createForAttachment(File file, long plaintextLength, byte[] combinedKeyMaterial, byte[] digest, byte[] incrementalDigest, int incrementalMacChunkSize) throws InvalidMessageException, IOException {