@ledgerhq/ledger-key-ring-protocol 0.5.3 → 0.5.4-nightly.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.turbo/turbo-build.log +2 -2
- package/CHANGELOG.md +20 -0
- package/lib/HWDeviceProvider.js +49 -51
- package/lib/HWDeviceProvider.js.map +1 -1
- package/lib/api.js +79 -108
- package/lib/api.js.map +1 -1
- package/lib/auth.js +29 -40
- package/lib/auth.js.map +1 -1
- package/lib/mockSdk.js +95 -115
- package/lib/mockSdk.js.map +1 -1
- package/lib/qrcode/index.js +155 -168
- package/lib/qrcode/index.js.map +1 -1
- package/lib/qrcode/index.test.js +13 -22
- package/lib/qrcode/index.test.js.map +1 -1
- package/lib/sdk.js +231 -270
- package/lib/sdk.js.map +1 -1
- package/lib/store.js +3 -3
- package/lib/store.js.map +1 -1
- package/lib-es/HWDeviceProvider.js +49 -51
- package/lib-es/HWDeviceProvider.js.map +1 -1
- package/lib-es/api.js +79 -108
- package/lib-es/api.js.map +1 -1
- package/lib-es/auth.js +29 -40
- package/lib-es/auth.js.map +1 -1
- package/lib-es/mockSdk.js +95 -115
- package/lib-es/mockSdk.js.map +1 -1
- package/lib-es/qrcode/index.js +155 -168
- package/lib-es/qrcode/index.js.map +1 -1
- package/lib-es/qrcode/index.test.js +13 -22
- package/lib-es/qrcode/index.test.js.map +1 -1
- package/lib-es/sdk.js +231 -270
- package/lib-es/sdk.js.map +1 -1
- package/lib-es/store.js +3 -3
- package/lib-es/store.js.map +1 -1
- package/package.json +8 -8
- package/tsconfig.json +0 -1
package/lib-es/qrcode/index.js
CHANGED
|
@@ -1,12 +1,3 @@
|
|
|
1
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
-
});
|
|
9
|
-
};
|
|
10
1
|
import { Permissions, crypto } from "@ledgerhq/hw-ledger-key-ring-protocol";
|
|
11
2
|
import WebSocket from "isomorphic-ws";
|
|
12
3
|
import { makeCipher, makeMessageCipher } from "./cipher";
|
|
@@ -14,7 +5,7 @@ import { InvalidDigitsError, NoTrustchainInitialized, QRCodeWSClosed, ScannedInv
|
|
|
14
5
|
import { log } from "@ledgerhq/logs";
|
|
15
6
|
const version = 1;
|
|
16
7
|
const CLOSE_TIMEOUT = 100; // just enough time for the onerror to appear before onclose
|
|
17
|
-
const commonSwitch =
|
|
8
|
+
const commonSwitch = async ({ data, cipher, addMember, send, publisher, resolve, memberCredentials, memberName, reject, ws, setFinished, initialTrustchainId, }) => {
|
|
18
9
|
switch (data.message) {
|
|
19
10
|
case "TrustchainShareCredential": {
|
|
20
11
|
if (!initialTrustchainId) {
|
|
@@ -30,7 +21,7 @@ const commonSwitch = (_a) => __awaiter(void 0, [_a], void 0, function* ({ data,
|
|
|
30
21
|
throw new Error("sessionEncryptionKey not set");
|
|
31
22
|
}
|
|
32
23
|
const { id, name } = cipher.decryptMessage(data);
|
|
33
|
-
const trustchain =
|
|
24
|
+
const trustchain = await addMember({ id, name, permissions: Permissions.OWNER });
|
|
34
25
|
const payload = cipher.encryptMessagePayload({ trustchain });
|
|
35
26
|
send({ version, publisher, message: "TrustchainAddedMember", payload });
|
|
36
27
|
resolve();
|
|
@@ -75,96 +66,94 @@ const commonSwitch = (_a) => __awaiter(void 0, [_a], void 0, function* ({ data,
|
|
|
75
66
|
default:
|
|
76
67
|
throw new Error("unexpected message");
|
|
77
68
|
}
|
|
78
|
-
}
|
|
69
|
+
};
|
|
79
70
|
/**
|
|
80
71
|
* establish a channel to be able to add a member to the trustchain after displaying the QR Code
|
|
81
72
|
* @returns a promise that resolves when this is done
|
|
82
73
|
*/
|
|
83
|
-
export function createQRCodeHostInstance(
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
74
|
+
export async function createQRCodeHostInstance({ trustchainApiBaseUrl, onDisplayQRCode, onDisplayDigits, addMember, memberCredentials, memberName, initialTrustchainId, }) {
|
|
75
|
+
const ephemeralKey = crypto.randomKeypair();
|
|
76
|
+
const publisher = crypto.to_hex(ephemeralKey.publicKey);
|
|
77
|
+
const url = `${trustchainApiBaseUrl.replace("http", "ws")}/v1/qr?host=${publisher}`;
|
|
78
|
+
const ws = new WebSocket(url);
|
|
79
|
+
function send(message) {
|
|
80
|
+
ws.send(JSON.stringify(message));
|
|
81
|
+
}
|
|
82
|
+
let sessionEncryptionKey;
|
|
83
|
+
let cipher;
|
|
84
|
+
let expectedDigits;
|
|
85
|
+
let finished = false;
|
|
86
|
+
const setFinished = newValue => (finished = newValue);
|
|
87
|
+
onDisplayQRCode(url);
|
|
88
|
+
return new Promise((resolve, reject) => {
|
|
89
|
+
const startedAt = Date.now();
|
|
90
|
+
ws.addEventListener("error", reject);
|
|
91
|
+
ws.addEventListener("close", () => {
|
|
92
|
+
if (finished)
|
|
93
|
+
return;
|
|
94
|
+
// this error would reflect a protocol error. because otherwise, we would get the "error" event.
|
|
95
|
+
const time = Date.now() - startedAt;
|
|
96
|
+
reject(new QRCodeWSClosed("qrcode websocket prematurely closed", { time }));
|
|
97
|
+
});
|
|
98
|
+
ws.addEventListener("message", async (e) => {
|
|
99
|
+
try {
|
|
100
|
+
const data = parseMessage(e.data);
|
|
101
|
+
switch (data.message) {
|
|
102
|
+
case "InitiateHandshake": {
|
|
103
|
+
const candidatePublicKey = crypto.from_hex(data.payload.ephemeral_public_key);
|
|
104
|
+
sessionEncryptionKey = crypto.ecdh(ephemeralKey, candidatePublicKey);
|
|
105
|
+
cipher = makeMessageCipher(makeCipher(sessionEncryptionKey));
|
|
106
|
+
// --- end of handshake first phase ---
|
|
107
|
+
const digitsCount = 3;
|
|
108
|
+
const digits = randomDigits(digitsCount);
|
|
109
|
+
expectedDigits = digits;
|
|
110
|
+
onDisplayDigits(digits);
|
|
111
|
+
const payload = cipher.encryptMessagePayload({
|
|
112
|
+
digits: digitsCount,
|
|
113
|
+
connected: false,
|
|
114
|
+
});
|
|
115
|
+
send({ version, publisher, message: "HandshakeChallenge", payload });
|
|
116
|
+
break;
|
|
117
|
+
}
|
|
118
|
+
case "CompleteHandshakeChallenge": {
|
|
119
|
+
if (!cipher) {
|
|
120
|
+
throw new Error("sessionEncryptionKey not set");
|
|
127
121
|
}
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
message: "invalid digits",
|
|
138
|
-
};
|
|
139
|
-
send({ version, publisher, message: "Failure", payload });
|
|
140
|
-
throw new InvalidDigitsError("invalid digits");
|
|
141
|
-
}
|
|
142
|
-
const payload = cipher.encryptMessagePayload({});
|
|
143
|
-
send({ version, publisher, message: "HandshakeCompletionSucceeded", payload });
|
|
144
|
-
break;
|
|
122
|
+
const { digits } = cipher.decryptMessage(data);
|
|
123
|
+
if (digits !== expectedDigits) {
|
|
124
|
+
console.warn("User invalid digits", { digits, expectedDigits });
|
|
125
|
+
const payload = {
|
|
126
|
+
type: "HANDSHAKE_COMPLETION_FAILED",
|
|
127
|
+
message: "invalid digits",
|
|
128
|
+
};
|
|
129
|
+
send({ version, publisher, message: "Failure", payload });
|
|
130
|
+
throw new InvalidDigitsError("invalid digits");
|
|
145
131
|
}
|
|
132
|
+
const payload = cipher.encryptMessagePayload({});
|
|
133
|
+
send({ version, publisher, message: "HandshakeCompletionSucceeded", payload });
|
|
134
|
+
break;
|
|
146
135
|
}
|
|
147
|
-
yield commonSwitch({
|
|
148
|
-
data,
|
|
149
|
-
cipher,
|
|
150
|
-
addMember,
|
|
151
|
-
send,
|
|
152
|
-
publisher,
|
|
153
|
-
resolve,
|
|
154
|
-
memberCredentials,
|
|
155
|
-
memberName,
|
|
156
|
-
reject,
|
|
157
|
-
ws,
|
|
158
|
-
setFinished,
|
|
159
|
-
initialTrustchainId,
|
|
160
|
-
});
|
|
161
|
-
}
|
|
162
|
-
catch (e) {
|
|
163
|
-
console.error("socket error", e);
|
|
164
|
-
ws.close();
|
|
165
|
-
reject(e);
|
|
166
136
|
}
|
|
167
|
-
|
|
137
|
+
await commonSwitch({
|
|
138
|
+
data,
|
|
139
|
+
cipher,
|
|
140
|
+
addMember,
|
|
141
|
+
send,
|
|
142
|
+
publisher,
|
|
143
|
+
resolve,
|
|
144
|
+
memberCredentials,
|
|
145
|
+
memberName,
|
|
146
|
+
reject,
|
|
147
|
+
ws,
|
|
148
|
+
setFinished,
|
|
149
|
+
initialTrustchainId,
|
|
150
|
+
});
|
|
151
|
+
}
|
|
152
|
+
catch (e) {
|
|
153
|
+
console.error("socket error", e);
|
|
154
|
+
ws.close();
|
|
155
|
+
reject(e);
|
|
156
|
+
}
|
|
168
157
|
});
|
|
169
158
|
});
|
|
170
159
|
}
|
|
@@ -172,85 +161,83 @@ export function createQRCodeHostInstance(_a) {
|
|
|
172
161
|
* establish a channel to be able to add myself to the trustchain after scanning the QR Code
|
|
173
162
|
* @returns a promise that resolves a Trustchain when this is done
|
|
174
163
|
*/
|
|
175
|
-
export function createQRCodeCandidateInstance(
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
if (
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
164
|
+
export async function createQRCodeCandidateInstance({ memberCredentials, memberName, addMember, initialTrustchainId, scannedUrl, onRequestQRCodeInput, }) {
|
|
165
|
+
const m = scannedUrl.match(/host=([0-9A-Fa-f]+)/);
|
|
166
|
+
if (!m) {
|
|
167
|
+
if (isFromOldAccountsImport(scannedUrl))
|
|
168
|
+
throw new ScannedOldImportQrCode();
|
|
169
|
+
throw new ScannedInvalidQrCode();
|
|
170
|
+
}
|
|
171
|
+
const hostPublicKey = crypto.from_hex(m[1]);
|
|
172
|
+
const ephemeralKey = crypto.randomKeypair();
|
|
173
|
+
const publisher = crypto.to_hex(ephemeralKey.publicKey);
|
|
174
|
+
const sessionEncryptionKey = crypto.ecdh(ephemeralKey, hostPublicKey);
|
|
175
|
+
const cipher = makeMessageCipher(makeCipher(sessionEncryptionKey));
|
|
176
|
+
const ws = new WebSocket(scannedUrl);
|
|
177
|
+
function send(message) {
|
|
178
|
+
ws.send(JSON.stringify(message));
|
|
179
|
+
}
|
|
180
|
+
let finished = false;
|
|
181
|
+
const setFinished = newValue => (finished = newValue);
|
|
182
|
+
return new Promise((resolve, reject) => {
|
|
183
|
+
ws.addEventListener("close", () => {
|
|
184
|
+
if (finished)
|
|
185
|
+
return;
|
|
186
|
+
// this error would reflect a protocol error. because otherwise, we would get the "error" event. it shouldn't be visible to user, but we use it to ensure the promise ends.
|
|
187
|
+
setTimeout(() => reject(new Error("qrcode websocket prematurely closed")), CLOSE_TIMEOUT);
|
|
188
|
+
});
|
|
189
|
+
ws.addEventListener("message", async (e) => {
|
|
190
|
+
try {
|
|
191
|
+
const data = parseMessage(e.data);
|
|
192
|
+
switch (data.message) {
|
|
193
|
+
case "HandshakeChallenge": {
|
|
194
|
+
const config = cipher.decryptMessage(data);
|
|
195
|
+
onRequestQRCodeInput(config, digits => {
|
|
196
|
+
const payload = cipher.encryptMessagePayload({ digits });
|
|
197
|
+
send({ version, publisher, message: "CompleteHandshakeChallenge", payload });
|
|
198
|
+
});
|
|
199
|
+
break;
|
|
200
|
+
}
|
|
201
|
+
case "HandshakeCompletionSucceeded": {
|
|
202
|
+
if (initialTrustchainId) {
|
|
203
|
+
const payload = cipher.encryptMessagePayload({});
|
|
204
|
+
send({ version, publisher, message: "TrustchainRequestCredential", payload });
|
|
212
205
|
}
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
}
|
|
218
|
-
|
|
219
|
-
const payload = cipher.encryptMessagePayload({
|
|
220
|
-
id: memberCredentials.pubkey,
|
|
221
|
-
name: memberName,
|
|
222
|
-
});
|
|
223
|
-
send({ version, publisher, message: "TrustchainShareCredential", payload });
|
|
224
|
-
}
|
|
225
|
-
break;
|
|
206
|
+
else {
|
|
207
|
+
const payload = cipher.encryptMessagePayload({
|
|
208
|
+
id: memberCredentials.pubkey,
|
|
209
|
+
name: memberName,
|
|
210
|
+
});
|
|
211
|
+
send({ version, publisher, message: "TrustchainShareCredential", payload });
|
|
226
212
|
}
|
|
213
|
+
break;
|
|
227
214
|
}
|
|
228
|
-
yield commonSwitch({
|
|
229
|
-
data,
|
|
230
|
-
cipher,
|
|
231
|
-
addMember,
|
|
232
|
-
send,
|
|
233
|
-
publisher,
|
|
234
|
-
resolve,
|
|
235
|
-
memberCredentials,
|
|
236
|
-
memberName,
|
|
237
|
-
reject,
|
|
238
|
-
ws,
|
|
239
|
-
setFinished,
|
|
240
|
-
initialTrustchainId,
|
|
241
|
-
});
|
|
242
215
|
}
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
216
|
+
await commonSwitch({
|
|
217
|
+
data,
|
|
218
|
+
cipher,
|
|
219
|
+
addMember,
|
|
220
|
+
send,
|
|
221
|
+
publisher,
|
|
222
|
+
resolve,
|
|
223
|
+
memberCredentials,
|
|
224
|
+
memberName,
|
|
225
|
+
reject,
|
|
226
|
+
ws,
|
|
227
|
+
setFinished,
|
|
228
|
+
initialTrustchainId,
|
|
229
|
+
});
|
|
230
|
+
}
|
|
231
|
+
catch (e) {
|
|
232
|
+
console.error("socket error", e);
|
|
233
|
+
ws.close();
|
|
234
|
+
reject(e);
|
|
235
|
+
}
|
|
236
|
+
});
|
|
237
|
+
ws.addEventListener("error", reject);
|
|
238
|
+
ws.addEventListener("open", () => {
|
|
239
|
+
const payload = { ephemeral_public_key: crypto.to_hex(ephemeralKey.publicKey) };
|
|
240
|
+
send({ version, publisher, message: "InitiateHandshake", payload });
|
|
254
241
|
});
|
|
255
242
|
});
|
|
256
243
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/qrcode/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/qrcode/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,12 +1,3 @@
|
|
|
1
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
-
});
|
|
9
|
-
};
|
|
10
1
|
import { createQRCodeHostInstance, createQRCodeCandidateInstance } from ".";
|
|
11
2
|
import WebSocket from "ws";
|
|
12
3
|
import { convertKeyPairToLiveCredentials } from "../sdk";
|
|
@@ -38,7 +29,7 @@ describe("Trustchain QR Code", () => {
|
|
|
38
29
|
afterAll(() => {
|
|
39
30
|
server.close();
|
|
40
31
|
});
|
|
41
|
-
test("digits matching scenario", () =>
|
|
32
|
+
test("digits matching scenario", async () => {
|
|
42
33
|
const onDisplayDigits = jest.fn();
|
|
43
34
|
const trustchain = {
|
|
44
35
|
rootId: "test-root-id",
|
|
@@ -46,7 +37,7 @@ describe("Trustchain QR Code", () => {
|
|
|
46
37
|
applicationPath: "m/0'/16'/0'",
|
|
47
38
|
};
|
|
48
39
|
const addMember = jest.fn(() => Promise.resolve(trustchain));
|
|
49
|
-
const memberCredentials = convertKeyPairToLiveCredentials(
|
|
40
|
+
const memberCredentials = convertKeyPairToLiveCredentials(await crypto.randomKeypair());
|
|
50
41
|
const memberName = "foo";
|
|
51
42
|
let scannedUrlResolve;
|
|
52
43
|
const scannedUrlPromise = new Promise(resolve => {
|
|
@@ -65,7 +56,7 @@ describe("Trustchain QR Code", () => {
|
|
|
65
56
|
memberName,
|
|
66
57
|
initialTrustchainId: trustchain.rootId,
|
|
67
58
|
});
|
|
68
|
-
const scannedUrl =
|
|
59
|
+
const scannedUrl = await scannedUrlPromise;
|
|
69
60
|
const candidateP = createQRCodeCandidateInstance({
|
|
70
61
|
memberCredentials,
|
|
71
62
|
memberName,
|
|
@@ -74,20 +65,20 @@ describe("Trustchain QR Code", () => {
|
|
|
74
65
|
scannedUrl,
|
|
75
66
|
onRequestQRCodeInput,
|
|
76
67
|
});
|
|
77
|
-
const [_, res] =
|
|
68
|
+
const [_, res] = await Promise.all([hostP, candidateP]);
|
|
78
69
|
expect(onDisplayDigits).toHaveBeenCalledWith(expect.any(String));
|
|
79
70
|
expect(addMember).toHaveBeenCalled();
|
|
80
71
|
expect(onRequestQRCodeInput).toHaveBeenCalledWith({ digits: 3, connected: false }, expect.any(Function));
|
|
81
72
|
expect(res).toEqual(trustchain);
|
|
82
|
-
})
|
|
83
|
-
test("invalid qr code scanned", () =>
|
|
73
|
+
});
|
|
74
|
+
test("invalid qr code scanned", async () => {
|
|
84
75
|
const trustchain = {
|
|
85
76
|
rootId: "test-root-id",
|
|
86
77
|
walletSyncEncryptionKey: "test-wallet-sync-encryption-key",
|
|
87
78
|
applicationPath: "m/0'/16'/0'",
|
|
88
79
|
};
|
|
89
80
|
const addMember = jest.fn(() => Promise.resolve(trustchain));
|
|
90
|
-
const memberCredentials = convertKeyPairToLiveCredentials(
|
|
81
|
+
const memberCredentials = convertKeyPairToLiveCredentials(await crypto.randomKeypair());
|
|
91
82
|
const memberName = "foo";
|
|
92
83
|
const onRequestQRCodeInput = jest.fn();
|
|
93
84
|
const scannedUrl = "https://example.com";
|
|
@@ -99,16 +90,16 @@ describe("Trustchain QR Code", () => {
|
|
|
99
90
|
scannedUrl,
|
|
100
91
|
onRequestQRCodeInput,
|
|
101
92
|
});
|
|
102
|
-
|
|
103
|
-
})
|
|
104
|
-
test("old accounts export qr code scanned", () =>
|
|
93
|
+
await expect(candidateP).rejects.toThrow(new ScannedInvalidQrCode());
|
|
94
|
+
});
|
|
95
|
+
test("old accounts export qr code scanned", async () => {
|
|
105
96
|
const trustchain = {
|
|
106
97
|
rootId: "test-root-id",
|
|
107
98
|
walletSyncEncryptionKey: "test-wallet-sync-encryption-key",
|
|
108
99
|
applicationPath: "m/0'/16'/0'",
|
|
109
100
|
};
|
|
110
101
|
const addMember = jest.fn(() => Promise.resolve(trustchain));
|
|
111
|
-
const memberCredentials = convertKeyPairToLiveCredentials(
|
|
102
|
+
const memberCredentials = convertKeyPairToLiveCredentials(await crypto.randomKeypair());
|
|
112
103
|
const memberName = "foo";
|
|
113
104
|
const onRequestQRCodeInput = jest.fn();
|
|
114
105
|
const scannedUrl = "ZAADAAIAAAAEd2JXMpuoYdzvkNzFTlmQLPcGf2LSjDOgqaB3nQoZqlimcCX6HNkescWKyT1DCGuwO7IesD7oYg+fdZPkiIfFL3V9swfZRePkaNN09IjXsWLsim9hK/qi/RC1/ofX3hYNKUxUAgYVVG82WKXIk47siWfUlRZsCYSAARQ6ASpUgidPjMHaOMK6w53wTZplwo7Zjv1HrIyKwr3Ci8OmrFye5g==";
|
|
@@ -120,7 +111,7 @@ describe("Trustchain QR Code", () => {
|
|
|
120
111
|
scannedUrl,
|
|
121
112
|
onRequestQRCodeInput,
|
|
122
113
|
});
|
|
123
|
-
|
|
124
|
-
})
|
|
114
|
+
await expect(candidateP).rejects.toThrow(new ScannedOldImportQrCode());
|
|
115
|
+
});
|
|
125
116
|
});
|
|
126
117
|
//# sourceMappingURL=index.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.test.js","sourceRoot":"","sources":["../../src/qrcode/index.test.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.test.js","sourceRoot":"","sources":["../../src/qrcode/index.test.ts"],"names":[],"mappings":"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"}
|