Set timestamps in dataMessage, prepare for validation

This commit is contained in:
Scott Nonnenberg 2019-05-14 12:14:29 -07:00
parent 0bc5ae5569
commit 089a232a60
2 changed files with 14 additions and 3 deletions

View File

@ -1304,6 +1304,15 @@ MessageReceiver.prototype.extend({
// Note that messages may (generally) only perform one action and we ignore remaining
// fields after the first action.
const TIMESTAMP_VALIDATION = false;
if (TIMESTAMP_VALIDATION && envelope.timestamp !== decrypted.timestamp) {
throw new Error(
`Timestamp ${
decrypted.timestamp
} in DataMessage did not match envelope timestamp ${envelope.timestamp}`
);
}
if (decrypted.flags == null) {
decrypted.flags = 0;
}

View File

@ -98,10 +98,13 @@ Message.prototype = {
return this.dataMessage;
}
const proto = new textsecure.protobuf.DataMessage();
proto.timestamp = this.timestamp;
proto.attachments = this.attachmentPointers;
if (this.body) {
proto.body = this.body;
}
proto.attachments = this.attachmentPointers;
if (this.flags) {
proto.flags = this.flags;
}
@ -154,7 +157,6 @@ Message.prototype = {
if (this.expireTimer) {
proto.expireTimer = this.expireTimer;
}
if (this.profileKey) {
proto.profileKey = this.profileKey;
}
@ -535,7 +537,7 @@ MessageSender.prototype = {
return this.sendIndividualProto(
myNumber,
contentMessage,
Date.now(),
timestamp,
silent,
options
);