Enforce stronger types for ArrayBuffers and storage

This commit is contained in:
Fedor Indutny 2021-06-14 17:09:37 -07:00 committed by GitHub
parent 61ac79e9ae
commit 8f5086227a
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
56 changed files with 748 additions and 675 deletions

View file

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

View file

@ -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,

View file

@ -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']);
});
});

View file

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

View file

@ -66,7 +66,7 @@ describe('routineProfileRefresh', () => {
return result;
}
function makeStorage(lastAttemptAt: undefined | number = undefined) {
function makeStorage(lastAttemptAt?: number) {
return {
get: sinonSandbox
.stub()