openvibers/openvibe.sdk Commits

Add blind fill Link Send test vector (#145)

OP OpenVibers committed 4 days ago · 8c35e66fe7 · 2 files, +54 −0

Changes

ddiff --git a/test/locker-blind-fill-vector.test.js b/test/locker-blind-fill-vector.test.js
nnew file mode 100644
iindex 0000000..cdb1a19
---- /dev/null
++++ b/test/locker-blind-fill-vector.test.js
@@@ -0,0 +1,25 @@
++'use strict';
++
++const assert = require('node:assert/strict');
++const fs = require('node:fs');
++const path = require('node:path');
++const { run } = require('./helpers');
++const locker = require('../src/locker');
++const { PERSON, fixedRandom } = require('../src/locker/vectors');
++
++const vector = JSON.parse(fs.readFileSync(path.join(__dirname, '../testdata/blind-fill-link-send-v1.json'), 'utf8'));
++
++run([['Locker blind-fill Link Send vector is stable and opens in the SDK', async () => {
++ const sealed = await locker.seal(vector.plaintext_json, {
++ lock: 'people',
++ keys: [{ subject: vector.recipient, publicKey: PERSON.ecdhPublic }],
++ random: fixedRandom(0x4f565f46),
++ ephemeral: { private: PERSON.ecdh },
++ });
++ assert.equal(Buffer.from(sealed.bytes).toString('base64'), vector.envelope_base64, 'SDK generation matches the cross-language fixture');
++ const opened = await locker.open(Buffer.from(vector.envelope_base64, 'base64'), {
++ privateKey: PERSON.ecdh,
++ subject: vector.recipient,
++ });
++ assert.deepEqual(JSON.parse(new TextDecoder().decode(opened)), vector.expected);
++}]]);
ddiff --git a/testdata/blind-fill-link-send-v1.json b/testdata/blind-fill-link-send-v1.json
nnew file mode 100644
iindex 0000000..f219cd8
---- /dev/null
++++ b/testdata/blind-fill-link-send-v1.json
@@@ -0,0 +1,29 @@
++{
++ "format": "openvibe-locker-link-send-v1",
++ "recipient": {
++ "type": "node",
++ "id": "nod_01JAB2C3D4E5F6G7H8J9K0MNPQ"
++ },
++ "private_jwk": {
++ "key_ops": [
++ "deriveBits"
++ ],
++ "ext": true,
++ "kty": "EC",
++ "x": "pNngpTSE3X3C_CGzfpAtenjliLPFZ9arBVNtI0ctPXw",
++ "y": "fXZT2JcDDiXEb6xH3LUrqlPakM3GQwe3aqbV_1vhVLI",
++ "crv": "P-256",
++ "d": "cG9YgmeoPeaI8lXZRpijV5--2sC4rYWSqWbyGCYKPu0"
++ },
++ "plaintext_json": "{\"request_id\":\"fr_01JAB2C3D4E5F6G7H8J9K0MNPQ\",\"origin\":\"https://example.org\",\"username\":\"vector-user\",\"password\":\"vector-password\",\"code\":\"123456\",\"submit\":true,\"exp\":1893456000000}",
++ "envelope_base64": "T1ZMSwAAAnJ7ImNodW5rX3NpemUiOjEwNDg1NzYsImxvY2siOiJwZW9wbGUiLCJub25jZV9iYXNlIjoieDZFalZrUDBHSUk9IiwicGFkZGVkX3NpemUiOjI1Niwic2xvdHMiOnsicGVvcGxlIjpbeyJhbGdvcml0aG0iOiJFQ0RILVAyNTYvSEtERi1TSEEyNTYvQUVTLTI1Ni1HQ00iLCJlcGhlbWVyYWxfcHVibGljX2tleSI6eyJjcnYiOiJQLTI1NiIsImt0eSI6IkVDIiwieCI6InBObmdwVFNFM1gzQ19DR3pmcEF0ZW5qbGlMUEZaOWFyQlZOdEkwY3RQWHciLCJ5IjoiZlhaVDJKY0REaVhFYjZ4SDNMVXJxbFBha00zR1F3ZTNhcWJWXzF2aFZMSSJ9LCJub25jZSI6ImdkRHZ6MmI1aDdUM1NHS3EiLCJyZWNpcGllbnRfa2V5IjoiVENHaDJnSDZISXVUMC1BOUdlMGpPVHJGbVJYV1FrZEE2ZlpHOEp4aWtUQSIsInNhbHQiOiI1MXV5RmtBZkxmaUtQMEFjZWJ3eTdnPT0iLCJzdWJqZWN0Ijp7ImlkIjoibm9kXzAxSkFCMkMzRDRFNUY2RzdIOEo5SzBNTlBRIiwidHlwZSI6Im5vZGUifSwid3JhcHBlZF9rZXkiOiJYUy9wcDhtako5by90alpYOHNMcDBXcnA2RTVnTXNFeGFJYmJkalRBMXMxWXl5K290WFEzSFNtZDZGNWR1Mlp0In1dfSwic3VpdGUiOiJBRVMtMjU2LUdDTSIsInZlcnNpb24iOiJsb2NrZXIuZW52ZWxvcGUudjEifQAAARABx6EjVkP0GIIAAAAA69pYH8E0kbpjNaAex1w2c3LlQrxhh736ExhRmzg6br1BRsQhpfz6lnnj7HSwPHl9tokF8lFZ7B/StHSeKZjXlwIib6cK/v5ochfyGemSfYL5e7s9cNUjBJDWZ9SjuiZ9MGRdPJiHbP8BLvtToG4MrvRudpXHY5XfQKoZg1sNbSeW0HfrsGasGQcEjGdvrRUeYFDDBmTL1B5Dk9+X1eHRNTtiQJ5HWibwP+UocDmKrqLypSEsip1D8gjjuBkHgLy39yc0lvGcg14+4AD668aC8BgDHI/5AVL+FLCN7FceUKYuupW2x+B0PlsT9VQWy6EUuIcXd2s2Y/bP/p601ZkUi8WLrNmwl4hS7YT4pvPKJ70=",
++ "expected": {
++ "request_id": "fr_01JAB2C3D4E5F6G7H8J9K0MNPQ",
++ "origin": "https://example.org",
++ "username": "vector-user",
++ "password": "vector-password",
++ "code": "123456",
++ "submit": true,
++ "exp": 1893456000000
++ }
++}