Support for undefined preKey

This commit is contained in:
lilia 2017-02-08 22:23:42 -08:00
parent a768b94471
commit 819ba8ee74
2 changed files with 20 additions and 10 deletions

View file

@ -37792,14 +37792,19 @@ var TextSecureServer = (function() {
} }
res.identityKey = StringView.base64ToBytes(res.identityKey); res.identityKey = StringView.base64ToBytes(res.identityKey);
res.devices.forEach(function(device) { res.devices.forEach(function(device) {
if ( !validateResponse(device, {signedPreKey: 'object', preKey: 'object'}) || if ( !validateResponse(device, {signedPreKey: 'object'}) ||
!validateResponse(device.signedPreKey, {publicKey: 'string', signature: 'string'}) || !validateResponse(device.signedPreKey, {publicKey: 'string', signature: 'string'}) ) {
!validateResponse(device.preKey, {publicKey: 'string'})) { throw new Error("Invalid signedPreKey");
throw new Error("Invalid response"); }
if ( device.preKey ) {
if ( !validateResponse(device, {preKey: 'object'}) ||
!validateResponse(device.preKey, {publicKey: 'string'})) {
throw new Error("Invalid preKey");
}
device.preKey.publicKey = StringView.base64ToBytes(device.preKey.publicKey);
} }
device.signedPreKey.publicKey = StringView.base64ToBytes(device.signedPreKey.publicKey); device.signedPreKey.publicKey = StringView.base64ToBytes(device.signedPreKey.publicKey);
device.signedPreKey.signature = StringView.base64ToBytes(device.signedPreKey.signature); device.signedPreKey.signature = StringView.base64ToBytes(device.signedPreKey.signature);
device.preKey.publicKey = StringView.base64ToBytes(device.preKey.publicKey);
}); });
return res; return res;
}); });

View file

@ -315,14 +315,19 @@ var TextSecureServer = (function() {
} }
res.identityKey = StringView.base64ToBytes(res.identityKey); res.identityKey = StringView.base64ToBytes(res.identityKey);
res.devices.forEach(function(device) { res.devices.forEach(function(device) {
if ( !validateResponse(device, {signedPreKey: 'object', preKey: 'object'}) || if ( !validateResponse(device, {signedPreKey: 'object'}) ||
!validateResponse(device.signedPreKey, {publicKey: 'string', signature: 'string'}) || !validateResponse(device.signedPreKey, {publicKey: 'string', signature: 'string'}) ) {
!validateResponse(device.preKey, {publicKey: 'string'})) { throw new Error("Invalid signedPreKey");
throw new Error("Invalid response"); }
if ( device.preKey ) {
if ( !validateResponse(device, {preKey: 'object'}) ||
!validateResponse(device.preKey, {publicKey: 'string'})) {
throw new Error("Invalid preKey");
}
device.preKey.publicKey = StringView.base64ToBytes(device.preKey.publicKey);
} }
device.signedPreKey.publicKey = StringView.base64ToBytes(device.signedPreKey.publicKey); device.signedPreKey.publicKey = StringView.base64ToBytes(device.signedPreKey.publicKey);
device.signedPreKey.signature = StringView.base64ToBytes(device.signedPreKey.signature); device.signedPreKey.signature = StringView.base64ToBytes(device.signedPreKey.signature);
device.preKey.publicKey = StringView.base64ToBytes(device.preKey.publicKey);
}); });
return res; return res;
}); });