Randomly pad all sync messages
WhisperSystems/libsignal-service-java@c46cdc0aa5 // FREEBIE
This commit is contained in:
parent
7bfb66b13b
commit
6e758fc1ea
2 changed files with 36 additions and 10 deletions
|
@ -39192,6 +39192,19 @@ MessageSender.prototype = {
|
||||||
}.bind(this));
|
}.bind(this));
|
||||||
},
|
},
|
||||||
|
|
||||||
|
createSyncMessage: function() {
|
||||||
|
var syncMessage = new textsecure.protobuf.SyncMessage();
|
||||||
|
|
||||||
|
// Generate a random int from 1 and 512
|
||||||
|
var buffer = libsignal.crypto.getRandomBytes(1);
|
||||||
|
var paddingLength = (new Uint8Array(buffer)[0] & 0x1ff) + 1;
|
||||||
|
|
||||||
|
// Generate a random padding buffer of the chosen size
|
||||||
|
syncMessage.padding = libsignal.crypto.getRandomBytes(paddingLength);
|
||||||
|
|
||||||
|
return syncMessage;
|
||||||
|
},
|
||||||
|
|
||||||
sendSyncMessage: function(encodedDataMessage, timestamp, destination, expirationStartTimestamp) {
|
sendSyncMessage: function(encodedDataMessage, timestamp, destination, expirationStartTimestamp) {
|
||||||
var myNumber = textsecure.storage.user.getNumber();
|
var myNumber = textsecure.storage.user.getNumber();
|
||||||
var myDevice = textsecure.storage.user.getDeviceId();
|
var myDevice = textsecure.storage.user.getDeviceId();
|
||||||
|
@ -39209,7 +39222,7 @@ MessageSender.prototype = {
|
||||||
if (expirationStartTimestamp) {
|
if (expirationStartTimestamp) {
|
||||||
sentMessage.expirationStartTimestamp = expirationStartTimestamp;
|
sentMessage.expirationStartTimestamp = expirationStartTimestamp;
|
||||||
}
|
}
|
||||||
var syncMessage = new textsecure.protobuf.SyncMessage();
|
var syncMessage = this.createSyncMessage();
|
||||||
syncMessage.sent = sentMessage;
|
syncMessage.sent = sentMessage;
|
||||||
var contentMessage = new textsecure.protobuf.Content();
|
var contentMessage = new textsecure.protobuf.Content();
|
||||||
contentMessage.syncMessage = syncMessage;
|
contentMessage.syncMessage = syncMessage;
|
||||||
|
@ -39226,7 +39239,7 @@ MessageSender.prototype = {
|
||||||
if (myDevice != 1) {
|
if (myDevice != 1) {
|
||||||
var request = new textsecure.protobuf.SyncMessage.Request();
|
var request = new textsecure.protobuf.SyncMessage.Request();
|
||||||
request.type = textsecure.protobuf.SyncMessage.Request.Type.GROUPS;
|
request.type = textsecure.protobuf.SyncMessage.Request.Type.GROUPS;
|
||||||
var syncMessage = new textsecure.protobuf.SyncMessage();
|
var syncMessage = this.createSyncMessage();
|
||||||
syncMessage.request = request;
|
syncMessage.request = request;
|
||||||
var contentMessage = new textsecure.protobuf.Content();
|
var contentMessage = new textsecure.protobuf.Content();
|
||||||
contentMessage.syncMessage = syncMessage;
|
contentMessage.syncMessage = syncMessage;
|
||||||
|
@ -39241,7 +39254,7 @@ MessageSender.prototype = {
|
||||||
if (myDevice != 1) {
|
if (myDevice != 1) {
|
||||||
var request = new textsecure.protobuf.SyncMessage.Request();
|
var request = new textsecure.protobuf.SyncMessage.Request();
|
||||||
request.type = textsecure.protobuf.SyncMessage.Request.Type.CONTACTS;
|
request.type = textsecure.protobuf.SyncMessage.Request.Type.CONTACTS;
|
||||||
var syncMessage = new textsecure.protobuf.SyncMessage();
|
var syncMessage = this.createSyncMessage();
|
||||||
syncMessage.request = request;
|
syncMessage.request = request;
|
||||||
var contentMessage = new textsecure.protobuf.Content();
|
var contentMessage = new textsecure.protobuf.Content();
|
||||||
contentMessage.syncMessage = syncMessage;
|
contentMessage.syncMessage = syncMessage;
|
||||||
|
@ -39253,7 +39266,7 @@ MessageSender.prototype = {
|
||||||
var myNumber = textsecure.storage.user.getNumber();
|
var myNumber = textsecure.storage.user.getNumber();
|
||||||
var myDevice = textsecure.storage.user.getDeviceId();
|
var myDevice = textsecure.storage.user.getDeviceId();
|
||||||
if (myDevice != 1) {
|
if (myDevice != 1) {
|
||||||
var syncMessage = new textsecure.protobuf.SyncMessage();
|
var syncMessage = this.createSyncMessage();
|
||||||
syncMessage.read = [];
|
syncMessage.read = [];
|
||||||
for (var i = 0; i < reads.length; ++i) {
|
for (var i = 0; i < reads.length; ++i) {
|
||||||
var read = new textsecure.protobuf.SyncMessage.Read();
|
var read = new textsecure.protobuf.SyncMessage.Read();
|
||||||
|
@ -39276,7 +39289,7 @@ MessageSender.prototype = {
|
||||||
verified.destination = destination;
|
verified.destination = destination;
|
||||||
verified.identityKey = identityKey;
|
verified.identityKey = identityKey;
|
||||||
|
|
||||||
var syncMessage = new textsecure.protobuf.SyncMessage();
|
var syncMessage = this.createSyncMessage();
|
||||||
syncMessage.verified = verified;
|
syncMessage.verified = verified;
|
||||||
|
|
||||||
var contentMessage = new textsecure.protobuf.Content();
|
var contentMessage = new textsecure.protobuf.Content();
|
||||||
|
|
|
@ -230,6 +230,19 @@ MessageSender.prototype = {
|
||||||
}.bind(this));
|
}.bind(this));
|
||||||
},
|
},
|
||||||
|
|
||||||
|
createSyncMessage: function() {
|
||||||
|
var syncMessage = new textsecure.protobuf.SyncMessage();
|
||||||
|
|
||||||
|
// Generate a random int from 1 and 512
|
||||||
|
var buffer = libsignal.crypto.getRandomBytes(1);
|
||||||
|
var paddingLength = (new Uint8Array(buffer)[0] & 0x1ff) + 1;
|
||||||
|
|
||||||
|
// Generate a random padding buffer of the chosen size
|
||||||
|
syncMessage.padding = libsignal.crypto.getRandomBytes(paddingLength);
|
||||||
|
|
||||||
|
return syncMessage;
|
||||||
|
},
|
||||||
|
|
||||||
sendSyncMessage: function(encodedDataMessage, timestamp, destination, expirationStartTimestamp) {
|
sendSyncMessage: function(encodedDataMessage, timestamp, destination, expirationStartTimestamp) {
|
||||||
var myNumber = textsecure.storage.user.getNumber();
|
var myNumber = textsecure.storage.user.getNumber();
|
||||||
var myDevice = textsecure.storage.user.getDeviceId();
|
var myDevice = textsecure.storage.user.getDeviceId();
|
||||||
|
@ -247,7 +260,7 @@ MessageSender.prototype = {
|
||||||
if (expirationStartTimestamp) {
|
if (expirationStartTimestamp) {
|
||||||
sentMessage.expirationStartTimestamp = expirationStartTimestamp;
|
sentMessage.expirationStartTimestamp = expirationStartTimestamp;
|
||||||
}
|
}
|
||||||
var syncMessage = new textsecure.protobuf.SyncMessage();
|
var syncMessage = this.createSyncMessage();
|
||||||
syncMessage.sent = sentMessage;
|
syncMessage.sent = sentMessage;
|
||||||
var contentMessage = new textsecure.protobuf.Content();
|
var contentMessage = new textsecure.protobuf.Content();
|
||||||
contentMessage.syncMessage = syncMessage;
|
contentMessage.syncMessage = syncMessage;
|
||||||
|
@ -264,7 +277,7 @@ MessageSender.prototype = {
|
||||||
if (myDevice != 1) {
|
if (myDevice != 1) {
|
||||||
var request = new textsecure.protobuf.SyncMessage.Request();
|
var request = new textsecure.protobuf.SyncMessage.Request();
|
||||||
request.type = textsecure.protobuf.SyncMessage.Request.Type.GROUPS;
|
request.type = textsecure.protobuf.SyncMessage.Request.Type.GROUPS;
|
||||||
var syncMessage = new textsecure.protobuf.SyncMessage();
|
var syncMessage = this.createSyncMessage();
|
||||||
syncMessage.request = request;
|
syncMessage.request = request;
|
||||||
var contentMessage = new textsecure.protobuf.Content();
|
var contentMessage = new textsecure.protobuf.Content();
|
||||||
contentMessage.syncMessage = syncMessage;
|
contentMessage.syncMessage = syncMessage;
|
||||||
|
@ -279,7 +292,7 @@ MessageSender.prototype = {
|
||||||
if (myDevice != 1) {
|
if (myDevice != 1) {
|
||||||
var request = new textsecure.protobuf.SyncMessage.Request();
|
var request = new textsecure.protobuf.SyncMessage.Request();
|
||||||
request.type = textsecure.protobuf.SyncMessage.Request.Type.CONTACTS;
|
request.type = textsecure.protobuf.SyncMessage.Request.Type.CONTACTS;
|
||||||
var syncMessage = new textsecure.protobuf.SyncMessage();
|
var syncMessage = this.createSyncMessage();
|
||||||
syncMessage.request = request;
|
syncMessage.request = request;
|
||||||
var contentMessage = new textsecure.protobuf.Content();
|
var contentMessage = new textsecure.protobuf.Content();
|
||||||
contentMessage.syncMessage = syncMessage;
|
contentMessage.syncMessage = syncMessage;
|
||||||
|
@ -291,7 +304,7 @@ MessageSender.prototype = {
|
||||||
var myNumber = textsecure.storage.user.getNumber();
|
var myNumber = textsecure.storage.user.getNumber();
|
||||||
var myDevice = textsecure.storage.user.getDeviceId();
|
var myDevice = textsecure.storage.user.getDeviceId();
|
||||||
if (myDevice != 1) {
|
if (myDevice != 1) {
|
||||||
var syncMessage = new textsecure.protobuf.SyncMessage();
|
var syncMessage = this.createSyncMessage();
|
||||||
syncMessage.read = [];
|
syncMessage.read = [];
|
||||||
for (var i = 0; i < reads.length; ++i) {
|
for (var i = 0; i < reads.length; ++i) {
|
||||||
var read = new textsecure.protobuf.SyncMessage.Read();
|
var read = new textsecure.protobuf.SyncMessage.Read();
|
||||||
|
@ -314,7 +327,7 @@ MessageSender.prototype = {
|
||||||
verified.destination = destination;
|
verified.destination = destination;
|
||||||
verified.identityKey = identityKey;
|
verified.identityKey = identityKey;
|
||||||
|
|
||||||
var syncMessage = new textsecure.protobuf.SyncMessage();
|
var syncMessage = this.createSyncMessage();
|
||||||
syncMessage.verified = verified;
|
syncMessage.verified = verified;
|
||||||
|
|
||||||
var contentMessage = new textsecure.protobuf.Content();
|
var contentMessage = new textsecure.protobuf.Content();
|
||||||
|
|
Loading…
Add table
Reference in a new issue