@sidhujag/sysweb3-keyring 2.1.10 → 2.1.12

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.
Files changed (43) hide show
  1. package/cjs/host-keyring.js +3 -1
  2. package/cjs/host-keyring.js.map +1 -1
  3. package/cjs/index.js +3 -1
  4. package/cjs/index.js.map +1 -1
  5. package/cjs/keyring-core.js +609 -36
  6. package/cjs/keyring-core.js.map +1 -1
  7. package/cjs/keyring-host.js +9 -2
  8. package/cjs/keyring-host.js.map +1 -1
  9. package/cjs/private-records.js +291 -9
  10. package/cjs/private-records.js.map +1 -1
  11. package/cjs/public-session.js +72 -0
  12. package/cjs/public-session.js.map +1 -0
  13. package/cjs/software.js +3 -1
  14. package/cjs/software.js.map +1 -1
  15. package/cjs/transactions/syscoin-core.js +159 -96
  16. package/cjs/transactions/syscoin-core.js.map +1 -1
  17. package/cjs/trezor/index.js +57 -42
  18. package/cjs/trezor/index.js.map +1 -1
  19. package/cjs/types.js.map +1 -1
  20. package/esm/keyring-core.js +611 -38
  21. package/esm/keyring-core.js.map +1 -1
  22. package/esm/keyring-host.js +9 -2
  23. package/esm/keyring-host.js.map +1 -1
  24. package/esm/private-records.js +284 -9
  25. package/esm/private-records.js.map +1 -1
  26. package/esm/public-session.js +65 -0
  27. package/esm/public-session.js.map +1 -0
  28. package/esm/transactions/syscoin-core.js +159 -96
  29. package/esm/transactions/syscoin-core.js.map +1 -1
  30. package/esm/trezor/index.js +57 -42
  31. package/esm/trezor/index.js.map +1 -1
  32. package/esm/types.js.map +1 -1
  33. package/package.json +1 -1
  34. package/types/host-keyring.d.ts +4 -0
  35. package/types/index.d.ts +3 -1
  36. package/types/keyring-core.d.ts +37 -5
  37. package/types/keyring-host.d.ts +4 -0
  38. package/types/private-records.d.ts +30 -0
  39. package/types/public-session.d.ts +19 -0
  40. package/types/software.d.ts +5 -0
  41. package/types/transactions/syscoin-core.d.ts +13 -1
  42. package/types/trezor/index.d.ts +0 -1
  43. package/types/types.d.ts +9 -1
@@ -58,13 +58,16 @@ async function profileId(key, guard) {
58
58
  guard();
59
59
  return `0x${Buffer.from(bits).toString('hex')}`;
60
60
  }
