@peerbit/trusted-network 6.0.64 → 6.0.66
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/src/controller.d.ts +1 -1
- package/dist/src/controller.d.ts.map +1 -1
- package/dist/src/controller.js +25 -18
- package/dist/src/controller.js.map +1 -1
- package/package.json +5 -5
- package/src/controller.ts +33 -28
package/dist/src/controller.d.ts
CHANGED
|
@@ -49,7 +49,7 @@ export declare class TrustedNetwork extends Program<TrustedNetworkArgs> {
|
|
|
49
49
|
* @param truster the truster "root", if undefined defaults to the root trust
|
|
50
50
|
* @returns true, if trusted
|
|
51
51
|
*/
|
|
52
|
-
isTrusted(trustee: PublicSignKey, truster?: PublicSignKey): Promise<boolean>;
|
|
52
|
+
isTrusted(trustee: PublicSignKey | PeerId, truster?: PublicSignKey | PeerId): Promise<boolean>;
|
|
53
53
|
_isTrustedLocal(trustee: PublicSignKey, truster?: PublicSignKey): Promise<boolean>;
|
|
54
54
|
getTrusted(): Promise<PublicSignKey[]>;
|
|
55
55
|
hashCode(): string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"controller.d.ts","sourceRoot":"","sources":["../../src/controller.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EACN,aAAa,EAGb,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACN,KAAK,oBAAoB,EACzB,KAAK,OAAO,EAEZ,KAAK,aAAa,EAClB,KAAK,SAAS,EAGd,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC3C,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAC9D,OAAO,EACN,MAAM,EACN,gBAAgB,EAOhB,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"controller.d.ts","sourceRoot":"","sources":["../../src/controller.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EACN,aAAa,EAGb,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACN,KAAK,oBAAoB,EACzB,KAAK,OAAO,EAEZ,KAAK,aAAa,EAClB,KAAK,SAAS,EAGd,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC3C,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAC9D,OAAO,EACN,MAAM,EACN,gBAAgB,EAOhB,MAAM,qBAAqB,CAAC;AAwE7B,KAAK,iBAAiB,GAAG;IACxB,OAAO,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IAC1B,SAAS,CAAC,EAAE,kBAAkB,CAAC;CAC/B,CAAC;AAEF,qBACa,aAAc,SAAQ,OAAO,CAAC,iBAAiB,CAAC;IAE5D,aAAa,EAAE,aAAa,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;gBAE3C,KAAK,CAAC,EAAE;QACnB,EAAE,CAAC,EAAE,UAAU,CAAC;QAChB,aAAa,CAAC,EAAE,aAAa,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;KACxD;IAQK,UAAU,CACf,UAAU,EAAE,oBAAoB,CAAC,gBAAgB,CAAC,GAChD,OAAO,CAAC,OAAO,CAAC;IAIb,IAAI,CAAC,OAAO,CAAC,EAAE,iBAAiB;IAgBhC,WAAW,CAChB,EAAE,EAAE,aAAa,GAAG,MAAM,EAC1B,OAAO,CAAC,EAAE,aAAa,CAAC,SAAS,CAAC;CAanC;AAED;;GAEG;AAEH,KAAK,kBAAkB,GAAG;IAAE,SAAS,CAAC,EAAE,kBAAkB,CAAA;CAAE,CAAC;AAE7D,qBACa,cAAe,SAAQ,OAAO,CAAC,kBAAkB,CAAC;IAE9D,SAAS,EAAE,aAAa,CAAC;IAGzB,UAAU,EAAE,aAAa,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;IAIpD,OAAO,CAAC,aAAa,CAAK;gBAEd,KAAK,EAAE;QAAE,EAAE,CAAC,EAAE,UAAU,CAAC;QAAC,SAAS,EAAE,aAAa,GAAG,MAAM,CAAA;KAAE;IAMnE,IAAI,CAAC,OAAO,CAAC,EAAE,kBAAkB;IAejC,UAAU,CACf,UAAU,EAAE,oBAAoB,CAAC,gBAAgB,CAAC,GAChD,OAAO,CAAC,OAAO,CAAC;IAIb,OAAO,CAAC,QAAQ,EAAE,GAAG,EAAE,SAAS,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC;IAInE,GAAG,CACR,OAAO,EAAE,aAAa,GAAG,MAAM,EAC/B,OAAO,CAAC,EAAE,aAAa,CAAC,SAAS,CAAC;IAiB7B,WAAW,CAChB,OAAO,EAAE,aAAa,GAAG,MAAM,EAC/B,OAAO,GAAE,aAAa,GAAG,MAAuB;IAIjD,WAAW,CACV,OAAO,EAAE,aAAa,GAAG,MAAM,EAC/B,OAAO,GAAE,aAAa,GAAG,MAAuB;IASjD;;;;;;;;;OASG;IACG,SAAS,CACd,OAAO,EAAE,aAAa,GAAG,MAAM,EAC/B,OAAO,GAAE,aAAa,GAAG,MAAuB,GAC9C,OAAO,CAAC,OAAO,CAAC;IA4Bb,eAAe,CACpB,OAAO,EAAE,aAAa,EACtB,OAAO,GAAE,aAA8B,GACrC,OAAO,CAAC,OAAO,CAAC;IAUb,UAAU,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;IAU5C,QAAQ,IAAI,MAAM;CAGlB"}
|
package/dist/src/controller.js
CHANGED
|
@@ -32,7 +32,7 @@ var __runInitializers = (this && this.__runInitializers) || function (thisArg, i
|
|
|
32
32
|
}
|
|
33
33
|
return useValue ? value : void 0;
|
|
34
34
|
};
|
|
35
|
-
import { field, serialize, variant } from "@dao-xyz/borsh";
|
|
35
|
+
import { deserialize, field, serialize, variant } from "@dao-xyz/borsh";
|
|
36
36
|
import {} from "@libp2p/interface";
|
|
37
37
|
import { PublicSignKey, getPublicKeyFromPeerId, sha256Base64Sync, } from "@peerbit/crypto";
|
|
38
38
|
import { Documents, SearchRequest, policy, } from "@peerbit/document";
|
|
@@ -55,24 +55,30 @@ const openDocumentsLike = async (owner, docs, args) => {
|
|
|
55
55
|
return opened;
|
|
56
56
|
};
|
|
57
57
|
const coercePublicKey = (publicKey) => {
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
58
|
+
if (publicKey instanceof PublicSignKey) {
|
|
59
|
+
return publicKey;
|
|
60
|
+
}
|
|
61
|
+
const bytes = publicKey?.bytes;
|
|
62
|
+
if (bytes instanceof Uint8Array) {
|
|
63
|
+
return deserialize(bytes, PublicSignKey);
|
|
64
|
+
}
|
|
65
|
+
return getPublicKeyFromPeerId(publicKey);
|
|
61
66
|
};
|
|
62
67
|
const canPerformByRelation = async (properties, isTrusted) => {
|
|
63
68
|
// verify the payload
|
|
64
69
|
const keys = await properties.entry.getPublicKeys();
|
|
65
70
|
const checkKey = async (key) => {
|
|
66
71
|
if (properties.type === "put") {
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
if (!relation.from.equals(key)) {
|
|
72
|
+
try {
|
|
73
|
+
const from = coercePublicKey(properties.value.from);
|
|
74
|
+
const signer = coercePublicKey(key);
|
|
75
|
+
if (!from.equals(signer)) {
|
|
72
76
|
return false;
|
|
73
77
|
}
|
|
74
78
|
}
|
|
75
|
-
|
|
79
|
+
catch {
|
|
80
|
+
return false;
|
|
81
|
+
}
|
|
76
82
|
}
|
|
77
83
|
if (isTrusted) {
|
|
78
84
|
const trusted = await isTrusted(key);
|
|
@@ -141,7 +147,7 @@ let IdentityGraph = (() => {
|
|
|
141
147
|
/* trustee = PublicKey.from(trustee); */
|
|
142
148
|
await this.relationGraph.put(new IdentityRelation({
|
|
143
149
|
to: coercePublicKey(to),
|
|
144
|
-
from: options?.identity?.publicKey || this.node.identity.publicKey,
|
|
150
|
+
from: coercePublicKey(options?.identity?.publicKey || this.node.identity.publicKey),
|
|
145
151
|
}), options);
|
|
146
152
|
}
|
|
147
153
|
};
|
|
@@ -204,14 +210,13 @@ let TrustedNetwork = (() => {
|
|
|
204
210
|
return true; // TODO should we have read access control?
|
|
205
211
|
}
|
|
206
212
|
async add(trustee, options) {
|
|
207
|
-
const key = trustee
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
const existingRelation = await this.getRelation(key, this.node.identity.publicKey);
|
|
213
|
+
const key = coercePublicKey(trustee);
|
|
214
|
+
const truster = coercePublicKey(this.node.identity.publicKey);
|
|
215
|
+
const existingRelation = await this.getRelation(key, truster);
|
|
211
216
|
if (!existingRelation) {
|
|
212
217
|
const relation = new IdentityRelation({
|
|
213
218
|
to: key,
|
|
214
|
-
from:
|
|
219
|
+
from: truster,
|
|
215
220
|
});
|
|
216
221
|
await this.trustGraph.put(relation);
|
|
217
222
|
return relation;
|
|
@@ -235,11 +240,13 @@ let TrustedNetwork = (() => {
|
|
|
235
240
|
* @returns true, if trusted
|
|
236
241
|
*/
|
|
237
242
|
async isTrusted(trustee, truster = this.rootTrust) {
|
|
238
|
-
|
|
243
|
+
const trusteeKey = coercePublicKey(trustee);
|
|
244
|
+
const trusterKey = coercePublicKey(truster);
|
|
245
|
+
if (trusteeKey.equals(this.rootTrust)) {
|
|
239
246
|
return true;
|
|
240
247
|
}
|
|
241
248
|
// Fast local-only check first. This avoids stalling writes on cold-start or churn.
|
|
242
|
-
if (await this._isTrustedLocal(
|
|
249
|
+
if (await this._isTrustedLocal(trusteeKey, trusterKey)) {
|
|
243
250
|
return true;
|
|
244
251
|
}
|
|
245
252
|
// Best-effort: kick off a background remote query to encourage replication metadata to converge.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"controller.js","sourceRoot":"","sources":["../../src/controller.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"controller.js","sourceRoot":"","sources":["../../src/controller.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@peerbit/trusted-network",
|
|
3
|
-
"version": "6.0.
|
|
3
|
+
"version": "6.0.66",
|
|
4
4
|
"description": "Access controller that operates on a DB",
|
|
5
5
|
"sideEffects": false,
|
|
6
6
|
"type": "module",
|
|
@@ -56,14 +56,14 @@
|
|
|
56
56
|
"@libp2p/interface": "^3.1.1",
|
|
57
57
|
"uint8arrays": "^5.1.0",
|
|
58
58
|
"@peerbit/crypto": "3.1.4",
|
|
59
|
-
"@peerbit/document": "13.1.
|
|
59
|
+
"@peerbit/document": "13.1.21",
|
|
60
60
|
"@peerbit/log": "6.2.11",
|
|
61
|
-
"@peerbit/program": "6.0.
|
|
62
|
-
"@peerbit/shared-log": "13.2.
|
|
61
|
+
"@peerbit/program": "6.0.43",
|
|
62
|
+
"@peerbit/shared-log": "13.2.19"
|
|
63
63
|
},
|
|
64
64
|
"devDependencies": {
|
|
65
65
|
"ethers": "^6.17.0",
|
|
66
|
-
"@peerbit/test-utils": "3.1.
|
|
66
|
+
"@peerbit/test-utils": "3.1.15",
|
|
67
67
|
"@peerbit/time": "3.0.1"
|
|
68
68
|
},
|
|
69
69
|
"repository": {
|
package/src/controller.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { field, serialize, variant } from "@dao-xyz/borsh";
|
|
1
|
+
import { deserialize, field, serialize, variant } from "@dao-xyz/borsh";
|
|
2
2
|
import { type PeerId } from "@libp2p/interface";
|
|
3
3
|
import {
|
|
4
4
|
PublicSignKey,
|
|
@@ -47,10 +47,17 @@ const openDocumentsLike = async <T, I extends Record<string, any> = any>(
|
|
|
47
47
|
return opened as DocumentsLike<T, I>;
|
|
48
48
|
};
|
|
49
49
|
|
|
50
|
-
const coercePublicKey = (publicKey: PublicSignKey | PeerId) => {
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
50
|
+
const coercePublicKey = (publicKey: PublicSignKey | PeerId): PublicSignKey => {
|
|
51
|
+
if (publicKey instanceof PublicSignKey) {
|
|
52
|
+
return publicKey;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
const bytes = (publicKey as { bytes?: unknown })?.bytes;
|
|
56
|
+
if (bytes instanceof Uint8Array) {
|
|
57
|
+
return deserialize(bytes, PublicSignKey);
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
return getPublicKeyFromPeerId(publicKey as PeerId);
|
|
54
61
|
};
|
|
55
62
|
const canPerformByRelation = async (
|
|
56
63
|
properties: CanPerformOperations<IdentityRelation>,
|
|
@@ -60,17 +67,15 @@ const canPerformByRelation = async (
|
|
|
60
67
|
const keys = await properties.entry.getPublicKeys();
|
|
61
68
|
const checkKey = async (key: PublicSignKey): Promise<boolean> => {
|
|
62
69
|
if (properties.type === "put") {
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
if (relation instanceof IdentityRelation) {
|
|
68
|
-
if (!relation.from.equals(key)) {
|
|
70
|
+
try {
|
|
71
|
+
const from = coercePublicKey(properties.value.from);
|
|
72
|
+
const signer = coercePublicKey(key);
|
|
73
|
+
if (!from.equals(signer)) {
|
|
69
74
|
return false;
|
|
70
75
|
}
|
|
76
|
+
} catch {
|
|
77
|
+
return false;
|
|
71
78
|
}
|
|
72
|
-
|
|
73
|
-
// else assume the payload is accepted
|
|
74
79
|
}
|
|
75
80
|
if (isTrusted) {
|
|
76
81
|
const trusted = await isTrusted(key);
|
|
@@ -144,7 +149,9 @@ export class IdentityGraph extends Program<IdentityGraphArgs> {
|
|
|
144
149
|
await this.relationGraph.put(
|
|
145
150
|
new IdentityRelation({
|
|
146
151
|
to: coercePublicKey(to),
|
|
147
|
-
from:
|
|
152
|
+
from: coercePublicKey(
|
|
153
|
+
options?.identity?.publicKey || this.node.identity.publicKey,
|
|
154
|
+
),
|
|
148
155
|
}),
|
|
149
156
|
options,
|
|
150
157
|
);
|
|
@@ -204,19 +211,14 @@ export class TrustedNetwork extends Program<TrustedNetworkArgs> {
|
|
|
204
211
|
trustee: PublicSignKey | PeerId,
|
|
205
212
|
options?: AppendOptions<Operation>,
|
|
206
213
|
) {
|
|
207
|
-
const key =
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
const existingRelation = await this.getRelation(
|
|
213
|
-
key,
|
|
214
|
-
this.node.identity.publicKey,
|
|
215
|
-
);
|
|
214
|
+
const key = coercePublicKey(trustee);
|
|
215
|
+
const truster = coercePublicKey(this.node.identity.publicKey);
|
|
216
|
+
|
|
217
|
+
const existingRelation = await this.getRelation(key, truster);
|
|
216
218
|
if (!existingRelation) {
|
|
217
219
|
const relation = new IdentityRelation({
|
|
218
220
|
to: key,
|
|
219
|
-
from:
|
|
221
|
+
from: truster,
|
|
220
222
|
});
|
|
221
223
|
await this.trustGraph!.put(relation);
|
|
222
224
|
return relation;
|
|
@@ -252,15 +254,18 @@ export class TrustedNetwork extends Program<TrustedNetworkArgs> {
|
|
|
252
254
|
* @returns true, if trusted
|
|
253
255
|
*/
|
|
254
256
|
async isTrusted(
|
|
255
|
-
trustee: PublicSignKey,
|
|
256
|
-
truster: PublicSignKey = this.rootTrust,
|
|
257
|
+
trustee: PublicSignKey | PeerId,
|
|
258
|
+
truster: PublicSignKey | PeerId = this.rootTrust,
|
|
257
259
|
): Promise<boolean> {
|
|
258
|
-
|
|
260
|
+
const trusteeKey = coercePublicKey(trustee);
|
|
261
|
+
const trusterKey = coercePublicKey(truster);
|
|
262
|
+
|
|
263
|
+
if (trusteeKey.equals(this.rootTrust)) {
|
|
259
264
|
return true;
|
|
260
265
|
}
|
|
261
266
|
|
|
262
267
|
// Fast local-only check first. This avoids stalling writes on cold-start or churn.
|
|
263
|
-
if (await this._isTrustedLocal(
|
|
268
|
+
if (await this._isTrustedLocal(trusteeKey, trusterKey)) {
|
|
264
269
|
return true;
|
|
265
270
|
}
|
|
266
271
|
|