Consider anything padding (#1641)
* Session v1.6.2 (#1639)
* padd Message buffer for all outgoing messages (even opengroupv2)
* pad and unpad message everywhere
attachment not padded for opengroup only
* lint
* enable fileserver v2 sending side
* removed all en unused local strings
* remove all unused keys for other locales
* update displayname even if we dont have avatar on incoming profile
* redesign group invitation message type
* ask confirmation before joining opengroup invitation
* remove the channelId from groupInvitation
* fallback to envelope timestamp if dataMessage.timestamp is 0
* match group invitation design with ios
* speed up first load of room message by prefetching token
* create convo for members if they don't exist
also, removing a private convo does not remove it entirely as we need
the convo to be able to remove members
* fix avatar download on restore when linking device
Fixes #1601
* make sure the left member convo exist in rendering GroupUpdate
* Reply attachments (#1591)
* First attachment showing in reply composition.
* WIP: Adding thumbnail to quote response composition component.
* Added icon for voice recording attachment
* Updated formatting.
* Formatting.
* removed duplicate styling.
* WIP: Converting quote component to functional components.
* Fix bug where thumbnails for attachment replies wasn't showing.
* yarn Formatting.
* Removed old quote component.
* Add type to contentTypeSupported method.
* Moved quote subcomponents out of Quote component.
* yarn format
* Add export to quote subcomponents.
* Fixing linting errors.
* remove commented line.
* Addressing PR comments.
* Allow pasting images into composition box as attachments (#1616)
* Allow pasting images into composition box as attachments
* Fix linter errors
* Fix typo
* Get snode from snode (#1614)
* force deleteAccount after 10sec timeout waiting for configMessage
* move some constants to file where they are used
* add a way to fetch snodes from snodes
* remove a snode from a pubkey's swarm if we get 421 without valid content
* remove getVersion from snodes
* hide groupMembers in right panel for non-group convo
* Fix fonts sans serif (#1619)
* force deleteAccount after 10sec timeout waiting for configMessage
* move some constants to file where they are used
* add a way to fetch snodes from snodes
* remove a snode from a pubkey's swarm if we get 421 without valid content
* remove getVersion from snodes
* hide groupMembers in right panel for non-group convo
* fix font sans serif by using roboto instead
Fixes #1617
* WIP: User nicknames (#1618)
* WIP Adding change nickname dialog.
* WIP adding nickname change dialog.
* WIP nickname dialog.
* WIP: Able to set conversation nicknames. Next step cleaning and adding to conversation list menu.
* Fix message capitilisations.
* Add change nickname to conversation list menu.
* Enable clear nickname menu item.
* Added messages for changing nicknames.
* Clearing nicknames working from header and message list.
* Adding modal styling to nickname modal.
* Reorder nickname menu item positions.
* Add group based conditional nickname menu options to conversation header menu.
* minor tidying.
* Remove unused error causing el option.
* Formatting.
* Linting fixes.
* Made PR fixes
* Prioritise displaying nicknames for inviting new closed group members
and updating closed group members.
* Fix app image start for non-debian based distribs (#1622)
Fixes #1620
* fixup nickname dialog for enter key pressed event (#1623)
also add some type for it and remove unused props
* Fix attachment extension vnd (#1628)
* allow openoffice document extension and don't use
* allow opendocument to be shared with the extension rather than mimetype
Fixes #1593
* allow message without padding
* add test for odt files
* More Japanese translations (#1632)
* Translate some untranslated strings into Japanese
* Tweak some Japanese translations
* Add new Japanese translations
* WIP: Closed group reliability (#1630)
* WIP: added non-durable messaging function.
* WIP: Non-durable sending
* WIP: adding dialog box.
* Creating dialog if group invite message promises don't return true.
* removed console log
* applied PR changes, linting and formatting.
* WIP: allowing resend invite to failures.
* using lookup.
* WIP: recursively opening dialog.
* WIP: debugging reject triggering on confirmation modal.
* register events fix.
* Closed group invite retry dialog working.
* Added english text to messages.
* Prevent saving of hexkey pair if it already exists.
* Fixed nickname edit
input trimming end letter.
* Don't show closed group invite dialog unless it has failed at least once.
* Fix linting error.
* Fix plurality.
* Ensure admin members are included in all invite reattempts, mixed plurality.
* test fixing windows build
* Revert "test fixing windows build"
This reverts commit 8ed2e0891d
.
Co-authored-by: Warrick <wcor690@aucklanduni.ac.nz>
Co-authored-by: shellhazard <unva1idated@protonmail.com>
Co-authored-by: beantaco <64012487+beantaco@users.noreply.github.com>
* attachment padding not enforced to be 0x00
* add message an attachment padding test
Co-authored-by: Warrick <wcor690@aucklanduni.ac.nz>
Co-authored-by: shellhazard <unva1idated@protonmail.com>
Co-authored-by: beantaco <64012487+beantaco@users.noreply.github.com>
pull/1642/head
parent
57192699fa
commit
3393c7dfe4
@ -0,0 +1,92 @@
|
||||
// tslint:disable: no-implicit-dependencies max-func-body-length no-unused-expression
|
||||
|
||||
import chai from 'chai';
|
||||
import * as sinon from 'sinon';
|
||||
import _ from 'lodash';
|
||||
import { describe } from 'mocha';
|
||||
|
||||
import chaiAsPromised from 'chai-as-promised';
|
||||
import {
|
||||
addAttachmentPadding,
|
||||
addMessagePadding,
|
||||
getUnpaddedAttachment,
|
||||
removeMessagePadding,
|
||||
} from '../../../../session/crypto/BufferPadding';
|
||||
chai.use(chaiAsPromised as any);
|
||||
chai.should();
|
||||
|
||||
const { expect } = chai;
|
||||
|
||||
// tslint:disable-next-line: max-func-body-length
|
||||
describe('Padding', () => {
|
||||
describe('Attachment padding', () => {
|
||||
it('add padding', () => {
|
||||
const bufferIn = new Uint8Array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]);
|
||||
|
||||
const paddedBuffer = addAttachmentPadding(bufferIn);
|
||||
expect(paddedBuffer.byteLength).to.equal(541);
|
||||
expect(new Uint8Array(paddedBuffer.slice(0, bufferIn.length))).to.equalBytes(bufferIn);
|
||||
// this makes sure that the padding is just the 0 bytes
|
||||
expect(new Uint8Array(paddedBuffer.slice(bufferIn.length))).to.equalBytes(
|
||||
new Uint8Array(541 - bufferIn.length)
|
||||
);
|
||||
});
|
||||
|
||||
it('remove padding', () => {
|
||||
// padding can be anything after the expected size
|
||||
const expectedSize = 10;
|
||||
const paddedBuffer = new Uint8Array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 5]);
|
||||
|
||||
const paddingRemoveBuffer = getUnpaddedAttachment(paddedBuffer, expectedSize);
|
||||
|
||||
expect(paddingRemoveBuffer?.byteLength).to.equal(expectedSize);
|
||||
expect(paddingRemoveBuffer).to.equalBytes(paddedBuffer.slice(0, expectedSize));
|
||||
});
|
||||
});
|
||||
|
||||
describe('Message padding', () => {
|
||||
it('add padding', () => {
|
||||
const bufferIn = new Uint8Array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]);
|
||||
|
||||
const paddedMessage = addMessagePadding(bufferIn);
|
||||
expect(paddedMessage.byteLength).to.equal(159);
|
||||
// for message padding, we have [bufferIn, 0x80, 0x00, 0x00, 0x00, ...]
|
||||
expect(new Uint8Array(paddedMessage.slice(0, bufferIn.length))).to.equalBytes(bufferIn);
|
||||
expect(paddedMessage[bufferIn.length]).to.equal(0x80);
|
||||
// this makes sure that the padding is just the 0 bytes
|
||||
expect(new Uint8Array(paddedMessage.slice(bufferIn.length + 1))).to.equalBytes(
|
||||
new Uint8Array(159 - bufferIn.length - 1)
|
||||
);
|
||||
});
|
||||
|
||||
it('remove padding', () => {
|
||||
const expectedSize = 10;
|
||||
const paddedBuffer = new Uint8Array([
|
||||
0,
|
||||
1,
|
||||
2,
|
||||
3,
|
||||
4,
|
||||
5,
|
||||
6,
|
||||
7,
|
||||
8,
|
||||
9,
|
||||
128,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
]);
|
||||
|
||||
const unpaddedMessage = removeMessagePadding(paddedBuffer);
|
||||
// for message padding, we have [paddedBuffer, 0x80, 0x00, 0x00, 0x00, ...]
|
||||
expect(unpaddedMessage?.byteLength).to.equal(expectedSize);
|
||||
expect(new Uint8Array(unpaddedMessage)).to.equalBytes(paddedBuffer.slice(0, expectedSize));
|
||||
});
|
||||
});
|
||||
});
|
Loading…
Reference in New Issue