import org.signal.libsignal.protocol.InvalidMessageException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import org.whispersystems.signalservice.api.crypto.AttachmentCipherInputStream;
import org.whispersystems.signalservice.api.messages.SignalServiceAttachment;
import org.whispersystems.signalservice.api.messages.SignalServiceAttachmentPointer;
import org.whispersystems.signalservice.api.messages.SignalServiceAttachmentStream;
SignalServiceAttachmentPointer pointer,
File tmpFile
) throws IOException {
+ if (pointer.getDigest().isEmpty()) {
+ throw new IOException("Attachment pointer has no digest.");
+ }
try {
return dependencies.getMessageReceiver()
- .retrieveAttachment(pointer, tmpFile, ServiceConfig.MAX_ATTACHMENT_SIZE);
+ .retrieveAttachment(pointer,
+ tmpFile,
+ ServiceConfig.MAX_ATTACHMENT_SIZE,
+ AttachmentCipherInputStream.IntegrityCheck.forEncryptedDigest(pointer.getDigest().get()));
} catch (MissingConfigurationException | InvalidMessageException e) {
throw new IOException(e);
}