@ibgib/web-gib 0.0.60 → 0.0.62

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 (89) hide show
  1. package/dist/AUTO-GENERATED-version.d.mts +1 -1
  2. package/dist/AUTO-GENERATED-version.mjs +1 -1
  3. package/dist/helpers.d.mts.map +1 -1
  4. package/dist/helpers.mjs +1 -0
  5. package/dist/helpers.mjs.map +1 -1
  6. package/dist/helpers.web.d.mts +3 -1
  7. package/dist/helpers.web.d.mts.map +1 -1
  8. package/dist/helpers.web.mjs +17 -1
  9. package/dist/helpers.web.mjs.map +1 -1
  10. package/dist/identity/device-delegate-helper.d.mts +91 -0
  11. package/dist/identity/device-delegate-helper.d.mts.map +1 -0
  12. package/dist/identity/device-delegate-helper.mjs +190 -0
  13. package/dist/identity/device-delegate-helper.mjs.map +1 -0
  14. package/dist/identity/device-delegate.respec.d.mts +2 -0
  15. package/dist/identity/device-delegate.respec.d.mts.map +1 -0
  16. package/dist/identity/device-delegate.respec.mjs +106 -0
  17. package/dist/identity/device-delegate.respec.mjs.map +1 -0
  18. package/dist/identity/keystone-sync-service.d.mts +18 -0
  19. package/dist/identity/keystone-sync-service.d.mts.map +1 -1
  20. package/dist/identity/keystone-sync-service.mjs +77 -1
  21. package/dist/identity/keystone-sync-service.mjs.map +1 -1
  22. package/dist/identity/passkey-helper.d.mts +72 -0
  23. package/dist/identity/passkey-helper.d.mts.map +1 -0
  24. package/dist/identity/passkey-helper.mjs +237 -0
  25. package/dist/identity/passkey-helper.mjs.map +1 -0
  26. package/dist/identity/passkey.respec.d.mts +2 -0
  27. package/dist/identity/passkey.respec.d.mts.map +1 -0
  28. package/dist/identity/passkey.respec.mjs +169 -0
  29. package/dist/identity/passkey.respec.mjs.map +1 -0
  30. package/dist/index.d.mts +2 -1
  31. package/dist/index.d.mts.map +1 -1
  32. package/dist/index.mjs +2 -2
  33. package/dist/index.mjs.map +1 -1
  34. package/dist/storage/storage-helpers.web.d.mts +9 -0
  35. package/dist/storage/storage-helpers.web.d.mts.map +1 -1
  36. package/dist/storage/storage-helpers.web.mjs +42 -0
  37. package/dist/storage/storage-helpers.web.mjs.map +1 -1
  38. package/dist/ui/component/identity/add-device/add-device.d.mts.map +1 -1
  39. package/dist/ui/component/identity/add-device/add-device.mjs +31 -43
  40. package/dist/ui/component/identity/add-device/add-device.mjs.map +1 -1
  41. package/dist/ui/component/identity/keystone-creator/keystone-creator.d.mts +18 -1
  42. package/dist/ui/component/identity/keystone-creator/keystone-creator.d.mts.map +1 -1
  43. package/dist/ui/component/identity/keystone-creator/keystone-creator.html +42 -3
  44. package/dist/ui/component/identity/keystone-creator/keystone-creator.mjs +524 -104
  45. package/dist/ui/component/identity/keystone-creator/keystone-creator.mjs.map +1 -1
  46. package/dist/ui/component/identity/keystone-details/keystone-details.d.mts +19 -1
  47. package/dist/ui/component/identity/keystone-details/keystone-details.d.mts.map +1 -1
  48. package/dist/ui/component/identity/keystone-details/keystone-details.html +38 -0
  49. package/dist/ui/component/identity/keystone-details/keystone-details.mjs +1217 -132
  50. package/dist/ui/component/identity/keystone-details/keystone-details.mjs.map +1 -1
  51. package/dist/ui/component/identity/remove-device/remove-device.d.mts.map +1 -1
  52. package/dist/ui/component/identity/remove-device/remove-device.mjs +1 -0
  53. package/dist/ui/component/identity/remove-device/remove-device.mjs.map +1 -1
  54. package/dist/ui/ui-constants.d.mts +1 -0
  55. package/dist/ui/ui-constants.d.mts.map +1 -1
  56. package/dist/ui/ui-constants.mjs +1 -0
  57. package/dist/ui/ui-constants.mjs.map +1 -1
  58. package/dist/ui/ui-helpers.d.mts +3 -0
  59. package/dist/ui/ui-helpers.d.mts.map +1 -1
  60. package/dist/ui/ui-helpers.mjs +110 -6
  61. package/dist/ui/ui-helpers.mjs.map +1 -1
  62. package/dist/ui/ui-types.d.mts +5 -0
  63. package/dist/ui/ui-types.d.mts.map +1 -1
  64. package/package.json +2 -2
  65. package/src/AUTO-GENERATED-version.mts +1 -1
  66. package/src/helpers.mts +1 -0
  67. package/src/helpers.web.mts +22 -2
  68. package/src/identity/custodian-delegate-helper.mts.bak +7 -0
  69. package/src/identity/device-delegate-helper.mts +268 -0
  70. package/src/identity/device-delegate.respec.mts +125 -0
  71. package/src/identity/keystone-sync-service.mts +95 -2
  72. package/src/identity/passkey-helper.mts +304 -0
  73. package/src/identity/passkey.respec.mts +194 -0
  74. package/src/index.mts +2 -2
  75. package/src/storage/storage-helpers.web.mts +47 -0
  76. package/src/ui/component/identity/add-device/add-device.mts +37 -48
  77. package/src/ui/component/identity/keystone-creator/keystone-creator.html +42 -3
  78. package/src/ui/component/identity/keystone-creator/keystone-creator.mts +568 -111
  79. package/src/ui/component/identity/keystone-details/keystone-details.html +38 -0
  80. package/src/ui/component/identity/keystone-details/keystone-details.mts +1290 -142
  81. package/src/ui/component/identity/remove-device/remove-device.mts +1 -0
  82. package/src/ui/ui-constants.mts +1 -0
  83. package/src/ui/ui-helpers.mts +118 -5
  84. package/src/ui/ui-types.mts +6 -0
  85. package/dist/identity/custodian-delegate-helper.d.mts +0 -22
  86. package/dist/identity/custodian-delegate-helper.d.mts.map +0 -1
  87. package/dist/identity/custodian-delegate-helper.mjs +0 -67
  88. package/dist/identity/custodian-delegate-helper.mjs.map +0 -1
  89. package/src/identity/custodian-delegate-helper.mts +0 -86
