@serfab/cadre-core 0.8.1 → 0.9.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/README.md +2 -2
- package/dist/cadre-node.d.ts +101 -61
- package/dist/cadre-node.js +165 -124
- package/dist/cadre-node.js.map +1 -1
- package/dist/control-cohort.d.ts +15 -15
- package/dist/control-cohort.js +14 -14
- package/dist/control-cohort.js.map +1 -1
- package/dist/control-database.d.ts +51 -34
- package/dist/control-database.js +72 -56
- package/dist/control-database.js.map +1 -1
- package/dist/control-formation-recorder.d.ts +2 -2
- package/dist/control-formation-recorder.js +2 -2
- package/dist/control-schema.d.ts +1 -1
- package/dist/control-schema.js +57 -33
- package/dist/control-schema.js.map +1 -1
- package/dist/device-token.d.ts +1 -1
- package/dist/device-token.js +1 -1
- package/dist/{authority-key.d.ts → ed25519-key.d.ts} +11 -10
- package/dist/{authority-key.js → ed25519-key.js} +9 -10
- package/dist/ed25519-key.js.map +1 -0
- package/dist/index.d.ts +3 -3
- package/dist/index.js +8 -8
- package/dist/index.js.map +1 -1
- package/dist/key-store.d.ts +1 -1
- package/dist/key-store.js +1 -1
- package/dist/peer-authorization.d.ts +28 -6
- package/dist/peer-authorization.js +33 -7
- package/dist/peer-authorization.js.map +1 -1
- package/dist/peer-record.d.ts +3 -3
- package/dist/peer-record.js +3 -3
- package/dist/push-node.d.ts +38 -0
- package/dist/push-node.js +48 -0
- package/dist/push-node.js.map +1 -0
- package/dist/push-notifier-apns.d.ts +10 -2
- package/dist/push-notifier-apns.js +14 -10
- package/dist/push-notifier-apns.js.map +1 -1
- package/dist/push-notifier-fcm.d.ts +7 -1
- package/dist/push-notifier-fcm.js +9 -10
- package/dist/push-notifier-fcm.js.map +1 -1
- package/dist/push-notifier.d.ts +16 -35
- package/dist/push-notifier.js +16 -44
- package/dist/push-notifier.js.map +1 -1
- package/dist/seed-bootstrap.d.ts +70 -51
- package/dist/seed-bootstrap.js +168 -106
- package/dist/seed-bootstrap.js.map +1 -1
- package/dist/seed-trust-policy.d.ts +11 -11
- package/dist/seed-trust-policy.js +11 -11
- package/dist/seed-trust-policy.js.map +1 -1
- package/dist/strand-database.d.ts +5 -5
- package/dist/strand-database.js +4 -4
- package/dist/strand-database.js.map +1 -1
- package/dist/strand-formation-protocol.d.ts +1 -1
- package/dist/strand-formation-protocol.js +1 -1
- package/dist/strand-instance-manager.d.ts +1 -1
- package/dist/strand-instance-manager.js +1 -1
- package/dist/strand-instance-manager.js.map +1 -1
- package/dist/strand-member-key.d.ts +6 -6
- package/dist/strand-member-key.js +6 -6
- package/dist/strand-member-key.js.map +1 -1
- package/dist/strand-member-registry.d.ts +7 -7
- package/dist/strand-member-registry.js +5 -5
- package/dist/strand-member-registry.js.map +1 -1
- package/dist/strand-membership-writer.d.ts +84 -84
- package/dist/strand-membership-writer.js +90 -90
- package/dist/strand-membership-writer.js.map +1 -1
- package/dist/types.d.ts +52 -32
- package/dist/types.js.map +1 -1
- package/package.json +7 -3
- package/src/cadre-node.ts +170 -126
- package/src/control-cohort.ts +17 -17
- package/src/control-database.ts +76 -59
- package/src/control-formation-recorder.ts +2 -2
- package/src/control-schema.ts +57 -33
- package/src/device-token.ts +1 -1
- package/src/{authority-key.ts → ed25519-key.ts} +12 -11
- package/src/index.ts +21 -19
- package/src/key-store.ts +1 -1
- package/src/peer-authorization.ts +35 -7
- package/src/peer-record.ts +3 -3
- package/src/push-node.ts +64 -0
- package/src/push-notifier-apns.ts +16 -12
- package/src/push-notifier-fcm.ts +9 -10
- package/src/push-notifier.ts +16 -57
- package/src/seed-bootstrap.ts +179 -115
- package/src/seed-trust-policy.ts +18 -18
- package/src/strand-database.ts +6 -6
- package/src/strand-formation-protocol.ts +1 -1
- package/src/strand-instance-manager.ts +2 -2
- package/src/strand-member-key.ts +7 -7
- package/src/strand-member-registry.ts +10 -10
- package/src/strand-membership-writer.ts +127 -127
- package/src/types.ts +52 -32
- package/dist/authority-key.js.map +0 -1
|
@@ -3,20 +3,20 @@
|
|
|
3
3
|
*
|
|
4
4
|
* A seed carries an ed25519 signature over its body and the `signerKey` that
|
|
5
5
|
* produced it. Verifying that signature only proves the seed is internally
|
|
6
|
-
* consistent — it does NOT prove the signer is an
|
|
7
|
-
* signer key and the seed's own `
|
|
6
|
+
* consistent — it does NOT prove the signer is an owner, because both the
|
|
7
|
+
* signer key and the seed's own `isOwner` peer flags are attacker-supplied.
|
|
8
8
|
* The trust decision must therefore rest on an anchor that does not come from
|
|
9
9
|
* the seed body:
|
|
10
10
|
*
|
|
11
|
-
* 1. DB-anchored — keys already in the receiver's `CadreControl.
|
|
11
|
+
* 1. DB-anchored — keys already in the receiver's `CadreControl.OwnerKey`
|
|
12
12
|
* table (steady state: the node is enrolled / has synced control state).
|
|
13
13
|
* 2. Pinned out-of-band — keys handed to the node from outside the seed
|
|
14
|
-
* (carried by a `CadreInvite.
|
|
14
|
+
* (carried by a `CadreInvite.ownerKeys`, or pinned by an operator).
|
|
15
15
|
* 3. TOFU (opt-in) — an explicit confirmation callback invoked on first sight
|
|
16
16
|
* of an unknown signer key. Interactive hosts only; off by default.
|
|
17
17
|
*
|
|
18
18
|
* Secure default (`dbAnchoredTrustPolicy`): a cold-start node with an empty
|
|
19
|
-
* `
|
|
19
|
+
* `OwnerKey` table and no pinned keys rejects the seed — a seed can no
|
|
20
20
|
* longer vouch for its own signer.
|
|
21
21
|
*/
|
|
22
22
|
export interface SeedTrustContext {
|
|
@@ -25,10 +25,10 @@ export interface SeedTrustContext {
|
|
|
25
25
|
/** ed25519 base64url signer key — already signature-verified by `applySeed`. */
|
|
26
26
|
signerKey: string;
|
|
27
27
|
/**
|
|
28
|
-
* The receiver's known
|
|
28
|
+
* The receiver's known owner keys, sourced from its `OwnerKey`
|
|
29
29
|
* table — NOT from the seed. Empty for a cold-start node.
|
|
30
30
|
*/
|
|
31
|
-
|
|
31
|
+
knownOwnerKeys: ReadonlySet<string>;
|
|
32
32
|
}
|
|
33
33
|
export interface SeedTrustDecision {
|
|
34
34
|
/** Whether the signer key is trusted. */
|
|
@@ -45,18 +45,18 @@ export interface SeedTrustPolicy {
|
|
|
45
45
|
}
|
|
46
46
|
/**
|
|
47
47
|
* Default policy: trust only keys already present in the receiver's
|
|
48
|
-
* `
|
|
48
|
+
* `OwnerKey` table. A cold-start node (empty table) rejects every seed.
|
|
49
49
|
*/
|
|
50
50
|
export declare function dbAnchoredTrustPolicy(): SeedTrustPolicy;
|
|
51
51
|
/**
|
|
52
|
-
* Cold-start policy: trust keys in the receiver's `
|
|
53
|
-
* set pinned out-of-band (typically `CadreInvite.
|
|
52
|
+
* Cold-start policy: trust keys in the receiver's `OwnerKey` table plus a
|
|
53
|
+
* set pinned out-of-band (typically `CadreInvite.ownerKeys` or operator
|
|
54
54
|
* config). Lets an unenrolled invitee accept its first seed without the seed
|
|
55
55
|
* vouching for itself.
|
|
56
56
|
*/
|
|
57
57
|
export declare function pinnedKeyTrustPolicy(pinned: Iterable<string>): SeedTrustPolicy;
|
|
58
58
|
/**
|
|
59
|
-
* Opt-in interactive policy: trust keys already in the `
|
|
59
|
+
* Opt-in interactive policy: trust keys already in the `OwnerKey` table,
|
|
60
60
|
* and on an unknown key invoke `confirm` (e.g. a trust-circle UI prompt). The
|
|
61
61
|
* key is trusted iff `confirm` resolves true. Not enabled by default.
|
|
62
62
|
*/
|
|
@@ -1,49 +1,49 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Default policy: trust only keys already present in the receiver's
|
|
3
|
-
* `
|
|
3
|
+
* `OwnerKey` table. A cold-start node (empty table) rejects every seed.
|
|
4
4
|
*/
|
|
5
5
|
export function dbAnchoredTrustPolicy() {
|
|
6
6
|
return {
|
|
7
|
-
evaluate({ signerKey,
|
|
8
|
-
if (
|
|
7
|
+
evaluate({ signerKey, knownOwnerKeys }) {
|
|
8
|
+
if (knownOwnerKeys.has(signerKey)) {
|
|
9
9
|
return { trusted: true };
|
|
10
10
|
}
|
|
11
11
|
return {
|
|
12
12
|
trusted: false,
|
|
13
|
-
reason: 'Signer key is not a known
|
|
13
|
+
reason: 'Signer key is not a known owner (DB-anchored trust policy)',
|
|
14
14
|
};
|
|
15
15
|
},
|
|
16
16
|
};
|
|
17
17
|
}
|
|
18
18
|
/**
|
|
19
|
-
* Cold-start policy: trust keys in the receiver's `
|
|
20
|
-
* set pinned out-of-band (typically `CadreInvite.
|
|
19
|
+
* Cold-start policy: trust keys in the receiver's `OwnerKey` table plus a
|
|
20
|
+
* set pinned out-of-band (typically `CadreInvite.ownerKeys` or operator
|
|
21
21
|
* config). Lets an unenrolled invitee accept its first seed without the seed
|
|
22
22
|
* vouching for itself.
|
|
23
23
|
*/
|
|
24
24
|
export function pinnedKeyTrustPolicy(pinned) {
|
|
25
25
|
const pinnedSet = new Set(pinned);
|
|
26
26
|
return {
|
|
27
|
-
evaluate({ signerKey,
|
|
28
|
-
if (
|
|
27
|
+
evaluate({ signerKey, knownOwnerKeys }) {
|
|
28
|
+
if (knownOwnerKeys.has(signerKey) || pinnedSet.has(signerKey)) {
|
|
29
29
|
return { trusted: true };
|
|
30
30
|
}
|
|
31
31
|
return {
|
|
32
32
|
trusted: false,
|
|
33
|
-
reason: 'Signer key is neither a known nor a pinned
|
|
33
|
+
reason: 'Signer key is neither a known nor a pinned owner (pinned-key trust policy)',
|
|
34
34
|
};
|
|
35
35
|
},
|
|
36
36
|
};
|
|
37
37
|
}
|
|
38
38
|
/**
|
|
39
|
-
* Opt-in interactive policy: trust keys already in the `
|
|
39
|
+
* Opt-in interactive policy: trust keys already in the `OwnerKey` table,
|
|
40
40
|
* and on an unknown key invoke `confirm` (e.g. a trust-circle UI prompt). The
|
|
41
41
|
* key is trusted iff `confirm` resolves true. Not enabled by default.
|
|
42
42
|
*/
|
|
43
43
|
export function tofuTrustPolicy(confirm) {
|
|
44
44
|
return {
|
|
45
45
|
async evaluate(ctx) {
|
|
46
|
-
if (ctx.
|
|
46
|
+
if (ctx.knownOwnerKeys.has(ctx.signerKey)) {
|
|
47
47
|
return { trusted: true };
|
|
48
48
|
}
|
|
49
49
|
const accepted = await confirm(ctx);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"seed-trust-policy.js","sourceRoot":"","sources":["../src/seed-trust-policy.ts"],"names":[],"mappings":"AAgDA;;;GAGG;AACH,MAAM,UAAU,qBAAqB;IACnC,OAAO;QACL,QAAQ,CAAC,EAAE,SAAS,EAAE,
|
|
1
|
+
{"version":3,"file":"seed-trust-policy.js","sourceRoot":"","sources":["../src/seed-trust-policy.ts"],"names":[],"mappings":"AAgDA;;;GAGG;AACH,MAAM,UAAU,qBAAqB;IACnC,OAAO;QACL,QAAQ,CAAC,EAAE,SAAS,EAAE,cAAc,EAAE;YACpC,IAAI,cAAc,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;gBAClC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;YAC3B,CAAC;YACD,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,MAAM,EAAE,4DAA4D;aACrE,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,oBAAoB,CAAC,MAAwB;IAC3D,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC;IAClC,OAAO;QACL,QAAQ,CAAC,EAAE,SAAS,EAAE,cAAc,EAAE;YACpC,IAAI,cAAc,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;gBAC9D,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;YAC3B,CAAC;YACD,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,MAAM,EAAE,4EAA4E;aACrF,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAC7B,OAAoD;IAEpD,OAAO;QACL,KAAK,CAAC,QAAQ,CAAC,GAAG;YAChB,IAAI,GAAG,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;gBAC1C,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;YAC3B,CAAC;YACD,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC;YACpC,OAAO,QAAQ;gBACb,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE;gBACnB,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,mDAAmD,EAAE,CAAC;QACtF,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -29,13 +29,13 @@ export interface StrandDatabaseConfig {
|
|
|
29
29
|
/**
|
|
30
30
|
* Strand type (`'o'` open / `'c'` closed) from the control-network strand row.
|
|
31
31
|
* Drives the founder bootstrap: open strands get a `Header` only; closed strands
|
|
32
|
-
* also get the founding `Member`+`
|
|
32
|
+
* also get the founding `Member`+`Manager`.
|
|
33
33
|
*/
|
|
34
34
|
strandType: 'o' | 'c';
|
|
35
35
|
/**
|
|
36
36
|
* The closed-strand `MemberPrivateKey` (base64 protobuf) from the strand row.
|
|
37
37
|
* Required when `founder` is true and `strandType` is `'c'` — it derives the
|
|
38
|
-
* founding `Member.Key`/`
|
|
38
|
+
* founding `Member.Key`/`Manager.MemberKey`. Absent for open strands.
|
|
39
39
|
*/
|
|
40
40
|
memberPrivateKey?: string;
|
|
41
41
|
/**
|
|
@@ -75,8 +75,8 @@ export declare class StrandDatabase {
|
|
|
75
75
|
* Run the founder membership bootstrap against the freshly-composed strand DB.
|
|
76
76
|
*
|
|
77
77
|
* Derives the founding keypair from the closed-strand `memberPrivateKey` (the
|
|
78
|
-
* `Member.Key`/`
|
|
79
|
-
* `memberPrivateKey` throws, because it could never seat a founding
|
|
78
|
+
* `Member.Key`/`Manager.MemberKey` are its public key); a closed strand with no
|
|
79
|
+
* `memberPrivateKey` throws, because it could never seat a founding manager.
|
|
80
80
|
* Open strands derive no keypair (Header only). Idempotent — see
|
|
81
81
|
* {@link bootstrapFounderMembership}.
|
|
82
82
|
*/
|
|
@@ -84,7 +84,7 @@ export declare class StrandDatabase {
|
|
|
84
84
|
/**
|
|
85
85
|
* Derive the founding keypair for a closed strand from its `memberPrivateKey`,
|
|
86
86
|
* failing loudly when the key is absent (a closed strand with no founding
|
|
87
|
-
*
|
|
87
|
+
* Manager can never admit anyone).
|
|
88
88
|
*/
|
|
89
89
|
private deriveFounderKeyPair;
|
|
90
90
|
/**
|
package/dist/strand-database.js
CHANGED
|
@@ -74,8 +74,8 @@ export class StrandDatabase {
|
|
|
74
74
|
* Run the founder membership bootstrap against the freshly-composed strand DB.
|
|
75
75
|
*
|
|
76
76
|
* Derives the founding keypair from the closed-strand `memberPrivateKey` (the
|
|
77
|
-
* `Member.Key`/`
|
|
78
|
-
* `memberPrivateKey` throws, because it could never seat a founding
|
|
77
|
+
* `Member.Key`/`Manager.MemberKey` are its public key); a closed strand with no
|
|
78
|
+
* `memberPrivateKey` throws, because it could never seat a founding manager.
|
|
79
79
|
* Open strands derive no keypair (Header only). Idempotent — see
|
|
80
80
|
* {@link bootstrapFounderMembership}.
|
|
81
81
|
*/
|
|
@@ -94,12 +94,12 @@ export class StrandDatabase {
|
|
|
94
94
|
/**
|
|
95
95
|
* Derive the founding keypair for a closed strand from its `memberPrivateKey`,
|
|
96
96
|
* failing loudly when the key is absent (a closed strand with no founding
|
|
97
|
-
*
|
|
97
|
+
* Manager can never admit anyone).
|
|
98
98
|
*/
|
|
99
99
|
deriveFounderKeyPair(strandId, memberPrivateKey) {
|
|
100
100
|
if (!memberPrivateKey) {
|
|
101
101
|
throw new Error(`Cannot found closed strand ${strandId}: the strand row has no MemberPrivateKey. ` +
|
|
102
|
-
'A closed strand needs a founding Member/
|
|
102
|
+
'A closed strand needs a founding Member/Manager derived from that key.');
|
|
103
103
|
}
|
|
104
104
|
return strandMemberKeyPair(memberPrivateKey);
|
|
105
105
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"strand-database.js","sourceRoot":"","sources":["../src/strand-database.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"strand-database.js","sourceRoot":"","sources":["../src/strand-database.ts"],"names":[],"mappings":"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"}
|
|
@@ -87,7 +87,7 @@ export interface FormationResultMessage {
|
|
|
87
87
|
* placeholders), and returned a strand vouched for by the responder party with a real id.
|
|
88
88
|
*
|
|
89
89
|
* `createdBy: 'responder'` means "the responder party vouches for / returns this strand."
|
|
90
|
-
* Under provision-then-record that strand was minted
|
|
90
|
+
* Under provision-then-record that strand was minted owner-signed earlier (not created
|
|
91
91
|
* in-session), but it is still the responder party returning its own strand, so the marker
|
|
92
92
|
* — and this structural validator — stay unchanged.
|
|
93
93
|
*
|
|
@@ -90,7 +90,7 @@ const PLACEHOLDER_CADRE_ADDR = /^cadre-[ab]-\d+\.local$/;
|
|
|
90
90
|
* placeholders), and returned a strand vouched for by the responder party with a real id.
|
|
91
91
|
*
|
|
92
92
|
* `createdBy: 'responder'` means "the responder party vouches for / returns this strand."
|
|
93
|
-
* Under provision-then-record that strand was minted
|
|
93
|
+
* Under provision-then-record that strand was minted owner-signed earlier (not created
|
|
94
94
|
* in-session), but it is still the responder party returning its own strand, so the marker
|
|
95
95
|
* — and this structural validator — stay unchanged.
|
|
96
96
|
*
|
|
@@ -28,7 +28,7 @@ export interface StartStrandConfig {
|
|
|
28
28
|
requireSignedSchemas?: boolean;
|
|
29
29
|
/**
|
|
30
30
|
* Whether this node founds the strand (vs. joins it). Forwarded to the
|
|
31
|
-
* StrandDatabase so the founder bootstrap (Header, founding Member/
|
|
31
|
+
* StrandDatabase so the founder bootstrap (Header, founding Member/Manager)
|
|
32
32
|
* runs once at bring-up. Joiners leave this unset and write nothing. See
|
|
33
33
|
* {@link StrandConfig.founder}.
|
|
34
34
|
*/
|
|
@@ -200,7 +200,7 @@ export class StrandInstanceManager {
|
|
|
200
200
|
rawStorage: strandStorage,
|
|
201
201
|
// Founder bootstrap inputs: the strand's type drives which membership rows
|
|
202
202
|
// are written, and the closed-strand MemberPrivateKey derives the founding
|
|
203
|
-
// Member/
|
|
203
|
+
// Member/Manager key. Both come off the control-network strand row.
|
|
204
204
|
strandType: config.strandRow.Type,
|
|
205
205
|
memberPrivateKey: config.strandRow.MemberPrivateKey ?? undefined,
|
|
206
206
|
founder: config.founder
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"strand-instance-manager.js","sourceRoot":"","sources":["../src/strand-instance-manager.ts"],"names":[],"mappings":"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
|
|
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;AACxE,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AAejE,MAAM,GAAG,GAAG,KAAK,CAAC,6BAA6B,CAAC,CAAC;AACjD,MAAM,MAAM,GAAG,KAAK,CAAC,qBAAqB,CAAC,CAAC;AAiD5C;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,oBAAoB,CAAC,QAAgB,EAAE,QAAgB;IACrE,0CAA0C;IAC1C,IAAI,OAAO,OAAO,KAAK,WAAW,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC;QAC9D,MAAM,IAAI,KAAK,CACb,yDAAyD;YACzD,kDAAkD,CACnD,CAAC;IACJ,CAAC;IAED,mFAAmF;IACnF,MAAM,MAAM,GAAG,QAAQ,CAAC,OAAO,CAAC,gBAAgB,EAAE,GAAG,CAAC,CAAC;IAEvD,6EAA6E;IAC7E,8EAA8E;IAC9E,8EAA8E;IAC9E,yEAAyE;IACzE,yDAAyD;IACzD,MAAM,WAAW,GAAG,QAAQ,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;IACpD,OAAO,GAAG,WAAW,YAAY,MAAM,EAAE,CAAC;AAC5C,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,oBAAoB,CAC3B,QAAwC,EACxC,QAAgB;IAEhB,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,OAAO,OAAO,QAAQ,KAAK,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;AACxE,CAAC;AAED;;;GAGG;AACH,MAAM,OAAO,qBAAqB;IAUhC;QATQ,cAAS,GAAgC,IAAI,GAAG,EAAE,CAAC;QAC3D;;;;WAIG;QACK,kBAAa,GAAmC,IAAI,GAAG,EAAE,CAAC;QAC1D,aAAQ,GAAG,KAAK,CAAC;QAGvB,GAAG,CAAC,+BAA+B,CAAC,CAAC;IACvC,CAAC;IAED;;OAEG;IACH,YAAY;QACV,OAAO,IAAI,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACjC,CAAC;IAED;;OAEG;IACH,WAAW,CAAC,QAAgB;QAC1B,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACtC,CAAC;IAED;;OAEG;IACH,SAAS,CAAC,QAAgB;QACxB,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACtC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,WAAW,CAAC,MAAyB;QACzC,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,GAAG,MAAM,CAAC;QACzC,MAAM,QAAQ,GAAG,SAAS,CAAC,EAAE,CAAC;QAE9B,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;QACvD,CAAC;QAED,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;YACjC,GAAG,CAAC,2BAA2B,EAAE,QAAQ,CAAC,CAAC;YAC3C,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAE,CAAC;QACvC,CAAC;QAED,GAAG,CAAC,6CAA6C,EAAE,QAAQ,EAAE,UAAU,CAAC,EAAE,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC;QAChG,MAAM,MAAM,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;QAEjC,qEAAqE;QACrE,MAAM,gBAAgB,GAAG,MAAM,CAAC,oBAAoB,IAAI,IAAI,CAAC;QAC7D,qBAAqB,CAAC,UAAU,EAAE,EAAE,gBAAgB,EAAE,CAAC,CAAC;QACxD,GAAG,CAAC,uDAAuD,EAAE,QAAQ,EAAE,UAAU,CAAC,EAAE,CAAC,CAAC;QAEtF,kDAAkD;QAClD,MAAM,QAAQ,GAAa;YACzB,EAAE,EAAE,UAAU,CAAC,EAAE;YACjB,OAAO,EAAE,UAAU,CAAC,OAAO;YAC3B,MAAM,EAAE,UAAU,CAAC,MAAM;YACzB,SAAS,EAAE,UAAU,CAAC,SAAS;SAChC,CAAC;QAEF,gDAAgD;QAChD,MAAM,WAAW,GAAG,UAAU,CAAC,WAAW,IAAI,MAAM,CAAC,kBAAkB,CAAC;QAExE,MAAM,QAAQ,GAAmB;YAC/B,QAAQ;YACR,MAAM,EAAE,UAAU;YAClB,QAAQ;YACR,gBAAgB,EAAE,SAAS,CAAC,gBAAgB,IAAI,SAAS;YACzD,cAAc,EAAE,CAAC;YACjB,YAAY,EAAE,IAAI,IAAI,EAAE;YACxB,WAAW;SACZ,CAAC;QAEF,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QACvC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAEzC,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,kBAAkB,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;YAChD,MAAM,CAAC,8BAA8B,EAAE,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC;YACzF,GAAG,CAAC,6CAA6C,EAAE,QAAQ,EAAE,UAAU,CAAC,EAAE,CAAC,CAAC;YAC5E,OAAO,QAAQ,CAAC;QAClB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,QAAQ,CAAC,MAAM,GAAG,OAAO,CAAC;YAC1B,QAAQ,CAAC,KAAK,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACxE,GAAG,CAAC,+BAA+B,EAAE,QAAQ,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;YAC/D,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED;;;;;;;OAOG;IACK,KAAK,CAAC,kBAAkB,CAAC,QAAwB,EAAE,MAAyB;QAClF,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC;QACnC,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,CAAC;QAE9B,4EAA4E;QAC5E,oEAAoE;QACpE,gCAAgC;QAChC,MAAM,aAAa,GAAG,oBAAoB,CAAC,MAAM,CAAC,OAAO,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;QAC/E,IAAI,aAAa,EAAE,CAAC;YAClB,GAAG,CAAC,2CAA2C,EAAE,QAAQ,CAAC,CAAC;QAC7D,CAAC;QAED,8EAA8E;QAC9E,8DAA8D;QAC9D,MAAM,eAAe,GAAG,kBAAkB,QAAQ,EAAE,CAAC;QAErD,+DAA+D;QAC/D,uDAAuD;QACvD,MAAM,WAAW,GAAG,MAAM,CAAC,OAAO,EAAE,WAAW,IAAI,CAAC,MAAM,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC;QAElF,IAAI,CAAC;YACH,IAAI,EAAE,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;YAC3B,MAAM,IAAI,GAAG,MAAM,gBAAgB,CAAC;gBAClC,IAAI,EAAE,CAAC,EAAE,cAAc;gBACvB,cAAc,EAAE,MAAM,CAAC,cAAc,IAAI,EAAE;gBAC3C,WAAW,EAAE,UAAU,QAAQ,EAAE;gBACjC,OAAO,EAAE,aAAa;gBACtB,WAAW,EAAE,MAAM,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM;gBAC3D,KAAK,EAAE,WAAW;gBAClB,WAAW,EAAE,CAAC;gBACd,aAAa,EAAE;oBACb,aAAa,EAAE,IAAI;oBACnB,aAAa,EAAE,GAAG;iBACnB;gBACD,SAAS,EAAE;oBACT,cAAc,EAAE,MAAM,CAAC,OAAO,KAAK,SAAS;iBAC7C;gBACD,GAAG,CAAC,MAAM,CAAC,UAAU,IAAI,EAAE,UAAU,EAAE,MAAM,CAAC,UAAU,EAAE,CAAC;gBAC3D,GAAG,CAAC,MAAM,CAAC,OAAO,EAAE,UAAU,IAAI,EAAE,UAAU,EAAE,MAAM,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC;gBAC5E,GAAG,CAAC,MAAM,CAAC,OAAO,EAAE,WAAW,IAAI,EAAE,WAAW,EAAE,MAAM,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;gBAC/E,GAAG,CAAC,MAAM,CAAC,OAAO,EAAE,eAAe,IAAI,EAAE,eAAe,EAAE,MAAM,CAAC,OAAO,CAAC,eAAe,EAAE,CAAC;aAC5F,CAAuB,CAAC;YACzB,MAAM,CAAC,gDAAgD,EAAE,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;YAEvG,QAAQ,CAAC,UAAU,GAAG,IAAI,CAAC;YAE3B,uEAAuE;YACvE,uEAAuE;YACvE,wEAAwE;YACxE,qEAAqE;YACrE,iEAAiE;YACjE,EAAE;YACF,6DAA6D;YAC7D,wEAAwE;YACxE,EAAE,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;YACvB,MAAM,QAAQ,GAAG,IAAI,cAAc,CAAC;gBAClC,QAAQ;gBACR,UAAU;gBACV,UAAU,EAAE,IAAI;gBAChB,eAAe,EAAE,IAAI,CAAC,eAAe;gBACrC,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,WAAW;gBAChC,UAAU,EAAE,aAAa;gBACzB,2EAA2E;gBAC3E,2EAA2E;gBAC3E,oEAAoE;gBACpE,UAAU,EAAE,MAAM,CAAC,SAAS,CAAC,IAAI;gBACjC,gBAAgB,EAAE,MAAM,CAAC,SAAS,CAAC,gBAAgB,IAAI,SAAS;gBAChE,OAAO,EAAE,MAAM,CAAC,OAAO;aACxB,CAAC,CAAC;YACH,QAAQ,CAAC,QAAQ,GAAG,QAAQ,CAAC;YAC7B,MAAM,QAAQ,CAAC,UAAU,EAAE,CAAC;YAC5B,MAAM,CAAC,yDAAyD,EAAE,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;YAEhH,QAAQ,CAAC,MAAM,GAAG,QAAQ,CAAC;YAC3B,QAAQ,CAAC,YAAY,GAAG,IAAI,IAAI,EAAE,CAAC;QACrC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,wEAAwE;YACxE,wEAAwE;YACxE,yEAAyE;YACzE,uEAAuE;YACvE,MAAM,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,CAAC,UAAU,EAAE,EAAE;gBACvD,GAAG,CAAC,0DAA0D,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;YACxF,CAAC,CAAC,CAAC;YACH,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED;;;;;;OAMG;IACK,KAAK,CAAC,cAAc,CAAC,QAAwB;QACnD,IAAI,QAAQ,CAAC,QAAQ,EAAE,CAAC;YACtB,MAAM,QAAQ,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;YAChC,QAAQ,CAAC,QAAQ,GAAG,SAAS,CAAC;QAChC,CAAC;QACD,IAAI,QAAQ,CAAC,UAAU,EAAE,CAAC;YACxB,MAAM,QAAQ,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;YACjC,QAAQ,CAAC,UAAU,GAAG,SAAS,CAAC;QAClC,CAAC;QACD,QAAQ,CAAC,cAAc,GAAG,CAAC,CAAC;IAC9B,CAAC;IAED;;;;;;;OAOG;IACH,KAAK,CAAC,aAAa,CAAC,QAAgB;QAClC,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC9C,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,GAAG,CAAC,oCAAoC,EAAE,QAAQ,CAAC,CAAC;YACpD,OAAO;QACT,CAAC;QACD,IAAI,CAAC,QAAQ,CAAC,UAAU,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;YAC/C,GAAG,CAAC,2CAA2C,EAAE,QAAQ,CAAC,CAAC;YAC3D,OAAO;QACT,CAAC;QAED,GAAG,CAAC,+BAA+B,EAAE,QAAQ,CAAC,CAAC;QAC/C,MAAM,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;QACpC,GAAG,CAAC,4DAA4D,EAAE,QAAQ,CAAC,CAAC;IAC9E,CAAC;IAED;;;;;;;OAOG;IACH,KAAK,CAAC,YAAY,CAAC,QAAgB,EAAE,SAAiC;QACpE,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;QACvD,CAAC;QACD,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC9C,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,MAAM,IAAI,KAAK,CAAC,wBAAwB,QAAQ,eAAe,CAAC,CAAC;QACnE,CAAC;QACD,MAAM,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACtD,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,MAAM,IAAI,KAAK,CAAC,wBAAwB,QAAQ,6BAA6B,CAAC,CAAC;QACjF,CAAC;QACD,IAAI,QAAQ,CAAC,UAAU,IAAI,QAAQ,CAAC,QAAQ,EAAE,CAAC;YAC7C,GAAG,CAAC,sCAAsC,EAAE,QAAQ,CAAC,CAAC;YACtD,OAAO,QAAQ,CAAC;QAClB,CAAC;QAED,GAAG,CAAC,8BAA8B,EAAE,QAAQ,CAAC,CAAC;QAC9C,MAAM,MAAM,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;QAEjC,gFAAgF;QAChF,MAAM,YAAY,GAAsB;YACtC,GAAG,YAAY;YACf,cAAc,EAAE,SAAS,EAAE,cAAc,IAAI,YAAY,CAAC,cAAc;YACxE,IAAI,EAAE,SAAS,EAAE,IAAI,IAAI,YAAY,CAAC,IAAI;SAC3C,CAAC;QACF,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;QAE/C,QAAQ,CAAC,MAAM,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,kBAAkB,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;YACtD,MAAM,CAAC,+BAA+B,EAAE,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC;YAC1F,GAAG,CAAC,gCAAgC,EAAE,QAAQ,CAAC,CAAC;YAChD,OAAO,QAAQ,CAAC;QAClB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,QAAQ,CAAC,MAAM,GAAG,OAAO,CAAC;YAC1B,QAAQ,CAAC,KAAK,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACxE,GAAG,CAAC,gCAAgC,EAAE,QAAQ,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;YAChE,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,UAAU,CAAC,QAAgB;QAC/B,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC9C,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,GAAG,CAAC,qBAAqB,EAAE,QAAQ,CAAC,CAAC;YACrC,OAAO;QACT,CAAC;QAED,GAAG,CAAC,8BAA8B,EAAE,QAAQ,CAAC,CAAC;QAC9C,QAAQ,CAAC,MAAM,GAAG,UAAU,CAAC;QAE7B,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;YACpC,QAAQ,CAAC,MAAM,GAAG,SAAS,CAAC;YAC5B,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YAChC,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YACpC,GAAG,CAAC,gCAAgC,EAAE,QAAQ,CAAC,CAAC;QAClD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,QAAQ,CAAC,MAAM,GAAG,OAAO,CAAC;YAC1B,QAAQ,CAAC,KAAK,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACxE,GAAG,CAAC,8BAA8B,EAAE,QAAQ,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;YAC9D,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,OAAO;QACX,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,GAAG,CAAC,oCAAoC,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAE/D,MAAM,YAAY,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAC9D,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;YAC9B,GAAG,CAAC,8CAA8C,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;QAC/D,CAAC,CAAC,CACH,CAAC;QAEF,MAAM,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QAChC,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;QACtB,GAAG,CAAC,8BAA8B,CAAC,CAAC;IACtC,CAAC;CACF"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type
|
|
1
|
+
import { type Ed25519KeyPair } from './ed25519-key.js';
|
|
2
2
|
/**
|
|
3
3
|
* Mint a fresh ed25519 strand member private key, encoded as base64 protobuf.
|
|
4
4
|
*
|
|
@@ -15,15 +15,15 @@ export declare function generateStrandMemberKey(): Promise<string>;
|
|
|
15
15
|
* base64url keypair the strand RBAC constraints consume.
|
|
16
16
|
*
|
|
17
17
|
* The `Strand` control-layer `MemberPrivateKey` is the closed-strand read-gating
|
|
18
|
-
* secret; the founding `Member.Key`/`
|
|
18
|
+
* secret; the founding `Member.Key`/`Manager.MemberKey` (the strand RBAC layer)
|
|
19
19
|
* are *derived from it* — they are the `publicKeyB64` of the keypair this returns.
|
|
20
20
|
* Decode the protobuf to a libp2p private key, then reuse
|
|
21
|
-
* {@link
|
|
22
|
-
*
|
|
21
|
+
* {@link ed25519KeyPairFromLibp2p} so the same seed→public derivation used for node
|
|
22
|
+
* owner keys yields a stable `{ privateKeyB64, publicKeyB64 }` whose public
|
|
23
23
|
* key a later strand signature verifies against.
|
|
24
24
|
*
|
|
25
25
|
* @param memberPrivateKey - The strand's `MemberPrivateKey` (base64 protobuf).
|
|
26
|
-
* @returns The base64url seed/public-key pair for founding membership/
|
|
26
|
+
* @returns The base64url seed/public-key pair for founding membership/manager.
|
|
27
27
|
* @throws If the decoded key is not Ed25519 or the raw bytes are malformed.
|
|
28
28
|
*/
|
|
29
|
-
export declare function strandMemberKeyPair(memberPrivateKey: string):
|
|
29
|
+
export declare function strandMemberKeyPair(memberPrivateKey: string): Ed25519KeyPair;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { generateKeyPair, privateKeyToProtobuf, privateKeyFromProtobuf } from '@libp2p/crypto/keys';
|
|
2
2
|
import { toString as uint8ArrayToString, fromString as uint8ArrayFromString } from 'uint8arrays';
|
|
3
|
-
import {
|
|
3
|
+
import { ed25519KeyPairFromLibp2p } from './ed25519-key.js';
|
|
4
4
|
/**
|
|
5
5
|
* Mint a fresh ed25519 strand member private key, encoded as base64 protobuf.
|
|
6
6
|
*
|
|
@@ -20,19 +20,19 @@ export async function generateStrandMemberKey() {
|
|
|
20
20
|
* base64url keypair the strand RBAC constraints consume.
|
|
21
21
|
*
|
|
22
22
|
* The `Strand` control-layer `MemberPrivateKey` is the closed-strand read-gating
|
|
23
|
-
* secret; the founding `Member.Key`/`
|
|
23
|
+
* secret; the founding `Member.Key`/`Manager.MemberKey` (the strand RBAC layer)
|
|
24
24
|
* are *derived from it* — they are the `publicKeyB64` of the keypair this returns.
|
|
25
25
|
* Decode the protobuf to a libp2p private key, then reuse
|
|
26
|
-
* {@link
|
|
27
|
-
*
|
|
26
|
+
* {@link ed25519KeyPairFromLibp2p} so the same seed→public derivation used for node
|
|
27
|
+
* owner keys yields a stable `{ privateKeyB64, publicKeyB64 }` whose public
|
|
28
28
|
* key a later strand signature verifies against.
|
|
29
29
|
*
|
|
30
30
|
* @param memberPrivateKey - The strand's `MemberPrivateKey` (base64 protobuf).
|
|
31
|
-
* @returns The base64url seed/public-key pair for founding membership/
|
|
31
|
+
* @returns The base64url seed/public-key pair for founding membership/manager.
|
|
32
32
|
* @throws If the decoded key is not Ed25519 or the raw bytes are malformed.
|
|
33
33
|
*/
|
|
34
34
|
export function strandMemberKeyPair(memberPrivateKey) {
|
|
35
35
|
const privateKey = privateKeyFromProtobuf(uint8ArrayFromString(memberPrivateKey, 'base64'));
|
|
36
|
-
return
|
|
36
|
+
return ed25519KeyPairFromLibp2p(privateKey);
|
|
37
37
|
}
|
|
38
38
|
//# sourceMappingURL=strand-member-key.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"strand-member-key.js","sourceRoot":"","sources":["../src/strand-member-key.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AACpG,OAAO,EAAE,QAAQ,IAAI,kBAAkB,EAAE,UAAU,IAAI,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACjG,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"strand-member-key.js","sourceRoot":"","sources":["../src/strand-member-key.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AACpG,OAAO,EAAE,QAAQ,IAAI,kBAAkB,EAAE,UAAU,IAAI,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACjG,OAAO,EAAE,wBAAwB,EAAuB,MAAM,kBAAkB,CAAC;AAEjF;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,uBAAuB;IAC3C,MAAM,UAAU,GAAG,MAAM,eAAe,CAAC,SAAS,CAAC,CAAC;IACpD,OAAO,kBAAkB,CAAC,oBAAoB,CAAC,UAAU,CAAC,EAAE,QAAQ,CAAC,CAAC;AACxE,CAAC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,mBAAmB,CAAC,gBAAwB;IAC1D,MAAM,UAAU,GAAG,sBAAsB,CAAC,oBAAoB,CAAC,gBAAgB,EAAE,QAAQ,CAAC,CAAC,CAAC;IAC5F,OAAO,wBAAwB,CAAC,UAAU,CAAC,CAAC;AAC9C,CAAC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { Database } from '@quereus/quereus';
|
|
2
2
|
import type { MemberRegistration } from './types.js';
|
|
3
3
|
import type { MemberRegistry, MemberVerifier } from './enrollment.js';
|
|
4
|
-
import type {
|
|
4
|
+
import type { Ed25519KeyPair } from './ed25519-key.js';
|
|
5
5
|
/**
|
|
6
6
|
* The canonical payload a joining member signs to prove ownership of its strand
|
|
7
7
|
* member key, verified by {@link StrandMemberVerifier.verifyMember}.
|
|
@@ -22,10 +22,10 @@ export type StrandAdmission = {
|
|
|
22
22
|
/** The matching invite private seed (base64url), received out-of-band. */
|
|
23
23
|
readonly invitePrivateKey: string;
|
|
24
24
|
} | {
|
|
25
|
-
/** Admit directly by
|
|
26
|
-
readonly mode: '
|
|
27
|
-
/** The admitting
|
|
28
|
-
readonly
|
|
25
|
+
/** Admit directly by manager signature (the manager-side join). */
|
|
26
|
+
readonly mode: 'manager';
|
|
27
|
+
/** The admitting manager's strand keypair. */
|
|
28
|
+
readonly managerKeyPair: Ed25519KeyPair;
|
|
29
29
|
};
|
|
30
30
|
/**
|
|
31
31
|
* Strand-`Database`-backed {@link MemberVerifier} — the reconciliation that lets
|
|
@@ -75,8 +75,8 @@ export declare class StrandMemberVerifier implements MemberVerifier {
|
|
|
75
75
|
* `Member.Authorized` is taken:
|
|
76
76
|
* - `invite` → {@link consumeInvite} (atomic `Member` + `ConsumedInvite`), the
|
|
77
77
|
* invitee-side flow that redeems a single-use invite.
|
|
78
|
-
* - `
|
|
79
|
-
* seats a member already trusted by
|
|
78
|
+
* - `manager` → {@link addMemberByManager}, the manager-side flow that
|
|
79
|
+
* seats a member already trusted by a manager.
|
|
80
80
|
*
|
|
81
81
|
* Scoped to one strand's db; the `strandId` argument is accepted for interface
|
|
82
82
|
* compatibility but writes target this db's `Strand.*` tables.
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import debug from 'debug';
|
|
2
|
-
import { verifyStrandPayload, consumeInvite,
|
|
2
|
+
import { verifyStrandPayload, consumeInvite, addMemberByManager, } from './strand-membership-writer.js';
|
|
3
3
|
import { canonicalDatetime } from './canonical-datetime.js';
|
|
4
4
|
const log = debug('sereus:cadre:strand-member-registry');
|
|
5
5
|
/**
|
|
@@ -78,8 +78,8 @@ export class StrandMemberVerifier {
|
|
|
78
78
|
* `Member.Authorized` is taken:
|
|
79
79
|
* - `invite` → {@link consumeInvite} (atomic `Member` + `ConsumedInvite`), the
|
|
80
80
|
* invitee-side flow that redeems a single-use invite.
|
|
81
|
-
* - `
|
|
82
|
-
* seats a member already trusted by
|
|
81
|
+
* - `manager` → {@link addMemberByManager}, the manager-side flow that
|
|
82
|
+
* seats a member already trusted by a manager.
|
|
83
83
|
*
|
|
84
84
|
* Scoped to one strand's db; the `strandId` argument is accepted for interface
|
|
85
85
|
* compatibility but writes target this db's `Strand.*` tables.
|
|
@@ -109,8 +109,8 @@ export class StrandMemberRegistry {
|
|
|
109
109
|
});
|
|
110
110
|
return;
|
|
111
111
|
}
|
|
112
|
-
await
|
|
113
|
-
|
|
112
|
+
await addMemberByManager(this.db, {
|
|
113
|
+
managerKeyPair: this.admission.managerKeyPair,
|
|
114
114
|
memberKey,
|
|
115
115
|
});
|
|
116
116
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"strand-member-registry.js","sourceRoot":"","sources":["../src/strand-member-registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAK1B,OAAO,EACL,mBAAmB,EACnB,aAAa,EACb,
|
|
1
|
+
{"version":3,"file":"strand-member-registry.js","sourceRoot":"","sources":["../src/strand-member-registry.ts"],"names":[],"mappings":"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"}
|