Randomly pad all sync messages

WhisperSystems/libsignal-service-java@c46cdc0aa5

// FREEBIE
This commit is contained in:
lilia 2017-06-21 16:21:47 -07:00 committed by Scott Nonnenberg
parent 7bfb66b13b
commit 6e758fc1ea
2 changed files with 36 additions and 10 deletions

View file

@ -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();

View file

@ -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();