@ibgib/core-gib 0.1.6 → 0.1.9
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/keystone/keystone-config-builder.d.mts +77 -0
- package/dist/keystone/keystone-config-builder.d.mts.map +1 -0
- package/dist/keystone/keystone-config-builder.mjs +157 -0
- package/dist/keystone/keystone-config-builder.mjs.map +1 -0
- package/dist/keystone/keystone-config-builder.respec.d.mts +2 -0
- package/dist/keystone/keystone-config-builder.respec.d.mts.map +1 -0
- package/dist/keystone/keystone-config-builder.respec.mjs +34 -0
- package/dist/keystone/keystone-config-builder.respec.mjs.map +1 -0
- package/dist/keystone/keystone-constants.d.mts +38 -0
- package/dist/keystone/keystone-constants.d.mts.map +1 -0
- package/dist/keystone/keystone-constants.mjs +41 -0
- package/dist/keystone/keystone-constants.mjs.map +1 -0
- package/dist/keystone/keystone-helpers.d.mts +170 -0
- package/dist/keystone/keystone-helpers.d.mts.map +1 -0
- package/dist/keystone/keystone-helpers.mjs +639 -0
- package/dist/keystone/keystone-helpers.mjs.map +1 -0
- package/dist/keystone/keystone-service-v1.d.mts +110 -0
- package/dist/keystone/keystone-service-v1.d.mts.map +1 -0
- package/dist/keystone/keystone-service-v1.mjs +325 -0
- package/dist/keystone/keystone-service-v1.mjs.map +1 -0
- package/dist/keystone/keystone-service-v1.respec.d.mts +2 -0
- package/dist/keystone/keystone-service-v1.respec.d.mts.map +1 -0
- package/dist/keystone/keystone-service-v1.respec.mjs +838 -0
- package/dist/keystone/keystone-service-v1.respec.mjs.map +1 -0
- package/dist/keystone/keystone-types.d.mts +270 -0
- package/dist/keystone/keystone-types.d.mts.map +1 -0
- package/dist/keystone/keystone-types.mjs +50 -0
- package/dist/keystone/keystone-types.mjs.map +1 -0
- package/dist/keystone/strategy/hash-reveal-v1/hash-reveal-v1.d.mts +35 -0
- package/dist/keystone/strategy/hash-reveal-v1/hash-reveal-v1.d.mts.map +1 -0
- package/dist/keystone/strategy/hash-reveal-v1/hash-reveal-v1.mjs +107 -0
- package/dist/keystone/strategy/hash-reveal-v1/hash-reveal-v1.mjs.map +1 -0
- package/dist/keystone/strategy/keystone-strategy-factory.d.mts +15 -0
- package/dist/keystone/strategy/keystone-strategy-factory.d.mts.map +1 -0
- package/dist/keystone/strategy/keystone-strategy-factory.mjs +26 -0
- package/dist/keystone/strategy/keystone-strategy-factory.mjs.map +1 -0
- package/dist/keystone/strategy/keystone-strategy.d.mts +48 -0
- package/dist/keystone/strategy/keystone-strategy.d.mts.map +1 -0
- package/dist/keystone/strategy/keystone-strategy.mjs +14 -0
- package/dist/keystone/strategy/keystone-strategy.mjs.map +1 -0
- package/package.json +2 -1
- package/src/keystone/README.md +162 -0
- package/src/keystone/keystone-config-builder.mts +187 -0
- package/src/keystone/keystone-config-builder.respec.mts +49 -0
- package/src/keystone/keystone-constants.mts +46 -0
- package/src/keystone/keystone-helpers.mts +780 -0
- package/src/keystone/keystone-service-v1.mts +427 -0
- package/src/keystone/keystone-service-v1.respec.mts +1012 -0
- package/src/keystone/keystone-types.mts +339 -0
- package/src/keystone/strategy/hash-reveal-v1/hash-reveal-v1.mts +146 -0
- package/src/keystone/strategy/keystone-strategy-factory.mts +35 -0
- package/src/keystone/strategy/keystone-strategy.mts +71 -0
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
import { KeystoneIbGib_V1, KeystonePoolConfig, KeystoneClaim, KeystoneChallengePool } from './keystone-types.mjs';
|
|
2
|
+
import { IbGibSpaceAny } from '../witness/space/space-base-v1.mjs';
|
|
3
|
+
import { MetaspaceService } from '../witness/space/metaspace/metaspace-types.mjs';
|
|
4
|
+
/**
|
|
5
|
+
* Facade for managing Keystone Identities.
|
|
6
|
+
*
|
|
7
|
+
* Handles Genesis, Authorized Evolution (Signing), and Validation.
|
|
8
|
+
*/
|
|
9
|
+
export declare class KeystoneService_V1 {
|
|
10
|
+
protected lc: string;
|
|
11
|
+
/**
|
|
12
|
+
* Creates a brand new Keystone Identity Timeline.
|
|
13
|
+
*/
|
|
14
|
+
genesis({ masterSecret, configs, metaspace, space, }: {
|
|
15
|
+
masterSecret: string;
|
|
16
|
+
configs: KeystonePoolConfig[];
|
|
17
|
+
metaspace: MetaspaceService;
|
|
18
|
+
space: IbGibSpaceAny;
|
|
19
|
+
}): Promise<KeystoneIbGib_V1>;
|
|
20
|
+
/**
|
|
21
|
+
* Signs a claim by solving challenges from a specific pool and evolving the Keystone timeline.
|
|
22
|
+
*
|
|
23
|
+
* Uses a hybrid selection strategy: Mandatory IDs (Alice) + Sequential (FIFO) + Random (Stochastic).
|
|
24
|
+
*
|
|
25
|
+
* Supports Delegation via `poolFilter` to find specific foreign pools.
|
|
26
|
+
*/
|
|
27
|
+
sign({ latestKeystone, masterSecret, claim, poolId, poolFilter, requiredChallengeIds, frameDetails, metaspace, space, }: {
|
|
28
|
+
latestKeystone: KeystoneIbGib_V1;
|
|
29
|
+
/**
|
|
30
|
+
* The secret used to solve the challenges.
|
|
31
|
+
* If signing with a native pool, this is the User's Master Secret.
|
|
32
|
+
* If signing with a foreign/delegated pool, this is the Delegate's Secret.
|
|
33
|
+
*/
|
|
34
|
+
masterSecret: string;
|
|
35
|
+
claim: Partial<KeystoneClaim>;
|
|
36
|
+
/**
|
|
37
|
+
* Explicit ID of the pool to use.
|
|
38
|
+
*/
|
|
39
|
+
poolId?: string;
|
|
40
|
+
/**
|
|
41
|
+
* Optional predicate to find a pool.
|
|
42
|
+
* Useful for finding delegates via metadata without knowing the exact ID.
|
|
43
|
+
* e.g. (p) => p.metadata?.delegate === 'Bob'
|
|
44
|
+
*/
|
|
45
|
+
poolFilter?: (pool: KeystoneChallengePool) => boolean;
|
|
46
|
+
requiredChallengeIds?: string[];
|
|
47
|
+
frameDetails?: any;
|
|
48
|
+
metaspace: MetaspaceService;
|
|
49
|
+
space: IbGibSpaceAny;
|
|
50
|
+
}): Promise<KeystoneIbGib_V1>;
|
|
51
|
+
/**
|
|
52
|
+
* Validates a keystone.
|
|
53
|
+
*
|
|
54
|
+
* ## NOTES
|
|
55
|
+
*
|
|
56
|
+
* Atow (12/22/2025) this only validates the transition from Prev -> Curr.
|
|
57
|
+
*
|
|
58
|
+
* @returns Array of validation error strings. Empty array means Valid.
|
|
59
|
+
*
|
|
60
|
+
* @see {@link validateKeystoneTransition}
|
|
61
|
+
*/
|
|
62
|
+
validate({ currentIbGib, prevIbGib, }: {
|
|
63
|
+
currentIbGib: KeystoneIbGib_V1;
|
|
64
|
+
prevIbGib: KeystoneIbGib_V1;
|
|
65
|
+
}): Promise<string[]>;
|
|
66
|
+
/**
|
|
67
|
+
* Permanently revokes the Identity.
|
|
68
|
+
*
|
|
69
|
+
* Logic:
|
|
70
|
+
* 1. Locates the 'revoke' pool.
|
|
71
|
+
* 2. Solves required challenges to prove ownership.
|
|
72
|
+
* 3. Wipes the pool (via 'scorched-earth' strategy in solveAndReplenish).
|
|
73
|
+
* 4. Sets the revocationInfo on the new frame.
|
|
74
|
+
*/
|
|
75
|
+
revoke({ latestKeystone, masterSecret, reason, frameDetails, metaspace, space, }: {
|
|
76
|
+
latestKeystone: KeystoneIbGib_V1;
|
|
77
|
+
masterSecret: string;
|
|
78
|
+
reason?: string;
|
|
79
|
+
frameDetails?: any;
|
|
80
|
+
metaspace: MetaspaceService;
|
|
81
|
+
space: IbGibSpaceAny;
|
|
82
|
+
}): Promise<KeystoneIbGib_V1>;
|
|
83
|
+
/**
|
|
84
|
+
* Structural evolution: Adds new challenge pools to the keystone.
|
|
85
|
+
*
|
|
86
|
+
* Use Case: Adding a delegate (Server) for SSO, adding a recovery key,
|
|
87
|
+
* or rotating to a new set of pools.
|
|
88
|
+
*
|
|
89
|
+
* Requires the Master Secret to authorize the change via a pool containing
|
|
90
|
+
* the 'manage' verb.
|
|
91
|
+
*/
|
|
92
|
+
addPools({ latestKeystone, masterSecret, newPools, metaspace, space, }: {
|
|
93
|
+
latestKeystone: KeystoneIbGib_V1;
|
|
94
|
+
/**
|
|
95
|
+
* Alice's Master Secret.
|
|
96
|
+
* Required to solve challenges from the Admin/Manage pool to authorize this change.
|
|
97
|
+
*/
|
|
98
|
+
masterSecret: string;
|
|
99
|
+
/**
|
|
100
|
+
* The pools to add.
|
|
101
|
+
* NOTE: These are fully constructed Pool objects.
|
|
102
|
+
* If they are foreign (Bob's), Alice must have constructed them
|
|
103
|
+
* using Bob's challenges + Her config restrictions + isForeign=true.
|
|
104
|
+
*/
|
|
105
|
+
newPools: KeystoneChallengePool[];
|
|
106
|
+
metaspace: MetaspaceService;
|
|
107
|
+
space: IbGibSpaceAny;
|
|
108
|
+
}): Promise<KeystoneIbGib_V1>;
|
|
109
|
+
}
|
|
110
|
+
//# sourceMappingURL=keystone-service-v1.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"keystone-service-v1.d.mts","sourceRoot":"","sources":["../../src/keystone/keystone-service-v1.mts"],"names":[],"mappings":"AAIA,OAAO,EACc,gBAAgB,EAAE,kBAAkB,EAAE,aAAa,EACpE,qBAAqB,EACxB,MAAM,sBAAsB,CAAC;AAQ9B,OAAO,EAAE,aAAa,EAAE,MAAM,oCAAoC,CAAC;AACnE,OAAO,EAAE,gBAAgB,EAAE,MAAM,gDAAgD,CAAC;AAIlF;;;;GAIG;AACH,qBAAa,kBAAkB;IAC3B,SAAS,CAAC,EAAE,EAAE,MAAM,CAAkC;IAEtD;;OAEG;IACG,OAAO,CAAC,EACV,YAAY,EACZ,OAAO,EACP,SAAS,EACT,KAAK,GACR,EAAE;QACC,YAAY,EAAE,MAAM,CAAC;QACrB,OAAO,EAAE,kBAAkB,EAAE,CAAC;QAC9B,SAAS,EAAE,gBAAgB,CAAC;QAC5B,KAAK,EAAE,aAAa,CAAC;KACxB,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAoD7B;;;;;;OAMG;IACG,IAAI,CAAC,EACP,cAAc,EACd,YAAY,EACZ,KAAK,EACL,MAAM,EACN,UAAU,EACV,oBAAyB,EACzB,YAAY,EACZ,SAAS,EACT,KAAK,GACR,EAAE;QACC,cAAc,EAAE,gBAAgB,CAAC;QACjC;;;;WAIG;QACH,YAAY,EAAE,MAAM,CAAC;QACrB,KAAK,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC;QAC9B;;WAEG;QACH,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB;;;;WAIG;QACH,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,qBAAqB,KAAK,OAAO,CAAC;QACtD,oBAAoB,CAAC,EAAE,MAAM,EAAE,CAAC;QAChC,YAAY,CAAC,EAAE,GAAG,CAAC;QACnB,SAAS,EAAE,gBAAgB,CAAC;QAC5B,KAAK,EAAE,aAAa,CAAC;KACxB,GAAG,OAAO,CAAC,gBAAgB,CAAC;IA+D7B;;;;;;;;;;OAUG;IACG,QAAQ,CAAC,EACX,YAAY,EACZ,SAAS,GACZ,EAAE;QACC,YAAY,EAAE,gBAAgB,CAAC;QAC/B,SAAS,EAAE,gBAAgB,CAAC;KAC/B,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAOrB;;;;;;;;OAQG;IACG,MAAM,CAAC,EACT,cAAc,EACd,YAAY,EACZ,MAAoC,EACpC,YAAY,EACZ,SAAS,EACT,KAAK,GACR,EAAE;QACC,cAAc,EAAE,gBAAgB,CAAC;QACjC,YAAY,EAAE,MAAM,CAAC;QACrB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,YAAY,CAAC,EAAE,GAAG,CAAC;QACnB,SAAS,EAAE,gBAAgB,CAAC;QAC5B,KAAK,EAAE,aAAa,CAAC;KACxB,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAyE7B;;;;;;;;OAQG;IACG,QAAQ,CAAC,EACX,cAAc,EACd,YAAY,EACZ,QAAQ,EACR,SAAS,EACT,KAAK,GACR,EAAE;QACC,cAAc,EAAE,gBAAgB,CAAC;QACjC;;;WAGG;QACH,YAAY,EAAE,MAAM,CAAC;QACrB;;;;;WAKG;QACH,QAAQ,EAAE,qBAAqB,EAAE,CAAC;QAClC,SAAS,EAAE,gBAAgB,CAAC;QAC5B,KAAK,EAAE,aAAa,CAAC;KACxB,GAAG,OAAO,CAAC,gBAAgB,CAAC;CA+EhC"}
|
|
@@ -0,0 +1,325 @@
|
|
|
1
|
+
import { extractErrorMsg, } from '@ibgib/helper-gib/dist/helpers/utils-helper.mjs';
|
|
2
|
+
import { getIbGibAddr } from '@ibgib/ts-gib/dist/helper.mjs';
|
|
3
|
+
import { GLOBAL_LOG_A_LOT } from '../core-constants.mjs';
|
|
4
|
+
import { KeystoneReplenishStrategy, } from './keystone-types.mjs';
|
|
5
|
+
import { KeystoneStrategyFactory } from './strategy/keystone-strategy-factory.mjs';
|
|
6
|
+
import { POOL_ID_REVOKE, KEYSTONE_VERB_REVOKE, KEYSTONE_VERB_MANAGE } from './keystone-constants.mjs';
|
|
7
|
+
import { addToBindingMap, createKeystoneIbGibImpl, evolvePersistAndRegisterKeystone, generateOpaqueChallengeId, resolveTargetPool, selectChallengeIds, solveAndReplenish, validateKeystoneTransition, } from './keystone-helpers.mjs';
|
|
8
|
+
const logalot = GLOBAL_LOG_A_LOT || true;
|
|
9
|
+
/**
|
|
10
|
+
* Facade for managing Keystone Identities.
|
|
11
|
+
*
|
|
12
|
+
* Handles Genesis, Authorized Evolution (Signing), and Validation.
|
|
13
|
+
*/
|
|
14
|
+
export class KeystoneService_V1 {
|
|
15
|
+
lc = `[${KeystoneService_V1.name}]`;
|
|
16
|
+
/**
|
|
17
|
+
* Creates a brand new Keystone Identity Timeline.
|
|
18
|
+
*/
|
|
19
|
+
async genesis({ masterSecret, configs, metaspace, space, }) {
|
|
20
|
+
const lc = `${this.lc}[${this.genesis.name}]`;
|
|
21
|
+
try {
|
|
22
|
+
if (logalot) {
|
|
23
|
+
console.log(`${lc} starting... (I: c98ae8adbc5888dbf84c5aced7610b25)`);
|
|
24
|
+
}
|
|
25
|
+
const challengePools = [];
|
|
26
|
+
for (const config of configs) {
|
|
27
|
+
const strategy = KeystoneStrategyFactory.create({ config });
|
|
28
|
+
const poolSecret = await strategy.derivePoolSecret({ masterSecret });
|
|
29
|
+
const challenges = {};
|
|
30
|
+
const bindingMap = {};
|
|
31
|
+
const targetSize = config.behavior.size;
|
|
32
|
+
const timestamp = Date.now().toString();
|
|
33
|
+
for (let i = 0; i < targetSize; i++) {
|
|
34
|
+
const challengeId = await generateOpaqueChallengeId({
|
|
35
|
+
salt: config.salt, timestamp, index: i
|
|
36
|
+
});
|
|
37
|
+
const solution = await strategy.generateSolution({
|
|
38
|
+
poolSecret, poolId: config.salt, challengeId,
|
|
39
|
+
});
|
|
40
|
+
const challenge = await strategy.generateChallenge({ solution });
|
|
41
|
+
challenges[challengeId] = challenge;
|
|
42
|
+
// Populate Binding Map
|
|
43
|
+
addToBindingMap(bindingMap, challengeId);
|
|
44
|
+
}
|
|
45
|
+
challengePools.push({
|
|
46
|
+
id: config.salt,
|
|
47
|
+
config,
|
|
48
|
+
challenges,
|
|
49
|
+
bindingMap
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
if (challengePools.length === 0) {
|
|
53
|
+
throw new Error(`No challenge pools created. (E: 38e538530996940e1f16a8b199995825)`);
|
|
54
|
+
}
|
|
55
|
+
const data = { challengePools, proofs: [] };
|
|
56
|
+
const keystoneIbGib = await createKeystoneIbGibImpl({ data, metaspace, space });
|
|
57
|
+
return keystoneIbGib;
|
|
58
|
+
}
|
|
59
|
+
catch (error) {
|
|
60
|
+
console.error(`${lc} ${extractErrorMsg(error)}`);
|
|
61
|
+
throw error;
|
|
62
|
+
}
|
|
63
|
+
finally {
|
|
64
|
+
if (logalot) {
|
|
65
|
+
console.log(`${lc} complete.`);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Signs a claim by solving challenges from a specific pool and evolving the Keystone timeline.
|
|
71
|
+
*
|
|
72
|
+
* Uses a hybrid selection strategy: Mandatory IDs (Alice) + Sequential (FIFO) + Random (Stochastic).
|
|
73
|
+
*
|
|
74
|
+
* Supports Delegation via `poolFilter` to find specific foreign pools.
|
|
75
|
+
*/
|
|
76
|
+
async sign({ latestKeystone, masterSecret, claim, poolId, poolFilter, requiredChallengeIds = [], frameDetails, metaspace, space, }) {
|
|
77
|
+
const lc = `${this.lc}[${this.sign.name}]`;
|
|
78
|
+
try {
|
|
79
|
+
if (logalot) {
|
|
80
|
+
console.log(`${lc} starting...`);
|
|
81
|
+
}
|
|
82
|
+
const prevData = latestKeystone.data;
|
|
83
|
+
if (prevData.revocationInfo) {
|
|
84
|
+
throw new Error(`Keystone has been revoked. Cannot sign. (E: 4f2198c39116d15c48ba191940316825)`);
|
|
85
|
+
}
|
|
86
|
+
// 1. Identify Authority (Resolve Pool)
|
|
87
|
+
const pool = resolveTargetPool({
|
|
88
|
+
pools: prevData.challengePools,
|
|
89
|
+
poolId,
|
|
90
|
+
poolFilter,
|
|
91
|
+
verb: claim.verb
|
|
92
|
+
});
|
|
93
|
+
if (logalot) {
|
|
94
|
+
console.log(`${lc} Selected pool: ${pool.id} (size: ${Object.keys(pool.challenges).length}) (I: genuuid)`);
|
|
95
|
+
}
|
|
96
|
+
// 2. Calculate Costs (Select IDs)
|
|
97
|
+
const idsToSolve = selectChallengeIds({
|
|
98
|
+
pool,
|
|
99
|
+
targetAddr: claim.target,
|
|
100
|
+
requiredChallengeIds
|
|
101
|
+
});
|
|
102
|
+
// 3. Pay the Cost (Solve & Replenish)
|
|
103
|
+
// This helper handles the Strategy creation, Secret derivation, Solving,
|
|
104
|
+
// and the calculation of the Next state for ALL pools.
|
|
105
|
+
const { proof, nextPools } = await solveAndReplenish({
|
|
106
|
+
targetPoolId: pool.id,
|
|
107
|
+
prevPools: prevData.challengePools,
|
|
108
|
+
masterSecret,
|
|
109
|
+
challengeIds: idsToSolve,
|
|
110
|
+
claim,
|
|
111
|
+
requiredChallengeIds
|
|
112
|
+
});
|
|
113
|
+
// 4. Construct New Data
|
|
114
|
+
const newData = {
|
|
115
|
+
challengePools: nextPools,
|
|
116
|
+
proofs: [proof],
|
|
117
|
+
frameDetails,
|
|
118
|
+
// Revocation info is undefined for a standard sign operation
|
|
119
|
+
};
|
|
120
|
+
// 5. Commit (Evolve, Persist, Register)
|
|
121
|
+
const resKeystone = await evolvePersistAndRegisterKeystone({
|
|
122
|
+
prevIbGib: latestKeystone,
|
|
123
|
+
newData,
|
|
124
|
+
metaspace,
|
|
125
|
+
space
|
|
126
|
+
});
|
|
127
|
+
return resKeystone;
|
|
128
|
+
}
|
|
129
|
+
catch (error) {
|
|
130
|
+
console.error(`${lc} ${extractErrorMsg(error)}`);
|
|
131
|
+
throw error;
|
|
132
|
+
}
|
|
133
|
+
finally {
|
|
134
|
+
if (logalot) {
|
|
135
|
+
console.log(`${lc} complete.`);
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* Validates a keystone.
|
|
141
|
+
*
|
|
142
|
+
* ## NOTES
|
|
143
|
+
*
|
|
144
|
+
* Atow (12/22/2025) this only validates the transition from Prev -> Curr.
|
|
145
|
+
*
|
|
146
|
+
* @returns Array of validation error strings. Empty array means Valid.
|
|
147
|
+
*
|
|
148
|
+
* @see {@link validateKeystoneTransition}
|
|
149
|
+
*/
|
|
150
|
+
async validate({ currentIbGib, prevIbGib, }) {
|
|
151
|
+
// todo: change this to validate the entire keystone graph. the next
|
|
152
|
+
// step is to walk the history and validate each transition.
|
|
153
|
+
const errors = await validateKeystoneTransition({ currentIbGib, prevIbGib });
|
|
154
|
+
return errors;
|
|
155
|
+
}
|
|
156
|
+
/**
|
|
157
|
+
* Permanently revokes the Identity.
|
|
158
|
+
*
|
|
159
|
+
* Logic:
|
|
160
|
+
* 1. Locates the 'revoke' pool.
|
|
161
|
+
* 2. Solves required challenges to prove ownership.
|
|
162
|
+
* 3. Wipes the pool (via 'scorched-earth' strategy in solveAndReplenish).
|
|
163
|
+
* 4. Sets the revocationInfo on the new frame.
|
|
164
|
+
*/
|
|
165
|
+
async revoke({ latestKeystone, masterSecret, reason = "User initiated revocation", frameDetails, metaspace, space, }) {
|
|
166
|
+
const lc = `${this.lc}[${this.revoke.name}]`;
|
|
167
|
+
try {
|
|
168
|
+
if (logalot) {
|
|
169
|
+
console.log(`${lc} starting...`);
|
|
170
|
+
}
|
|
171
|
+
const prevData = latestKeystone.data;
|
|
172
|
+
// 1. Identify Authority (Resolve Revoke Pool)
|
|
173
|
+
const pool = resolveTargetPool({
|
|
174
|
+
pools: prevData.challengePools,
|
|
175
|
+
poolId: POOL_ID_REVOKE // Explicitly require the special revoke pool
|
|
176
|
+
});
|
|
177
|
+
// 2. Construct Claim
|
|
178
|
+
const claim = {
|
|
179
|
+
verb: KEYSTONE_VERB_REVOKE,
|
|
180
|
+
target: getIbGibAddr({ ibGib: latestKeystone })
|
|
181
|
+
};
|
|
182
|
+
// 3. Calculate Costs
|
|
183
|
+
const idsToSolve = selectChallengeIds({
|
|
184
|
+
pool,
|
|
185
|
+
targetAddr: claim.target,
|
|
186
|
+
requiredChallengeIds: []
|
|
187
|
+
});
|
|
188
|
+
if (idsToSolve.length === 0) {
|
|
189
|
+
throw new Error(`Revocation policy selected 0 challenges? Check config for pool ${pool.id}. Revocation requires proof. (E: 97e5a8356d241ae7b882db791cb1f825)`);
|
|
190
|
+
}
|
|
191
|
+
// 4. Pay the Cost & Scorched Earth
|
|
192
|
+
// The revoke pool config should have 'replenish: scorched-earth',
|
|
193
|
+
// causing solveAndReplenish to return an empty pool in nextPools.
|
|
194
|
+
const { proof, nextPools } = await solveAndReplenish({
|
|
195
|
+
targetPoolId: pool.id,
|
|
196
|
+
prevPools: prevData.challengePools,
|
|
197
|
+
masterSecret,
|
|
198
|
+
challengeIds: idsToSolve,
|
|
199
|
+
claim,
|
|
200
|
+
requiredChallengeIds: []
|
|
201
|
+
});
|
|
202
|
+
// warn if nextPools contains pool.id that isn't empty (we were
|
|
203
|
+
// supposed to do "scorched earth" which empties the pool)
|
|
204
|
+
if (nextPools.find(p => p.id === pool.id && Object.keys(p.challenges).length > 0)) {
|
|
205
|
+
console.warn(`${lc} revocation pool ${pool.id} is not empty after revocation. Is the revocation pool replenish strategy set to ${KeystoneReplenishStrategy.scorchedEarth}? (W: 300c28bc8b98fc3e3c0b0d988344f825)`);
|
|
206
|
+
}
|
|
207
|
+
// 5. Construct Revocation Info
|
|
208
|
+
const revocationInfo = { reason, proof };
|
|
209
|
+
// 6. Construct New Data
|
|
210
|
+
const newData = {
|
|
211
|
+
challengePools: nextPools,
|
|
212
|
+
proofs: [proof],
|
|
213
|
+
revocationInfo,
|
|
214
|
+
frameDetails
|
|
215
|
+
};
|
|
216
|
+
// 7. Commit
|
|
217
|
+
const newKeystone = await evolvePersistAndRegisterKeystone({
|
|
218
|
+
prevIbGib: latestKeystone,
|
|
219
|
+
newData,
|
|
220
|
+
metaspace,
|
|
221
|
+
space
|
|
222
|
+
});
|
|
223
|
+
return newKeystone;
|
|
224
|
+
}
|
|
225
|
+
catch (error) {
|
|
226
|
+
console.error(`${lc} ${extractErrorMsg(error)}`);
|
|
227
|
+
throw error;
|
|
228
|
+
}
|
|
229
|
+
finally {
|
|
230
|
+
if (logalot) {
|
|
231
|
+
console.log(`${lc} complete.`);
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
/**
|
|
236
|
+
* Structural evolution: Adds new challenge pools to the keystone.
|
|
237
|
+
*
|
|
238
|
+
* Use Case: Adding a delegate (Server) for SSO, adding a recovery key,
|
|
239
|
+
* or rotating to a new set of pools.
|
|
240
|
+
*
|
|
241
|
+
* Requires the Master Secret to authorize the change via a pool containing
|
|
242
|
+
* the 'manage' verb.
|
|
243
|
+
*/
|
|
244
|
+
async addPools({ latestKeystone, masterSecret, newPools, metaspace, space, }) {
|
|
245
|
+
const lc = `${this.lc}[${this.addPools.name}]`;
|
|
246
|
+
try {
|
|
247
|
+
if (logalot) {
|
|
248
|
+
console.log(`${lc} starting...`);
|
|
249
|
+
}
|
|
250
|
+
if (!latestKeystone.data) {
|
|
251
|
+
throw new Error(`(UNEXPECTED) latestKeystone.data falsy? (E: 7334c8faed128166a999d428c7805b25)`);
|
|
252
|
+
}
|
|
253
|
+
const prevData = latestKeystone.data;
|
|
254
|
+
if (prevData.revocationInfo) {
|
|
255
|
+
throw new Error(`Keystone has been revoked. Cannot add pools. (E: 8599f8f51c78d722252ddb2894fdbe25)`);
|
|
256
|
+
}
|
|
257
|
+
if (newPools.length === 0) {
|
|
258
|
+
throw new Error(`No new pools provided to add. (E: 6599f8f51c78d722252ddb2894fdbe25)`);
|
|
259
|
+
}
|
|
260
|
+
// 1. Identify Authority (Resolve Admin Pool)
|
|
261
|
+
// We need a pool that allows the 'manage' verb.
|
|
262
|
+
const adminPool = resolveTargetPool({
|
|
263
|
+
pools: prevData.challengePools,
|
|
264
|
+
verb: KEYSTONE_VERB_MANAGE,
|
|
265
|
+
});
|
|
266
|
+
if (logalot) {
|
|
267
|
+
console.log(`${lc} Authorized via pool: ${adminPool.id}`);
|
|
268
|
+
}
|
|
269
|
+
// 2. Construct the Management Claim
|
|
270
|
+
const target = getIbGibAddr({ ibGib: latestKeystone });
|
|
271
|
+
const claim = {
|
|
272
|
+
verb: KEYSTONE_VERB_MANAGE,
|
|
273
|
+
target, // I am managing myself
|
|
274
|
+
// Scope creates a cryptographic commitment to WHICH pools are being added
|
|
275
|
+
scope: JSON.stringify({ add: newPools.map(p => p.id) })
|
|
276
|
+
};
|
|
277
|
+
// 3. Calculate Costs
|
|
278
|
+
const idsToSolve = selectChallengeIds({
|
|
279
|
+
pool: adminPool,
|
|
280
|
+
targetAddr: target
|
|
281
|
+
});
|
|
282
|
+
// 4. Pay the Cost (Solve & Replenish)
|
|
283
|
+
// This authorizes the change by evolving the admin pool.
|
|
284
|
+
const { proof, nextPools: replenishedExistingPools } = await solveAndReplenish({
|
|
285
|
+
targetPoolId: adminPool.id,
|
|
286
|
+
prevPools: prevData.challengePools,
|
|
287
|
+
masterSecret,
|
|
288
|
+
challengeIds: idsToSolve,
|
|
289
|
+
claim,
|
|
290
|
+
});
|
|
291
|
+
// 5. Mutate Structure (Add the new pools)
|
|
292
|
+
// We verify ID uniqueness cheaply here to prevent blatant errors
|
|
293
|
+
const existingIds = new Set(replenishedExistingPools.map(p => p.id));
|
|
294
|
+
for (const newPool of newPools) {
|
|
295
|
+
if (existingIds.has(newPool.id)) {
|
|
296
|
+
throw new Error(`Cannot add pool. ID collision: ${newPool.id} (E: 8a4c2b1d3e5f6a7b8c9d0e1f2a3b4c5d)`);
|
|
297
|
+
}
|
|
298
|
+
}
|
|
299
|
+
const finalPools = [...replenishedExistingPools, ...newPools];
|
|
300
|
+
// 6. Construct New Data
|
|
301
|
+
const newData = {
|
|
302
|
+
challengePools: finalPools,
|
|
303
|
+
proofs: [proof], // The proof authorizes the structure change
|
|
304
|
+
};
|
|
305
|
+
// 7. Commit
|
|
306
|
+
const newKeystone = await evolvePersistAndRegisterKeystone({
|
|
307
|
+
prevIbGib: latestKeystone,
|
|
308
|
+
newData,
|
|
309
|
+
metaspace,
|
|
310
|
+
space
|
|
311
|
+
});
|
|
312
|
+
return newKeystone;
|
|
313
|
+
}
|
|
314
|
+
catch (error) {
|
|
315
|
+
console.error(`${lc} ${extractErrorMsg(error)}`);
|
|
316
|
+
throw error;
|
|
317
|
+
}
|
|
318
|
+
finally {
|
|
319
|
+
if (logalot) {
|
|
320
|
+
console.log(`${lc} complete.`);
|
|
321
|
+
}
|
|
322
|
+
}
|
|
323
|
+
}
|
|
324
|
+
}
|
|
325
|
+
//# sourceMappingURL=keystone-service-v1.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"keystone-service-v1.mjs","sourceRoot":"","sources":["../../src/keystone/keystone-service-v1.mts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"keystone-service-v1.respec.d.mts","sourceRoot":"","sources":["../../src/keystone/keystone-service-v1.respec.mts"],"names":[],"mappings":""}
|