@@ -0,0 +1,190 @@
1
+ /**
2
+ * @module identity/device-delegate-helper
3
+ *
4
+ * Client-side helper functions for deriving, retrieving, persisting, and clearing local
5
+ * cryptographic device delegate signing tokens ($S_D$) in IndexedDB.
6
+ *
7
+ * Applicable symmetrically to Sovereign, Custodial, and Hybrid identities.
8
+ */
9
+ import { extractErrorMsg, getSaferSubstring } from "@ibgib/helper-gib/dist/helpers/utils-helper.mjs";
10
+ import { deriveDeviceDelegateSecret, deriveDelegateSecret, createSyncDelegateKeystone } from "@ibgib/core-gib/dist/keystone/delegate/delegate-helpers.mjs";
11
+ import { generateDefaultDeviceTag } from "../util/device-helper.mjs";
12
+ import { storageGet, storagePut, storageDelete } from "../storage/storage-helpers.web.mjs";
13
+ import { getGlobalDbName, getGlobalStoreName } from "../helpers.web.mjs";
14
+ export { generateDefaultDeviceTag };
15
+ export const DEVICE_DELEGATE_SECRET_PREFIX = 'ibgib_device_delegate_secret_';
16
+ /**
17
+ * Builds the IndexedDB storage key for a device delegate secret given its primary identity TJP address.
18
+ */
19
+ export function getDeviceDelegateSecretKey({ primaryTjpAddr }) {
20
+ if (!primaryTjpAddr) {
21
+ throw new Error('primaryTjpAddr is required to get device delegate secret key (E: 1a2b3c4d5e6f7890123456789a000101)');
22
+ }
23
+ return `${DEVICE_DELEGATE_SECRET_PREFIX}${primaryTjpAddr}`;
24
+ }
25
+ /**
26
+ * Retrieves the stored device delegate secret for the given primary identity from IndexedDB, if present.
27
+ */
28
+ export async function getDeviceDelegateSecret({ primaryTjpAddr, }) {
29
+ const lc = `[${getDeviceDelegateSecret.name}]`;
30
+ try {
31
+ if (!primaryTjpAddr) {
32
+ throw new Error('primaryTjpAddr is required to get device delegate secret (E: 2a2b3c4d5e6f7890123456789a000102)');
33
+ }
34
+ const dbName = getGlobalDbName();
35
+ const storeName = getGlobalStoreName();
36
+ const key = getDeviceDelegateSecretKey({ primaryTjpAddr });
37
+ return await storageGet({ dbName, storeName, key });
38
+ }
39
+ catch (error) {
40
+ console.error(`${lc} ${extractErrorMsg(error)}`);
41
+ throw error;
42
+ }
43
+ }
44
+ /**
45
+ * Persists a device delegate secret for the given primary identity into IndexedDB.
46
+ */
47
+ export async function setDeviceDelegateSecret({ primaryTjpAddr, delegateSecret, }) {
48
+ const lc = `[${setDeviceDelegateSecret.name}]`;
49
+ try {
50
+ if (!primaryTjpAddr) {
51
+ throw new Error('primaryTjpAddr is required to set device delegate secret (E: 3a2b3c4d5e6f7890123456789a000103)');
52
+ }
53
+ if (!delegateSecret) {
54
+ throw new Error('delegateSecret is required to set device delegate secret (E: 4a2b3c4d5e6f7890123456789a000104)');
55
+ }
56
+ const dbName = getGlobalDbName();
57
+ const storeName = getGlobalStoreName();
58
+ const key = getDeviceDelegateSecretKey({ primaryTjpAddr });
59
+ await storagePut({ dbName, storeName, key, value: delegateSecret });
60
+ }
61
+ catch (error) {
62
+ console.error(`${lc} ${extractErrorMsg(error)}`);
63
+ throw error;
64
+ }
65
+ }
66
+ /**
67
+ * Retrieves an existing device delegate secret from IndexedDB, or generates a high-entropy 512-bit
68
+ * secret, persists it, and returns it.
69
+ */
70
+ export async function getOrCreateDeviceDelegateSecret({ primaryTjpAddr, deviceTag, }) {
71
+ const lc = `[${getOrCreateDeviceDelegateSecret.name}]`;
72
+ try {
73
+ if (!primaryTjpAddr) {
74
+ throw new Error('primaryTjpAddr is required to get or create device delegate secret (E: 5a2b3c4d5e6f7890123456789a000105)');
75
+ }
76
+ const existingSecret = await getDeviceDelegateSecret({ primaryTjpAddr });
77
+ if (existingSecret) {
78
+ return existingSecret;
79
+ }
80
+ const newSecret = await deriveDeviceDelegateSecret({ primaryTjpAddr, deviceTag });
81
+ await setDeviceDelegateSecret({ primaryTjpAddr, delegateSecret: newSecret });
82
+ return newSecret;
83
+ }
84
+ catch (error) {
85
+ console.error(`${lc} ${extractErrorMsg(error)}`);
86
+ throw error;
87
+ }
88
+ }
89
+ /**
90
+ * Removes the stored local device delegate secret from IndexedDB.
91
+ */
92
+ export async function clearDeviceDelegateSecret({ primaryTjpAddr, }) {
93
+ const lc = `[${clearDeviceDelegateSecret.name}]`;
94
+ try {
95
+ if (!primaryTjpAddr) {
96
+ return;
97
+ }
98
+ const dbName = getGlobalDbName();
99
+ const storeName = getGlobalStoreName();
100
+ const key = getDeviceDelegateSecretKey({ primaryTjpAddr });
101
+ await storageDelete({ dbName, storeName, key });
102
+ }
103
+ catch (error) {
104
+ console.error(`${lc} ${extractErrorMsg(error)}`);
105
+ throw error;
106
+ }
107
+ }
108
+ /**
109
+ * Creates a Sovereign Password-based sync delegate for this device.
110
+ * Standardized format: `pwd-${safeUsername}-${defaultDeviceTag}`
111
+ */
112
+ export async function createSovereignDeviceSyncDelegate({ username, primaryTjpAddr, masterSecret, metaspace, space, }) {
113
+ const delegateSecret = await deriveDelegateSecret({ masterSecret });
114
+ await setDeviceDelegateSecret({ primaryTjpAddr, delegateSecret });
115
+ const safeUser = getSaferSubstring({ text: username, length: 8, keepLiterals: ['-'] }) || 'user';
116
+ const defaultDeviceTag = generateDefaultDeviceTag();
117
+ const deviceTag = `pwd-${safeUser}-${defaultDeviceTag}`;
118
+ const sovereignSyncProfileName = process.env.KEYSTONE_PROFILE_SOVEREIGN_SYNC;
119
+ if (!sovereignSyncProfileName || !sovereignSyncProfileName.trim()) {
120
+ throw new Error('KEYSTONE_PROFILE_SOVEREIGN_SYNC environment variable is missing.');
121
+ }
122
+ const delegateKeystone = await createSyncDelegateKeystone({
123
+ profileName: sovereignSyncProfileName.trim(),
124
+ username,
125
+ deviceTag,
126
+ primaryTjpAddr,
127
+ delegateSecret,
128
+ additionalFrameDetails: { client: 'space-gib-web' },
129
+ metaspace,
130
+ space,
131
+ });
132
+ return { delegateKeystone, deviceTag, delegateSecret };
133
+ }
134
+ /**
135
+ * Creates an OAuth2 Custodial sync delegate for this device.
136
+ * Standardized format: `oauth2-${providerId}-${defaultDeviceTag}`
137
+ */
138
+ export async function createOAuth2DeviceSyncDelegate({ providerId, username = 'user', primaryTjpAddr, custodianReqs, metaspace, space, }) {
139
+ const delegateSecret = await getOrCreateDeviceDelegateSecret({ primaryTjpAddr });
140
+ const defaultDeviceTag = generateDefaultDeviceTag();
141
+ const deviceTag = `oauth2-${providerId}-${defaultDeviceTag}`;
142
+ const custodianSyncProfileName = process.env.KEYSTONE_PROFILE_CUSTODIAN_SYNC;
143
+ if (!custodianSyncProfileName || !custodianSyncProfileName.trim()) {
144
+ throw new Error('KEYSTONE_PROFILE_CUSTODIAN_SYNC environment variable is missing.');
145
+ }
146
+ const delegateKeystone = await createSyncDelegateKeystone({
147
+ profileName: custodianSyncProfileName.trim(),
148
+ username,
149
+ deviceTag,
150
+ primaryTjpAddr,
151
+ delegateSecret,
152
+ custodianReqs,
153
+ additionalFrameDetails: { client: 'space-gib-web' },
154
+ metaspace,
155
+ space,
156
+ });
157
+ return { delegateKeystone, deviceTag, delegateSecret };
158
+ }
159
+ /**
160
+ * Creates an Email Custodial sync delegate for this device.
161
+ * Standardized format: `email-${safeUser}@${safeDomain}-${defaultDeviceTag}`
162
+ */
163
+ export async function createEmailDeviceSyncDelegate({ email, primaryTjpAddr, custodianReqs, metaspace, space, }) {
164
+ const delegateSecret = await getOrCreateDeviceDelegateSecret({ primaryTjpAddr });
165
+ const defaultDeviceTag = generateDefaultDeviceTag();
166
+ const [emailUser = '', emailDomain = ''] = (email || '').split('@');
167
+ const safeUser = getSaferSubstring({ text: emailUser, length: 8, keepLiterals: ['-'] }) || 'user';
168
+ const domainPart = emailDomain.split('.')[0] || '';
169
+ const safeDomain = domainPart ? getSaferSubstring({ text: domainPart, length: 8, keepLiterals: ['-'] }) : '';
170
+ const emailTag = safeDomain ? `${safeUser}@${safeDomain}` : safeUser;
171
+ const deviceTag = `email-${emailTag}-${defaultDeviceTag}`;
172
+ const username = safeUser;
173
+ const custodianSyncProfileName = process.env.KEYSTONE_PROFILE_CUSTODIAN_SYNC;
174
+ if (!custodianSyncProfileName || !custodianSyncProfileName.trim()) {
175
+ throw new Error('KEYSTONE_PROFILE_CUSTODIAN_SYNC environment variable is missing.');
176
+ }
177
+ const delegateKeystone = await createSyncDelegateKeystone({
178
+ profileName: custodianSyncProfileName.trim(),
179
+ username,
180
+ deviceTag,
181
+ primaryTjpAddr,
182
+ delegateSecret,
183
+ custodianReqs,
184
+ additionalFrameDetails: { client: 'space-gib-web' },
185
+ metaspace,
186
+ space,
187
+ });
188
+ return { delegateKeystone, deviceTag, delegateSecret };
189
+ }
190
+ //# sourceMappingURL=device-delegate-helper.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"device-delegate-helper.mjs","sourceRoot":"","sources":["../../src/identity/device-delegate-helper.mts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=device-delegate.respec.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"device-delegate.respec.d.mts","sourceRoot":"","sources":["../../src/identity/device-delegate.respec.mts"],"names":[],"mappings":""}
@@ -0,0 +1,106 @@
1
+ import { respecfully, ifWe, iReckon } from '@ibgib/helper-gib/dist/respec-gib/respec-gib.mjs';
2
+ import { getIbGibGlobalThis_IbGib } from '../helpers.mjs';
3
+ import { getDeviceDelegateSecretKey, getDeviceDelegateSecret, setDeviceDelegateSecret, getOrCreateDeviceDelegateSecret, clearDeviceDelegateSecret, DEVICE_DELEGATE_SECRET_PREFIX } from './device-delegate-helper.mjs';
4
+ const sir = `[${import.meta.url}]`;
5
+ // Initialize global db & store names for tests
6
+ const globalThisIbGib = getIbGibGlobalThis_IbGib();
7
+ globalThisIbGib.dbName_hack = 'space_gib_db';
8
+ globalThisIbGib.storeName_hack = 'space_gib_store';
9
+ // Mock storage substrate for Node test environment
10
+ const inMemoryStore = new Map();
11
+ if (typeof globalThis.indexedDB === 'undefined') {
12
+ globalThis.indexedDB = {
13
+ open: (dbName) => {
14
+ const req = {};
15
+ setTimeout(() => {
16
+ const db = {
17
+ objectStoreNames: { contains: () => true },
18
+ transaction: (storeName) => ({
19
+ objectStore: (sName) => ({
20
+ get: (key) => {
21
+ const getReq = {};
22
+ setTimeout(() => {
23
+ const val = inMemoryStore.get(key);
24
+ getReq.result = val !== undefined ? { value: val } : undefined;
25
+ if (getReq.onsuccess)
26
+ getReq.onsuccess({ target: getReq });
27
+ }, 0);
28
+ return getReq;
29
+ },
30
+ put: (datum) => {
31
+ const putReq = {};
32
+ setTimeout(() => {
33
+ inMemoryStore.set(datum.key, datum.value);
34
+ if (putReq.onsuccess)
35
+ putReq.onsuccess({ target: putReq });
36
+ }, 0);
37
+ return putReq;
38
+ },
39
+ delete: (key) => {
40
+ const delReq = {};
41
+ setTimeout(() => {
42
+ inMemoryStore.delete(key);
43
+ if (delReq.onsuccess)
44
+ delReq.onsuccess({ target: delReq });
45
+ }, 0);
46
+ return delReq;
47
+ }
48
+ })
49
+ }),
50
+ close: () => { }
51
+ };
52
+ req.result = db;
53
+ if (req.onsuccess)
54
+ req.onsuccess({ target: req });
55
+ }, 0);
56
+ return req;
57
+ }
58
+ };
59
+ }
60
+ await respecfully(sir, 'Device Delegate Storage & Secret Lifecycle', async () => {
61
+ await ifWe(sir, 'getDeviceDelegateSecretKey constructs deterministic storage key', async () => {
62
+ const primaryTjpAddr = 'keystone^alice_tjp_12345';
63
+ const key = getDeviceDelegateSecretKey({ primaryTjpAddr });
64
+ iReckon(sir, key).willEqual(`${DEVICE_DELEGATE_SECRET_PREFIX}${primaryTjpAddr}`);
65
+ });
66
+ await ifWe(sir, 'setDeviceDelegateSecret and getDeviceDelegateSecret persist and retrieve secret', async () => {
67
+ const primaryTjpAddr = 'keystone^bob_tjp_999';
68
+ const secret = 'super-secret-512-token-abc';
69
+ await setDeviceDelegateSecret({ primaryTjpAddr, delegateSecret: secret });
70
+ const retrieved = await getDeviceDelegateSecret({ primaryTjpAddr });
71
+ iReckon(sir, retrieved).willEqual(secret);
72
+ });
73
+ await ifWe(sir, 'getOrCreateDeviceDelegateSecret generates high entropy token on first call and caches it', async () => {
74
+ const primaryTjpAddr = 'keystone^charlie_tjp_888';
75
+ const token1 = await getOrCreateDeviceDelegateSecret({ primaryTjpAddr, deviceTag: 'laptop' });
76
+ iReckon(sir, typeof token1 === 'string' && token1.length === 128).willEqual(true);
77
+ const token2 = await getOrCreateDeviceDelegateSecret({ primaryTjpAddr, deviceTag: 'laptop' });
78
+ iReckon(sir, token1).willEqual(token2);
79
+ });
80
+ await ifWe(sir, 'clearDeviceDelegateSecret removes stored secret', async () => {
81
+ const primaryTjpAddr = 'keystone^david_tjp_777';
82
+ await getOrCreateDeviceDelegateSecret({ primaryTjpAddr });
83
+ const beforeClear = await getDeviceDelegateSecret({ primaryTjpAddr });
84
+ iReckon(sir, !!beforeClear).willEqual(true);
85
+ await clearDeviceDelegateSecret({ primaryTjpAddr });
86
+ const afterClear = await getDeviceDelegateSecret({ primaryTjpAddr });
87
+ iReckon(sir, afterClear).willEqual(undefined);
88
+ });
89
+ await ifWe(sir, 'fails fast when global db or store name is uninitialized', async () => {
90
+ const primaryTjpAddr = 'keystone^failfast_tjp_000';
91
+ const savedDb = globalThisIbGib.dbName_hack;
92
+ globalThisIbGib.dbName_hack = undefined;
93
+ let threw = false;
94
+ try {
95
+ await getDeviceDelegateSecret({ primaryTjpAddr });
96
+ }
97
+ catch (error) {
98
+ threw = true;
99
+ }
100
+ finally {
101
+ globalThisIbGib.dbName_hack = savedDb;
102
+ }
103
+ iReckon(sir, threw).willEqual(true);
104
+ });
105
+ });
106
+ //# sourceMappingURL=device-delegate.respec.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"device-delegate.respec.mjs","sourceRoot":"","sources":["../../src/identity/device-delegate.respec.mts"],"names":[],"mappings":"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"}
@@ -15,6 +15,24 @@ export interface KeystoneUpdateCheckResult {
15
15
  export declare class KeystoneSyncService {
16
16
  protected lc: string;
17
17
  private dispatchUpdateAvailableEvent;
18
+ private dispatchRenewalRequiredEvent;
19
+ /**
20
+ * Retrieves the stored device delegate secret ($S_D$) for an active primary identity from IndexedDB.
21
+ */
22
+ getDeviceDelegateSecret({ primaryTjpAddr }: {
23
+ primaryTjpAddr: string;
24
+ }): Promise<string | undefined>;
25
+ /**
26
+ * Checks if the active identity has a valid, unexpired sync delegate on this device.
27
+ */
28
+ checkDelegateStatus({ activePrimaryAddr, metaspace, space }: {
29
+ activePrimaryAddr: string;
30
+ metaspace?: any;
31
+ space?: any;
32
+ }): Promise<{
33
+ isValid: boolean;
34
+ reason?: 'expired' | 'missing_secret';
35
+ }>;
18
36
  /**
19
37
  * Checks if a server update exists for the given active primary keystone address.
20
38
  */
@@ -1 +1 @@
1
- {"version":3,"file":"keystone-sync-service.d.mts","sourceRoot":"","sources":["../../src/identity/keystone-sync-service.mts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,EAAE,gBAAgB,EAAE,MAAM,kDAAkD,CAAC;AAQpF,MAAM,WAAW,yBAAyB;IACtC,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,gBAAgB,EAAE,MAAM,CAAC;IACzB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;CAC3C;AAED,qBAAa,mBAAmB;IAC5B,SAAS,CAAC,EAAE,EAAE,MAAM,CAA2B;IAE/C,OAAO,CAAC,4BAA4B;IAUpC;;OAEG;IACU,sBAAsB,CAAC,EAChC,iBAAiB,EACjB,SAAS,EACT,KAAK,EACR,EAAE;QACC,iBAAiB,EAAE,MAAM,CAAC;QAC1B,SAAS,CAAC,EAAE,GAAG,CAAC;QAChB,KAAK,CAAC,EAAE,GAAG,CAAC;KACf,GAAG,OAAO,CAAC,yBAAyB,CAAC,CAqHrC;IAED;;;OAGG;IACU,oBAAoB,CAAC,EAC9B,iBAAiB,EACjB,SAAS,EACT,KAAK,EACR,EAAE;QACC,iBAAiB,EAAE,MAAM,CAAC;QAC1B,SAAS,CAAC,EAAE,GAAG,CAAC;QAChB,KAAK,CAAC,EAAE,GAAG,CAAC;KACf,GAAG,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAAC,CAiExC;CACJ;AAID,wBAAgB,sBAAsB,IAAI,mBAAmB,CAK5D"}
1
+ {"version":3,"file":"keystone-sync-service.d.mts","sourceRoot":"","sources":["../../src/identity/keystone-sync-service.mts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,EAAE,gBAAgB,EAAE,MAAM,kDAAkD,CAAC;AAWpF,MAAM,WAAW,yBAAyB;IACtC,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,gBAAgB,EAAE,MAAM,CAAC;IACzB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;CAC3C;AAED,qBAAa,mBAAmB;IAC5B,SAAS,CAAC,EAAE,EAAE,MAAM,CAA2B;IAE/C,OAAO,CAAC,4BAA4B;IAUpC,OAAO,CAAC,4BAA4B;IAUpC;;OAEG;IACU,uBAAuB,CAAC,EACjC,cAAc,EACjB,EAAE;QACC,cAAc,EAAE,MAAM,CAAC;KAC1B,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAE9B;IAED;;OAEG;IACU,mBAAmB,CAAC,EAC7B,iBAAiB,EACjB,SAAS,EACT,KAAK,EACR,EAAE;QACC,iBAAiB,EAAE,MAAM,CAAC;QAC1B,SAAS,CAAC,EAAE,GAAG,CAAC;QAChB,KAAK,CAAC,EAAE,GAAG,CAAC;KACf,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,MAAM,CAAC,EAAE,SAAS,GAAG,gBAAgB,CAAA;KAAE,CAAC,CAwDvE;IAED;;OAEG;IACU,sBAAsB,CAAC,EAChC,iBAAiB,EACjB,SAAS,EACT,KAAK,EACR,EAAE;QACC,iBAAiB,EAAE,MAAM,CAAC;QAC1B,SAAS,CAAC,EAAE,GAAG,CAAC;QAChB,KAAK,CAAC,EAAE,GAAG,CAAC;KACf,GAAG,OAAO,CAAC,yBAAyB,CAAC,CAqHrC;IAED;;;OAGG;IACU,oBAAoB,CAAC,EAC9B,iBAAiB,EACjB,SAAS,EACT,KAAK,EACR,EAAE;QACC,iBAAiB,EAAE,MAAM,CAAC;QAC1B,SAAS,CAAC,EAAE,GAAG,CAAC;QAChB,KAAK,CAAC,EAAE,GAAG,CAAC;KACf,GAAG,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAAC,CAiExC;CACJ;AAID,wBAAgB,sBAAsB,IAAI,mBAAmB,CAK5D"}
@@ -7,11 +7,14 @@
7
7
  import { extractErrorMsg } from "@ibgib/helper-gib/dist/helpers/utils-helper.mjs";
8
8
  import { getIbAndGib, getIbGibAddr } from "@ibgib/ts-gib/dist/helper.mjs";
9
9
  import { getGibInfo } from "@ibgib/ts-gib/dist/V1/transforms/transform-helper.mjs";
10
+ import { KeystoneService_V1 } from "@ibgib/core-gib/dist/keystone/keystone-service-v1.mjs";
10
11
  import { getTimelinesGroupedByTjp, getTjpAddr, toDto } from "@ibgib/core-gib/dist/common/other/ibgib-helper.mjs";
11
12
  import { updateSpecialIndex } from "@ibgib/core-gib/dist/timeline/timeline-api.mjs";
13
+ import { isDelegateExpired } from "@ibgib/core-gib/dist/keystone/delegate/delegate-helpers.mjs";
12
14
  import { getApiBridge } from "../api/ibgib-api-bridge.mjs";
13
15
  import { getGlobalMetaspace_waitIfNeeded } from "../helpers.mjs";
14
- import { EVENT_IBGIB_IDENTITY_UPDATE_AVAILABLE } from "../ui/ui-constants.mjs";
16
+ import { getDeviceDelegateSecret } from "./device-delegate-helper.mjs";
17
+ import { EVENT_IBGIB_IDENTITY_UPDATE_AVAILABLE, EVENT_IBGIB_IDENTITY_RENEWAL_REQUIRED } from "../ui/ui-constants.mjs";
15
18
  export class KeystoneSyncService {
16
19
  lc = `[KeystoneSyncService]`;
17
20
  dispatchUpdateAvailableEvent(detail) {
@@ -23,6 +26,79 @@ export class KeystoneSyncService {
23
26
  }));
24
27
  }
25
28
  }
29
+ dispatchRenewalRequiredEvent(detail) {
30
+ if (typeof window !== 'undefined') {
31
+ window.dispatchEvent(new CustomEvent(EVENT_IBGIB_IDENTITY_RENEWAL_REQUIRED, {
32
+ detail,
33
+ bubbles: true,
34
+ composed: true,
35
+ }));
36
+ }
37
+ }
38
+ /**
39
+ * Retrieves the stored device delegate secret ($S_D$) for an active primary identity from IndexedDB.
40
+ */
41
+ async getDeviceDelegateSecret({ primaryTjpAddr }) {
42
+ return getDeviceDelegateSecret({ primaryTjpAddr });
43
+ }
44
+ /**
45
+ * Checks if the active identity has a valid, unexpired sync delegate on this device.
46
+ */
47
+ async checkDelegateStatus({ activePrimaryAddr, metaspace, space }) {
48
+ const lc = `${this.lc}[${this.checkDelegateStatus.name}]`;
49
+ try {
50
+ if (!metaspace)
51
+ metaspace = await getGlobalMetaspace_waitIfNeeded();
52
+ if (!metaspace) {
53
+ throw new Error(`${lc} (UNEXPECTED) metaspace falsy? (E: a1b2c3d4e5f60718293a4b5c6d7e8f90)`);
54
+ }
55
+ if (!space)
56
+ space = await metaspace.getLocalUserSpace({ lock: false });
57
+ if (!space) {
58
+ throw new Error(`${lc} (UNEXPECTED) space falsy? (E: b2c3d4e5f60718293a4b5c6d7e8f90a1)`);
59
+ }
60
+ const info = getGibInfo({ ibGibAddr: activePrimaryAddr });
61
+ const { ib } = getIbAndGib({ ibGibAddr: activePrimaryAddr });
62
+ const primaryTjpAddr = info.tjpGib ? `${ib}^${info.tjpGib}` : activePrimaryAddr;
63
+ // 1. Check if local secret exists in IndexedDB
64
+ const secret = await getDeviceDelegateSecret({ primaryTjpAddr });
65
+ if (!secret) {
66
+ this.dispatchRenewalRequiredEvent({
67
+ activePrimaryAddr,
68
+ primaryTjpAddr,
69
+ reason: 'missing_secret'
70
+ });
71
+ return { isValid: false, reason: 'missing_secret' };
72
+ }
73
+ // 2. Check if primary keystone has registered delegates and if any are expired
74
+ const keystoneService = new KeystoneService_V1();
75
+ const keystone = await keystoneService.getLatestKeystone({
76
+ addr: activePrimaryAddr,
77
+ metaspace,
78
+ space
79
+ });
80
+ if (!keystone) {
81
+ throw new Error(`${lc} (UNEXPECTED) latest primary keystone not found for addr: ${activePrimaryAddr} (E: c3d4e5f60718293a4b5c6d7e8f90a1b2)`);
82
+ }
83
+ if (keystone?.data?.delegates) {
84
+ const delegates = Object.values(keystone.data.delegates);
85
+ const isAnyExpired = delegates.some(d => isDelegateExpired({ delegateInfo: d }));
86
+ if (isAnyExpired) {
87
+ this.dispatchRenewalRequiredEvent({
88
+ activePrimaryAddr,
89
+ primaryTjpAddr,
90
+ reason: 'expired'
91
+ });
92
+ return { isValid: false, reason: 'expired' };
93
+ }
94
+ }
95
+ return { isValid: true };
96
+ }
97
+ catch (error) {
98
+ console.error(`${lc} ${extractErrorMsg(error)}`);
99
+ return { isValid: false };
100
+ }
101
+ }
26
102
  /**
27
103
  * Checks if a server update exists for the given active primary keystone address.
28
104
  */
@@ -1 +1 @@
1
- {"version":3,"file":"keystone-sync-service.mjs","sourceRoot":"","sources":["../../src/identity/keystone-sync-service.mts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"keystone-sync-service.mjs","sourceRoot":"","sources":["../../src/identity/keystone-sync-service.mts"],"names":[],"mappings":"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"}
@@ -0,0 +1,72 @@
1
+ /**
2
+ * @module identity/passkey-helper
3
+ *
4
+ * WebAuthn Level 3 PRF (Pseudo-Random Function) Passkey helper service.
5
+ * Derives deterministic 256-bit symmetric secrets from hardware biometrics
6
+ * (Touch ID, Windows Hello, Android Biometrics, YubiKey 5Ci) and creates
7
+ * passkey device sync delegates.
8
+ */
9
+ import { AuthenticatorTransport } from '@ibgib/core-gib/dist/keystone/keystone-types.mjs';
10
+ /**
11
+ * Checks if the browser and underlying platform authenticator support WebAuthn PRF.
12
+ */
13
+ export declare function isPasskeyPrfSupported(): Promise<boolean>;
14
+ /**
15
+ * Helper to convert an ArrayBuffer to a lowercase hex string.
16
+ */
17
+ export declare function bufferToHex(buffer: ArrayBuffer | ArrayBufferLike): string;
18
+ /**
19
+ * Helper to convert a hex string to a Uint8Array.
20
+ */
21
+ export declare function hexToUint8Array(hex: string): Uint8Array;
22
+ /**
23
+ * Helper to normalize a salt string or buffer into a 32-byte Uint8Array for PRF evaluation.
24
+ */
25
+ export declare function normalizeSaltTo32Bytes(salt: string | Uint8Array): Uint8Array;
26
+ /**
27
+ * Creates and registers a new WebAuthn resident passkey credential with PRF enabled.
28
+ */
29
+ /**
30
+ * Creates and registers a new WebAuthn resident passkey credential with PRF enabled.
31
+ */
32
+ export declare function registerPasskeyCredential({ username, displayName, rpName, rpId, salt, }: {
33
+ username: string;
34
+ displayName?: string;
35
+ rpName?: string;
36
+ rpId?: string;
37
+ salt?: string | Uint8Array;
38
+ }): Promise<{
39
+ credentialId: string;
40
+ rawId: ArrayBuffer;
41
+ transports: AuthenticatorTransport[];
42
+ passkeySecret?: string;
43
+ }>;
44
+ /**
45
+ * Evaluates the PRF extension on a passkey assertion to derive a deterministic 256-bit symmetric secret.
46
+ */
47
+ export declare function evaluatePasskeyPrf({ salt, credentialId, transports, rpId, }: {
48
+ salt: string | Uint8Array;
49
+ credentialId?: string;
50
+ transports?: AuthenticatorTransport[];
51
+ rpId?: string;
52
+ }): Promise<{
53
+ passkeySecret: string;
54
+ credentialId: string;
55
+ }>;
56
+ /**
57
+ * Creates a Passkey sovereign sync delegate for this device.
58
+ * Standardized format: `passkey-${safeUsername}-${defaultDeviceTag}`
59
+ */
60
+ export declare function createPasskeyDeviceSyncDelegate({ username, primaryTjpAddr, passkeySecret, transports, metaspace, space, }: {
61
+ username: string;
62
+ primaryTjpAddr: string;
63
+ passkeySecret: string;
64
+ transports?: AuthenticatorTransport[];
65
+ metaspace?: any;
66
+ space?: any;
67
+ }): Promise<{
68
+ delegateKeystone: any;
69
+ deviceTag: string;
70
+ delegateSecret: string;
71
+ }>;
72
+ //# sourceMappingURL=passkey-helper.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"passkey-helper.d.mts","sourceRoot":"","sources":["../../src/identity/passkey-helper.mts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,OAAO,EAAE,sBAAsB,EAAwB,MAAM,kDAAkD,CAAC;AAGhH;;GAEG;AACH,wBAAsB,qBAAqB,IAAI,OAAO,CAAC,OAAO,CAAC,CAoB9D;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,WAAW,GAAG,eAAe,GAAG,MAAM,CAIzE;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,CAOvD;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,GAAG,UAAU,CAgB5E;AAED;;GAEG;AACH;;GAEG;AACH,wBAAsB,yBAAyB,CAAC,EAC5C,QAAQ,EACR,WAAsB,EACtB,MAAgB,EAChB,IAAI,EACJ,IAAI,GACP,EAAE;IACC,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,GAAG,UAAU,CAAC;CAC9B,GAAG,OAAO,CAAC;IACR,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,WAAW,CAAC;IACnB,UAAU,EAAE,sBAAsB,EAAE,CAAC;IACrC,aAAa,CAAC,EAAE,MAAM,CAAC;CAC1B,CAAC,CAwED;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CAAC,EACrC,IAAI,EACJ,YAAY,EACZ,UAAU,EACV,IAAI,GACP,EAAE;IACC,IAAI,EAAE,MAAM,GAAG,UAAU,CAAC;IAC1B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,sBAAsB,EAAE,CAAC;IACtC,IAAI,CAAC,EAAE,MAAM,CAAC;CACjB,GAAG,OAAO,CAAC;IACR,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;CACxB,CAAC,CA6DD;AAED;;;GAGG;AACH,wBAAsB,+BAA+B,CAAC,EAClD,QAAQ,EACR,cAAc,EACd,aAAa,EACb,UAAU,EACV,SAAS,EACT,KAAK,GACR,EAAE;IACC,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,sBAAsB,EAAE,CAAC;IACtC,SAAS,CAAC,EAAE,GAAG,CAAC;IAChB,KAAK,CAAC,EAAE,GAAG,CAAC;CACf,GAAG,OAAO,CAAC;IAAE,gBAAgB,EAAE,GAAG,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,cAAc,EAAE,MAAM,CAAA;CAAE,CAAC,CA4BhF"}