@ibgib/core-gib 0.1.55 → 0.1.58
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/CHANGELOG.md +1 -0
- package/dist/keystone/keystone-config-builder.d.mts +12 -1
- package/dist/keystone/keystone-config-builder.d.mts.map +1 -1
- package/dist/keystone/keystone-config-builder.mjs +58 -4
- package/dist/keystone/keystone-config-builder.mjs.map +1 -1
- package/dist/keystone/keystone-constants.d.mts +40 -5
- package/dist/keystone/keystone-constants.d.mts.map +1 -1
- package/dist/keystone/keystone-constants.mjs +39 -5
- package/dist/keystone/keystone-constants.mjs.map +1 -1
- package/dist/keystone/keystone-helpers.d.mts +11 -1
- package/dist/keystone/keystone-helpers.d.mts.map +1 -1
- package/dist/keystone/keystone-helpers.mjs +37 -1
- package/dist/keystone/keystone-helpers.mjs.map +1 -1
- package/dist/keystone/keystone-policy-types.d.mts +23 -0
- package/dist/keystone/keystone-policy-types.d.mts.map +1 -0
- package/dist/keystone/keystone-policy-types.mjs +2 -0
- package/dist/keystone/keystone-policy-types.mjs.map +1 -0
- package/dist/sync/graft-info/graft-info-helpers.respec.mjs +8 -8
- package/dist/sync/graft-info/graft-info-helpers.respec.mjs.map +1 -1
- package/dist/sync/sync-conflict-adv-multitimelines.respec.mjs +22 -22
- package/dist/sync/sync-conflict-adv-multitimelines.respec.mjs.map +1 -1
- package/dist/sync/sync-conflict-basic-divergence.respec.mjs +3 -3
- package/dist/sync/sync-conflict-basic-divergence.respec.mjs.map +1 -1
- package/dist/sync/sync-conflict-basic-multitimelines.respec.mjs +6 -6
- package/dist/sync/sync-conflict-basic-multitimelines.respec.mjs.map +1 -1
- package/dist/sync/sync-conflict-text-merge.respec.mjs +26 -26
- package/dist/sync/sync-conflict-text-merge.respec.mjs.map +1 -1
- package/dist/sync/sync-helpers.d.mts +19 -0
- package/dist/sync/sync-helpers.d.mts.map +1 -1
- package/dist/sync/sync-helpers.mjs +51 -1
- package/dist/sync/sync-helpers.mjs.map +1 -1
- package/dist/sync/sync-innerspace-constants.respec.mjs +2 -2
- package/dist/sync/sync-innerspace-constants.respec.mjs.map +1 -1
- package/dist/sync/sync-innerspace-deep-updates.respec.mjs +2 -2
- package/dist/sync/sync-innerspace-deep-updates.respec.mjs.map +1 -1
- package/dist/sync/sync-innerspace-dest-ahead.respec.mjs +4 -4
- package/dist/sync/sync-innerspace-dest-ahead.respec.mjs.map +1 -1
- package/dist/sync/sync-innerspace-multiple-timelines.respec.mjs +2 -2
- package/dist/sync/sync-innerspace-multiple-timelines.respec.mjs.map +1 -1
- package/dist/sync/sync-innerspace-partial-update.respec.mjs +3 -3
- package/dist/sync/sync-innerspace-partial-update.respec.mjs.map +1 -1
- package/dist/sync/sync-innerspace.respec.mjs +4 -4
- package/dist/sync/sync-innerspace.respec.mjs.map +1 -1
- package/dist/sync/sync-peer/sync-peer-http-receiver/sync-peer-http-receiver-v1.d.mts +5 -0
- package/dist/sync/sync-peer/sync-peer-http-receiver/sync-peer-http-receiver-v1.d.mts.map +1 -1
- package/dist/sync/sync-peer/sync-peer-http-receiver/sync-peer-http-receiver-v1.mjs +18 -0
- package/dist/sync/sync-peer/sync-peer-http-receiver/sync-peer-http-receiver-v1.mjs.map +1 -1
- package/dist/sync/sync-peer/sync-peer-http-sender/sync-peer-http-sender-v1.d.mts +5 -0
- package/dist/sync/sync-peer/sync-peer-http-sender/sync-peer-http-sender-v1.d.mts.map +1 -1
- package/dist/sync/sync-peer/sync-peer-http-sender/sync-peer-http-sender-v1.mjs +21 -3
- package/dist/sync/sync-peer/sync-peer-http-sender/sync-peer-http-sender-v1.mjs.map +1 -1
- package/dist/sync/sync-peer/sync-peer-innerspace/sync-peer-innerspace-v1.d.mts +12 -0
- package/dist/sync/sync-peer/sync-peer-innerspace/sync-peer-innerspace-v1.d.mts.map +1 -1
- package/dist/sync/sync-peer/sync-peer-innerspace/sync-peer-innerspace-v1.mjs +34 -0
- package/dist/sync/sync-peer/sync-peer-innerspace/sync-peer-innerspace-v1.mjs.map +1 -1
- package/dist/sync/sync-peer/sync-peer-types.d.mts +69 -1
- package/dist/sync/sync-peer/sync-peer-types.d.mts.map +1 -1
- package/dist/sync/sync-peer/sync-peer-v1.d.mts +30 -0
- package/dist/sync/sync-peer/sync-peer-v1.d.mts.map +1 -1
- package/dist/sync/sync-peer/sync-peer-v1.mjs +88 -1
- package/dist/sync/sync-peer/sync-peer-v1.mjs.map +1 -1
- package/dist/sync/sync-peer/sync-peer-websocket-receiver/sync-peer-websocket-receiver-types.d.mts +30 -0
- package/dist/sync/sync-peer/sync-peer-websocket-receiver/sync-peer-websocket-receiver-types.d.mts.map +1 -0
- package/dist/sync/sync-peer/sync-peer-websocket-receiver/sync-peer-websocket-receiver-types.mjs +2 -0
- package/dist/sync/sync-peer/sync-peer-websocket-receiver/sync-peer-websocket-receiver-types.mjs.map +1 -0
- package/dist/sync/sync-peer/sync-peer-websocket-receiver/sync-peer-websocket-receiver-v1.d.mts +66 -0
- package/dist/sync/sync-peer/sync-peer-websocket-receiver/sync-peer-websocket-receiver-v1.d.mts.map +1 -0
- package/dist/sync/sync-peer/sync-peer-websocket-receiver/sync-peer-websocket-receiver-v1.mjs +280 -0
- package/dist/sync/sync-peer/sync-peer-websocket-receiver/sync-peer-websocket-receiver-v1.mjs.map +1 -0
- package/dist/sync/sync-peer/sync-peer-websocket-receiver/sync-websocket-peer-helpers.d.mts +85 -0
- package/dist/sync/sync-peer/sync-peer-websocket-receiver/sync-websocket-peer-helpers.d.mts.map +1 -0
- package/dist/sync/sync-peer/sync-peer-websocket-receiver/sync-websocket-peer-helpers.mjs +332 -0
- package/dist/sync/sync-peer/sync-peer-websocket-receiver/sync-websocket-peer-helpers.mjs.map +1 -0
- package/dist/sync/sync-peer/sync-peer-websocket-sender/sync-peer-websocket-sender-types.d.mts +29 -0
- package/dist/sync/sync-peer/sync-peer-websocket-sender/sync-peer-websocket-sender-types.d.mts.map +1 -0
- package/dist/sync/sync-peer/sync-peer-websocket-sender/sync-peer-websocket-sender-types.mjs +2 -0
- package/dist/sync/sync-peer/sync-peer-websocket-sender/sync-peer-websocket-sender-types.mjs.map +1 -0
- package/dist/sync/sync-peer/sync-peer-websocket-sender/sync-peer-websocket-sender-v1.d.mts +42 -0
- package/dist/sync/sync-peer/sync-peer-websocket-sender/sync-peer-websocket-sender-v1.d.mts.map +1 -0
- package/dist/sync/sync-peer/sync-peer-websocket-sender/sync-peer-websocket-sender-v1.mjs +282 -0
- package/dist/sync/sync-peer/sync-peer-websocket-sender/sync-peer-websocket-sender-v1.mjs.map +1 -0
- package/dist/sync/sync-saga-coordinator.d.mts +35 -1
- package/dist/sync/sync-saga-coordinator.d.mts.map +1 -1
- package/dist/sync/sync-saga-coordinator.mjs +62 -1
- package/dist/sync/sync-saga-coordinator.mjs.map +1 -1
- package/dist/sync/sync-withid.connect.respec.d.mts +12 -0
- package/dist/sync/sync-withid.connect.respec.d.mts.map +1 -0
- package/dist/sync/sync-withid.connect.respec.mjs +205 -0
- package/dist/sync/sync-withid.connect.respec.mjs.map +1 -0
- package/dist/sync/sync-withid.establish.respec.d.mts +19 -0
- package/dist/sync/sync-withid.establish.respec.d.mts.map +1 -0
- package/dist/sync/sync-withid.establish.respec.mjs +322 -0
- package/dist/sync/sync-withid.establish.respec.mjs.map +1 -0
- package/package.json +1 -1
- package/src/keystone/keystone-config-builder.mts +73 -4
- package/src/keystone/keystone-constants.mts +42 -6
- package/src/keystone/keystone-helpers.mts +44 -2
- package/src/keystone/keystone-policy-types.mts +25 -0
- package/src/keystone/keystone-policy.schema.json +51 -0
- package/src/keystone/keystone-service-v1.mts +3 -3
- package/src/sync/README.md +1 -104
- package/src/sync/docs/architecture.md +28 -8
- package/src/sync/docs/security.md +380 -0
- package/src/sync/graft-info/graft-info-helpers.respec.mts +7 -7
- package/src/sync/sync-conflict-adv-multitimelines.respec.mts +21 -21
- package/src/sync/sync-conflict-basic-divergence.respec.mts +2 -2
- package/src/sync/sync-conflict-basic-multitimelines.respec.mts +5 -5
- package/src/sync/sync-conflict-text-merge.respec.mts +25 -25
- package/src/sync/sync-helpers.mts +51 -1
- package/src/sync/sync-innerspace-constants.respec.mts +1 -1
- package/src/sync/sync-innerspace-deep-updates.respec.mts +1 -1
- package/src/sync/sync-innerspace-dest-ahead.respec.mts +3 -3
- package/src/sync/sync-innerspace-multiple-timelines.respec.mts +1 -1
- package/src/sync/sync-innerspace-partial-update.respec.mts +2 -2
- package/src/sync/sync-innerspace.respec.mts +3 -3
- package/src/sync/sync-peer/sync-peer-http-receiver/sync-peer-http-receiver-v1.mts +20 -0
- package/src/sync/sync-peer/sync-peer-http-sender/sync-peer-http-sender-v1.mts +23 -3
- package/src/sync/sync-peer/sync-peer-innerspace/sync-peer-innerspace-v1.mts +38 -1
- package/src/sync/sync-peer/sync-peer-types.mts +70 -1
- package/src/sync/sync-peer/sync-peer-v1.mts +94 -1
- package/src/sync/sync-peer/sync-peer-websocket-receiver/sync-peer-websocket-receiver-types.mts +36 -0
- package/src/sync/sync-peer/sync-peer-websocket-receiver/sync-peer-websocket-receiver-v1.mts +337 -0
- package/src/sync/sync-peer/sync-peer-websocket-receiver/sync-websocket-peer-helpers.mts +388 -0
- package/src/sync/sync-peer/sync-peer-websocket-sender/sync-peer-websocket-sender-types.mts +35 -0
- package/src/sync/sync-peer/sync-peer-websocket-sender/sync-peer-websocket-sender-v1.mts +321 -0
- package/src/sync/sync-saga-coordinator.mts +84 -0
- package/src/sync/sync-withid.connect.respec.mts +243 -0
- package/src/sync/sync-withid.establish.respec.mts +361 -0
- package/src/sync/unused-identity-backup.mts.md +1 -1
- package/dist/sync/sync-innerspace-dest-ahead-withid.respec.d.mts +0 -2
- package/dist/sync/sync-innerspace-dest-ahead-withid.respec.d.mts.map +0 -1
- package/dist/sync/sync-innerspace-dest-ahead-withid.respec.mjs +0 -310
- package/dist/sync/sync-innerspace-dest-ahead-withid.respec.mjs.map +0 -1
- package/src/sync/sync-innerspace-dest-ahead-withid.respec.mts +0 -364
|
@@ -0,0 +1,280 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module sync-peer-websocket-receiver-v1
|
|
3
|
+
*/
|
|
4
|
+
import { extractErrorMsg, getUUID } from '@ibgib/helper-gib/dist/helpers/utils-helper.mjs';
|
|
5
|
+
import { getIbGibAddr } from '@ibgib/ts-gib/dist/helper.mjs';
|
|
6
|
+
import { GLOBAL_LOG_A_LOT } from '../../../core-constants.mjs';
|
|
7
|
+
import { SyncPeer_V1 } from '../sync-peer-v1.mjs';
|
|
8
|
+
import { authenticateContext } from '../../sync-saga-context/sync-saga-context-helpers.mjs';
|
|
9
|
+
import { putInSpace, registerNewIbGib } from '../../../witness/space/space-helper.mjs';
|
|
10
|
+
import { SESSION_KEYSTONE_POLICY, verifyConnectProof } from './sync-websocket-peer-helpers.mjs';
|
|
11
|
+
const logalot = GLOBAL_LOG_A_LOT || true;
|
|
12
|
+
/**
|
|
13
|
+
* Platform-agnostic WebSocket Receiver Peer.
|
|
14
|
+
*
|
|
15
|
+
* Fully encapsulates the multi-turn cryptographic challenge connect and runtime
|
|
16
|
+
* turn routing.
|
|
17
|
+
*/
|
|
18
|
+
export class SyncPeerWebSocketReceiver_V1 extends SyncPeer_V1 {
|
|
19
|
+
lc = `[${SyncPeerWebSocketReceiver_V1.name}]`;
|
|
20
|
+
get classname() {
|
|
21
|
+
return SyncPeerWebSocketReceiver_V1.name;
|
|
22
|
+
}
|
|
23
|
+
socketWrapper;
|
|
24
|
+
// Connect State Machine variables
|
|
25
|
+
isAuthenticated = false;
|
|
26
|
+
challengeUuid;
|
|
27
|
+
demandedIds;
|
|
28
|
+
sessionS_tjpAddr;
|
|
29
|
+
constructor(initialData, initialRel8ns) {
|
|
30
|
+
super(initialData, initialRel8ns);
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Wires the peer receiver to the platform-specific socket stream and
|
|
34
|
+
* triggers the connect.
|
|
35
|
+
*/
|
|
36
|
+
async bindSocket(socketWrapper) {
|
|
37
|
+
const lc = `${this.lc}[${this.bindSocket.name}]`;
|
|
38
|
+
this.socketWrapper = socketWrapper;
|
|
39
|
+
socketWrapper.onMessage((data) => this.handleIncomingMessage(data));
|
|
40
|
+
// Immediately trigger multi-turn challenge connection
|
|
41
|
+
try {
|
|
42
|
+
this.challengeUuid = await getUUID();
|
|
43
|
+
socketWrapper.send(JSON.stringify({
|
|
44
|
+
type: 'auth-challenge-init',
|
|
45
|
+
challengeUuid: this.challengeUuid
|
|
46
|
+
}));
|
|
47
|
+
}
|
|
48
|
+
catch (error) {
|
|
49
|
+
console.error(`${lc} failed triggering challenge init: ${extractErrorMsg(error)}`);
|
|
50
|
+
socketWrapper.send(JSON.stringify({
|
|
51
|
+
type: 'auth-fail',
|
|
52
|
+
message: 'Internal server connect error'
|
|
53
|
+
}));
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
async preConnectCheck(opts) {
|
|
57
|
+
// Handled dynamically on upgrade
|
|
58
|
+
}
|
|
59
|
+
async connectImpl(opts) {
|
|
60
|
+
// Handled dynamically on upgrade
|
|
61
|
+
}
|
|
62
|
+
async postEstablishToReceiver(opts) {
|
|
63
|
+
throw new Error(`postEstablishToReceiver is not supported on Receiver Peer (E: 309f3cf8e7c813d338394f28c576da26)`);
|
|
64
|
+
}
|
|
65
|
+
async sendContextRequest(context) {
|
|
66
|
+
throw new Error(`sendContextRequest is not supported on Receiver Peer (E: e5327ed6c64883e12ef95984f1409926)`);
|
|
67
|
+
}
|
|
68
|
+
/** Helper to load a Session Keystone from storage */
|
|
69
|
+
async getSessionKeystone(sAddr) {
|
|
70
|
+
const metaspace = this.opts.localMetaspace;
|
|
71
|
+
const space = this.opts.localSpace;
|
|
72
|
+
const resGet = await metaspace.get({ addrs: [sAddr], space });
|
|
73
|
+
if (resGet.success && resGet.ibGibs && resGet.ibGibs.length === 1) {
|
|
74
|
+
return resGet.ibGibs[0];
|
|
75
|
+
}
|
|
76
|
+
throw new Error(`Session keystone not found in storage: ${sAddr} (E: 42315837e3b1deb5b81072f8601e6a26)`);
|
|
77
|
+
}
|
|
78
|
+
async ensureLocalTempSpace() {
|
|
79
|
+
const lc = `${this.lc}[${this.ensureLocalTempSpace.name}]`;
|
|
80
|
+
try {
|
|
81
|
+
if (!this.opts) {
|
|
82
|
+
throw new Error(`opts not initialized. (E: c4929fb1596833a7186d119855bb7e26)`);
|
|
83
|
+
}
|
|
84
|
+
if (!this.opts.localTempSpace) {
|
|
85
|
+
const { localMetaspace } = this.opts;
|
|
86
|
+
const uuid = crypto.randomUUID ? crypto.randomUUID() : Math.random().toString(36);
|
|
87
|
+
const tempSpaceName = `tmp_sync_recv_${uuid.substring(0, 8)}`;
|
|
88
|
+
const localTempSpace = await localMetaspace.createNewLocalSpace({
|
|
89
|
+
opts: {
|
|
90
|
+
allowCancel: false,
|
|
91
|
+
spaceName: tempSpaceName,
|
|
92
|
+
getFnPrompt: localMetaspace.getFnPrompt,
|
|
93
|
+
logalot
|
|
94
|
+
}
|
|
95
|
+
});
|
|
96
|
+
if (!localTempSpace) {
|
|
97
|
+
throw new Error(`couldn't create a temp space (E: d82461769b4bbb35df5d6a8a9c665426)`);
|
|
98
|
+
}
|
|
99
|
+
await localTempSpace.initialized;
|
|
100
|
+
this.opts.localTempSpace = localTempSpace;
|
|
101
|
+
}
|
|
102
|
+
return this.opts.localTempSpace;
|
|
103
|
+
}
|
|
104
|
+
catch (error) {
|
|
105
|
+
console.error(`${lc} ${extractErrorMsg(error)}`);
|
|
106
|
+
throw error;
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Entry point for processing raw text frames received over the active WebSocket connection.
|
|
111
|
+
*/
|
|
112
|
+
async handleIncomingMessage(messageText) {
|
|
113
|
+
const lc = `${this.lc}[${this.handleIncomingMessage.name}]`;
|
|
114
|
+
try {
|
|
115
|
+
if (!this.socketWrapper) {
|
|
116
|
+
throw new Error(`WebSocket wrapper not bound to receiver peer (E: ad4c5838d1b87259586b21a89b2c7726)`);
|
|
117
|
+
}
|
|
118
|
+
const msg = JSON.parse(messageText);
|
|
119
|
+
if (logalot) {
|
|
120
|
+
console.log(`${lc} received frame: ${msg.type}`);
|
|
121
|
+
}
|
|
122
|
+
// 1. Connect Phase Route Guard
|
|
123
|
+
if (!this.isAuthenticated) {
|
|
124
|
+
await this.handleConnectFrame(msg);
|
|
125
|
+
return; /* <<<< returns early */
|
|
126
|
+
}
|
|
127
|
+
// 2. Authenticated Runtime Sync Route
|
|
128
|
+
if (msg.type === 'domain-payload') {
|
|
129
|
+
const ibGib = msg.ibGib;
|
|
130
|
+
const tempSpace = await this.ensureLocalTempSpace();
|
|
131
|
+
await putInSpace({ space: tempSpace, ibGibs: [ibGib] });
|
|
132
|
+
}
|
|
133
|
+
else if (msg.type === 'sync-frame') {
|
|
134
|
+
const context = msg.context;
|
|
135
|
+
// Process turn through coordinator
|
|
136
|
+
const responseCtx = await this.handleIncomingSyncRequest({ context });
|
|
137
|
+
if (responseCtx) {
|
|
138
|
+
// Send outgoing payload domain ibgibs first
|
|
139
|
+
const responsePayloads = responseCtx.payloadIbGibsDomain ?? [];
|
|
140
|
+
for (const ibGib of responsePayloads) {
|
|
141
|
+
this.socketWrapper.send(JSON.stringify({
|
|
142
|
+
type: 'domain-payload',
|
|
143
|
+
ibGib
|
|
144
|
+
}));
|
|
145
|
+
}
|
|
146
|
+
// Send evolved context turn response
|
|
147
|
+
this.socketWrapper.send(JSON.stringify({
|
|
148
|
+
type: 'sync-frame-response',
|
|
149
|
+
context: responseCtx
|
|
150
|
+
}));
|
|
151
|
+
}
|
|
152
|
+
else {
|
|
153
|
+
if (logalot) {
|
|
154
|
+
console.log(`${lc} synchronization session completed successfully.`);
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
catch (error) {
|
|
160
|
+
console.error(`${lc} message frame handling failed: ${extractErrorMsg(error)}`);
|
|
161
|
+
this.socketWrapper?.send(JSON.stringify({
|
|
162
|
+
type: this.isAuthenticated ? 'sync-error' : 'auth-fail',
|
|
163
|
+
message: extractErrorMsg(error)
|
|
164
|
+
}));
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
/**
|
|
168
|
+
* Handles the multi-turn cryptographic challenge connect messages.
|
|
169
|
+
*/
|
|
170
|
+
async handleConnectFrame(msg) {
|
|
171
|
+
const lc = `${this.lc}[${this.handleConnectFrame.name}]`;
|
|
172
|
+
const metaspace = this.opts.localMetaspace;
|
|
173
|
+
const space = this.opts.localSpace;
|
|
174
|
+
if (msg.type === 'auth-init') {
|
|
175
|
+
const { sAddr } = msg;
|
|
176
|
+
if (logalot) {
|
|
177
|
+
console.log(`${lc} auth-init for ${sAddr}`);
|
|
178
|
+
}
|
|
179
|
+
const authorizedS = await this.getSessionKeystone(sAddr);
|
|
180
|
+
const connectPool = (authorizedS.data?.challengePools ?? [])
|
|
181
|
+
.find(p => p.id === SESSION_KEYSTONE_POLICY.CONNECT_POOL.ID);
|
|
182
|
+
if (!connectPool) {
|
|
183
|
+
throw new Error(`Session keystone missing "${SESSION_KEYSTONE_POLICY.CONNECT_POOL.ID}" pool (E: 66b2a2e32db8f03168f6f2a8b746cb26)`);
|
|
184
|
+
}
|
|
185
|
+
// Demand random challenges
|
|
186
|
+
const challengeIds = Object.keys(connectPool.challenges);
|
|
187
|
+
this.demandedIds = challengeIds.sort(() => 0.5 - Math.random()).slice(0, SESSION_KEYSTONE_POLICY.CONNECT_POOL.SERVER_DEMAND_COUNT);
|
|
188
|
+
// Resolve secure S TJP
|
|
189
|
+
const past = authorizedS.rel8ns?.past;
|
|
190
|
+
this.sessionS_tjpAddr = (past && past.length > 0) ? past[0] : getIbGibAddr({ ibGib: authorizedS });
|
|
191
|
+
this.socketWrapper.send(JSON.stringify({
|
|
192
|
+
type: 'auth-challenge',
|
|
193
|
+
challengeUuid: this.challengeUuid,
|
|
194
|
+
demandedIds: this.demandedIds
|
|
195
|
+
}));
|
|
196
|
+
}
|
|
197
|
+
else if (msg.type === 'auth-proof') {
|
|
198
|
+
const { proofFrame } = msg;
|
|
199
|
+
if (logalot) {
|
|
200
|
+
console.log(`${lc} verifying auth-proof...`);
|
|
201
|
+
}
|
|
202
|
+
if (!this.sessionS_tjpAddr) {
|
|
203
|
+
throw new Error(`Missing active connect session TJP address (E: bf271853de61a04b6d05d6889263f826)`);
|
|
204
|
+
}
|
|
205
|
+
const sAddr_latest = await metaspace.getLatestAddr({ tjpAddr: this.sessionS_tjpAddr, space });
|
|
206
|
+
if (!sAddr_latest) {
|
|
207
|
+
throw new Error(`Authorized session keystone tip not found (E: b8cda5cdc058903318db536f59e8e826)`);
|
|
208
|
+
}
|
|
209
|
+
const sKeystone_latest = await this.getSessionKeystone(sAddr_latest);
|
|
210
|
+
// Crytographically verify proof evolution and demand solutions
|
|
211
|
+
await verifyConnectProof({
|
|
212
|
+
proofFrame,
|
|
213
|
+
sKeystone_latest,
|
|
214
|
+
challengeUuid: this.challengeUuid,
|
|
215
|
+
demandedIds: this.demandedIds
|
|
216
|
+
});
|
|
217
|
+
// Persist the newly validated evolved session keystone tip
|
|
218
|
+
await metaspace.put({ ibGibs: [proofFrame], space });
|
|
219
|
+
if (logalot) {
|
|
220
|
+
console.log(`${lc} connect validation successful! Connection upgraded to active sync session.`);
|
|
221
|
+
}
|
|
222
|
+
this.isAuthenticated = true;
|
|
223
|
+
this.socketWrapper.send(JSON.stringify({
|
|
224
|
+
type: 'auth-ok'
|
|
225
|
+
}));
|
|
226
|
+
}
|
|
227
|
+
else {
|
|
228
|
+
throw new Error(`Unexpected message type ${msg.type} during connect phase (E: f67a0f47f8426c2b01af5bc3d0146b26)`);
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
/**
|
|
232
|
+
* Executes the transaction turn through the local SyncSagaCoordinator.
|
|
233
|
+
*/
|
|
234
|
+
async handleIncomingSyncRequest({ context, payloadIbGibsControl = [], }) {
|
|
235
|
+
const lc = `${this.lc}[${this.handleIncomingSyncRequest.name}]`;
|
|
236
|
+
try {
|
|
237
|
+
if (logalot) {
|
|
238
|
+
console.log(`${lc} starting incoming sync turn...`);
|
|
239
|
+
}
|
|
240
|
+
if (!this.opts) {
|
|
241
|
+
throw new Error(`opts not initialized. (E: 0c98186714e85b9a08bb9d98daada826)`);
|
|
242
|
+
}
|
|
243
|
+
const { localCoordinator, localMetaspace, localSpace } = this.opts;
|
|
244
|
+
const localTempSpace = await this.ensureLocalTempSpace();
|
|
245
|
+
// Put control ibgibs into durable space
|
|
246
|
+
const allControlIbGibs = [context, ...payloadIbGibsControl];
|
|
247
|
+
for (const ibGib of allControlIbGibs) {
|
|
248
|
+
await putInSpace({ space: localSpace, ibGibs: [ibGib] });
|
|
249
|
+
await registerNewIbGib({ space: localSpace, ibGib });
|
|
250
|
+
}
|
|
251
|
+
// Authenticate context signature
|
|
252
|
+
const authErrors = await authenticateContext({
|
|
253
|
+
context,
|
|
254
|
+
space: localSpace,
|
|
255
|
+
});
|
|
256
|
+
if (authErrors.length > 0) {
|
|
257
|
+
throw new Error(`Context authentication failed: ${authErrors.join(', ')} (E: 424bd9b03ff8a42df8b1a438ed393726)`);
|
|
258
|
+
}
|
|
259
|
+
// Put incoming domain payloads into temp space
|
|
260
|
+
if (context.payloadIbGibsDomain && context.payloadIbGibsDomain.length > 0) {
|
|
261
|
+
for (const ibGib of context.payloadIbGibsDomain) {
|
|
262
|
+
await putInSpace({ space: localTempSpace, ibGibs: [ibGib] });
|
|
263
|
+
}
|
|
264
|
+
}
|
|
265
|
+
// Evolve frame and run next coordinator sync turn
|
|
266
|
+
const responseCtx = await localCoordinator.continueSync({
|
|
267
|
+
sagaContext: context,
|
|
268
|
+
metaspace: localMetaspace,
|
|
269
|
+
mySpace: localSpace,
|
|
270
|
+
myTempSpace: localTempSpace,
|
|
271
|
+
});
|
|
272
|
+
return responseCtx || undefined;
|
|
273
|
+
}
|
|
274
|
+
catch (error) {
|
|
275
|
+
console.error(`${lc} handleIncomingSyncRequest turn execution failed: ${extractErrorMsg(error)}`);
|
|
276
|
+
throw error;
|
|
277
|
+
}
|
|
278
|
+
}
|
|
279
|
+
}
|
|
280
|
+
//# sourceMappingURL=sync-peer-websocket-receiver-v1.mjs.map
|
package/dist/sync/sync-peer/sync-peer-websocket-receiver/sync-peer-websocket-receiver-v1.mjs.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sync-peer-websocket-receiver-v1.mjs","sourceRoot":"","sources":["../../../../src/sync/sync-peer/sync-peer-websocket-receiver/sync-peer-websocket-receiver-v1.mts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module sync-websocket-peer-helpers
|
|
3
|
+
*
|
|
4
|
+
* Reusable, isomorphic pure validation helper functions and policies for the
|
|
5
|
+
* WebSocket Sync Peer connect process.
|
|
6
|
+
*/
|
|
7
|
+
import { HashAlgorithm } from '@ibgib/helper-gib/dist/helpers/utils-helper.mjs';
|
|
8
|
+
import { IbGib_V1 } from '@ibgib/ts-gib/dist/V1/types.mjs';
|
|
9
|
+
import { KeystoneIbGib_V1, KeystoneChallenge } from '../../../keystone/keystone-types.mjs';
|
|
10
|
+
import { IbGibSpaceAny } from '../../../witness/space/space-base-v1.mjs';
|
|
11
|
+
import { MetaspaceService } from '../../../witness/space/metaspace/metaspace-types.mjs';
|
|
12
|
+
/**
|
|
13
|
+
* Standard configuration defaults for the Ephemeral Session Keystone.
|
|
14
|
+
*/
|
|
15
|
+
export declare const SESSION_KEYSTONE_POLICY: {
|
|
16
|
+
readonly COMMON: {
|
|
17
|
+
readonly ALGO: HashAlgorithm;
|
|
18
|
+
readonly TYPE: "hash-reveal-v1";
|
|
19
|
+
readonly ROUNDS: 2;
|
|
20
|
+
readonly REPLENISH: "top-up";
|
|
21
|
+
};
|
|
22
|
+
readonly CONNECT_POOL: {
|
|
23
|
+
readonly ID: "connect";
|
|
24
|
+
readonly VERB: "connect";
|
|
25
|
+
readonly SIZE: 10;
|
|
26
|
+
readonly SELECT_SEQUENTIALLY: 2;
|
|
27
|
+
readonly SELECT_RANDOMLY: 2;
|
|
28
|
+
readonly TARGET_BINDING_CHARS: 0;
|
|
29
|
+
readonly SERVER_DEMAND_COUNT: 3;
|
|
30
|
+
};
|
|
31
|
+
};
|
|
32
|
+
/**
|
|
33
|
+
* Resolves the deterministic dynamic upfront pre-filter challenge.
|
|
34
|
+
*/
|
|
35
|
+
export declare function getConnectChallenge(keystone: KeystoneIbGib_V1): {
|
|
36
|
+
challengeId: string;
|
|
37
|
+
challenge: KeystoneChallenge;
|
|
38
|
+
};
|
|
39
|
+
/**
|
|
40
|
+
* Validates the upfront solution against the session keystone's first connect
|
|
41
|
+
* challenge.
|
|
42
|
+
*/
|
|
43
|
+
export declare function checkConnectSolution(keystone: KeystoneIbGib_V1, solutionValue: string): Promise<boolean>;
|
|
44
|
+
/**
|
|
45
|
+
* Validates the upfront connect parameter solutions before socket connection upgrades.
|
|
46
|
+
*/
|
|
47
|
+
export declare function validateUpfrontConnect({ sAddr, solution, space, metaspace, }: {
|
|
48
|
+
sAddr: string;
|
|
49
|
+
solution: string;
|
|
50
|
+
space: IbGibSpaceAny;
|
|
51
|
+
metaspace: MetaspaceService;
|
|
52
|
+
}): Promise<{
|
|
53
|
+
sAddr_tjp: string;
|
|
54
|
+
authorizedS: KeystoneIbGib_V1;
|
|
55
|
+
}>;
|
|
56
|
+
/**
|
|
57
|
+
* Verifies the multi-turn evolved Keystone challenge proof frame.
|
|
58
|
+
*/
|
|
59
|
+
export declare function verifyConnectProof({ proofFrame, sKeystone_latest, challengeUuid, demandedIds, }: {
|
|
60
|
+
proofFrame: KeystoneIbGib_V1;
|
|
61
|
+
sKeystone_latest: KeystoneIbGib_V1;
|
|
62
|
+
challengeUuid: string;
|
|
63
|
+
demandedIds: string[];
|
|
64
|
+
}): Promise<void>;
|
|
65
|
+
/**
|
|
66
|
+
* Isomorphic pure function to intrinsically validate, persist, and register
|
|
67
|
+
* posted keystones. Shared between REST API and sync websocket receiver peers.
|
|
68
|
+
*/
|
|
69
|
+
export declare function validateAndRegisterPostKeystones({ ibGibs, metaspace, space }: {
|
|
70
|
+
ibGibs: any[];
|
|
71
|
+
metaspace: MetaspaceService;
|
|
72
|
+
space: IbGibSpaceAny;
|
|
73
|
+
}): Promise<void>;
|
|
74
|
+
/**
|
|
75
|
+
* Isomorphic pure function to validate a keystone evolution transition and related S session keystones,
|
|
76
|
+
* and persist them to metaspace. Shared across REST API evolve handlers and future socket evolution channels.
|
|
77
|
+
*/
|
|
78
|
+
export declare function validateAndRegisterEvolveKeystone({ domainAddr, keystoneIbGib, relatedIbGibs, metaspace, space }: {
|
|
79
|
+
domainAddr: string;
|
|
80
|
+
keystoneIbGib: KeystoneIbGib_V1;
|
|
81
|
+
relatedIbGibs?: IbGib_V1[];
|
|
82
|
+
metaspace: MetaspaceService;
|
|
83
|
+
space: IbGibSpaceAny;
|
|
84
|
+
}): Promise<void>;
|
|
85
|
+
//# sourceMappingURL=sync-websocket-peer-helpers.d.mts.map
|
package/dist/sync/sync-peer/sync-peer-websocket-receiver/sync-websocket-peer-helpers.d.mts.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sync-websocket-peer-helpers.d.mts","sourceRoot":"","sources":["../../../../src/sync/sync-peer/sync-peer-websocket-receiver/sync-websocket-peer-helpers.mts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,aAAa,EAAmB,MAAM,iDAAiD,CAAC;AAIjG,OAAO,EAAE,QAAQ,EAAE,MAAM,iCAAiC,CAAC;AAG3D,OAAO,EAC+C,gBAAgB,EAChD,iBAAiB,EACtC,MAAM,sCAAsC,CAAC;AAI9C,OAAO,EAAE,aAAa,EAAE,MAAM,0CAA0C,CAAC;AACzE,OAAO,EAAE,gBAAgB,EAAE,MAAM,sDAAsD,CAAC;AAKxF;;GAEG;AACH,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;CAgB1B,CAAC;AAEX;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,gBAAgB,GAAG;IAC7D,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,iBAAiB,CAAC;CAChC,CA2BA;AAED;;;GAGG;AACH,wBAAsB,oBAAoB,CACtC,QAAQ,EAAE,gBAAgB,EAC1B,aAAa,EAAE,MAAM,GACtB,OAAO,CAAC,OAAO,CAAC,CA4BlB;AAED;;GAEG;AACH,wBAAsB,sBAAsB,CAAC,EACzC,KAAK,EACL,QAAQ,EACR,KAAK,EACL,SAAS,GACZ,EAAE;IACC,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,aAAa,CAAC;IACrB,SAAS,EAAE,gBAAgB,CAAC;CAC/B,GAAG,OAAO,CAAC;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,gBAAgB,CAAA;CAAE,CAAC,CAuChE;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CAAC,EACrC,UAAU,EACV,gBAAgB,EAChB,aAAa,EACb,WAAW,GACd,EAAE;IACC,UAAU,EAAE,gBAAgB,CAAC;IAC7B,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,EAAE,CAAC;CACzB,GAAG,OAAO,CAAC,IAAI,CAAC,CAmChB;AAED;;;GAGG;AACH,wBAAsB,gCAAgC,CAAC,EACnD,MAAM,EACN,SAAS,EACT,KAAK,EACR,EAAE;IACC,MAAM,EAAE,GAAG,EAAE,CAAC;IACd,SAAS,EAAE,gBAAgB,CAAC;IAC5B,KAAK,EAAE,aAAa,CAAC;CACxB,GAAG,OAAO,CAAC,IAAI,CAAC,CAgChB;AAED;;;GAGG;AACH,wBAAsB,iCAAiC,CAAC,EACpD,UAAU,EACV,aAAa,EACb,aAAkB,EAClB,SAAS,EACT,KAAK,EACR,EAAE;IACC,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,gBAAgB,CAAC;IAChC,aAAa,CAAC,EAAE,QAAQ,EAAE,CAAC;IAC3B,SAAS,EAAE,gBAAgB,CAAC;IAC5B,KAAK,EAAE,aAAa,CAAC;CACxB,GAAG,OAAO,CAAC,IAAI,CAAC,CAqGhB"}
|