@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.
- package/dist/AUTO-GENERATED-version.d.mts +1 -1
- package/dist/AUTO-GENERATED-version.mjs +1 -1
- package/dist/helpers.d.mts.map +1 -1
- package/dist/helpers.mjs +1 -0
- package/dist/helpers.mjs.map +1 -1
- package/dist/helpers.web.d.mts +3 -1
- package/dist/helpers.web.d.mts.map +1 -1
- package/dist/helpers.web.mjs +17 -1
- package/dist/helpers.web.mjs.map +1 -1
- package/dist/identity/device-delegate-helper.d.mts +91 -0
- package/dist/identity/device-delegate-helper.d.mts.map +1 -0
- package/dist/identity/device-delegate-helper.mjs +190 -0
- package/dist/identity/device-delegate-helper.mjs.map +1 -0
- package/dist/identity/device-delegate.respec.d.mts +2 -0
- package/dist/identity/device-delegate.respec.d.mts.map +1 -0
- package/dist/identity/device-delegate.respec.mjs +106 -0
- package/dist/identity/device-delegate.respec.mjs.map +1 -0
- package/dist/identity/keystone-sync-service.d.mts +18 -0
- package/dist/identity/keystone-sync-service.d.mts.map +1 -1
- package/dist/identity/keystone-sync-service.mjs +77 -1
- package/dist/identity/keystone-sync-service.mjs.map +1 -1
- package/dist/identity/passkey-helper.d.mts +72 -0
- package/dist/identity/passkey-helper.d.mts.map +1 -0
- package/dist/identity/passkey-helper.mjs +237 -0
- package/dist/identity/passkey-helper.mjs.map +1 -0
- package/dist/identity/passkey.respec.d.mts +2 -0
- package/dist/identity/passkey.respec.d.mts.map +1 -0
- package/dist/identity/passkey.respec.mjs +169 -0
- package/dist/identity/passkey.respec.mjs.map +1 -0
- package/dist/index.d.mts +2 -1
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +2 -2
- package/dist/index.mjs.map +1 -1
- package/dist/storage/storage-helpers.web.d.mts +9 -0
- package/dist/storage/storage-helpers.web.d.mts.map +1 -1
- package/dist/storage/storage-helpers.web.mjs +42 -0
- package/dist/storage/storage-helpers.web.mjs.map +1 -1
- package/dist/ui/component/identity/add-device/add-device.d.mts.map +1 -1
- package/dist/ui/component/identity/add-device/add-device.mjs +31 -43
- package/dist/ui/component/identity/add-device/add-device.mjs.map +1 -1
- package/dist/ui/component/identity/keystone-creator/keystone-creator.d.mts +18 -1
- package/dist/ui/component/identity/keystone-creator/keystone-creator.d.mts.map +1 -1
- package/dist/ui/component/identity/keystone-creator/keystone-creator.html +42 -3
- package/dist/ui/component/identity/keystone-creator/keystone-creator.mjs +524 -104
- package/dist/ui/component/identity/keystone-creator/keystone-creator.mjs.map +1 -1
- package/dist/ui/component/identity/keystone-details/keystone-details.d.mts +19 -1
- package/dist/ui/component/identity/keystone-details/keystone-details.d.mts.map +1 -1
- package/dist/ui/component/identity/keystone-details/keystone-details.html +38 -0
- package/dist/ui/component/identity/keystone-details/keystone-details.mjs +1217 -132
- package/dist/ui/component/identity/keystone-details/keystone-details.mjs.map +1 -1
- package/dist/ui/component/identity/remove-device/remove-device.d.mts.map +1 -1
- package/dist/ui/component/identity/remove-device/remove-device.mjs +1 -0
- package/dist/ui/component/identity/remove-device/remove-device.mjs.map +1 -1
- package/dist/ui/ui-constants.d.mts +1 -0
- package/dist/ui/ui-constants.d.mts.map +1 -1
- package/dist/ui/ui-constants.mjs +1 -0
- package/dist/ui/ui-constants.mjs.map +1 -1
- package/dist/ui/ui-helpers.d.mts +3 -0
- package/dist/ui/ui-helpers.d.mts.map +1 -1
- package/dist/ui/ui-helpers.mjs +110 -6
- package/dist/ui/ui-helpers.mjs.map +1 -1
- package/dist/ui/ui-types.d.mts +5 -0
- package/dist/ui/ui-types.d.mts.map +1 -1
- package/package.json +2 -2
- package/src/AUTO-GENERATED-version.mts +1 -1
- package/src/helpers.mts +1 -0
- package/src/helpers.web.mts +22 -2
- package/src/identity/custodian-delegate-helper.mts.bak +7 -0
- package/src/identity/device-delegate-helper.mts +268 -0
- package/src/identity/device-delegate.respec.mts +125 -0
- package/src/identity/keystone-sync-service.mts +95 -2
- package/src/identity/passkey-helper.mts +304 -0
- package/src/identity/passkey.respec.mts +194 -0
- package/src/index.mts +2 -2
- package/src/storage/storage-helpers.web.mts +47 -0
- package/src/ui/component/identity/add-device/add-device.mts +37 -48
- package/src/ui/component/identity/keystone-creator/keystone-creator.html +42 -3
- package/src/ui/component/identity/keystone-creator/keystone-creator.mts +568 -111
- package/src/ui/component/identity/keystone-details/keystone-details.html +38 -0
- package/src/ui/component/identity/keystone-details/keystone-details.mts +1290 -142
- package/src/ui/component/identity/remove-device/remove-device.mts +1 -0
- package/src/ui/ui-constants.mts +1 -0
- package/src/ui/ui-helpers.mts +118 -5
- package/src/ui/ui-types.mts +6 -0
- package/dist/identity/custodian-delegate-helper.d.mts +0 -22
- package/dist/identity/custodian-delegate-helper.d.mts.map +0 -1
- package/dist/identity/custodian-delegate-helper.mjs +0 -67
- package/dist/identity/custodian-delegate-helper.mjs.map +0 -1
- package/src/identity/custodian-delegate-helper.mts +0 -86
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ui-helpers.mjs","sourceRoot":"","sources":["../../src/ui/ui-helpers.mts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ui-helpers.mjs","sourceRoot":"","sources":["../../src/ui/ui-helpers.mts"],"names":[],"mappings":"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"}
|
package/dist/ui/ui-types.d.mts
CHANGED
|
@@ -17,4 +17,9 @@ export interface EventIbGibIdentityUpdateAvailableDetail {
|
|
|
17
17
|
localN: number;
|
|
18
18
|
serverLatestAddr: string;
|
|
19
19
|
}
|
|
20
|
+
export interface EventIbGibIdentityRenewalRequiredDetail {
|
|
21
|
+
activePrimaryAddr: string;
|
|
22
|
+
primaryTjpAddr: string;
|
|
23
|
+
reason: 'expired' | 'missing_secret';
|
|
24
|
+
}
|
|
20
25
|
//# sourceMappingURL=ui-types.d.mts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ui-types.d.mts","sourceRoot":"","sources":["../../src/ui/ui-types.mts"],"names":[],"mappings":"AACA;;;GAGG;AACH,MAAM,WAAW,WAAW;IACxB;;OAEG;IACH,oBAAoB,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC;KAAE,CAAA;CACnD;AAED,MAAM,WAAW,uCAAuC;IACpD,iBAAiB,EAAE,MAAM,CAAC;IAC1B,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,gBAAgB,EAAE,MAAM,CAAC;CAC5B"}
|
|
1
|
+
{"version":3,"file":"ui-types.d.mts","sourceRoot":"","sources":["../../src/ui/ui-types.mts"],"names":[],"mappings":"AACA;;;GAGG;AACH,MAAM,WAAW,WAAW;IACxB;;OAEG;IACH,oBAAoB,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC;KAAE,CAAA;CACnD;AAED,MAAM,WAAW,uCAAuC;IACpD,iBAAiB,EAAE,MAAM,CAAC;IAC1B,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,gBAAgB,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,uCAAuC;IACpD,iBAAiB,EAAE,MAAM,CAAC;IAC1B,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,SAAS,GAAG,gBAAgB,CAAC;CACxC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ibgib/web-gib",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.62",
|
|
4
4
|
"description": "Framework for creating agentic ibGib web apps. Contains plumbing for ibgib components, agentic framework (currently only Gemini implemented), web-based IndexedDB storage substrate, and more.",
|
|
5
5
|
"funding": {
|
|
6
6
|
"type": "individual",
|
|
@@ -29,7 +29,7 @@
|
|
|
29
29
|
"license": "ISC",
|
|
30
30
|
"dependencies": {
|
|
31
31
|
"@google/genai": "^1.33.0",
|
|
32
|
-
"@ibgib/core-gib": "^0.1.
|
|
32
|
+
"@ibgib/core-gib": "^0.1.76",
|
|
33
33
|
"@ibgib/encrypt-gib": "^0.3.1",
|
|
34
34
|
"@ibgib/helper-gib": "^0.0.37",
|
|
35
35
|
"@ibgib/ts-gib": "^0.5.34"
|
package/src/helpers.mts
CHANGED
|
@@ -716,6 +716,7 @@ export function getIbGibGlobalThis_IbGib(): IbGibGlobalThisInfo {
|
|
|
716
716
|
if (!result) {
|
|
717
717
|
console.log(`${lc} initializing globalThis.${GLOBAL_THIS_IBGIB_KEY}... (I: 9d9ff1813448d9a1b82b0e5790a74825)`);
|
|
718
718
|
result = {};
|
|
719
|
+
globalThis[GLOBAL_THIS_IBGIB_KEY] = result;
|
|
719
720
|
}
|
|
720
721
|
|
|
721
722
|
return result;
|
package/src/helpers.web.mts
CHANGED
|
@@ -424,6 +424,9 @@ export async function promptForText({
|
|
|
424
424
|
}
|
|
425
425
|
}
|
|
426
426
|
|
|
427
|
+
import { evaluatePasskeyPrf, isPasskeyPrfSupported } from "./identity/passkey-helper.mjs";
|
|
428
|
+
import { KeystonePasskeyEntry } from "@ibgib/core-gib/dist/keystone/keystone-types.mjs";
|
|
429
|
+
|
|
427
430
|
/**
|
|
428
431
|
* not implemented atow (12/2024). I think we'll have perhaps a modal dialog
|
|
429
432
|
* with a known name and get at it that way.
|
|
@@ -431,9 +434,11 @@ export async function promptForText({
|
|
|
431
434
|
export async function promptForSecret({
|
|
432
435
|
msg,
|
|
433
436
|
confirm,
|
|
437
|
+
passkeys,
|
|
434
438
|
}: {
|
|
435
|
-
msg?: string
|
|
436
|
-
confirm: boolean
|
|
439
|
+
msg?: string;
|
|
440
|
+
confirm: boolean;
|
|
441
|
+
passkeys?: Record<string, KeystonePasskeyEntry>;
|
|
437
442
|
}): Promise<string> {
|
|
438
443
|
const lc = `[${promptForSecret.name}]`;
|
|
439
444
|
try {
|
|
@@ -445,6 +450,19 @@ export async function promptForSecret({
|
|
|
445
450
|
let attempts = 0;
|
|
446
451
|
let maxAttempts = 5;
|
|
447
452
|
|
|
453
|
+
const prfSupported = await isPasskeyPrfSupported().catch(() => false);
|
|
454
|
+
const onPasskeyAuth = (prfSupported && passkeys && Object.keys(passkeys).length > 0)
|
|
455
|
+
? async (passkeyEntry?: any) => {
|
|
456
|
+
if (!passkeyEntry) return undefined;
|
|
457
|
+
const { passkeySecret } = await evaluatePasskeyPrf({
|
|
458
|
+
credentialId: passkeyEntry.credentialId,
|
|
459
|
+
salt: passkeyEntry.salt,
|
|
460
|
+
transports: passkeyEntry.transports,
|
|
461
|
+
});
|
|
462
|
+
return passkeySecret;
|
|
463
|
+
}
|
|
464
|
+
: undefined;
|
|
465
|
+
|
|
448
466
|
do {
|
|
449
467
|
attempts++;
|
|
450
468
|
if (attempts >= maxAttempts) {
|
|
@@ -458,6 +476,8 @@ export async function promptForSecret({
|
|
|
458
476
|
showInput: true,
|
|
459
477
|
isPassword: true,
|
|
460
478
|
defaultValue: undefined,
|
|
479
|
+
passkeys,
|
|
480
|
+
onPasskeyAuth,
|
|
461
481
|
});
|
|
462
482
|
if (result === undefined) { throw new Error(`user cancelled (E: 91519d04378e84106f3df8eb36d99725)`); }
|
|
463
483
|
|
|
@@ -0,0 +1,268 @@
|
|
|
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
|
+
|
|
10
|
+
import { extractErrorMsg, getSaferSubstring } from "@ibgib/helper-gib/dist/helpers/utils-helper.mjs";
|
|
11
|
+
import { deriveDeviceDelegateSecret, deriveDelegateSecret, createSyncDelegateKeystone } from "@ibgib/core-gib/dist/keystone/delegate/delegate-helpers.mjs";
|
|
12
|
+
import { generateDefaultDeviceTag } from "../util/device-helper.mjs";
|
|
13
|
+
import { storageGet, storagePut, storageDelete } from "../storage/storage-helpers.web.mjs";
|
|
14
|
+
import { getGlobalDbName, getGlobalStoreName } from "../helpers.web.mjs";
|
|
15
|
+
|
|
16
|
+
export { generateDefaultDeviceTag };
|
|
17
|
+
|
|
18
|
+
export const DEVICE_DELEGATE_SECRET_PREFIX = 'ibgib_device_delegate_secret_';
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* Builds the IndexedDB storage key for a device delegate secret given its primary identity TJP address.
|
|
22
|
+
*/
|
|
23
|
+
export function getDeviceDelegateSecretKey({ primaryTjpAddr }: { primaryTjpAddr: string }): string {
|
|
24
|
+
if (!primaryTjpAddr) {
|
|
25
|
+
throw new Error('primaryTjpAddr is required to get device delegate secret key (E: 1a2b3c4d5e6f7890123456789a000101)');
|
|
26
|
+
}
|
|
27
|
+
return `${DEVICE_DELEGATE_SECRET_PREFIX}${primaryTjpAddr}`;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* Retrieves the stored device delegate secret for the given primary identity from IndexedDB, if present.
|
|
32
|
+
*/
|
|
33
|
+
export async function getDeviceDelegateSecret({
|
|
34
|
+
primaryTjpAddr,
|
|
35
|
+
}: {
|
|
36
|
+
primaryTjpAddr: string;
|
|
37
|
+
}): Promise<string | undefined> {
|
|
38
|
+
const lc = `[${getDeviceDelegateSecret.name}]`;
|
|
39
|
+
try {
|
|
40
|
+
if (!primaryTjpAddr) {
|
|
41
|
+
throw new Error('primaryTjpAddr is required to get device delegate secret (E: 2a2b3c4d5e6f7890123456789a000102)');
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
const dbName = getGlobalDbName();
|
|
45
|
+
const storeName = getGlobalStoreName();
|
|
46
|
+
const key = getDeviceDelegateSecretKey({ primaryTjpAddr });
|
|
47
|
+
|
|
48
|
+
return await storageGet({ dbName, storeName, key });
|
|
49
|
+
} catch (error) {
|
|
50
|
+
console.error(`${lc} ${extractErrorMsg(error)}`);
|
|
51
|
+
throw error;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
/**
|
|
56
|
+
* Persists a device delegate secret for the given primary identity into IndexedDB.
|
|
57
|
+
*/
|
|
58
|
+
export async function setDeviceDelegateSecret({
|
|
59
|
+
primaryTjpAddr,
|
|
60
|
+
delegateSecret,
|
|
61
|
+
}: {
|
|
62
|
+
primaryTjpAddr: string;
|
|
63
|
+
delegateSecret: string;
|
|
64
|
+
}): Promise<void> {
|
|
65
|
+
const lc = `[${setDeviceDelegateSecret.name}]`;
|
|
66
|
+
try {
|
|
67
|
+
if (!primaryTjpAddr) {
|
|
68
|
+
throw new Error('primaryTjpAddr is required to set device delegate secret (E: 3a2b3c4d5e6f7890123456789a000103)');
|
|
69
|
+
}
|
|
70
|
+
if (!delegateSecret) {
|
|
71
|
+
throw new Error('delegateSecret is required to set device delegate secret (E: 4a2b3c4d5e6f7890123456789a000104)');
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
const dbName = getGlobalDbName();
|
|
75
|
+
const storeName = getGlobalStoreName();
|
|
76
|
+
const key = getDeviceDelegateSecretKey({ primaryTjpAddr });
|
|
77
|
+
|
|
78
|
+
await storagePut({ dbName, storeName, key, value: delegateSecret });
|
|
79
|
+
} catch (error) {
|
|
80
|
+
console.error(`${lc} ${extractErrorMsg(error)}`);
|
|
81
|
+
throw error;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
/**
|
|
86
|
+
* Retrieves an existing device delegate secret from IndexedDB, or generates a high-entropy 512-bit
|
|
87
|
+
* secret, persists it, and returns it.
|
|
88
|
+
*/
|
|
89
|
+
export async function getOrCreateDeviceDelegateSecret({
|
|
90
|
+
primaryTjpAddr,
|
|
91
|
+
deviceTag,
|
|
92
|
+
}: {
|
|
93
|
+
primaryTjpAddr: string;
|
|
94
|
+
deviceTag?: string;
|
|
95
|
+
}): Promise<string> {
|
|
96
|
+
const lc = `[${getOrCreateDeviceDelegateSecret.name}]`;
|
|
97
|
+
try {
|
|
98
|
+
if (!primaryTjpAddr) {
|
|
99
|
+
throw new Error('primaryTjpAddr is required to get or create device delegate secret (E: 5a2b3c4d5e6f7890123456789a000105)');
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
const existingSecret = await getDeviceDelegateSecret({ primaryTjpAddr });
|
|
103
|
+
if (existingSecret) {
|
|
104
|
+
return existingSecret;
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
const newSecret = await deriveDeviceDelegateSecret({ primaryTjpAddr, deviceTag });
|
|
108
|
+
await setDeviceDelegateSecret({ primaryTjpAddr, delegateSecret: newSecret });
|
|
109
|
+
|
|
110
|
+
return newSecret;
|
|
111
|
+
} catch (error) {
|
|
112
|
+
console.error(`${lc} ${extractErrorMsg(error)}`);
|
|
113
|
+
throw error;
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
/**
|
|
118
|
+
* Removes the stored local device delegate secret from IndexedDB.
|
|
119
|
+
*/
|
|
120
|
+
export async function clearDeviceDelegateSecret({
|
|
121
|
+
primaryTjpAddr,
|
|
122
|
+
}: {
|
|
123
|
+
primaryTjpAddr: string;
|
|
124
|
+
}): Promise<void> {
|
|
125
|
+
const lc = `[${clearDeviceDelegateSecret.name}]`;
|
|
126
|
+
try {
|
|
127
|
+
if (!primaryTjpAddr) { return; }
|
|
128
|
+
|
|
129
|
+
const dbName = getGlobalDbName();
|
|
130
|
+
const storeName = getGlobalStoreName();
|
|
131
|
+
const key = getDeviceDelegateSecretKey({ primaryTjpAddr });
|
|
132
|
+
|
|
133
|
+
await storageDelete({ dbName, storeName, key });
|
|
134
|
+
} catch (error) {
|
|
135
|
+
console.error(`${lc} ${extractErrorMsg(error)}`);
|
|
136
|
+
throw error;
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
/**
|
|
141
|
+
* Creates a Sovereign Password-based sync delegate for this device.
|
|
142
|
+
* Standardized format: `pwd-${safeUsername}-${defaultDeviceTag}`
|
|
143
|
+
*/
|
|
144
|
+
export async function createSovereignDeviceSyncDelegate({
|
|
145
|
+
username,
|
|
146
|
+
primaryTjpAddr,
|
|
147
|
+
masterSecret,
|
|
148
|
+
metaspace,
|
|
149
|
+
space,
|
|
150
|
+
}: {
|
|
151
|
+
username: string;
|
|
152
|
+
primaryTjpAddr: string;
|
|
153
|
+
masterSecret: string;
|
|
154
|
+
metaspace?: any;
|
|
155
|
+
space?: any;
|
|
156
|
+
}): Promise<{ delegateKeystone: any; deviceTag: string; delegateSecret: string }> {
|
|
157
|
+
const delegateSecret = await deriveDelegateSecret({ masterSecret });
|
|
158
|
+
await setDeviceDelegateSecret({ primaryTjpAddr, delegateSecret });
|
|
159
|
+
|
|
160
|
+
const safeUser = getSaferSubstring({ text: username, length: 8, keepLiterals: ['-'] }) || 'user';
|
|
161
|
+
const defaultDeviceTag = generateDefaultDeviceTag();
|
|
162
|
+
const deviceTag = `pwd-${safeUser}-${defaultDeviceTag}`;
|
|
163
|
+
const sovereignSyncProfileName = process.env.KEYSTONE_PROFILE_SOVEREIGN_SYNC;
|
|
164
|
+
if (!sovereignSyncProfileName || !sovereignSyncProfileName.trim()) {
|
|
165
|
+
throw new Error('KEYSTONE_PROFILE_SOVEREIGN_SYNC environment variable is missing.');
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
const delegateKeystone = await createSyncDelegateKeystone({
|
|
169
|
+
profileName: sovereignSyncProfileName.trim() as any,
|
|
170
|
+
username,
|
|
171
|
+
deviceTag,
|
|
172
|
+
primaryTjpAddr,
|
|
173
|
+
delegateSecret,
|
|
174
|
+
additionalFrameDetails: { client: 'space-gib-web' },
|
|
175
|
+
metaspace,
|
|
176
|
+
space,
|
|
177
|
+
});
|
|
178
|
+
|
|
179
|
+
return { delegateKeystone, deviceTag, delegateSecret };
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
/**
|
|
183
|
+
* Creates an OAuth2 Custodial sync delegate for this device.
|
|
184
|
+
* Standardized format: `oauth2-${providerId}-${defaultDeviceTag}`
|
|
185
|
+
*/
|
|
186
|
+
export async function createOAuth2DeviceSyncDelegate({
|
|
187
|
+
providerId,
|
|
188
|
+
username = 'user',
|
|
189
|
+
primaryTjpAddr,
|
|
190
|
+
custodianReqs,
|
|
191
|
+
metaspace,
|
|
192
|
+
space,
|
|
193
|
+
}: {
|
|
194
|
+
providerId: string;
|
|
195
|
+
username?: string;
|
|
196
|
+
primaryTjpAddr: string;
|
|
197
|
+
custodianReqs?: any;
|
|
198
|
+
metaspace?: any;
|
|
199
|
+
space?: any;
|
|
200
|
+
}): Promise<{ delegateKeystone: any; deviceTag: string; delegateSecret: string }> {
|
|
201
|
+
const delegateSecret = await getOrCreateDeviceDelegateSecret({ primaryTjpAddr });
|
|
202
|
+
const defaultDeviceTag = generateDefaultDeviceTag();
|
|
203
|
+
const deviceTag = `oauth2-${providerId}-${defaultDeviceTag}`;
|
|
204
|
+
const custodianSyncProfileName = process.env.KEYSTONE_PROFILE_CUSTODIAN_SYNC;
|
|
205
|
+
if (!custodianSyncProfileName || !custodianSyncProfileName.trim()) {
|
|
206
|
+
throw new Error('KEYSTONE_PROFILE_CUSTODIAN_SYNC environment variable is missing.');
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
const delegateKeystone = await createSyncDelegateKeystone({
|
|
210
|
+
profileName: custodianSyncProfileName.trim() as any,
|
|
211
|
+
username,
|
|
212
|
+
deviceTag,
|
|
213
|
+
primaryTjpAddr,
|
|
214
|
+
delegateSecret,
|
|
215
|
+
custodianReqs,
|
|
216
|
+
additionalFrameDetails: { client: 'space-gib-web' },
|
|
217
|
+
metaspace,
|
|
218
|
+
space,
|
|
219
|
+
});
|
|
220
|
+
|
|
221
|
+
return { delegateKeystone, deviceTag, delegateSecret };
|
|
222
|
+
}
|
|
223
|
+
|
|
224
|
+
/**
|
|
225
|
+
* Creates an Email Custodial sync delegate for this device.
|
|
226
|
+
* Standardized format: `email-${safeUser}@${safeDomain}-${defaultDeviceTag}`
|
|
227
|
+
*/
|
|
228
|
+
export async function createEmailDeviceSyncDelegate({
|
|
229
|
+
email,
|
|
230
|
+
primaryTjpAddr,
|
|
231
|
+
custodianReqs,
|
|
232
|
+
metaspace,
|
|
233
|
+
space,
|
|
234
|
+
}: {
|
|
235
|
+
email: string;
|
|
236
|
+
primaryTjpAddr: string;
|
|
237
|
+
custodianReqs?: any;
|
|
238
|
+
metaspace?: any;
|
|
239
|
+
space?: any;
|
|
240
|
+
}): Promise<{ delegateKeystone: any; deviceTag: string; delegateSecret: string }> {
|
|
241
|
+
const delegateSecret = await getOrCreateDeviceDelegateSecret({ primaryTjpAddr });
|
|
242
|
+
const defaultDeviceTag = generateDefaultDeviceTag();
|
|
243
|
+
const [emailUser = '', emailDomain = ''] = (email || '').split('@');
|
|
244
|
+
const safeUser = getSaferSubstring({ text: emailUser, length: 8, keepLiterals: ['-'] }) || 'user';
|
|
245
|
+
const domainPart = emailDomain.split('.')[0] || '';
|
|
246
|
+
const safeDomain = domainPart ? getSaferSubstring({ text: domainPart, length: 8, keepLiterals: ['-'] }) : '';
|
|
247
|
+
const emailTag = safeDomain ? `${safeUser}@${safeDomain}` : safeUser;
|
|
248
|
+
const deviceTag = `email-${emailTag}-${defaultDeviceTag}`;
|
|
249
|
+
const username = safeUser;
|
|
250
|
+
const custodianSyncProfileName = process.env.KEYSTONE_PROFILE_CUSTODIAN_SYNC;
|
|
251
|
+
if (!custodianSyncProfileName || !custodianSyncProfileName.trim()) {
|
|
252
|
+
throw new Error('KEYSTONE_PROFILE_CUSTODIAN_SYNC environment variable is missing.');
|
|
253
|
+
}
|
|
254
|
+
|
|
255
|
+
const delegateKeystone = await createSyncDelegateKeystone({
|
|
256
|
+
profileName: custodianSyncProfileName.trim() as any,
|
|
257
|
+
username,
|
|
258
|
+
deviceTag,
|
|
259
|
+
primaryTjpAddr,
|
|
260
|
+
delegateSecret,
|
|
261
|
+
custodianReqs,
|
|
262
|
+
additionalFrameDetails: { client: 'space-gib-web' },
|
|
263
|
+
metaspace,
|
|
264
|
+
space,
|
|
265
|
+
});
|
|
266
|
+
|
|
267
|
+
return { delegateKeystone, deviceTag, delegateSecret };
|
|
268
|
+
}
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
import { respecfully, ifWe, ifWeMight, iReckon } from '@ibgib/helper-gib/dist/respec-gib/respec-gib.mjs';
|
|
2
|
+
import { getIbGibGlobalThis_IbGib } from '../helpers.mjs';
|
|
3
|
+
import {
|
|
4
|
+
getDeviceDelegateSecretKey,
|
|
5
|
+
getDeviceDelegateSecret,
|
|
6
|
+
setDeviceDelegateSecret,
|
|
7
|
+
getOrCreateDeviceDelegateSecret,
|
|
8
|
+
clearDeviceDelegateSecret,
|
|
9
|
+
DEVICE_DELEGATE_SECRET_PREFIX
|
|
10
|
+
} from './device-delegate-helper.mjs';
|
|
11
|
+
|
|
12
|
+
const sir = `[${import.meta.url}]`;
|
|
13
|
+
|
|
14
|
+
// Initialize global db & store names for tests
|
|
15
|
+
const globalThisIbGib = getIbGibGlobalThis_IbGib();
|
|
16
|
+
globalThisIbGib.dbName_hack = 'space_gib_db';
|
|
17
|
+
globalThisIbGib.storeName_hack = 'space_gib_store';
|
|
18
|
+
|
|
19
|
+
// Mock storage substrate for Node test environment
|
|
20
|
+
const inMemoryStore = new Map<string, string>();
|
|
21
|
+
|
|
22
|
+
if (typeof globalThis.indexedDB === 'undefined') {
|
|
23
|
+
(globalThis as any).indexedDB = {
|
|
24
|
+
open: (dbName: string) => {
|
|
25
|
+
const req: any = {};
|
|
26
|
+
setTimeout(() => {
|
|
27
|
+
const db = {
|
|
28
|
+
objectStoreNames: { contains: () => true },
|
|
29
|
+
transaction: (storeName: string) => ({
|
|
30
|
+
objectStore: (sName: string) => ({
|
|
31
|
+
get: (key: string) => {
|
|
32
|
+
const getReq: any = {};
|
|
33
|
+
setTimeout(() => {
|
|
34
|
+
const val = inMemoryStore.get(key);
|
|
35
|
+
getReq.result = val !== undefined ? { value: val } : undefined;
|
|
36
|
+
if (getReq.onsuccess) getReq.onsuccess({ target: getReq });
|
|
37
|
+
}, 0);
|
|
38
|
+
return getReq;
|
|
39
|
+
},
|
|
40
|
+
put: (datum: any) => {
|
|
41
|
+
const putReq: any = {};
|
|
42
|
+
setTimeout(() => {
|
|
43
|
+
inMemoryStore.set(datum.key, datum.value);
|
|
44
|
+
if (putReq.onsuccess) putReq.onsuccess({ target: putReq });
|
|
45
|
+
}, 0);
|
|
46
|
+
return putReq;
|
|
47
|
+
},
|
|
48
|
+
delete: (key: string) => {
|
|
49
|
+
const delReq: any = {};
|
|
50
|
+
setTimeout(() => {
|
|
51
|
+
inMemoryStore.delete(key);
|
|
52
|
+
if (delReq.onsuccess) delReq.onsuccess({ target: delReq });
|
|
53
|
+
}, 0);
|
|
54
|
+
return delReq;
|
|
55
|
+
}
|
|
56
|
+
})
|
|
57
|
+
}),
|
|
58
|
+
close: () => {}
|
|
59
|
+
};
|
|
60
|
+
req.result = db;
|
|
61
|
+
if (req.onsuccess) req.onsuccess({ target: req });
|
|
62
|
+
}, 0);
|
|
63
|
+
return req;
|
|
64
|
+
}
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
await respecfully(sir, 'Device Delegate Storage & Secret Lifecycle', async () => {
|
|
69
|
+
|
|
70
|
+
await ifWe(sir, 'getDeviceDelegateSecretKey constructs deterministic storage key', async () => {
|
|
71
|
+
const primaryTjpAddr = 'keystone^alice_tjp_12345';
|
|
72
|
+
const key = getDeviceDelegateSecretKey({ primaryTjpAddr });
|
|
73
|
+
|
|
74
|
+
iReckon(sir, key).willEqual(`${DEVICE_DELEGATE_SECRET_PREFIX}${primaryTjpAddr}`);
|
|
75
|
+
});
|
|
76
|
+
|
|
77
|
+
await ifWe(sir, 'setDeviceDelegateSecret and getDeviceDelegateSecret persist and retrieve secret', async () => {
|
|
78
|
+
const primaryTjpAddr = 'keystone^bob_tjp_999';
|
|
79
|
+
const secret = 'super-secret-512-token-abc';
|
|
80
|
+
|
|
81
|
+
await setDeviceDelegateSecret({ primaryTjpAddr, delegateSecret: secret });
|
|
82
|
+
const retrieved = await getDeviceDelegateSecret({ primaryTjpAddr });
|
|
83
|
+
|
|
84
|
+
iReckon(sir, retrieved).willEqual(secret);
|
|
85
|
+
});
|
|
86
|
+
|
|
87
|
+
await ifWe(sir, 'getOrCreateDeviceDelegateSecret generates high entropy token on first call and caches it', async () => {
|
|
88
|
+
const primaryTjpAddr = 'keystone^charlie_tjp_888';
|
|
89
|
+
|
|
90
|
+
const token1 = await getOrCreateDeviceDelegateSecret({ primaryTjpAddr, deviceTag: 'laptop' });
|
|
91
|
+
iReckon(sir, typeof token1 === 'string' && token1.length === 128).willEqual(true);
|
|
92
|
+
|
|
93
|
+
const token2 = await getOrCreateDeviceDelegateSecret({ primaryTjpAddr, deviceTag: 'laptop' });
|
|
94
|
+
iReckon(sir, token1).willEqual(token2);
|
|
95
|
+
});
|
|
96
|
+
|
|
97
|
+
await ifWe(sir, 'clearDeviceDelegateSecret removes stored secret', async () => {
|
|
98
|
+
const primaryTjpAddr = 'keystone^david_tjp_777';
|
|
99
|
+
|
|
100
|
+
await getOrCreateDeviceDelegateSecret({ primaryTjpAddr });
|
|
101
|
+
const beforeClear = await getDeviceDelegateSecret({ primaryTjpAddr });
|
|
102
|
+
iReckon(sir, !!beforeClear).willEqual(true);
|
|
103
|
+
|
|
104
|
+
await clearDeviceDelegateSecret({ primaryTjpAddr });
|
|
105
|
+
const afterClear = await getDeviceDelegateSecret({ primaryTjpAddr });
|
|
106
|
+
iReckon(sir, afterClear).willEqual(undefined);
|
|
107
|
+
});
|
|
108
|
+
|
|
109
|
+
await ifWe(sir, 'fails fast when global db or store name is uninitialized', async () => {
|
|
110
|
+
const primaryTjpAddr = 'keystone^failfast_tjp_000';
|
|
111
|
+
const savedDb = globalThisIbGib.dbName_hack;
|
|
112
|
+
globalThisIbGib.dbName_hack = undefined as any;
|
|
113
|
+
|
|
114
|
+
let threw = false;
|
|
115
|
+
try {
|
|
116
|
+
await getDeviceDelegateSecret({ primaryTjpAddr });
|
|
117
|
+
} catch (error) {
|
|
118
|
+
threw = true;
|
|
119
|
+
} finally {
|
|
120
|
+
globalThisIbGib.dbName_hack = savedDb;
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
iReckon(sir, threw).willEqual(true);
|
|
124
|
+
});
|
|
125
|
+
});
|
|
@@ -9,12 +9,15 @@ import { extractErrorMsg } from "@ibgib/helper-gib/dist/helpers/utils-helper.mjs
|
|
|
9
9
|
import { getIbAndGib, getIbGibAddr } from "@ibgib/ts-gib/dist/helper.mjs";
|
|
10
10
|
import { getGibInfo } from "@ibgib/ts-gib/dist/V1/transforms/transform-helper.mjs";
|
|
11
11
|
import { KeystoneIbGib_V1 } from "@ibgib/core-gib/dist/keystone/keystone-types.mjs";
|
|
12
|
+
import { KeystoneService_V1 } from "@ibgib/core-gib/dist/keystone/keystone-service-v1.mjs";
|
|
12
13
|
import { getTimelinesGroupedByTjp, getTjpAddr, toDto } from "@ibgib/core-gib/dist/common/other/ibgib-helper.mjs";
|
|
13
14
|
import { updateSpecialIndex } from "@ibgib/core-gib/dist/timeline/timeline-api.mjs";
|
|
15
|
+
import { isDelegateExpired } from "@ibgib/core-gib/dist/keystone/delegate/delegate-helpers.mjs";
|
|
14
16
|
import { getApiBridge } from "../api/ibgib-api-bridge.mjs";
|
|
15
17
|
import { getGlobalMetaspace_waitIfNeeded } from "../helpers.mjs";
|
|
16
|
-
import {
|
|
17
|
-
import {
|
|
18
|
+
import { getDeviceDelegateSecret } from "./device-delegate-helper.mjs";
|
|
19
|
+
import { EVENT_IBGIB_IDENTITY_UPDATE_AVAILABLE, EVENT_IBGIB_IDENTITY_RENEWAL_REQUIRED } from "../ui/ui-constants.mjs";
|
|
20
|
+
import { EventIbGibIdentityUpdateAvailableDetail, EventIbGibIdentityRenewalRequiredDetail } from "../ui/ui-types.mjs";
|
|
18
21
|
|
|
19
22
|
export interface KeystoneUpdateCheckResult {
|
|
20
23
|
hasUpdate: boolean;
|
|
@@ -37,6 +40,96 @@ export class KeystoneSyncService {
|
|
|
37
40
|
}
|
|
38
41
|
}
|
|
39
42
|
|
|
43
|
+
private dispatchRenewalRequiredEvent(detail: EventIbGibIdentityRenewalRequiredDetail): void {
|
|
44
|
+
if (typeof window !== 'undefined') {
|
|
45
|
+
window.dispatchEvent(new CustomEvent(EVENT_IBGIB_IDENTITY_RENEWAL_REQUIRED, {
|
|
46
|
+
detail,
|
|
47
|
+
bubbles: true,
|
|
48
|
+
composed: true,
|
|
49
|
+
}));
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
/**
|
|
54
|
+
* Retrieves the stored device delegate secret ($S_D$) for an active primary identity from IndexedDB.
|
|
55
|
+
*/
|
|
56
|
+
public async getDeviceDelegateSecret({
|
|
57
|
+
primaryTjpAddr
|
|
58
|
+
}: {
|
|
59
|
+
primaryTjpAddr: string;
|
|
60
|
+
}): Promise<string | undefined> {
|
|
61
|
+
return getDeviceDelegateSecret({ primaryTjpAddr });
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
/**
|
|
65
|
+
* Checks if the active identity has a valid, unexpired sync delegate on this device.
|
|
66
|
+
*/
|
|
67
|
+
public async checkDelegateStatus({
|
|
68
|
+
activePrimaryAddr,
|
|
69
|
+
metaspace,
|
|
70
|
+
space
|
|
71
|
+
}: {
|
|
72
|
+
activePrimaryAddr: string;
|
|
73
|
+
metaspace?: any;
|
|
74
|
+
space?: any;
|
|
75
|
+
}): Promise<{ isValid: boolean; reason?: 'expired' | 'missing_secret' }> {
|
|
76
|
+
const lc = `${this.lc}[${this.checkDelegateStatus.name}]`;
|
|
77
|
+
try {
|
|
78
|
+
if (!metaspace) metaspace = await getGlobalMetaspace_waitIfNeeded();
|
|
79
|
+
if (!metaspace) {
|
|
80
|
+
throw new Error(`${lc} (UNEXPECTED) metaspace falsy? (E: a1b2c3d4e5f60718293a4b5c6d7e8f90)`);
|
|
81
|
+
}
|
|
82
|
+
if (!space) space = await metaspace.getLocalUserSpace({ lock: false });
|
|
83
|
+
if (!space) {
|
|
84
|
+
throw new Error(`${lc} (UNEXPECTED) space falsy? (E: b2c3d4e5f60718293a4b5c6d7e8f90a1)`);
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
const info = getGibInfo({ ibGibAddr: activePrimaryAddr });
|
|
88
|
+
const { ib } = getIbAndGib({ ibGibAddr: activePrimaryAddr });
|
|
89
|
+
const primaryTjpAddr = info.tjpGib ? `${ib}^${info.tjpGib}` : activePrimaryAddr;
|
|
90
|
+
|
|
91
|
+
// 1. Check if local secret exists in IndexedDB
|
|
92
|
+
const secret = await getDeviceDelegateSecret({ primaryTjpAddr });
|
|
93
|
+
if (!secret) {
|
|
94
|
+
this.dispatchRenewalRequiredEvent({
|
|
95
|
+
activePrimaryAddr,
|
|
96
|
+
primaryTjpAddr,
|
|
97
|
+
reason: 'missing_secret'
|
|
98
|
+
});
|
|
99
|
+
return { isValid: false, reason: 'missing_secret' };
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
// 2. Check if primary keystone has registered delegates and if any are expired
|
|
103
|
+
const keystoneService = new KeystoneService_V1();
|
|
104
|
+
const keystone = await keystoneService.getLatestKeystone({
|
|
105
|
+
addr: activePrimaryAddr,
|
|
106
|
+
metaspace,
|
|
107
|
+
space
|
|
108
|
+
});
|
|
109
|
+
if (!keystone) {
|
|
110
|
+
throw new Error(`${lc} (UNEXPECTED) latest primary keystone not found for addr: ${activePrimaryAddr} (E: c3d4e5f60718293a4b5c6d7e8f90a1b2)`);
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
if (keystone?.data?.delegates) {
|
|
114
|
+
const delegates = Object.values(keystone.data.delegates);
|
|
115
|
+
const isAnyExpired = delegates.some(d => isDelegateExpired({ delegateInfo: d }));
|
|
116
|
+
if (isAnyExpired) {
|
|
117
|
+
this.dispatchRenewalRequiredEvent({
|
|
118
|
+
activePrimaryAddr,
|
|
119
|
+
primaryTjpAddr,
|
|
120
|
+
reason: 'expired'
|
|
121
|
+
});
|
|
122
|
+
return { isValid: false, reason: 'expired' };
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
return { isValid: true };
|
|
127
|
+
} catch (error) {
|
|
128
|
+
console.error(`${lc} ${extractErrorMsg(error)}`);
|
|
129
|
+
return { isValid: false };
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
|
|
40
133
|
/**
|
|
41
134
|
* Checks if a server update exists for the given active primary keystone address.
|
|
42
135
|
*/
|