Enforce stronger types for ArrayBuffers and storage
This commit is contained in:
parent
61ac79e9ae
commit
8f5086227a
56 changed files with 748 additions and 675 deletions
|
@ -15,7 +15,11 @@ import { signal } from '../protobuf/compiled';
|
|||
import { sessionStructureToArrayBuffer } from '../util/sessionTranslation';
|
||||
import { Zone } from '../util/Zone';
|
||||
|
||||
import { getRandomBytes, constantTimeEqual } from '../Crypto';
|
||||
import {
|
||||
getRandomBytes,
|
||||
constantTimeEqual,
|
||||
typedArrayToArrayBuffer as toArrayBuffer,
|
||||
} from '../Crypto';
|
||||
import { clampPrivateKey, setPublicKeyTypeByte } from '../Curve';
|
||||
import { SignalProtocolStore, GLOBAL_ZONE } from '../SignalProtocolStore';
|
||||
import { IdentityKeyType, KeyPairType } from '../textsecure/Types.d';
|
||||
|
@ -173,7 +177,10 @@ describe('SignalProtocolStore', () => {
|
|||
}
|
||||
|
||||
assert.isTrue(
|
||||
constantTimeEqual(expected.serialize(), actual.serialize())
|
||||
constantTimeEqual(
|
||||
toArrayBuffer(expected.serialize()),
|
||||
toArrayBuffer(actual.serialize())
|
||||
)
|
||||
);
|
||||
|
||||
await store.removeSenderKey(encodedAddress, distributionId);
|
||||
|
@ -203,7 +210,10 @@ describe('SignalProtocolStore', () => {
|
|||
}
|
||||
|
||||
assert.isTrue(
|
||||
constantTimeEqual(expected.serialize(), actual.serialize())
|
||||
constantTimeEqual(
|
||||
toArrayBuffer(expected.serialize()),
|
||||
toArrayBuffer(actual.serialize())
|
||||
)
|
||||
);
|
||||
|
||||
await store.removeSenderKey(encodedAddress, distributionId);
|
||||
|
|
|
@ -12,6 +12,8 @@ import * as sinon from 'sinon';
|
|||
import EventEmitter from 'events';
|
||||
import { connection as WebSocket } from 'websocket';
|
||||
|
||||
import { typedArrayToArrayBuffer as toArrayBuffer } from '../Crypto';
|
||||
|
||||
import WebSocketResource from '../textsecure/WebsocketResources';
|
||||
|
||||
describe('WebSocket-Resource', () => {
|
||||
|
@ -29,7 +31,7 @@ describe('WebSocket-Resource', () => {
|
|||
|
||||
sinon.stub(socket, 'sendBytes').callsFake((data: Uint8Array) => {
|
||||
const message = window.textsecure.protobuf.WebSocketMessage.decode(
|
||||
data
|
||||
toArrayBuffer(data)
|
||||
);
|
||||
assert.strictEqual(
|
||||
message.type,
|
||||
|
@ -86,7 +88,7 @@ describe('WebSocket-Resource', () => {
|
|||
|
||||
sinon.stub(socket, 'sendBytes').callsFake((data: Uint8Array) => {
|
||||
const message = window.textsecure.protobuf.WebSocketMessage.decode(
|
||||
data
|
||||
toArrayBuffer(data)
|
||||
);
|
||||
assert.strictEqual(
|
||||
message.type,
|
||||
|
@ -166,7 +168,7 @@ describe('WebSocket-Resource', () => {
|
|||
|
||||
sinon.stub(socket, 'sendBytes').callsFake(data => {
|
||||
const message = window.textsecure.protobuf.WebSocketMessage.decode(
|
||||
data
|
||||
toArrayBuffer(data)
|
||||
);
|
||||
assert.strictEqual(
|
||||
message.type,
|
||||
|
@ -189,7 +191,7 @@ describe('WebSocket-Resource', () => {
|
|||
|
||||
sinon.stub(socket, 'sendBytes').callsFake(data => {
|
||||
const message = window.textsecure.protobuf.WebSocketMessage.decode(
|
||||
data
|
||||
toArrayBuffer(data)
|
||||
);
|
||||
assert.strictEqual(
|
||||
message.type,
|
||||
|
@ -230,7 +232,7 @@ describe('WebSocket-Resource', () => {
|
|||
|
||||
sinon.stub(socket, 'sendBytes').callsFake(data => {
|
||||
const message = window.textsecure.protobuf.WebSocketMessage.decode(
|
||||
data
|
||||
toArrayBuffer(data)
|
||||
);
|
||||
assert.strictEqual(
|
||||
message.type,
|
||||
|
|
|
@ -44,14 +44,15 @@ describe('#cleanupSessionResets', () => {
|
|||
it('filters out falsey items', () => {
|
||||
const startValue = {
|
||||
one: 0,
|
||||
two: false,
|
||||
three: Date.now(),
|
||||
two: Date.now(),
|
||||
};
|
||||
window.storage.put('sessionResets', startValue);
|
||||
cleanupSessionResets();
|
||||
const actual = window.storage.get('sessionResets');
|
||||
|
||||
const expected = window._.pick(startValue, ['three']);
|
||||
const expected = window._.pick(startValue, ['two']);
|
||||
assert.deepEqual(actual, expected);
|
||||
|
||||
assert.deepEqual(Object.keys(startValue), ['two']);
|
||||
});
|
||||
});
|
||||
|
|
|
@ -37,8 +37,8 @@ describe('Message', () => {
|
|||
});
|
||||
|
||||
after(async () => {
|
||||
window.textsecure.storage.put('number_id', null);
|
||||
window.textsecure.storage.put('uuid_id', null);
|
||||
window.textsecure.storage.remove('number_id');
|
||||
window.textsecure.storage.remove('uuid_id');
|
||||
|
||||
await window.Signal.Data.removeAll();
|
||||
await window.storage.fetch();
|
||||
|
|
|
@ -66,7 +66,7 @@ describe('routineProfileRefresh', () => {
|
|||
return result;
|
||||
}
|
||||
|
||||
function makeStorage(lastAttemptAt: undefined | number = undefined) {
|
||||
function makeStorage(lastAttemptAt?: number) {
|
||||
return {
|
||||
get: sinonSandbox
|
||||
.stub()
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue