add ece transformers
This commit is contained in:
parent
fdef37287d
commit
a8fef2c0a5
3 changed files with 366 additions and 0 deletions
88
test/frontend/tests/streaming-tests.js
Normal file
88
test/frontend/tests/streaming-tests.js
Normal file
|
@ -0,0 +1,88 @@
|
|||
const streams = require('web-streams-polyfill');
|
||||
const ece = require('http_ece');
|
||||
require('buffer');
|
||||
|
||||
import assert from 'assert';
|
||||
import { b64ToArray } from '../../../app/utils';
|
||||
import ECETransformer from '../../../app/ece.js';
|
||||
import BlobSliceStream from '../../../app/blobslicer.js';
|
||||
|
||||
const decoder = new TextDecoder('utf-8');
|
||||
const rs = 36;
|
||||
|
||||
const str = 'You are the dancing queen, young and sweet, only seventeen.';
|
||||
const testSalt = 'I1BsxtFttlv3u_Oo94xnmw';
|
||||
const keystr = 'yqdlZ-tYemfogSmv7Ws5PQ';
|
||||
|
||||
const buffer = Buffer.from(str);
|
||||
const params = {
|
||||
version: 'aes128gcm',
|
||||
rs: rs,
|
||||
salt: testSalt,
|
||||
keyid: '',
|
||||
key: keystr
|
||||
};
|
||||
|
||||
const encrypted = ece.encrypt(buffer, params);
|
||||
const decrypted = ece.decrypt(encrypted, params);
|
||||
|
||||
describe('Streaming', function() {
|
||||
//testing against http_ece's implementation
|
||||
describe('ECE', function() {
|
||||
const key = b64ToArray(keystr);
|
||||
const salt = b64ToArray(testSalt).buffer;
|
||||
const blob = new Blob([str], { type: 'text/plain' });
|
||||
|
||||
it('blob slice stream works', async function() {
|
||||
const rs = await new BlobSliceStream(blob, 100);
|
||||
const reader = rs.getReader();
|
||||
|
||||
let result = '';
|
||||
let state = await reader.read();
|
||||
while (!state.done) {
|
||||
result = decoder.decode(state.value);
|
||||
state = await reader.read();
|
||||
}
|
||||
|
||||
assert.equal(result, str);
|
||||
});
|
||||
|
||||
it('can encrypt', async function() {
|
||||
const enc = new streams.TransformStream(
|
||||
new ECETransformer('encrypt', key, rs, salt)
|
||||
);
|
||||
|
||||
const rstream = await new BlobSliceStream(blob, rs - 17);
|
||||
|
||||
const reader = rstream.pipeThrough(enc).getReader();
|
||||
let result = Buffer.from([]);
|
||||
|
||||
let state = await reader.read();
|
||||
while (!state.done) {
|
||||
result = Buffer.concat([result, state.value]);
|
||||
state = await reader.read();
|
||||
}
|
||||
|
||||
assert.deepEqual(result, encrypted);
|
||||
});
|
||||
|
||||
it('can decrypt', async function() {
|
||||
const encBlob = new Blob([encrypted]);
|
||||
const dec = new streams.TransformStream(
|
||||
new ECETransformer('decrypt', key, rs)
|
||||
);
|
||||
|
||||
const rstream = await new BlobSliceStream(encBlob, rs, true);
|
||||
const reader = rstream.pipeThrough(dec).getReader();
|
||||
let result = Buffer.from([]);
|
||||
|
||||
let state = await reader.read();
|
||||
while (!state.done) {
|
||||
result = Buffer.concat([result, state.value]);
|
||||
state = await reader.read();
|
||||
}
|
||||
|
||||
assert.deepEqual(result, decrypted);
|
||||
});
|
||||
});
|
||||
});
|
Loading…
Add table
Add a link
Reference in a new issue