61
- async function domainKey(key, domain, guard) {
62
- const derived = await cryptoProvider().subtle.deriveKey({
61
+ function domainParameters(domain) {
62
+ return {
63
63
  name: 'HKDF',
64
64
  hash: 'SHA-256',
65
65
  salt: bufferSource(encoder.encode(NAMESPACE)),
66
66
  info: bufferSource(encoder.encode(JSON.stringify([NAMESPACE, 'encryption-key', domain]))),
67
- }, key, { name: 'AES-GCM', length: 256 }, false, ['encrypt', 'decrypt']);
67
+ };
68
+ }
69
+ async function domainKey(key, domain, guard) {
70
+ const derived = await cryptoProvider().subtle.deriveKey(domainParameters(domain), key, { name: 'AES-GCM', length: 256 }, false, ['encrypt', 'decrypt']);
68
71
  guard();
69
72
  return derived;
70
73
  }
@@ -77,6 +80,15 @@ export async function privateRecordProfileId(secret, guard) {
77
80
  return profileId(await importRoot(secret, guard), guard);
78
81
  }
79
82
  export async function encryptPrivateRecordBytes(secret, params, guard) {
83
+ return encryptRecord(params, guard, async (domain) => {
84
+ const key = await importRoot(secret, guard);
85
+ return {
86
+ profile: await profileId(key, guard),
87
+ aesKey: await domainKey(key, domain, guard),
88
+ };
89
+ });
90
+ }
91
+ async function encryptRecord(params, guard, keys) {
80
92
  const domain = label(params.domain);
81
93
  const recordId = label(params.recordId);
82
94
  if (!(params.plaintext instanceof Uint8Array) ||
@@ -86,9 +98,8 @@ export async function encryptPrivateRecordBytes(secret, params, guard) {
86
98
  // Own the input before the first await; caller mutations cannot change it.
87
99
  const plaintext = new Uint8Array(params.plaintext);
88
100
  try {
89
- const key = await importRoot(secret, guard);
90
- const profile = await profileId(key, guard);
91
- const aesKey = await domainKey(key, domain, guard);
101
+ const { profile, aesKey } = await keys(domain);
102
+ guard();
92
103
  const nonce = cryptoProvider().getRandomValues(new Uint8Array(NONCE_BYTES));
93
104
  const encrypted = await cryptoProvider().subtle.encrypt({
94
105
  name: 'AES-GCM',
@@ -111,6 +122,15 @@ export async function encryptPrivateRecordBytes(secret, params, guard) {
111
122
  }
112
123
  }
113
124
  export async function decryptPrivateRecordBytes(secret, params, guard) {
125
+ return decryptRecord(params, guard, async (domain) => {
126
+ const key = await importRoot(secret, guard);
127
+ return {
128
+ profile: await profileId(key, guard),
129
+ aesKey: await domainKey(key, domain, guard),
130
+ };
131
+ });
132
+ }
133
+ async function decryptRecord(params, guard, keys) {
114
134
  const domain = label(params.domain);
115
135
  const recordId = label(params.recordId);
116
136
  // Copy primitive fields before awaiting. No caller-owned object is retained.
@@ -127,12 +147,11 @@ export async function decryptPrivateRecordBytes(secret, params, guard) {
127
147
  }
128
148
  const nonce = decodeBase64(envelope.nonce, NONCE_BYTES, NONCE_BYTES);
129
149
  const ciphertext = decodeBase64(envelope.ciphertext, TAG_BYTES, MAX_PRIVATE_RECORD_BYTES + TAG_BYTES);
130
- const key = await importRoot(secret, guard);
131
- const profile = await profileId(key, guard);
150
+ const { profile, aesKey } = await keys(domain);
151
+ guard();
132
152
  if (profile !== envelope.profileId) {
133
153
  throw new Error('Private record profile mismatch');
134
154
  }
135
- const aesKey = await domainKey(key, domain, guard);
136
155
  let plaintext;
137
156
  try {
138
157
  plaintext = new Uint8Array(await cryptoProvider().subtle.decrypt({
@@ -150,4 +169,260 @@ export async function decryptPrivateRecordBytes(secret, params, guard) {
150
169
  throw new Error('Private record authentication failed');
151
170
  }
152
171
  }
172
+ const recordAccessOwners = new WeakMap();
173
+ /** Canonical exact set, used only to retrieve a previously granted capability. */
174
+ export function privateRecordDomainSet(domains) {
175
+ if (!Array.isArray(domains) || domains.length === 0 || domains.length > 8)
176
+ throw new Error('Invalid record domains');
177
+ const names = [];
178
+ for (let i = 0; i < domains.length; i++) {
179
+ const item = Object.getOwnPropertyDescriptor(domains, String(i));
180
+ if (!item || !('value' in item))
181
+ throw new Error('Invalid record domains');
182
+ names.push(label(item.value));
183
+ }
184
+ if (new Set(names).size !== names.length)
185
+ throw new Error('Invalid record domains');
186
+ return JSON.stringify(names.sort());
187
+ }
188
+ function checkRecordOwner(owner) {
189
+ if (!owner.active)
190
+ throw new Error('Record access retired');
191
+ const result = owner.guard();
192
+ if (result !== undefined) {
193
+ void Promise.resolve(result).catch(() => undefined);
194
+ throw new Error('Record access requires a synchronous owner guard');
195
+ }
196
+ if (!owner.active)
197
+ throw new Error('Record access retired');
198
+ }
199
+ function bindRecordAccess(owner) {
200
+ const check = () => checkRecordOwner(owner);
201
+ const keyFor = async (domain) => {
202
+ check();
203
+ const aesKey = owner.keys.get(domain);
204
+ if (!aesKey)
205
+ throw new Error('Record domain not authorized');
206
+ return { profile: owner.profile, aesKey };
207
+ };
208
+ const access = Object.freeze({
209
+ async getPrivateRecordProfileId() {
210
+ check();
211
+ return owner.profile;
212
+ },
213
+ encryptPrivateRecord: (params) => encryptRecord(params, check, keyFor),
214
+ decryptPrivateRecord: (params) => decryptRecord(params, check, keyFor),
215
+ dispose() {
216
+ owner.active = false;
217
+ owner.keys.clear();
218
+ },
219
+ });
220
+ recordAccessOwners.set(access, owner);
221
+ return access;
222
+ }
223
+ /** Internal cache inspection; key material is never returned. */
224
+ export function activePrivateRecordDomainSet(access, authority) {
225
+ const owner = recordAccessOwners.get(access);
226
+ if (!owner?.active)
227
+ return null;
228
+ if (owner.authority !== authority)
229
+ throw new Error('Record access owner mismatch');
230
+ checkRecordOwner(owner);
231
+ return owner.domainSet;
232
+ }
233
+ /** Internal transfer policy; callers cannot upgrade an existing grant. */
234
+ export function privateRecordAccessCanTransfer(access, authority) {
235
+ const owner = recordAccessOwners.get(access);
236
+ if (!owner?.active)
237
+ return false;
238
+ if (owner.authority !== authority)
239
+ throw new Error('Record access owner mismatch');
240
+ checkRecordOwner(owner);
241
+ return owner.transferable;
242
+ }
243
+ /** Internal trusted SDK transfer. Old methods/dispose cannot affect the moved keys. */
244
+ export function transferPrivateRecordAccess(access, sourceAuthority, targetAuthority, guard) {
245
+ const owner = recordAccessOwners.get(access);
246
+ if (!owner ||
247
+ owner.authority !== sourceAuthority ||
248
+ !targetAuthority ||
249
+ typeof targetAuthority !== 'object')
250
+ throw new Error('Record access owner mismatch');
251
+ checkRecordOwner(owner);
252
+ if (!owner.transferable)
253
+ throw new Error('Record access cannot transfer');
254
+ const keys = owner.keys;
255
+ const next = bindRecordAccess({
256
+ active: true,
257
+ domainSet: owner.domainSet,
258
+ guard,
259
+ keys,
260
+ profile: owner.profile,
261
+ transferable: true,
262
+ authority: targetAuthority,
263
+ });
264
+ owner.keys = new Map();
265
+ owner.active = false;
266
+ return next;
267
+ }
268
+ /** Derive only the named record keys, then release the root. No key export or derivation surface escapes. */
269
+ export async function createPrivateRecordAccess(secret, domains, options, guard, authority) {
270
+ if (!authority || typeof authority !== 'object')
271
+ throw new Error('Record access owner is required');
272
+ const transfer = options &&
273
+ typeof options === 'object' &&
274
+ Reflect.ownKeys(options).length === 1
275
+ ? Object.getOwnPropertyDescriptor(options, 'transferable')
276
+ : undefined;
277
+ if (!transfer ||
278
+ !('value' in transfer) ||
279
+ typeof transfer.value !== 'boolean')
280
+ throw new Error('Explicit record transfer policy is required');
281
+ const domainSet = privateRecordDomainSet(domains);
282
+ const names = JSON.parse(domainSet);
283
+ const owner = {
284
+ active: true,
285
+ domainSet,
286
+ guard,
287
+ keys: new Map(),
288
+ profile: '',
289
+ transferable: transfer.value,
290
+ authority,
291
+ };
292
+ const check = () => checkRecordOwner(owner);
293
+ check();
294
+ let root;
295
+ try {
296
+ root = await importRoot(secret, check);
297
+ owner.profile = await profileId(root, check);
298
+ for (const domain of names) {
299
+ owner.keys.set(domain, await domainKey(root, domain, check));
300
+ check();
301
+ }
302
+ return bindRecordAccess(owner);
303
+ }
304
+ catch (error) {
305
+ owner.active = false;
306
+ owner.keys.clear();
307
+ throw error;
308
+ }
309
+ finally {
310
+ root = undefined;
311
+ }
312
+ }
313
+ // This separate HKDF domain cannot decrypt the vault. Checkpoints contain only
314
+ // explicitly selected record-domain keys, never the mnemonic or vault key.
315
+ // No compatibility fallback to the previous password-wrapped checkpoint.
316
+ const PUBLIC_SESSION_DOMAIN = 'sysweb3.public-view.v1';
317
+ const CHECKPOINT_HEADER = new Uint8Array([0x50, 0x56, 0x43, 1]);
318
+ const CHECKPOINT_FIXED_BYTES = 4 + 32 + 32 + 32 + 1;
319
+ const sameBytes = (left, right) => {
320
+ let difference = left.length ^ right.length;
321
+ for (let i = 0; i < left.length; i++)
322
+ difference |= left[i] ^ (right[i] ?? 0);
323
+ return difference === 0;
324
+ };
325
+ function checkpointContext(context) {
326
+ if (!/^[0-9a-f]{64}$/.test(context.walletBindingId) ||
327
+ !/^[0-9a-f]{64}$/.test(context.pairFingerprint) ||
328
+ !(context.stateDigest instanceof Uint8Array) ||
329
+ context.stateDigest.length !== 32)
330
+ throw new Error('Invalid public record checkpoint context');
331
+ return JSON.parse(privateRecordDomainSet(context.domains));
332
+ }
333
+ /** Internal sealing only. No record key or extractable CryptoKey leaves this module. */
334
+ export async function sealPublicRecordCheckpoint(rootSecret, wrappingSecret, context, guard) {
335
+ const domains = checkpointContext(context);
336
+ const payload = new Uint8Array(CHECKPOINT_FIXED_BYTES +
337
+ domains.reduce((size, domain) => size + 1 + domain.length + 32, 0));
338
+ let derived;
339
+ try {
340
+ const root = await importRoot(rootSecret, guard);
341
+ payload.set(CHECKPOINT_HEADER);
342
+ payload.set(Buffer.from(context.pairFingerprint, 'hex'), 4);
343
+ payload.set(context.stateDigest, 36);
344
+ payload.set(Buffer.from((await profileId(root, guard)).slice(2), 'hex'), 68);
345
+ payload[100] = domains.length;
346
+ let offset = CHECKPOINT_FIXED_BYTES;
347
+ for (const domain of domains) {
348
+ const name = encoder.encode(domain);
349
+ payload[offset++] = name.length;
350
+ payload.set(name, offset);
351
+ offset += name.length;
352
+ // Same v1 HKDF inputs as domainKey, imported non-extractably on restore.
353
+ derived = new Uint8Array(await cryptoProvider().subtle.deriveBits(domainParameters(domain), root, 256));
354
+ guard();
355
+ payload.set(derived, offset);
356
+ offset += 32;
357
+ derived.fill(0);
358
+ derived = undefined;
359
+ }
360
+ return await encryptPrivateRecordBytes(wrappingSecret, {
361
+ domain: PUBLIC_SESSION_DOMAIN,
362
+ recordId: context.walletBindingId,
363
+ plaintext: payload,
364
+ }, guard);
365
+ }
366
+ finally {
367
+ derived?.fill(0);
368
+ payload.fill(0);
369
+ }
370
+ }
371
+ /** Internal restore imports only the sealed exact domain set as non-extractable keys. */
372
+ export async function restorePublicRecordCheckpoint(wrappingSecret, envelope, context, guard, authority) {
373
+ const domains = checkpointContext(context);
374
+ const owner = {
375
+ active: true,
376
+ domainSet: privateRecordDomainSet(domains),
377
+ keys: new Map(),
378
+ guard,
379
+ profile: '',
380
+ transferable: true,
381
+ authority,
382
+ };
383
+ let payload, material;
384
+ try {
385
+ payload = await decryptPrivateRecordBytes(wrappingSecret, {
386
+ domain: PUBLIC_SESSION_DOMAIN,
387
+ recordId: context.walletBindingId,
388
+ envelope,
389
+ }, guard);
390
+ if (payload.length < CHECKPOINT_FIXED_BYTES ||
391
+ !sameBytes(payload.subarray(0, 4), CHECKPOINT_HEADER) ||
392
+ !sameBytes(payload.subarray(4, 36), new Uint8Array(Buffer.from(context.pairFingerprint, 'hex'))) ||
393
+ !sameBytes(payload.subarray(36, 68), context.stateDigest) ||
394
+ payload[100] !== domains.length)
395
+ throw new Error('Public session checkpoint context changed');
396
+ owner.profile = `0x${Buffer.from(payload.subarray(68, 100)).toString('hex')}`;
397
+ let offset = CHECKPOINT_FIXED_BYTES;
398
+ for (const domain of domains) {
399
+ const length = payload[offset++];
400
+ if (length !== domain.length ||
401
+ offset + length + 32 > payload.length ||
402
+ !sameBytes(payload.subarray(offset, offset + length), encoder.encode(domain)))
403
+ throw new Error('Public session checkpoint domains changed');
404
+ offset += length;
405
+ material = new Uint8Array(payload.subarray(offset, offset + 32));
406
+ offset += 32;
407
+ const key = await cryptoProvider().subtle.importKey('raw', bufferSource(material), { name: 'AES-GCM' }, false, ['encrypt', 'decrypt']);
408
+ material.fill(0);
409
+ material = undefined;
410
+ guard();
411
+ owner.keys.set(domain, key);
412
+ }
413
+ if (offset !== payload.length)
414
+ throw new Error('Invalid public session checkpoint');
415
+ guard();
416
+ return bindRecordAccess(owner);
417
+ }
418
+ catch (error) {
419
+ owner.active = false;
420
+ owner.keys.clear();
421
+ throw error;
422
+ }
423
+ finally {
424
+ payload?.fill(0);
425
+ material?.fill(0);
426
+ }
427
+ }
153
428
  //# sourceMappingURL=private-records.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"private-records.js","sourceRoot":"","sources":["../../src/private-records.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"private-records.js","sourceRoot":"","sources":["../../src/private-records.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,65 @@
1
+ import { privateRecordDomainSet } from './private-records';
2
+ export const MAX_PUBLIC_SESSION_STATE_BYTES = 4 * 1024 * 1024;
3
+ export function capturePublicSessionKey(value) {
4
+ if (!(value instanceof Uint8Array))
5
+ throw new TypeError('Invalid public session key');
6
+ const key = new Uint8Array(value);
7
+ // A caller may shadow length on a typed array or its subclass. Validate the
8
+ // owned plain copy, whose actual byte count is used by the crypto provider.
9
+ if (key.length !== 32) {
10
+ key.fill(0);
11
+ throw new TypeError('Invalid public session key');
12
+ }
13
+ return key;
14
+ }
15
+ export function capturePublicSessionRequest(input) {
16
+ if (!input || typeof input !== 'object')
17
+ throw new Error('Invalid public session request');
18
+ const fields = Object.getOwnPropertyDescriptors(input);
19
+ for (const name of ['walletBindingId', 'publicState', 'recordDomains']) {
20
+ if (!fields[name] || !('value' in fields[name]))
21
+ throw new Error('Invalid public session request');
22
+ }
23
+ const walletBindingId = fields.walletBindingId.value;
24
+ const state = fields.publicState.value;
25
+ if (typeof walletBindingId !== 'string' ||
26
+ !/^[0-9a-f]{64}$/.test(walletBindingId) ||
27
+ !(state instanceof Uint8Array) ||
28
+ state.length === 0 ||
29
+ state.length > MAX_PUBLIC_SESSION_STATE_BYTES)
30
+ throw new Error('Invalid public session request');
31
+ const domains = JSON.parse(privateRecordDomainSet(fields.recordDomains.value));
32
+ return Object.freeze({
33
+ walletBindingId,
34
+ publicState: new Uint8Array(state),
35
+ recordDomains: Object.freeze(domains),
36
+ });
37
+ }
38
+ export function capturePublicSessionCheckpoint(input) {
39
+ const descriptor = Object.getOwnPropertyDescriptor(input, 'checkpoint');
40
+ if (!descriptor || !('value' in descriptor))
41
+ throw new Error('Invalid public session checkpoint');
42
+ const value = descriptor.value;
43
+ if (!value || typeof value !== 'object')
44
+ throw new Error('Invalid public session checkpoint');
45
+ const fields = Object.getOwnPropertyDescriptors(value);
46
+ const names = [
47
+ 'version',
48
+ 'domain',
49
+ 'recordId',
50
+ 'profileId',
51
+ 'nonce',
52
+ 'ciphertext',
53
+ ];
54
+ if (Reflect.ownKeys(fields).length !== names.length ||
55
+ names.some((name) => !fields[name] || !('value' in fields[name])))
56
+ throw new Error('Invalid public session checkpoint');
57
+ return Object.freeze(Object.fromEntries(names.map((name) => [name, fields[name].value])));
58
+ }
59
+ export async function publicSessionStateDigest(state, guard) {
60
+ guard();
61
+ const digest = new Uint8Array(await globalThis.crypto.subtle.digest('SHA-256', state));
62
+ guard();
63
+ return digest;
64
+ }
65
+ //# sourceMappingURL=public-session.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"public-session.js","sourceRoot":"","sources":["../../src/public-session.ts"],"names":[],"mappings":"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"}