@serfab/cadre-core 0.0.2 → 0.3.0
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/control-database.js +5 -6
- package/dist/control-database.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/schema-verification.d.ts +37 -0
- package/dist/schema-verification.js +75 -0
- package/dist/schema-verification.js.map +1 -0
- package/dist/seed-bootstrap.js +41 -39
- package/dist/seed-bootstrap.js.map +1 -1
- package/dist/strand-instance-manager.js +4 -0
- package/dist/strand-instance-manager.js.map +1 -1
- package/dist/types.d.ts +5 -3
- package/package.json +11 -7
- package/src/control-database.ts +5 -7
- package/src/index.ts +8 -0
- package/src/schema-verification.ts +85 -0
- package/src/seed-bootstrap.ts +50 -53
- package/src/strand-instance-manager.ts +5 -0
- package/src/types.ts +5 -3
package/dist/control-database.js
CHANGED
|
@@ -240,8 +240,8 @@ export class ControlDatabase {
|
|
|
240
240
|
await this.db.exec(`
|
|
241
241
|
insert into CadreControl.AuthorityKey (Key)
|
|
242
242
|
with context AuthorityKey = null, Signature = null, StampId = StampId()
|
|
243
|
-
values (
|
|
244
|
-
|
|
243
|
+
values (?)
|
|
244
|
+
`, [key]);
|
|
245
245
|
log('Authority key inserted');
|
|
246
246
|
}
|
|
247
247
|
/**
|
|
@@ -257,7 +257,6 @@ export class ControlDatabase {
|
|
|
257
257
|
async insertStrand(strandId, type, authorityKey, signStampId, memberPrivateKey) {
|
|
258
258
|
this.ensureInitialized();
|
|
259
259
|
log('Inserting strand: %s (type: %s)', strandId, type);
|
|
260
|
-
const memberKeyValue = memberPrivateKey ? `'${memberPrivateKey}'` : 'null';
|
|
261
260
|
// Generate a unique stamp ID using the peer ID for distributed uniqueness
|
|
262
261
|
const peerId = this.config.libp2pNode.peerId.toString();
|
|
263
262
|
const stampId = generateStampId(peerId);
|
|
@@ -266,9 +265,9 @@ export class ControlDatabase {
|
|
|
266
265
|
// Insert with the signed stamp ID
|
|
267
266
|
await this.db.exec(`
|
|
268
267
|
insert into CadreControl.Strand (Id, Type, MemberPrivateKey)
|
|
269
|
-
with context AuthorityKey =
|
|
270
|
-
values (
|
|
271
|
-
|
|
268
|
+
with context AuthorityKey = ?, Signature = ?, StampId = ?
|
|
269
|
+
values (?, ?, ?)
|
|
270
|
+
`, [authorityKey, signature, stampId, strandId, type, memberPrivateKey ?? null]);
|
|
272
271
|
log('Strand inserted: %s', strandId);
|
|
273
272
|
}
|
|
274
273
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"control-database.js","sourceRoot":"","sources":["../src/control-database.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"control-database.js","sourceRoot":"","sources":["../src/control-database.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -9,4 +9,5 @@ export { ArachnodeStub, createArachnodeStub, type RingConfig } from './arachnode
|
|
|
9
9
|
export { EnrollmentService, type MemberVerifier, type MemberRegistry } from './enrollment.js';
|
|
10
10
|
export { StrandSolicitationService, type DisclosureValidator, type FormationUsageRecorder, type StrandProvisioner, type FormationSigner, type StrandSolicitationServiceOptions } from './strand-solicitation.js';
|
|
11
11
|
export { SeedBootstrapService, SEED_PROTOCOL, type SeedBootstrapConfig, type SeedEventCallbacks } from './seed-bootstrap.js';
|
|
12
|
+
export { signSchema, verifySchema, assertSchemaSignature, SchemaVerificationError } from './schema-verification.js';
|
|
12
13
|
export { StrandFormationManager, createStrandFormationManager, type StrandFormationManagerConfig, type StrandFormationManagerOptions } from './strand-formation-manager.js';
|
package/dist/index.js
CHANGED
|
@@ -19,6 +19,8 @@ export { EnrollmentService } from './enrollment.js';
|
|
|
19
19
|
export { StrandSolicitationService } from './strand-solicitation.js';
|
|
20
20
|
// Seed Bootstrap
|
|
21
21
|
export { SeedBootstrapService, SEED_PROTOCOL } from './seed-bootstrap.js';
|
|
22
|
+
// Schema Verification
|
|
23
|
+
export { signSchema, verifySchema, assertSchemaSignature, SchemaVerificationError } from './schema-verification.js';
|
|
22
24
|
// Strand Formation (strand-proto integration)
|
|
23
25
|
export { StrandFormationManager, createStrandFormationManager } from './strand-formation-manager.js';
|
|
24
26
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,aAAa;AACb,cAAc,YAAY,CAAC;AAE3B,uBAAuB;AACvB,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,mBAAmB;AACnB,OAAO,EAAE,eAAe,EAA8B,MAAM,uBAAuB,CAAC;AAEpF,kBAAkB;AAClB,OAAO,EAAE,cAAc,EAA6B,MAAM,sBAAsB,CAAC;AAEjF,oBAAoB;AACpB,OAAO,EACL,aAAa,EAKd,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,qBAAqB,EAErB,oBAAoB,EACrB,MAAM,8BAA8B,CAAC;AAEtC,cAAc;AACd,OAAO,EACL,kBAAkB,EAEnB,MAAM,0BAA0B,CAAC;AAElC,mBAAmB;AACnB,OAAO,EACL,aAAa,EACb,mBAAmB,EAEpB,MAAM,qBAAqB,CAAC;AAE7B,aAAa;AACb,OAAO,EACL,iBAAiB,EAGlB,MAAM,iBAAiB,CAAC;AAEzB,sBAAsB;AACtB,OAAO,EACL,yBAAyB,EAM1B,MAAM,0BAA0B,CAAC;AAElC,iBAAiB;AACjB,OAAO,EACL,oBAAoB,EACpB,aAAa,EAGd,MAAM,qBAAqB,CAAC;AAE7B,8CAA8C;AAC9C,OAAO,EACL,sBAAsB,EACtB,4BAA4B,EAG7B,MAAM,+BAA+B,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,aAAa;AACb,cAAc,YAAY,CAAC;AAE3B,uBAAuB;AACvB,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,mBAAmB;AACnB,OAAO,EAAE,eAAe,EAA8B,MAAM,uBAAuB,CAAC;AAEpF,kBAAkB;AAClB,OAAO,EAAE,cAAc,EAA6B,MAAM,sBAAsB,CAAC;AAEjF,oBAAoB;AACpB,OAAO,EACL,aAAa,EAKd,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,qBAAqB,EAErB,oBAAoB,EACrB,MAAM,8BAA8B,CAAC;AAEtC,cAAc;AACd,OAAO,EACL,kBAAkB,EAEnB,MAAM,0BAA0B,CAAC;AAElC,mBAAmB;AACnB,OAAO,EACL,aAAa,EACb,mBAAmB,EAEpB,MAAM,qBAAqB,CAAC;AAE7B,aAAa;AACb,OAAO,EACL,iBAAiB,EAGlB,MAAM,iBAAiB,CAAC;AAEzB,sBAAsB;AACtB,OAAO,EACL,yBAAyB,EAM1B,MAAM,0BAA0B,CAAC;AAElC,iBAAiB;AACjB,OAAO,EACL,oBAAoB,EACpB,aAAa,EAGd,MAAM,qBAAqB,CAAC;AAE7B,sBAAsB;AACtB,OAAO,EACL,UAAU,EACV,YAAY,EACZ,qBAAqB,EACrB,uBAAuB,EACxB,MAAM,0BAA0B,CAAC;AAElC,8CAA8C;AAC9C,OAAO,EACL,sBAAsB,EACtB,4BAA4B,EAG7B,MAAM,+BAA+B,CAAC"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import type { SAppConfig } from './types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Error thrown when sApp schema signature verification fails.
|
|
4
|
+
*/
|
|
5
|
+
export declare class SchemaVerificationError extends Error {
|
|
6
|
+
readonly sAppId: string;
|
|
7
|
+
readonly version: string;
|
|
8
|
+
constructor(sAppId: string, version: string, reason: string);
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Sign an sApp schema with the author's ed25519 private key.
|
|
12
|
+
* Used by sApp authors when publishing their schema.
|
|
13
|
+
*
|
|
14
|
+
* @param schema - The declarative schema DDL
|
|
15
|
+
* @param version - Schema version string
|
|
16
|
+
* @param authorPrivateKey - Author's ed25519 private key (base64url)
|
|
17
|
+
* @returns Signature (base64url)
|
|
18
|
+
*/
|
|
19
|
+
export declare function signSchema(schema: string, version: string, authorPrivateKey: string): string;
|
|
20
|
+
/**
|
|
21
|
+
* Verify an sApp schema signature against the author's ed25519 public key.
|
|
22
|
+
*
|
|
23
|
+
* @param schema - The declarative schema DDL
|
|
24
|
+
* @param version - Schema version string
|
|
25
|
+
* @param signature - Signature to verify (base64url)
|
|
26
|
+
* @param authorPublicKey - Author's ed25519 public key (base64url)
|
|
27
|
+
* @returns true if the signature is valid
|
|
28
|
+
*/
|
|
29
|
+
export declare function verifySchema(schema: string, version: string, signature: string, authorPublicKey: string): boolean;
|
|
30
|
+
/**
|
|
31
|
+
* Assert that an SAppConfig has a valid schema signature.
|
|
32
|
+
* Throws SchemaVerificationError on failure.
|
|
33
|
+
*
|
|
34
|
+
* @param sAppConfig - The sApp configuration to verify
|
|
35
|
+
* @throws SchemaVerificationError if the signature is invalid
|
|
36
|
+
*/
|
|
37
|
+
export declare function assertSchemaSignature(sAppConfig: SAppConfig): void;
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import debug from 'debug';
|
|
2
|
+
import { digest, sign, verify } from '@optimystic/quereus-plugin-crypto';
|
|
3
|
+
const log = debug('sereus:cadre:schema-verify');
|
|
4
|
+
/**
|
|
5
|
+
* Error thrown when sApp schema signature verification fails.
|
|
6
|
+
*/
|
|
7
|
+
export class SchemaVerificationError extends Error {
|
|
8
|
+
constructor(sAppId, version, reason) {
|
|
9
|
+
super(`sApp schema verification failed for ${sAppId} v${version}: ${reason}`);
|
|
10
|
+
this.sAppId = sAppId;
|
|
11
|
+
this.version = version;
|
|
12
|
+
this.name = 'SchemaVerificationError';
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Compute the canonical digest of a schema + version for signing/verification.
|
|
17
|
+
* The payload is deterministic JSON: `{"schema":"...","version":"..."}`.
|
|
18
|
+
*/
|
|
19
|
+
function schemaDigest(schema, version) {
|
|
20
|
+
const payload = JSON.stringify({ schema, version });
|
|
21
|
+
return digest(payload, 'sha256', 'utf8', 'base64url');
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Sign an sApp schema with the author's ed25519 private key.
|
|
25
|
+
* Used by sApp authors when publishing their schema.
|
|
26
|
+
*
|
|
27
|
+
* @param schema - The declarative schema DDL
|
|
28
|
+
* @param version - Schema version string
|
|
29
|
+
* @param authorPrivateKey - Author's ed25519 private key (base64url)
|
|
30
|
+
* @returns Signature (base64url)
|
|
31
|
+
*/
|
|
32
|
+
export function signSchema(schema, version, authorPrivateKey) {
|
|
33
|
+
const d = schemaDigest(schema, version);
|
|
34
|
+
return sign(d, authorPrivateKey, 'ed25519', 'base64url', 'base64url', 'base64url');
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Verify an sApp schema signature against the author's ed25519 public key.
|
|
38
|
+
*
|
|
39
|
+
* @param schema - The declarative schema DDL
|
|
40
|
+
* @param version - Schema version string
|
|
41
|
+
* @param signature - Signature to verify (base64url)
|
|
42
|
+
* @param authorPublicKey - Author's ed25519 public key (base64url)
|
|
43
|
+
* @returns true if the signature is valid
|
|
44
|
+
*/
|
|
45
|
+
export function verifySchema(schema, version, signature, authorPublicKey) {
|
|
46
|
+
try {
|
|
47
|
+
const d = schemaDigest(schema, version);
|
|
48
|
+
return verify(d, signature, authorPublicKey, 'ed25519', 'base64url', 'base64url', 'base64url');
|
|
49
|
+
}
|
|
50
|
+
catch (error) {
|
|
51
|
+
log('Schema verification error: %o', error);
|
|
52
|
+
return false;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Assert that an SAppConfig has a valid schema signature.
|
|
57
|
+
* Throws SchemaVerificationError on failure.
|
|
58
|
+
*
|
|
59
|
+
* @param sAppConfig - The sApp configuration to verify
|
|
60
|
+
* @throws SchemaVerificationError if the signature is invalid
|
|
61
|
+
*/
|
|
62
|
+
export function assertSchemaSignature(sAppConfig) {
|
|
63
|
+
const { id, version, schema, signature } = sAppConfig;
|
|
64
|
+
if (!signature) {
|
|
65
|
+
log('No signature provided for %s v%s — skipping verification', id, version);
|
|
66
|
+
return;
|
|
67
|
+
}
|
|
68
|
+
if (!id) {
|
|
69
|
+
throw new SchemaVerificationError(id ?? '', version, 'missing author public key');
|
|
70
|
+
}
|
|
71
|
+
if (!verifySchema(schema, version, signature, id)) {
|
|
72
|
+
throw new SchemaVerificationError(id, version, 'invalid signature');
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
//# sourceMappingURL=schema-verification.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema-verification.js","sourceRoot":"","sources":["../src/schema-verification.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,mCAAmC,CAAC;AAGzE,MAAM,GAAG,GAAG,KAAK,CAAC,4BAA4B,CAAC,CAAC;AAEhD;;GAEG;AACH,MAAM,OAAO,uBAAwB,SAAQ,KAAK;IAChD,YACkB,MAAc,EACd,OAAe,EAC/B,MAAc;QAEd,KAAK,CAAC,uCAAuC,MAAM,KAAK,OAAO,KAAK,MAAM,EAAE,CAAC,CAAC;QAJ9D,WAAM,GAAN,MAAM,CAAQ;QACd,YAAO,GAAP,OAAO,CAAQ;QAI/B,IAAI,CAAC,IAAI,GAAG,yBAAyB,CAAC;IACxC,CAAC;CACF;AAED;;;GAGG;AACH,SAAS,YAAY,CAAC,MAAc,EAAE,OAAe;IACnD,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC;IACpD,OAAO,MAAM,CAAC,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,CAAW,CAAC;AAClE,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,UAAU,CAAC,MAAc,EAAE,OAAe,EAAE,gBAAwB;IAClF,MAAM,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACxC,OAAO,IAAI,CAAC,CAAC,EAAE,gBAAgB,EAAE,SAAS,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,CAAW,CAAC;AAC/F,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,YAAY,CAAC,MAAc,EAAE,OAAe,EAAE,SAAiB,EAAE,eAAuB;IACtG,IAAI,CAAC;QACH,MAAM,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACxC,OAAO,MAAM,CAAC,CAAC,EAAE,SAAS,EAAE,eAAe,EAAE,SAAS,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC;IACjG,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,GAAG,CAAC,+BAA+B,EAAE,KAAK,CAAC,CAAC;QAC5C,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,qBAAqB,CAAC,UAAsB;IAC1D,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,UAAU,CAAC;IAEtD,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,GAAG,CAAC,0DAA0D,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC;QAC7E,OAAO;IACT,CAAC;IAED,IAAI,CAAC,EAAE,EAAE,CAAC;QACR,MAAM,IAAI,uBAAuB,CAAC,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,2BAA2B,CAAC,CAAC;IACpF,CAAC;IAED,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE,CAAC,EAAE,CAAC;QAClD,MAAM,IAAI,uBAAuB,CAAC,EAAE,EAAE,OAAO,EAAE,mBAAmB,CAAC,CAAC;IACtE,CAAC;AACH,CAAC"}
|
package/dist/seed-bootstrap.js
CHANGED
|
@@ -65,13 +65,13 @@ export class SeedBootstrapService {
|
|
|
65
65
|
const signature = sign(peerIdDigest, this.config.authorityPrivateKey, 'ed25519', 'base64url', 'base64url', 'base64url');
|
|
66
66
|
// Insert into CadrePeer table with authority context
|
|
67
67
|
const db = this.controlDatabase.getDatabase();
|
|
68
|
-
|
|
69
|
-
const
|
|
68
|
+
// CadrePeer.Multiaddr is NOT NULL; use empty string when no addrs provided
|
|
69
|
+
const multiaddrStr = multiaddrs?.length ? multiaddrs.join(',') : '';
|
|
70
70
|
await db.exec(`
|
|
71
71
|
insert into CadreControl.CadrePeer (PeerId, Multiaddr)
|
|
72
|
-
with context AuthorityKey =
|
|
73
|
-
values (
|
|
74
|
-
|
|
72
|
+
with context AuthorityKey = ?, Signature = ?
|
|
73
|
+
values (?, ?)
|
|
74
|
+
`, [this.authorityPublicKey, signature, peerId, multiaddrStr]);
|
|
75
75
|
log('Peer %s authorized successfully', peerId);
|
|
76
76
|
}
|
|
77
77
|
/**
|
|
@@ -118,10 +118,10 @@ export class SeedBootstrapService {
|
|
|
118
118
|
if (!this.validateSeedSignature(seed)) {
|
|
119
119
|
return { success: false, peersAdded: 0, error: 'Invalid seed signature' };
|
|
120
120
|
}
|
|
121
|
-
// Verify the signer
|
|
122
|
-
const
|
|
123
|
-
if (!
|
|
124
|
-
return { success: false, peersAdded: 0, error: '
|
|
121
|
+
// Verify the signer's key matches an authority peer's public key
|
|
122
|
+
const signerIsAuthority = seed.peers.some(p => p.isAuthority && p.publicKey === seed.signerKey);
|
|
123
|
+
if (!signerIsAuthority) {
|
|
124
|
+
return { success: false, peersAdded: 0, error: 'Signer key does not match any authority peer' };
|
|
125
125
|
}
|
|
126
126
|
let peersAdded = 0;
|
|
127
127
|
// Add peers to the peer store
|
|
@@ -196,18 +196,19 @@ export class SeedBootstrapService {
|
|
|
196
196
|
signerKey: seed.signerKey,
|
|
197
197
|
};
|
|
198
198
|
const messageBytes = new TextEncoder().encode(JSON.stringify(message));
|
|
199
|
-
// Write length-prefixed message
|
|
199
|
+
// Write length-prefixed message using libp2p 3.x send() API
|
|
200
200
|
const lengthBytes = new Uint8Array(4);
|
|
201
201
|
new DataView(lengthBytes.buffer).setUint32(0, messageBytes.length, false);
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
//
|
|
202
|
+
stream.send(lengthBytes);
|
|
203
|
+
stream.send(messageBytes);
|
|
204
|
+
// In libp2p v3.x, close() closes the write end only (signals EOF),
|
|
205
|
+
// while the read end remains open for receiving the ack.
|
|
206
|
+
await stream.close();
|
|
207
|
+
// Read the acknowledgment (stream is AsyncIterable in libp2p 3.x)
|
|
205
208
|
const chunks = [];
|
|
206
|
-
for await (const chunk of stream
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
if (chunks.reduce((sum, c) => sum + c.length, 0) >= 4)
|
|
210
|
-
break;
|
|
209
|
+
for await (const chunk of stream) {
|
|
210
|
+
const bytes = chunk instanceof Uint8Array ? chunk : chunk.subarray();
|
|
211
|
+
chunks.push(bytes);
|
|
211
212
|
}
|
|
212
213
|
const responseData = new Uint8Array(chunks.reduce((sum, c) => sum + c.length, 0));
|
|
213
214
|
let offset = 0;
|
|
@@ -215,15 +216,16 @@ export class SeedBootstrapService {
|
|
|
215
216
|
responseData.set(chunk, offset);
|
|
216
217
|
offset += chunk.length;
|
|
217
218
|
}
|
|
218
|
-
// Parse length
|
|
219
|
-
const responseLength = new DataView(responseData.buffer).getUint32(0, false);
|
|
219
|
+
// Parse length-prefixed response
|
|
220
|
+
const responseLength = new DataView(responseData.buffer, responseData.byteOffset).getUint32(0, false);
|
|
220
221
|
const responseJson = new TextDecoder().decode(responseData.slice(4, 4 + responseLength));
|
|
221
222
|
const ack = JSON.parse(responseJson);
|
|
222
223
|
log('Seed delivery response: accepted=%s', ack.accepted);
|
|
223
224
|
return ack;
|
|
224
225
|
}
|
|
225
|
-
|
|
226
|
-
|
|
226
|
+
catch (err) {
|
|
227
|
+
stream.abort(err instanceof Error ? err : new Error(String(err)));
|
|
228
|
+
throw err;
|
|
227
229
|
}
|
|
228
230
|
}
|
|
229
231
|
/**
|
|
@@ -277,14 +279,13 @@ export class SeedBootstrapService {
|
|
|
277
279
|
for await (const row of db.eval('select PeerId, Multiaddr from CadreControl.CadrePeer')) {
|
|
278
280
|
const peerId = row.PeerId;
|
|
279
281
|
const multiaddr = row.Multiaddr;
|
|
280
|
-
//
|
|
281
|
-
// Note: Authority keys are base64url public keys, not peer IDs
|
|
282
|
-
// For now, we mark the peer as authority if it matches the service's authority key
|
|
282
|
+
// Mark peer as authority if it matches the service's own peer ID
|
|
283
283
|
const isAuthority = peerId === this.libp2pNode?.peerId.toString();
|
|
284
284
|
peers.push({
|
|
285
285
|
peerId,
|
|
286
286
|
multiaddrs: multiaddr ? multiaddr.split(',') : [],
|
|
287
287
|
isAuthority,
|
|
288
|
+
...(isAuthority && this.authorityPublicKey ? { publicKey: this.authorityPublicKey } : {}),
|
|
288
289
|
});
|
|
289
290
|
}
|
|
290
291
|
return peers;
|
|
@@ -295,17 +296,18 @@ export class SeedBootstrapService {
|
|
|
295
296
|
registerProtocolHandler() {
|
|
296
297
|
if (!this.libp2pNode)
|
|
297
298
|
return;
|
|
298
|
-
this.libp2pNode.handle(SEED_PROTOCOL, async (
|
|
299
|
-
const
|
|
300
|
-
const remotePeerId =
|
|
299
|
+
this.libp2pNode.handle(SEED_PROTOCOL, async (rawStream, rawConnection) => {
|
|
300
|
+
const stream = rawStream;
|
|
301
|
+
const remotePeerId = rawConnection.remotePeer.toString();
|
|
301
302
|
log('Incoming seed delivery from: %s', remotePeerId);
|
|
302
303
|
try {
|
|
303
|
-
// Read the seed message
|
|
304
|
+
// Read the seed message (stream is AsyncIterable in libp2p 3.x)
|
|
304
305
|
const chunks = [];
|
|
305
306
|
let totalLength = 0;
|
|
306
|
-
for await (const chunk of stream
|
|
307
|
-
|
|
308
|
-
|
|
307
|
+
for await (const chunk of stream) {
|
|
308
|
+
const bytes = chunk instanceof Uint8Array ? chunk : chunk.subarray();
|
|
309
|
+
chunks.push(bytes);
|
|
310
|
+
totalLength += bytes.length;
|
|
309
311
|
if (totalLength > MAX_SEED_SIZE) {
|
|
310
312
|
throw new Error('Seed message too large');
|
|
311
313
|
}
|
|
@@ -317,7 +319,7 @@ export class SeedBootstrapService {
|
|
|
317
319
|
offset += chunk.length;
|
|
318
320
|
}
|
|
319
321
|
// Parse length-prefixed message
|
|
320
|
-
const messageLength = new DataView(data.buffer).getUint32(0, false);
|
|
322
|
+
const messageLength = new DataView(data.buffer, data.byteOffset).getUint32(0, false);
|
|
321
323
|
const messageJson = new TextDecoder().decode(data.slice(4, 4 + messageLength));
|
|
322
324
|
const message = JSON.parse(messageJson);
|
|
323
325
|
// Emit seed received event
|
|
@@ -338,7 +340,7 @@ export class SeedBootstrapService {
|
|
|
338
340
|
else {
|
|
339
341
|
this.eventCallbacks.onSeedError?.(seed.partyId, result.error ?? 'Unknown error');
|
|
340
342
|
}
|
|
341
|
-
// Send acknowledgment
|
|
343
|
+
// Send acknowledgment using libp2p 3.x send() API
|
|
342
344
|
const ack = {
|
|
343
345
|
accepted: result.success,
|
|
344
346
|
reason: result.error,
|
|
@@ -346,8 +348,8 @@ export class SeedBootstrapService {
|
|
|
346
348
|
const ackBytes = new TextEncoder().encode(JSON.stringify(ack));
|
|
347
349
|
const lengthBytes = new Uint8Array(4);
|
|
348
350
|
new DataView(lengthBytes.buffer).setUint32(0, ackBytes.length, false);
|
|
349
|
-
|
|
350
|
-
|
|
351
|
+
stream.send(lengthBytes);
|
|
352
|
+
stream.send(ackBytes);
|
|
351
353
|
}
|
|
352
354
|
catch (error) {
|
|
353
355
|
log('Error handling seed delivery: %o', error);
|
|
@@ -363,11 +365,11 @@ export class SeedBootstrapService {
|
|
|
363
365
|
const lengthBytes = new Uint8Array(4);
|
|
364
366
|
new DataView(lengthBytes.buffer).setUint32(0, ackBytes.length, false);
|
|
365
367
|
try {
|
|
366
|
-
|
|
367
|
-
|
|
368
|
+
stream.send(lengthBytes);
|
|
369
|
+
stream.send(ackBytes);
|
|
368
370
|
}
|
|
369
371
|
catch {
|
|
370
|
-
// Ignore
|
|
372
|
+
// Ignore send errors
|
|
371
373
|
}
|
|
372
374
|
}
|
|
373
375
|
finally {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"seed-bootstrap.js","sourceRoot":"","sources":["../src/seed-bootstrap.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,QAAQ,IAAI,kBAAkB,EAAE,UAAU,IAAI,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACjG,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AAEvF,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAEpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAoCnD,MAAM,GAAG,GAAG,KAAK,CAAC,6BAA6B,CAAC,CAAC;AAEjD,oCAAoC;AACpC,MAAM,CAAC,MAAM,aAAa,GAAG,oBAAoB,CAAC;AAElD,sCAAsC;AACtC,MAAM,aAAa,GAAG,IAAI,GAAG,IAAI,CAAC;AA0BlC;;;;;;GAMG;AACH,MAAM,OAAO,oBAAoB;IAO/B,YAAY,MAA2B;QAL/B,eAAU,GAAkB,IAAI,CAAC;QACjC,oBAAe,GAA2B,IAAI,CAAC;QAE/C,mBAAc,GAAuB,EAAE,CAAC;QAG9C,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QAErB,qDAAqD;QACrD,IAAI,MAAM,CAAC,mBAAmB,IAAI,CAAC,MAAM,CAAC,kBAAkB,EAAE,CAAC;YAC7D,IAAI,CAAC,kBAAkB,GAAG,YAAY,CACpC,MAAM,CAAC,mBAAmB,EAC1B,SAAS,EACT,WAAW,EACX,WAAW,CACF,CAAC;QACd,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,kBAAkB,GAAG,MAAM,CAAC,kBAAkB,IAAI,IAAI,CAAC;QAC9D,CAAC;QAED,GAAG,CAAC,4CAA4C,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;IACpE,CAAC;IAED;;;OAGG;IACH,iBAAiB,CAAC,SAA6B;QAC7C,IAAI,CAAC,cAAc,GAAG,SAAS,CAAC;IAClC,CAAC;IAED;;OAEG;IACH,UAAU,CAAC,UAAkB,EAAE,eAAgC;QAC7D,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,eAAe,GAAG,eAAe,CAAC;QAEvC,qCAAqC;QACrC,IAAI,CAAC,uBAAuB,EAAE,CAAC;QAE/B,GAAG,CAAC,kCAAkC,CAAC,CAAC;IAC1C,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,aAAa,CAAC,OAA6B;QAC/C,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC;QAEvC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,mBAAmB,EAAE,CAAC;YACrC,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC;QACvE,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC;YAC1B,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;QACtD,CAAC;QAED,GAAG,CAAC,sBAAsB,EAAE,MAAM,CAAC,CAAC;QAEpC,0CAA0C;QAC1C,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,CAAW,CAAC;QAC7E,MAAM,SAAS,GAAG,IAAI,CACpB,YAAY,EACZ,IAAI,CAAC,MAAM,CAAC,mBAAmB,EAC/B,SAAS,EACT,WAAW,EACX,WAAW,EACX,WAAW,CACF,CAAC;QAEZ,qDAAqD;QACrD,MAAM,EAAE,GAAG,IAAI,CAAC,eAAe,CAAC,WAAW,EAAE,CAAC;QAC9C,MAAM,YAAY,GAAG,UAAU,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC;QACnD,MAAM,cAAc,GAAG,YAAY,CAAC,CAAC,CAAC,IAAI,YAAY,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC;QAEnE,MAAM,EAAE,CAAC,IAAI,CAAC;;uCAEqB,IAAI,CAAC,kBAAkB,mBAAmB,SAAS;mBACvE,MAAM,MAAM,cAAc;KACxC,CAAC,CAAC;QAEH,GAAG,CAAC,iCAAiC,EAAE,MAAM,CAAC,CAAC;IACjD,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,UAAU;QACd,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,mBAAmB,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC;YACjE,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;QAC5D,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,eAAe,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YAC9C,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;QAC7C,CAAC;QAED,GAAG,CAAC,6BAA6B,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAExD,4CAA4C;QAC5C,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;QAEtC,2CAA2C;QAC3C,MAAM,QAAQ,GAAG;YACf,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO;YAC5B,KAAK;SACN,CAAC;QAEF,gBAAgB;QAChB,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QAC1C,MAAM,UAAU,GAAG,MAAM,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,CAAW,CAAC;QAC7E,MAAM,SAAS,GAAG,IAAI,CACpB,UAAU,EACV,IAAI,CAAC,MAAM,CAAC,mBAAmB,EAC/B,SAAS,EACT,WAAW,EACX,WAAW,EACX,WAAW,CACF,CAAC;QAEZ,MAAM,IAAI,GAAuB;YAC/B,GAAG,QAAQ;YACX,SAAS;YACT,SAAS,EAAE,IAAI,CAAC,kBAAkB;SACnC,CAAC;QAEF,GAAG,CAAC,4BAA4B,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;QAChD,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,SAAS,CAAC,IAAwB;QACtC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YACrB,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,EAAE,KAAK,EAAE,yBAAyB,EAAE,CAAC;QAC7E,CAAC;QAED,GAAG,CAAC,6BAA6B,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QAEjD,8BAA8B;QAC9B,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,EAAE,CAAC;YACtC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,EAAE,KAAK,EAAE,wBAAwB,EAAE,CAAC;QAC5E,CAAC;QAED,4DAA4D;QAC5D,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;QACvD,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,EAAE,KAAK,EAAE,2BAA2B,EAAE,CAAC;QAC/E,CAAC;QAED,IAAI,UAAU,GAAG,CAAC,CAAC;QAEnB,8BAA8B;QAC9B,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YAC9B,IAAI,CAAC;gBACH,6CAA6C;gBAC7C,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAC/B,MAAM,MAAM,GAAG,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;oBAC7C,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC;oBAEvD,MAAM,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,EAAE;wBAC5C,UAAU,EAAE,KAAK;qBAClB,CAAC,CAAC;oBAEH,UAAU,EAAE,CAAC;oBACb,GAAG,CAAC,uCAAuC,EAAE,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;gBAC1E,CAAC;YACH,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,GAAG,CAAC,2BAA2B,EAAE,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;YACvD,CAAC;QACH,CAAC;QAED,gDAAgD;QAChD,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC;YACzD,IAAI,CAAC;gBACH,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAC/B,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;oBAE3C,GAAG,CAAC,4BAA4B,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;oBAC/C,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACnC,CAAC;YACH,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,GAAG,CAAC,4BAA4B,EAAE,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;gBACtD,gDAAgD;YAClD,CAAC;QACH,CAAC;QAED,GAAG,CAAC,8BAA8B,EAAE,UAAU,CAAC,CAAC;QAChD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;IACvC,CAAC;IAED;;OAEG;IACH,UAAU,CAAC,IAAwB;QACjC,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAClC,OAAO,kBAAkB,CAAC,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,WAAW,CAAC,CAAC;IACzE,CAAC;IAED;;OAEG;IACH,UAAU,CAAC,OAAe;QACxB,MAAM,KAAK,GAAG,oBAAoB,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;QACzD,MAAM,IAAI,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC7C,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAuB,CAAC;IAChD,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,WAAW,CAAC,eAAuB,EAAE,IAAwB;QACjE,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YACrB,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;QAC7C,CAAC;QAED,MAAM,IAAI,GAAG,SAAS,CAAC,eAAe,CAAC,CAAC;QAExC,GAAG,CAAC,wBAAwB,EAAE,eAAe,CAAC,CAAC;QAE/C,oCAAoC;QACpC,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;QAC1E,MAAM,MAAM,GAAG,SAAoC,CAAC;QAEpD,IAAI,CAAC;YACH,wBAAwB;YACxB,MAAM,OAAO,GAAgB;gBAC3B,OAAO,EAAE,IAAI,CAAC,OAAO;gBACrB,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,YAAY,EAAE,IAAI,CAAC,YAAY;gBAC/B,SAAS,EAAE,IAAI,CAAC,SAAS;gBACzB,SAAS,EAAE,IAAI,CAAC,SAAS;aAC1B,CAAC;YAEF,MAAM,YAAY,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;YAEvE,gCAAgC;YAChC,MAAM,WAAW,GAAG,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC;YACtC,IAAI,QAAQ,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,YAAY,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;YAE1E,KAAK,SAAS,CAAC,CAAC,QAAQ,KAAK,MAAM,WAAW,CAAC,CAAC,MAAM,YAAY,CAAC,CAAC,CAAC;YACrE,MAAM,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;YAE9B,0BAA0B;YAC1B,MAAM,MAAM,GAAiB,EAAE,CAAC;YAChC,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;gBACxC,MAAM,CAAC,IAAI,CAAE,KAAoB,CAAC,QAAQ,EAAE,CAAC,CAAC;gBAC9C,uCAAuC;gBACvC,IAAI,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC;oBAAE,MAAM;YAC/D,CAAC;YAED,MAAM,YAAY,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC;YAClF,IAAI,MAAM,GAAG,CAAC,CAAC;YACf,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;gBAC3B,YAAY,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;gBAChC,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC;YACzB,CAAC;YAED,iDAAiD;YACjD,MAAM,cAAc,GAAG,IAAI,QAAQ,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;YAC7E,MAAM,YAAY,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC;YACzF,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAmB,CAAC;YAEvD,GAAG,CAAC,qCAAqC,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC;YACzD,OAAO,GAAG,CAAC;QAEb,CAAC;gBAAS,CAAC;YACT,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;QACvB,CAAC;IACH,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,eAAe;QACnB,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YACrB,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,CAAC;QAE9C,+BAA+B;QAC/B,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,CAAC;QAEhF,OAAO,SAAS,EAAE,QAAQ,EAAE,IAAI,IAAI,CAAC;IACvC,CAAC;IAED;;OAEG;IACH,qBAAqB,CAAC,IAAwB;QAC5C,IAAI,CAAC;YACH,8DAA8D;YAC9D,MAAM,QAAQ,GAAG;gBACf,OAAO,EAAE,IAAI,CAAC,OAAO;gBACrB,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aAClE,CAAC;YAEF,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;YAC1C,MAAM,UAAU,GAAG,MAAM,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,CAAW,CAAC;YAE7E,OAAO,MAAM,CACX,UAAU,EACV,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,SAAS,EACd,SAAS,EACT,WAAW,EACX,WAAW,EACX,WAAW,CACZ,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,GAAG,CAAC,sCAAsC,EAAE,KAAK,CAAC,CAAC;YACnD,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,UAAU;QACtB,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC;YAC1B,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,MAAM,EAAE,GAAG,IAAI,CAAC,eAAe,CAAC,WAAW,EAAE,CAAC;QAC9C,MAAM,KAAK,GAAe,EAAE,CAAC;QAE7B,gCAAgC;QAChC,MAAM,aAAa,GAAG,IAAI,GAAG,EAAU,CAAC;QACxC,IAAI,KAAK,EAAE,MAAM,GAAG,IAAI,EAAE,CAAC,IAAI,CAAC,2CAA2C,CAAC,EAAE,CAAC;YAC7E,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,GAAa,CAAC,CAAC;QACvC,CAAC;QAED,wBAAwB;QACxB,IAAI,KAAK,EAAE,MAAM,GAAG,IAAI,EAAE,CAAC,IAAI,CAAC,sDAAsD,CAAC,EAAE,CAAC;YACxF,MAAM,MAAM,GAAG,GAAG,CAAC,MAAgB,CAAC;YACpC,MAAM,SAAS,GAAG,GAAG,CAAC,SAA0B,CAAC;YAEjD,kDAAkD;YAClD,+DAA+D;YAC/D,mFAAmF;YACnF,MAAM,WAAW,GAAG,MAAM,KAAK,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC;YAElE,KAAK,CAAC,IAAI,CAAC;gBACT,MAAM;gBACN,UAAU,EAAE,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE;gBACjD,WAAW;aACZ,CAAC,CAAC;QACL,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;OAEG;IACK,uBAAuB;QAC7B,IAAI,CAAC,IAAI,CAAC,UAAU;YAAE,OAAO;QAE7B,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,aAAa,EAAE,KAAK,EAAE,IAAa,EAAE,EAAE;YAC5D,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,IAA0B,CAAC;YAC1D,MAAM,YAAY,GAAG,UAAU,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC;YACtD,GAAG,CAAC,iCAAiC,EAAE,YAAY,CAAC,CAAC;YAErD,IAAI,CAAC;gBACH,wBAAwB;gBACxB,MAAM,MAAM,GAAiB,EAAE,CAAC;gBAChC,IAAI,WAAW,GAAG,CAAC,CAAC;gBAEpB,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;oBACxC,MAAM,CAAC,IAAI,CAAE,KAAoB,CAAC,QAAQ,EAAE,CAAC,CAAC;oBAC9C,WAAW,IAAK,KAAoB,CAAC,MAAM,CAAC;oBAC5C,IAAI,WAAW,GAAG,aAAa,EAAE,CAAC;wBAChC,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;oBAC5C,CAAC;gBACH,CAAC;gBAED,MAAM,IAAI,GAAG,IAAI,UAAU,CAAC,WAAW,CAAC,CAAC;gBACzC,IAAI,MAAM,GAAG,CAAC,CAAC;gBACf,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;oBAC3B,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;oBACxB,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC;gBACzB,CAAC;gBAED,gCAAgC;gBAChC,MAAM,aAAa,GAAG,IAAI,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;gBACpE,MAAM,WAAW,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC;gBAC/E,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAgB,CAAC;gBAEvD,2BAA2B;gBAC3B,IAAI,CAAC,cAAc,CAAC,cAAc,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;gBAEpE,4BAA4B;gBAC5B,MAAM,IAAI,GAAuB;oBAC/B,OAAO,EAAE,OAAO,CAAC,OAAO;oBACxB,KAAK,EAAE,OAAO,CAAC,KAAK;oBACpB,YAAY,EAAE,OAAO,CAAC,YAAY;oBAClC,SAAS,EAAE,OAAO,CAAC,SAAS;oBAC5B,SAAS,EAAE,OAAO,CAAC,SAAS;iBAC7B,CAAC;gBAEF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;gBAE1C,yCAAyC;gBACzC,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;oBACnB,IAAI,CAAC,cAAc,CAAC,aAAa,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC;gBACvE,CAAC;qBAAM,CAAC;oBACN,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,KAAK,IAAI,eAAe,CAAC,CAAC;gBACnF,CAAC;gBAED,sBAAsB;gBACtB,MAAM,GAAG,GAAmB;oBAC1B,QAAQ,EAAE,MAAM,CAAC,OAAO;oBACxB,MAAM,EAAE,MAAM,CAAC,KAAK;iBACrB,CAAC;gBAEF,MAAM,QAAQ,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;gBAC/D,MAAM,WAAW,GAAG,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC;gBACtC,IAAI,QAAQ,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;gBAEtE,KAAK,SAAS,CAAC,CAAC,OAAO,KAAK,MAAM,WAAW,CAAC,CAAC,MAAM,QAAQ,CAAC,CAAC,CAAC;gBAChE,MAAM,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;YAE/B,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,GAAG,CAAC,kCAAkC,EAAE,KAAK,CAAC,CAAC;gBAC/C,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC;gBAE9E,mBAAmB;gBACnB,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;gBAErE,4BAA4B;gBAC5B,MAAM,GAAG,GAAmB;oBAC1B,QAAQ,EAAE,KAAK;oBACf,MAAM,EAAE,YAAY;iBACrB,CAAC;gBAEF,MAAM,QAAQ,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;gBAC/D,MAAM,WAAW,GAAG,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC;gBACtC,IAAI,QAAQ,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;gBAEtE,IAAI,CAAC;oBACH,KAAK,SAAS,CAAC,CAAC,SAAS,KAAK,MAAM,WAAW,CAAC,CAAC,MAAM,QAAQ,CAAC,CAAC,CAAC;oBAClE,MAAM,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;gBACjC,CAAC;gBAAC,MAAM,CAAC;oBACP,qBAAqB;gBACvB,CAAC;YACH,CAAC;oBAAS,CAAC;gBACT,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;YACvB,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,GAAG,CAAC,sCAAsC,EAAE,aAAa,CAAC,CAAC;IAC7D,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,QAAQ;QACZ,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACpB,MAAM,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;QAChD,CAAC;QACD,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACvB,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;QAC5B,GAAG,CAAC,+BAA+B,CAAC,CAAC;IACvC,CAAC;IAED,+EAA+E;IAC/E,wCAAwC;IACxC,+EAA+E;IAE/E;;;;;;;;;;;OAWG;IACH,KAAK,CAAC,QAAQ,CAAC,OAAwB;QACrC,MAAM,EAAE,WAAW,EAAE,eAAe,EAAE,GAAG,OAAO,CAAC;QAEjD,GAAG,CAAC,kBAAkB,EAAE,WAAW,CAAC,CAAC;QAErC,kCAAkC;QAClC,MAAM,IAAI,CAAC,aAAa,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,eAAe,EAAE,CAAC,CAAC;QAE/E,oCAAoC;QACpC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;QAErC,0BAA0B;QAC1B,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QAE1C,GAAG,CAAC,4CAA4C,EAAE,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAElF,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC;IAC/B,CAAC;IAED;;;;;;;;;;OAUG;IACH,KAAK,CAAC,YAAY,CAAC,KAAc,EAAE,SAAkB;QACnD,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YACrB,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;QAC7C,CAAC;QAED,GAAG,CAAC,2BAA2B,CAAC,CAAC;QAEjC,qCAAqC;QACrC,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,CAAC;QAC9C,MAAM,cAAc,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;QAEpD,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,MAAM,MAAM,GAAgB;YAC1B,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO;YAC5B,cAAc;YACd,KAAK;YACL,SAAS,EAAE,GAAG;YACd,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,GAAG,GAAG,SAAS,CAAC,CAAC,CAAC,SAAS;SACnD,CAAC;QAEF,MAAM,aAAa,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;QAEhD,GAAG,CAAC,4CAA4C,EAAE,cAAc,CAAC,MAAM,CAAC,CAAC;QAEzE,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC;IACnC,CAAC;IAED;;;;;;;;;;;OAWG;IACH,KAAK,CAAC,WAAW,CAAC,OAAwB,EAAE,YAA0B;QACpE,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,GAAG,OAAO,CAAC;QAEvC,GAAG,CAAC,qBAAqB,EAAE,WAAW,CAAC,CAAC;QAExC,oCAAoC;QACpC,IAAI,YAAY,EAAE,CAAC;YACjB,IAAI,YAAY,CAAC,KAAK,IAAI,YAAY,CAAC,KAAK,KAAK,KAAK,EAAE,CAAC;gBACvD,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;YAC1C,CAAC;YACD,IAAI,YAAY,CAAC,SAAS,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,YAAY,CAAC,SAAS,EAAE,CAAC;gBAClE,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC;YACxC,CAAC;QACH,CAAC;QAED,4DAA4D;QAC5D,MAAM,IAAI,CAAC,aAAa,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC;QAElD,GAAG,CAAC,kCAAkC,EAAE,WAAW,CAAC,CAAC;IACvD,CAAC;IAED;;;;;;;;;OASG;IACH,KAAK,CAAC,iBAAiB,CAAC,WAAmB;QACzC,GAAG,CAAC,6BAA6B,EAAE,WAAW,CAAC,CAAC;QAEhD,0DAA0D;QAC1D,MAAM,IAAI,CAAC,aAAa,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC;QAElD,qCAAqC;QACrC,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC;QAE/C,+DAA+D;QAC/D,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;QAErC,+DAA+D;QAC/D,IAAI,SAAS,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACjC,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;YACpD,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC;YAC7D,IAAI,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;gBACvD,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACrC,CAAC;QACH,CAAC;QAED,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QAE1C,GAAG,CAAC,yCAAyC,EAAE,WAAW,CAAC,CAAC;QAE5D,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC;IAC/B,CAAC;IAED;;OAEG;IACH,YAAY,CAAC,MAAmB;QAC9B,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QACpC,OAAO,kBAAkB,CAAC,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,WAAW,CAAC,CAAC;IACzE,CAAC;IAED;;OAEG;IACH,YAAY,CAAC,OAAe;QAC1B,MAAM,KAAK,GAAG,oBAAoB,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;QACzD,MAAM,IAAI,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC7C,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAgB,CAAC;IACzC,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,UAAU,CAAC,MAAmB;QAClC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YACrB,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;QAC7C,CAAC;QAED,mBAAmB;QACnB,IAAI,MAAM,CAAC,SAAS,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,MAAM,CAAC,SAAS,EAAE,CAAC;YACtD,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC;QACxC,CAAC;QAED,GAAG,CAAC,4CAA4C,EAAE,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QAEhF,gDAAgD;QAChD,IAAI,SAAS,GAAiB,IAAI,CAAC;QACnC,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,cAAc,EAAE,CAAC;YAC5C,IAAI,CAAC;gBACH,MAAM,IAAI,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC;gBAChC,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACjC,GAAG,CAAC,+BAA+B,EAAE,OAAO,CAAC,CAAC;gBAC9C,OAAO;YACT,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,SAAS,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;gBACtE,GAAG,CAAC,uBAAuB,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;YAC/C,CAAC;QACH,CAAC;QAED,MAAM,SAAS,IAAI,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;IACnE,CAAC;CACF"}
|
|
1
|
+
{"version":3,"file":"seed-bootstrap.js","sourceRoot":"","sources":["../src/seed-bootstrap.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import debug from 'debug';
|
|
2
2
|
import { createLibp2pNode } from '@optimystic/db-p2p';
|
|
3
3
|
import { StrandDatabase } from './strand-database.js';
|
|
4
|
+
import { assertSchemaSignature } from './schema-verification.js';
|
|
4
5
|
const log = debug('sereus:cadre:strand-manager');
|
|
5
6
|
/**
|
|
6
7
|
* Get the isolated storage path for a specific strand.
|
|
@@ -84,6 +85,9 @@ export class StrandInstanceManager {
|
|
|
84
85
|
return this.instances.get(strandId);
|
|
85
86
|
}
|
|
86
87
|
log('Starting strand instance: %s (sApp: %s v%s)', strandId, sAppConfig.id, sAppConfig.version);
|
|
88
|
+
// Verify schema signature before proceeding
|
|
89
|
+
assertSchemaSignature(sAppConfig);
|
|
90
|
+
log('Strand %s sApp schema signature verified (author: %s)', strandId, sAppConfig.id);
|
|
87
91
|
// Convert SAppConfig to SAppInfo for the instance
|
|
88
92
|
const sAppInfo = {
|
|
89
93
|
id: sAppConfig.id,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"strand-instance-manager.js","sourceRoot":"","sources":["../src/strand-instance-manager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,gBAAgB,EAAoB,MAAM,oBAAoB,CAAC;AAExE,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"strand-instance-manager.js","sourceRoot":"","sources":["../src/strand-instance-manager.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
CHANGED
|
@@ -152,7 +152,7 @@ export interface SAppInfo {
|
|
|
152
152
|
id: string;
|
|
153
153
|
version: string;
|
|
154
154
|
schema: string;
|
|
155
|
-
signature
|
|
155
|
+
signature?: string;
|
|
156
156
|
}
|
|
157
157
|
/**
|
|
158
158
|
* Strand instance state
|
|
@@ -196,8 +196,8 @@ export interface SAppConfig {
|
|
|
196
196
|
version: string;
|
|
197
197
|
/** The declarative schema DDL */
|
|
198
198
|
schema: string;
|
|
199
|
-
/** Author's signature over the schema for verification */
|
|
200
|
-
signature
|
|
199
|
+
/** Author's signature over the schema for verification (omit to skip verification) */
|
|
200
|
+
signature?: string;
|
|
201
201
|
/** Latency hint for hibernation behavior (optional, defaults to config) */
|
|
202
202
|
latencyHint?: LatencyHint;
|
|
203
203
|
}
|
|
@@ -350,6 +350,8 @@ export interface SeedPeer {
|
|
|
350
350
|
multiaddrs: string[];
|
|
351
351
|
/** Whether this peer holds an authority key */
|
|
352
352
|
isAuthority: boolean;
|
|
353
|
+
/** ed25519 public key (base64url) — present on authority peers for signerKey verification */
|
|
354
|
+
publicKey?: string;
|
|
353
355
|
}
|
|
354
356
|
/**
|
|
355
357
|
* Control network seed for bootstrapping new nodes.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@serfab/cadre-core",
|
|
3
|
-
"version": "0.0
|
|
3
|
+
"version": "0.3.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "Core library for Sereus cadre nodes - manages control networks and strand participation",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -13,6 +13,10 @@
|
|
|
13
13
|
],
|
|
14
14
|
"exports": {
|
|
15
15
|
".": {
|
|
16
|
+
"react-native": {
|
|
17
|
+
"types": "./dist/index.d.ts",
|
|
18
|
+
"import": "./dist/index.js"
|
|
19
|
+
},
|
|
16
20
|
"types": "./dist/index.d.ts",
|
|
17
21
|
"import": "./dist/index.js"
|
|
18
22
|
}
|
|
@@ -54,12 +58,12 @@
|
|
|
54
58
|
"@libp2p/crypto": "^5.1.13",
|
|
55
59
|
"@libp2p/interface": "^3.1.0",
|
|
56
60
|
"@libp2p/peer-id": "^6.0.4",
|
|
57
|
-
"@optimystic/db-core": "^0.
|
|
58
|
-
"@optimystic/db-p2p": "^0.
|
|
59
|
-
"@optimystic/quereus-plugin-crypto": "^0.
|
|
60
|
-
"@optimystic/quereus-plugin-optimystic": "^0.
|
|
61
|
-
"@quereus/quereus": "^0.
|
|
62
|
-
"@serfab/strand-proto": "^0.
|
|
61
|
+
"@optimystic/db-core": "^0.10.0",
|
|
62
|
+
"@optimystic/db-p2p": "^0.10.0",
|
|
63
|
+
"@optimystic/quereus-plugin-crypto": "^0.10.0",
|
|
64
|
+
"@optimystic/quereus-plugin-optimystic": "^0.10.0",
|
|
65
|
+
"@quereus/quereus": "^2.0.0",
|
|
66
|
+
"@serfab/strand-proto": "^0.3.0",
|
|
63
67
|
"debug": "^4.4.3",
|
|
64
68
|
"libp2p": "^3.1.3",
|
|
65
69
|
"uint8arrays": "^5.1.0"
|
package/src/control-database.ts
CHANGED
|
@@ -307,8 +307,8 @@ export class ControlDatabase {
|
|
|
307
307
|
await this.db!.exec(`
|
|
308
308
|
insert into CadreControl.AuthorityKey (Key)
|
|
309
309
|
with context AuthorityKey = null, Signature = null, StampId = StampId()
|
|
310
|
-
values (
|
|
311
|
-
|
|
310
|
+
values (?)
|
|
311
|
+
`, [key]);
|
|
312
312
|
log('Authority key inserted');
|
|
313
313
|
}
|
|
314
314
|
|
|
@@ -332,8 +332,6 @@ export class ControlDatabase {
|
|
|
332
332
|
this.ensureInitialized();
|
|
333
333
|
log('Inserting strand: %s (type: %s)', strandId, type);
|
|
334
334
|
|
|
335
|
-
const memberKeyValue = memberPrivateKey ? `'${memberPrivateKey}'` : 'null';
|
|
336
|
-
|
|
337
335
|
// Generate a unique stamp ID using the peer ID for distributed uniqueness
|
|
338
336
|
const peerId = this.config.libp2pNode.peerId.toString();
|
|
339
337
|
const stampId = generateStampId(peerId);
|
|
@@ -344,9 +342,9 @@ export class ControlDatabase {
|
|
|
344
342
|
// Insert with the signed stamp ID
|
|
345
343
|
await this.db!.exec(`
|
|
346
344
|
insert into CadreControl.Strand (Id, Type, MemberPrivateKey)
|
|
347
|
-
with context AuthorityKey =
|
|
348
|
-
values (
|
|
349
|
-
|
|
345
|
+
with context AuthorityKey = ?, Signature = ?, StampId = ?
|
|
346
|
+
values (?, ?, ?)
|
|
347
|
+
`, [authorityKey, signature, stampId, strandId, type, memberPrivateKey ?? null]);
|
|
350
348
|
|
|
351
349
|
log('Strand inserted: %s', strandId);
|
|
352
350
|
}
|
package/src/index.ts
CHANGED
|
@@ -62,6 +62,14 @@ export {
|
|
|
62
62
|
type SeedEventCallbacks
|
|
63
63
|
} from './seed-bootstrap.js';
|
|
64
64
|
|
|
65
|
+
// Schema Verification
|
|
66
|
+
export {
|
|
67
|
+
signSchema,
|
|
68
|
+
verifySchema,
|
|
69
|
+
assertSchemaSignature,
|
|
70
|
+
SchemaVerificationError
|
|
71
|
+
} from './schema-verification.js';
|
|
72
|
+
|
|
65
73
|
// Strand Formation (strand-proto integration)
|
|
66
74
|
export {
|
|
67
75
|
StrandFormationManager,
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import debug from 'debug';
|
|
2
|
+
import { digest, sign, verify } from '@optimystic/quereus-plugin-crypto';
|
|
3
|
+
import type { SAppConfig } from './types.js';
|
|
4
|
+
|
|
5
|
+
const log = debug('sereus:cadre:schema-verify');
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Error thrown when sApp schema signature verification fails.
|
|
9
|
+
*/
|
|
10
|
+
export class SchemaVerificationError extends Error {
|
|
11
|
+
constructor(
|
|
12
|
+
public readonly sAppId: string,
|
|
13
|
+
public readonly version: string,
|
|
14
|
+
reason: string
|
|
15
|
+
) {
|
|
16
|
+
super(`sApp schema verification failed for ${sAppId} v${version}: ${reason}`);
|
|
17
|
+
this.name = 'SchemaVerificationError';
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* Compute the canonical digest of a schema + version for signing/verification.
|
|
23
|
+
* The payload is deterministic JSON: `{"schema":"...","version":"..."}`.
|
|
24
|
+
*/
|
|
25
|
+
function schemaDigest(schema: string, version: string): string {
|
|
26
|
+
const payload = JSON.stringify({ schema, version });
|
|
27
|
+
return digest(payload, 'sha256', 'utf8', 'base64url') as string;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* Sign an sApp schema with the author's ed25519 private key.
|
|
32
|
+
* Used by sApp authors when publishing their schema.
|
|
33
|
+
*
|
|
34
|
+
* @param schema - The declarative schema DDL
|
|
35
|
+
* @param version - Schema version string
|
|
36
|
+
* @param authorPrivateKey - Author's ed25519 private key (base64url)
|
|
37
|
+
* @returns Signature (base64url)
|
|
38
|
+
*/
|
|
39
|
+
export function signSchema(schema: string, version: string, authorPrivateKey: string): string {
|
|
40
|
+
const d = schemaDigest(schema, version);
|
|
41
|
+
return sign(d, authorPrivateKey, 'ed25519', 'base64url', 'base64url', 'base64url') as string;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
/**
|
|
45
|
+
* Verify an sApp schema signature against the author's ed25519 public key.
|
|
46
|
+
*
|
|
47
|
+
* @param schema - The declarative schema DDL
|
|
48
|
+
* @param version - Schema version string
|
|
49
|
+
* @param signature - Signature to verify (base64url)
|
|
50
|
+
* @param authorPublicKey - Author's ed25519 public key (base64url)
|
|
51
|
+
* @returns true if the signature is valid
|
|
52
|
+
*/
|
|
53
|
+
export function verifySchema(schema: string, version: string, signature: string, authorPublicKey: string): boolean {
|
|
54
|
+
try {
|
|
55
|
+
const d = schemaDigest(schema, version);
|
|
56
|
+
return verify(d, signature, authorPublicKey, 'ed25519', 'base64url', 'base64url', 'base64url');
|
|
57
|
+
} catch (error) {
|
|
58
|
+
log('Schema verification error: %o', error);
|
|
59
|
+
return false;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
/**
|
|
64
|
+
* Assert that an SAppConfig has a valid schema signature.
|
|
65
|
+
* Throws SchemaVerificationError on failure.
|
|
66
|
+
*
|
|
67
|
+
* @param sAppConfig - The sApp configuration to verify
|
|
68
|
+
* @throws SchemaVerificationError if the signature is invalid
|
|
69
|
+
*/
|
|
70
|
+
export function assertSchemaSignature(sAppConfig: SAppConfig): void {
|
|
71
|
+
const { id, version, schema, signature } = sAppConfig;
|
|
72
|
+
|
|
73
|
+
if (!signature) {
|
|
74
|
+
log('No signature provided for %s v%s — skipping verification', id, version);
|
|
75
|
+
return;
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
if (!id) {
|
|
79
|
+
throw new SchemaVerificationError(id ?? '', version, 'missing author public key');
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
if (!verifySchema(schema, version, signature, id)) {
|
|
83
|
+
throw new SchemaVerificationError(id, version, 'invalid signature');
|
|
84
|
+
}
|
|
85
|
+
}
|
package/src/seed-bootstrap.ts
CHANGED
|
@@ -7,22 +7,13 @@ import type { Multiaddr } from '@multiformats/multiaddr';
|
|
|
7
7
|
import { peerIdFromString } from '@libp2p/peer-id';
|
|
8
8
|
|
|
9
9
|
/**
|
|
10
|
-
* Minimal libp2p stream
|
|
11
|
-
*
|
|
10
|
+
* Minimal libp2p stream surface compatible with libp2p 3.x.
|
|
11
|
+
* In libp2p 3.x, streams are AsyncIterable for reading and use send() for writing.
|
|
12
12
|
*/
|
|
13
|
-
interface LibP2PStream {
|
|
14
|
-
|
|
15
|
-
sink(source: AsyncIterable<Uint8Array>): Promise<void>;
|
|
13
|
+
interface LibP2PStream extends AsyncIterable<Uint8Array> {
|
|
14
|
+
send(data: Uint8Array): boolean;
|
|
16
15
|
close(): Promise<void>;
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
/**
|
|
20
|
-
* Incoming stream data from libp2p handle callback.
|
|
21
|
-
* Defined locally for cross-version compatibility.
|
|
22
|
-
*/
|
|
23
|
-
interface IncomingStreamData {
|
|
24
|
-
stream: LibP2PStream;
|
|
25
|
-
connection: Connection;
|
|
16
|
+
abort(err: Error): void;
|
|
26
17
|
}
|
|
27
18
|
import type {
|
|
28
19
|
ControlNetworkSeed,
|
|
@@ -155,14 +146,14 @@ export class SeedBootstrapService {
|
|
|
155
146
|
|
|
156
147
|
// Insert into CadrePeer table with authority context
|
|
157
148
|
const db = this.controlDatabase.getDatabase();
|
|
158
|
-
|
|
159
|
-
const
|
|
160
|
-
|
|
149
|
+
// CadrePeer.Multiaddr is NOT NULL; use empty string when no addrs provided
|
|
150
|
+
const multiaddrStr = multiaddrs?.length ? multiaddrs.join(',') : '';
|
|
151
|
+
|
|
161
152
|
await db.exec(`
|
|
162
153
|
insert into CadreControl.CadrePeer (PeerId, Multiaddr)
|
|
163
|
-
with context AuthorityKey =
|
|
164
|
-
values (
|
|
165
|
-
|
|
154
|
+
with context AuthorityKey = ?, Signature = ?
|
|
155
|
+
values (?, ?)
|
|
156
|
+
`, [this.authorityPublicKey, signature, peerId, multiaddrStr]);
|
|
166
157
|
|
|
167
158
|
log('Peer %s authorized successfully', peerId);
|
|
168
159
|
}
|
|
@@ -229,10 +220,12 @@ export class SeedBootstrapService {
|
|
|
229
220
|
return { success: false, peersAdded: 0, error: 'Invalid seed signature' };
|
|
230
221
|
}
|
|
231
222
|
|
|
232
|
-
// Verify the signer
|
|
233
|
-
const
|
|
234
|
-
|
|
235
|
-
|
|
223
|
+
// Verify the signer's key matches an authority peer's public key
|
|
224
|
+
const signerIsAuthority = seed.peers.some(
|
|
225
|
+
p => p.isAuthority && p.publicKey === seed.signerKey
|
|
226
|
+
);
|
|
227
|
+
if (!signerIsAuthority) {
|
|
228
|
+
return { success: false, peersAdded: 0, error: 'Signer key does not match any authority peer' };
|
|
236
229
|
}
|
|
237
230
|
|
|
238
231
|
let peersAdded = 0;
|
|
@@ -321,19 +314,22 @@ export class SeedBootstrapService {
|
|
|
321
314
|
|
|
322
315
|
const messageBytes = new TextEncoder().encode(JSON.stringify(message));
|
|
323
316
|
|
|
324
|
-
// Write length-prefixed message
|
|
317
|
+
// Write length-prefixed message using libp2p 3.x send() API
|
|
325
318
|
const lengthBytes = new Uint8Array(4);
|
|
326
319
|
new DataView(lengthBytes.buffer).setUint32(0, messageBytes.length, false);
|
|
327
320
|
|
|
328
|
-
|
|
329
|
-
|
|
321
|
+
stream.send(lengthBytes);
|
|
322
|
+
stream.send(messageBytes);
|
|
323
|
+
|
|
324
|
+
// In libp2p v3.x, close() closes the write end only (signals EOF),
|
|
325
|
+
// while the read end remains open for receiving the ack.
|
|
326
|
+
await stream.close();
|
|
330
327
|
|
|
331
|
-
// Read the acknowledgment
|
|
328
|
+
// Read the acknowledgment (stream is AsyncIterable in libp2p 3.x)
|
|
332
329
|
const chunks: Uint8Array[] = [];
|
|
333
|
-
for await (const chunk of stream
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
if (chunks.reduce((sum, c) => sum + c.length, 0) >= 4) break;
|
|
330
|
+
for await (const chunk of stream) {
|
|
331
|
+
const bytes = chunk instanceof Uint8Array ? chunk : (chunk as { subarray(): Uint8Array }).subarray();
|
|
332
|
+
chunks.push(bytes);
|
|
337
333
|
}
|
|
338
334
|
|
|
339
335
|
const responseData = new Uint8Array(chunks.reduce((sum, c) => sum + c.length, 0));
|
|
@@ -343,16 +339,17 @@ export class SeedBootstrapService {
|
|
|
343
339
|
offset += chunk.length;
|
|
344
340
|
}
|
|
345
341
|
|
|
346
|
-
// Parse length
|
|
347
|
-
const responseLength = new DataView(responseData.buffer).getUint32(0, false);
|
|
342
|
+
// Parse length-prefixed response
|
|
343
|
+
const responseLength = new DataView(responseData.buffer, responseData.byteOffset).getUint32(0, false);
|
|
348
344
|
const responseJson = new TextDecoder().decode(responseData.slice(4, 4 + responseLength));
|
|
349
345
|
const ack = JSON.parse(responseJson) as SeedAckMessage;
|
|
350
346
|
|
|
351
347
|
log('Seed delivery response: accepted=%s', ack.accepted);
|
|
352
348
|
return ack;
|
|
353
349
|
|
|
354
|
-
}
|
|
355
|
-
|
|
350
|
+
} catch (err) {
|
|
351
|
+
stream.abort(err instanceof Error ? err : new Error(String(err)));
|
|
352
|
+
throw err;
|
|
356
353
|
}
|
|
357
354
|
}
|
|
358
355
|
|
|
@@ -425,15 +422,14 @@ export class SeedBootstrapService {
|
|
|
425
422
|
const peerId = row.PeerId as string;
|
|
426
423
|
const multiaddr = row.Multiaddr as string | null;
|
|
427
424
|
|
|
428
|
-
//
|
|
429
|
-
// Note: Authority keys are base64url public keys, not peer IDs
|
|
430
|
-
// For now, we mark the peer as authority if it matches the service's authority key
|
|
425
|
+
// Mark peer as authority if it matches the service's own peer ID
|
|
431
426
|
const isAuthority = peerId === this.libp2pNode?.peerId.toString();
|
|
432
427
|
|
|
433
428
|
peers.push({
|
|
434
429
|
peerId,
|
|
435
430
|
multiaddrs: multiaddr ? multiaddr.split(',') : [],
|
|
436
431
|
isAuthority,
|
|
432
|
+
...(isAuthority && this.authorityPublicKey ? { publicKey: this.authorityPublicKey } : {}),
|
|
437
433
|
});
|
|
438
434
|
}
|
|
439
435
|
|
|
@@ -446,19 +442,20 @@ export class SeedBootstrapService {
|
|
|
446
442
|
private registerProtocolHandler(): void {
|
|
447
443
|
if (!this.libp2pNode) return;
|
|
448
444
|
|
|
449
|
-
this.libp2pNode.handle(SEED_PROTOCOL, async (
|
|
450
|
-
const
|
|
451
|
-
const remotePeerId =
|
|
445
|
+
this.libp2pNode.handle(SEED_PROTOCOL, async (rawStream: unknown, rawConnection: unknown) => {
|
|
446
|
+
const stream = rawStream as LibP2PStream;
|
|
447
|
+
const remotePeerId = (rawConnection as Connection).remotePeer.toString();
|
|
452
448
|
log('Incoming seed delivery from: %s', remotePeerId);
|
|
453
449
|
|
|
454
450
|
try {
|
|
455
|
-
// Read the seed message
|
|
451
|
+
// Read the seed message (stream is AsyncIterable in libp2p 3.x)
|
|
456
452
|
const chunks: Uint8Array[] = [];
|
|
457
453
|
let totalLength = 0;
|
|
458
454
|
|
|
459
|
-
for await (const chunk of stream
|
|
460
|
-
|
|
461
|
-
|
|
455
|
+
for await (const chunk of stream) {
|
|
456
|
+
const bytes = chunk instanceof Uint8Array ? chunk : (chunk as { subarray(): Uint8Array }).subarray();
|
|
457
|
+
chunks.push(bytes);
|
|
458
|
+
totalLength += bytes.length;
|
|
462
459
|
if (totalLength > MAX_SEED_SIZE) {
|
|
463
460
|
throw new Error('Seed message too large');
|
|
464
461
|
}
|
|
@@ -472,7 +469,7 @@ export class SeedBootstrapService {
|
|
|
472
469
|
}
|
|
473
470
|
|
|
474
471
|
// Parse length-prefixed message
|
|
475
|
-
const messageLength = new DataView(data.buffer).getUint32(0, false);
|
|
472
|
+
const messageLength = new DataView(data.buffer, data.byteOffset).getUint32(0, false);
|
|
476
473
|
const messageJson = new TextDecoder().decode(data.slice(4, 4 + messageLength));
|
|
477
474
|
const message = JSON.parse(messageJson) as SeedMessage;
|
|
478
475
|
|
|
@@ -497,7 +494,7 @@ export class SeedBootstrapService {
|
|
|
497
494
|
this.eventCallbacks.onSeedError?.(seed.partyId, result.error ?? 'Unknown error');
|
|
498
495
|
}
|
|
499
496
|
|
|
500
|
-
// Send acknowledgment
|
|
497
|
+
// Send acknowledgment using libp2p 3.x send() API
|
|
501
498
|
const ack: SeedAckMessage = {
|
|
502
499
|
accepted: result.success,
|
|
503
500
|
reason: result.error,
|
|
@@ -507,8 +504,8 @@ export class SeedBootstrapService {
|
|
|
507
504
|
const lengthBytes = new Uint8Array(4);
|
|
508
505
|
new DataView(lengthBytes.buffer).setUint32(0, ackBytes.length, false);
|
|
509
506
|
|
|
510
|
-
|
|
511
|
-
|
|
507
|
+
stream.send(lengthBytes);
|
|
508
|
+
stream.send(ackBytes);
|
|
512
509
|
|
|
513
510
|
} catch (error) {
|
|
514
511
|
log('Error handling seed delivery: %o', error);
|
|
@@ -528,10 +525,10 @@ export class SeedBootstrapService {
|
|
|
528
525
|
new DataView(lengthBytes.buffer).setUint32(0, ackBytes.length, false);
|
|
529
526
|
|
|
530
527
|
try {
|
|
531
|
-
|
|
532
|
-
|
|
528
|
+
stream.send(lengthBytes);
|
|
529
|
+
stream.send(ackBytes);
|
|
533
530
|
} catch {
|
|
534
|
-
// Ignore
|
|
531
|
+
// Ignore send errors
|
|
535
532
|
}
|
|
536
533
|
} finally {
|
|
537
534
|
await stream.close();
|
|
@@ -3,6 +3,7 @@ import type { Libp2p } from '@libp2p/interface';
|
|
|
3
3
|
import { createLibp2pNode, type IRawStorage } from '@optimystic/db-p2p';
|
|
4
4
|
import type { IRepo } from '@optimystic/db-core';
|
|
5
5
|
import { StrandDatabase } from './strand-database.js';
|
|
6
|
+
import { assertSchemaSignature } from './schema-verification.js';
|
|
6
7
|
import type {
|
|
7
8
|
StrandInstance,
|
|
8
9
|
StrandRow,
|
|
@@ -138,6 +139,10 @@ export class StrandInstanceManager {
|
|
|
138
139
|
|
|
139
140
|
log('Starting strand instance: %s (sApp: %s v%s)', strandId, sAppConfig.id, sAppConfig.version);
|
|
140
141
|
|
|
142
|
+
// Verify schema signature before proceeding
|
|
143
|
+
assertSchemaSignature(sAppConfig);
|
|
144
|
+
log('Strand %s sApp schema signature verified (author: %s)', strandId, sAppConfig.id);
|
|
145
|
+
|
|
141
146
|
// Convert SAppConfig to SAppInfo for the instance
|
|
142
147
|
const sAppInfo: SAppInfo = {
|
|
143
148
|
id: sAppConfig.id,
|
package/src/types.ts
CHANGED
|
@@ -194,7 +194,7 @@ export interface SAppInfo {
|
|
|
194
194
|
id: string;
|
|
195
195
|
version: string;
|
|
196
196
|
schema: string;
|
|
197
|
-
signature
|
|
197
|
+
signature?: string;
|
|
198
198
|
}
|
|
199
199
|
|
|
200
200
|
/**
|
|
@@ -247,8 +247,8 @@ export interface SAppConfig {
|
|
|
247
247
|
version: string;
|
|
248
248
|
/** The declarative schema DDL */
|
|
249
249
|
schema: string;
|
|
250
|
-
/** Author's signature over the schema for verification */
|
|
251
|
-
signature
|
|
250
|
+
/** Author's signature over the schema for verification (omit to skip verification) */
|
|
251
|
+
signature?: string;
|
|
252
252
|
/** Latency hint for hibernation behavior (optional, defaults to config) */
|
|
253
253
|
latencyHint?: LatencyHint;
|
|
254
254
|
}
|
|
@@ -402,6 +402,8 @@ export interface SeedPeer {
|
|
|
402
402
|
multiaddrs: string[];
|
|
403
403
|
/** Whether this peer holds an authority key */
|
|
404
404
|
isAuthority: boolean;
|
|
405
|
+
/** ed25519 public key (base64url) — present on authority peers for signerKey verification */
|
|
406
|
+
publicKey?: string;
|
|
405
407
|
}
|
|
406
408
|
|
|
407
409
|
/**
|