@peerbit/trusted-network 6.0.112 → 6.0.113
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/v2-authority-entry.d.ts +27 -0
- package/dist/src/v2-authority-entry.d.ts.map +1 -0
- package/dist/src/v2-authority-entry.js +304 -0
- package/dist/src/v2-authority-entry.js.map +1 -0
- package/dist/src/v2-resource-fence-entry.d.ts +26 -0
- package/dist/src/v2-resource-fence-entry.d.ts.map +1 -0
- package/dist/src/v2-resource-fence-entry.js +51 -0
- package/dist/src/v2-resource-fence-entry.js.map +1 -0
- package/dist/src/v2.d.ts +9 -0
- package/dist/src/v2.d.ts.map +1 -1
- package/dist/src/v2.js +19 -5
- package/dist/src/v2.js.map +1 -1
- package/package.json +7 -6
- package/src/v2-authority-entry.ts +430 -0
- package/src/v2-resource-fence-entry.ts +97 -0
- package/src/v2.ts +25 -5
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { NetworkDescriptorV2 } from "./v2.js";
|
|
2
|
+
/** Internal limits selected by a concrete TrustedNetwork v2 record profile. */
|
|
3
|
+
export type AuthorityEntryV0LimitsV2 = {
|
|
4
|
+
maximumEntryBytes: number;
|
|
5
|
+
maximumDirectParents: number;
|
|
6
|
+
exactPayloadBytes?: number;
|
|
7
|
+
};
|
|
8
|
+
export type AuthenticatedAuthorityEntryV0V2 = {
|
|
9
|
+
descriptor: NetworkDescriptorV2;
|
|
10
|
+
entryBytes: Uint8Array;
|
|
11
|
+
entryCid: string;
|
|
12
|
+
entryDigest: Uint8Array;
|
|
13
|
+
gid: string;
|
|
14
|
+
metaData?: Uint8Array;
|
|
15
|
+
directParents: Array<{
|
|
16
|
+
cid: string;
|
|
17
|
+
digest: Uint8Array;
|
|
18
|
+
}>;
|
|
19
|
+
payloadBytes: Uint8Array;
|
|
20
|
+
};
|
|
21
|
+
/**
|
|
22
|
+
* Authenticate one bounded raw EntryV0 authority envelope. This establishes
|
|
23
|
+
* canonical bytes, authority signature, and structural facts only. It does not
|
|
24
|
+
* establish policy acceptance, causal ancestry, freshness, or durability.
|
|
25
|
+
*/
|
|
26
|
+
export declare const authenticateAuthorityEntryV0V2: (entryBytes: Uint8Array, descriptor: NetworkDescriptorV2, limits: AuthorityEntryV0LimitsV2) => Promise<AuthenticatedAuthorityEntryV0V2>;
|
|
27
|
+
//# sourceMappingURL=v2-authority-entry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"v2-authority-entry.d.ts","sourceRoot":"","sources":["../../src/v2-authority-entry.ts"],"names":[],"mappings":"AAWA,OAAO,EACN,mBAAmB,EAKnB,MAAM,SAAS,CAAC;AAEjB,+EAA+E;AAC/E,MAAM,MAAM,wBAAwB,GAAG;IACtC,iBAAiB,EAAE,MAAM,CAAC;IAC1B,oBAAoB,EAAE,MAAM,CAAC;IAC7B,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC3B,CAAC;AAEF,MAAM,MAAM,+BAA+B,GAAG;IAC7C,UAAU,EAAE,mBAAmB,CAAC;IAChC,UAAU,EAAE,UAAU,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,UAAU,CAAC;IACxB,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,CAAC,EAAE,UAAU,CAAC;IACtB,aAAa,EAAE,KAAK,CAAC;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,UAAU,CAAA;KAAE,CAAC,CAAC;IAC1D,YAAY,EAAE,UAAU,CAAC;CACzB,CAAC;AAwRF;;;;GAIG;AACH,eAAO,MAAM,8BAA8B,GAC1C,YAAY,UAAU,EACtB,YAAY,mBAAmB,EAC/B,QAAQ,wBAAwB,KAC9B,OAAO,CAAC,+BAA+B,CAyGzC,CAAC"}
|
|
@@ -0,0 +1,304 @@
|
|
|
1
|
+
import { deserialize, serialize } from "@dao-xyz/borsh";
|
|
2
|
+
import { calculateRawCid, cidifyString, codecMap, defaultHasher, stringifyCid, } from "@peerbit/blocks-interface";
|
|
3
|
+
import { DecryptedThing, verify } from "@peerbit/crypto";
|
|
4
|
+
import { Entry, EntryType, EntryV0, NO_ENCODING } from "@peerbit/log";
|
|
5
|
+
import { equals } from "uint8arrays";
|
|
6
|
+
import { NetworkDescriptorV2, assertNetworkDescriptorV2, copyUint8ArrayV2, copyUint8ArrayWithLengthV2, exactUint8ArrayByteLengthV2, } from "./v2.js";
|
|
7
|
+
class BoundsReaderV2 {
|
|
8
|
+
bytes;
|
|
9
|
+
offset = 0;
|
|
10
|
+
view;
|
|
11
|
+
constructor(bytes) {
|
|
12
|
+
this.bytes = bytes;
|
|
13
|
+
this.view = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength);
|
|
14
|
+
}
|
|
15
|
+
get position() {
|
|
16
|
+
return this.offset;
|
|
17
|
+
}
|
|
18
|
+
readU8(label) {
|
|
19
|
+
return this.readExact(1, label)[0];
|
|
20
|
+
}
|
|
21
|
+
readU32(label) {
|
|
22
|
+
this.requireRemaining(4, label);
|
|
23
|
+
const value = this.view.getUint32(this.offset, true);
|
|
24
|
+
this.offset += 4;
|
|
25
|
+
return value;
|
|
26
|
+
}
|
|
27
|
+
readBytes(label) {
|
|
28
|
+
return this.readExact(this.readU32(`${label} length`), label);
|
|
29
|
+
}
|
|
30
|
+
readExact(byteLength, label) {
|
|
31
|
+
this.requireRemaining(byteLength, label);
|
|
32
|
+
const start = this.offset;
|
|
33
|
+
this.offset += byteLength;
|
|
34
|
+
return this.bytes.subarray(start, this.offset);
|
|
35
|
+
}
|
|
36
|
+
expectU8(expected, label) {
|
|
37
|
+
if (this.readU8(label) !== expected) {
|
|
38
|
+
throw new Error(`Authority EntryV0 has invalid ${label}`);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
expectDone(label) {
|
|
42
|
+
if (this.offset !== this.bytes.byteLength) {
|
|
43
|
+
throw new Error(`Authority EntryV0 has trailing ${label} bytes`);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
requireRemaining(byteLength, label) {
|
|
47
|
+
if (!Number.isSafeInteger(byteLength) ||
|
|
48
|
+
byteLength < 0 ||
|
|
49
|
+
byteLength > this.bytes.byteLength - this.offset) {
|
|
50
|
+
throw new Error(`Authority EntryV0 has truncated ${label}`);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
const readPublicWrapperV2 = (reader, label) => {
|
|
55
|
+
reader.expectU8(0, `${label} MaybeEncrypted variant`);
|
|
56
|
+
reader.expectU8(0, `${label} DecryptedThing variant`);
|
|
57
|
+
return reader.readBytes(label);
|
|
58
|
+
};
|
|
59
|
+
const scanMetaV2 = (metaBytes, authorityBytes, maximumDirectParents) => {
|
|
60
|
+
const reader = new BoundsReaderV2(metaBytes);
|
|
61
|
+
reader.expectU8(0, "metadata variant");
|
|
62
|
+
reader.expectU8(0, "clock variant");
|
|
63
|
+
if (!equals(reader.readBytes("clock id"), authorityBytes)) {
|
|
64
|
+
throw new Error("Authority EntryV0 clock id is not the policy authority");
|
|
65
|
+
}
|
|
66
|
+
reader.expectU8(0, "timestamp variant");
|
|
67
|
+
reader.readExact(8, "timestamp wall time");
|
|
68
|
+
reader.readExact(4, "timestamp logical time");
|
|
69
|
+
reader.readBytes("gid");
|
|
70
|
+
const directParentCount = reader.readU32("direct-parent count");
|
|
71
|
+
if (directParentCount > maximumDirectParents) {
|
|
72
|
+
throw new Error(`Authority EntryV0 may contain at most ${maximumDirectParents} direct parents`);
|
|
73
|
+
}
|
|
74
|
+
for (let i = 0; i < directParentCount; i++) {
|
|
75
|
+
reader.readBytes("direct parent");
|
|
76
|
+
}
|
|
77
|
+
if (reader.readU8("entry type") !== EntryType.APPEND) {
|
|
78
|
+
throw new Error("Authority EntryV0 must be an APPEND entry");
|
|
79
|
+
}
|
|
80
|
+
const metaDataOption = reader.readU8("metadata data option");
|
|
81
|
+
if (metaDataOption === 1) {
|
|
82
|
+
reader.readBytes("metadata data");
|
|
83
|
+
}
|
|
84
|
+
else if (metaDataOption !== 0) {
|
|
85
|
+
throw new Error("Authority EntryV0 has invalid metadata data option");
|
|
86
|
+
}
|
|
87
|
+
reader.expectDone("metadata");
|
|
88
|
+
};
|
|
89
|
+
const scanPayloadV2 = (payloadBytes, exactPayloadBytes) => {
|
|
90
|
+
const reader = new BoundsReaderV2(payloadBytes);
|
|
91
|
+
reader.expectU8(0, "payload variant");
|
|
92
|
+
const data = reader.readBytes("payload data");
|
|
93
|
+
if (exactPayloadBytes !== undefined &&
|
|
94
|
+
data.byteLength !== exactPayloadBytes) {
|
|
95
|
+
throw new Error(`Authority EntryV0 payload must contain exactly ${exactPayloadBytes} bytes`);
|
|
96
|
+
}
|
|
97
|
+
reader.expectDone("payload");
|
|
98
|
+
};
|
|
99
|
+
const SECP256K1_SIGNATURE_TEXT_BYTES = 132;
|
|
100
|
+
const SECP256K1_LOW_S_MAX_HEX = "7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0";
|
|
101
|
+
const isLowerHexByteV2 = (value) => (value >= 0x30 && value <= 0x39) || (value >= 0x61 && value <= 0x66);
|
|
102
|
+
const assertCanonicalSecp256k1SignatureV2 = (signature) => {
|
|
103
|
+
if (signature.byteLength !== SECP256K1_SIGNATURE_TEXT_BYTES ||
|
|
104
|
+
signature[0] !== 0x30 ||
|
|
105
|
+
signature[1] !== 0x78) {
|
|
106
|
+
throw new Error("Authority EntryV0 secp256k1 signature is not canonical");
|
|
107
|
+
}
|
|
108
|
+
for (let i = 2; i < signature.byteLength; i++) {
|
|
109
|
+
if (!isLowerHexByteV2(signature[i])) {
|
|
110
|
+
throw new Error("Authority EntryV0 secp256k1 signature is not canonical");
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
if (signature[130] !== 0x31 ||
|
|
114
|
+
(signature[131] !== 0x62 && signature[131] !== 0x63)) {
|
|
115
|
+
throw new Error("Authority EntryV0 secp256k1 signature is not canonical");
|
|
116
|
+
}
|
|
117
|
+
for (let i = 0; i < SECP256K1_LOW_S_MAX_HEX.length; i++) {
|
|
118
|
+
const actual = signature[66 + i];
|
|
119
|
+
const maximum = SECP256K1_LOW_S_MAX_HEX.charCodeAt(i);
|
|
120
|
+
if (actual < maximum)
|
|
121
|
+
break;
|
|
122
|
+
if (actual > maximum) {
|
|
123
|
+
throw new Error("Authority EntryV0 secp256k1 signature is not canonical");
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
};
|
|
127
|
+
const scanSignatureV2 = (signatureBytes, authorityBytes) => {
|
|
128
|
+
const reader = new BoundsReaderV2(signatureBytes);
|
|
129
|
+
reader.expectU8(0, "signature variant");
|
|
130
|
+
const signature = reader.readBytes("signature data");
|
|
131
|
+
const publicKeyVariant = reader.readU8("signature public-key variant");
|
|
132
|
+
const publicKeyLength = publicKeyVariant === 0 ? 32 : publicKeyVariant === 1 ? 33 : undefined;
|
|
133
|
+
if (publicKeyLength === undefined) {
|
|
134
|
+
throw new Error("Authority EntryV0 uses an unsupported signing key");
|
|
135
|
+
}
|
|
136
|
+
const publicKey = reader.readExact(publicKeyLength, "signature public key");
|
|
137
|
+
const serializedPublicKey = new Uint8Array(publicKeyLength + 1);
|
|
138
|
+
serializedPublicKey[0] = publicKeyVariant;
|
|
139
|
+
serializedPublicKey.set(publicKey, 1);
|
|
140
|
+
if (!equals(serializedPublicKey, authorityBytes)) {
|
|
141
|
+
throw new Error("Authority EntryV0 signer is not the policy authority");
|
|
142
|
+
}
|
|
143
|
+
if (publicKeyVariant === 1) {
|
|
144
|
+
assertCanonicalSecp256k1SignatureV2(signature);
|
|
145
|
+
}
|
|
146
|
+
reader.readU8("signature prehash");
|
|
147
|
+
reader.expectDone("signature");
|
|
148
|
+
};
|
|
149
|
+
const scanAuthorityEntryV0 = (entryBytes, authorityBytes, limits) => {
|
|
150
|
+
const reader = new BoundsReaderV2(entryBytes);
|
|
151
|
+
reader.expectU8(0, "entry variant");
|
|
152
|
+
const metaBytes = readPublicWrapperV2(reader, "metadata");
|
|
153
|
+
const payloadBytes = readPublicWrapperV2(reader, "payload");
|
|
154
|
+
const reserved = reader.readExact(4, "reserved bytes");
|
|
155
|
+
if (reserved[0] !== 0 ||
|
|
156
|
+
reserved[1] !== 0 ||
|
|
157
|
+
reserved[2] !== 0 ||
|
|
158
|
+
reserved[3] !== 0) {
|
|
159
|
+
throw new Error("Authority EntryV0 reserved bytes must be zero");
|
|
160
|
+
}
|
|
161
|
+
const signablePrefixLength = reader.position;
|
|
162
|
+
reader.expectU8(1, "signatures option");
|
|
163
|
+
reader.expectU8(0, "signatures variant");
|
|
164
|
+
if (reader.readU32("signature count") !== 1) {
|
|
165
|
+
throw new Error("Authority EntryV0 must contain exactly one signature");
|
|
166
|
+
}
|
|
167
|
+
const signatureBytes = readPublicWrapperV2(reader, "signature");
|
|
168
|
+
reader.expectU8(0, "hash option");
|
|
169
|
+
reader.expectDone("storage");
|
|
170
|
+
scanMetaV2(metaBytes, authorityBytes, limits.maximumDirectParents);
|
|
171
|
+
scanPayloadV2(payloadBytes, limits.exactPayloadBytes);
|
|
172
|
+
scanSignatureV2(signatureBytes, authorityBytes);
|
|
173
|
+
const signableBytes = new Uint8Array(signablePrefixLength + 2);
|
|
174
|
+
signableBytes.set(entryBytes.subarray(0, signablePrefixLength));
|
|
175
|
+
return { metaBytes, payloadBytes, signatureBytes, signableBytes };
|
|
176
|
+
};
|
|
177
|
+
const validateLimitsV2 = (limits) => {
|
|
178
|
+
if (!Number.isSafeInteger(limits.maximumEntryBytes) ||
|
|
179
|
+
limits.maximumEntryBytes < 1 ||
|
|
180
|
+
!Number.isSafeInteger(limits.maximumDirectParents) ||
|
|
181
|
+
limits.maximumDirectParents < 0 ||
|
|
182
|
+
(limits.exactPayloadBytes !== undefined &&
|
|
183
|
+
(!Number.isSafeInteger(limits.exactPayloadBytes) ||
|
|
184
|
+
limits.exactPayloadBytes < 0))) {
|
|
185
|
+
throw new Error("Invalid internal authority EntryV0 limits");
|
|
186
|
+
}
|
|
187
|
+
};
|
|
188
|
+
const canonicalDirectParentsV2 = (parents) => {
|
|
189
|
+
const seen = new Set();
|
|
190
|
+
return parents.map((cid) => {
|
|
191
|
+
let parsed;
|
|
192
|
+
try {
|
|
193
|
+
parsed = cidifyString(cid);
|
|
194
|
+
}
|
|
195
|
+
catch {
|
|
196
|
+
throw new Error("Authority EntryV0 direct parents must use canonical CIDv1/raw/sha2-256");
|
|
197
|
+
}
|
|
198
|
+
if (!cid ||
|
|
199
|
+
parsed.version !== 1 ||
|
|
200
|
+
parsed.code !== codecMap.raw.code ||
|
|
201
|
+
parsed.multihash.code !== defaultHasher.code ||
|
|
202
|
+
parsed.multihash.digest.byteLength !== 32 ||
|
|
203
|
+
stringifyCid(parsed) !== cid) {
|
|
204
|
+
throw new Error("Authority EntryV0 direct parents must use canonical CIDv1/raw/sha2-256");
|
|
205
|
+
}
|
|
206
|
+
if (seen.has(cid)) {
|
|
207
|
+
throw new Error("Authority EntryV0 direct parents must be unique");
|
|
208
|
+
}
|
|
209
|
+
seen.add(cid);
|
|
210
|
+
return {
|
|
211
|
+
cid,
|
|
212
|
+
digest: copyUint8ArrayV2(parsed.multihash.digest),
|
|
213
|
+
};
|
|
214
|
+
});
|
|
215
|
+
};
|
|
216
|
+
/**
|
|
217
|
+
* Authenticate one bounded raw EntryV0 authority envelope. This establishes
|
|
218
|
+
* canonical bytes, authority signature, and structural facts only. It does not
|
|
219
|
+
* establish policy acceptance, causal ancestry, freshness, or durability.
|
|
220
|
+
*/
|
|
221
|
+
export const authenticateAuthorityEntryV0V2 = async (entryBytes, descriptor, limits) => {
|
|
222
|
+
validateLimitsV2(limits);
|
|
223
|
+
let byteLength;
|
|
224
|
+
try {
|
|
225
|
+
byteLength = exactUint8ArrayByteLengthV2(entryBytes);
|
|
226
|
+
}
|
|
227
|
+
catch {
|
|
228
|
+
throw new Error("Authority entry must use canonical EntryV0 bytes");
|
|
229
|
+
}
|
|
230
|
+
if (byteLength < 1 || byteLength > limits.maximumEntryBytes) {
|
|
231
|
+
throw new Error(`Authority EntryV0 must contain 1-${limits.maximumEntryBytes} bytes`);
|
|
232
|
+
}
|
|
233
|
+
const capturedEntryBytes = copyUint8ArrayWithLengthV2(entryBytes, byteLength);
|
|
234
|
+
assertNetworkDescriptorV2(descriptor);
|
|
235
|
+
const authorityBytes = serialize(descriptor.policyAuthority);
|
|
236
|
+
const scanned = scanAuthorityEntryV0(capturedEntryBytes, authorityBytes, limits);
|
|
237
|
+
const capturedDescriptor = deserialize(serialize(descriptor), NetworkDescriptorV2);
|
|
238
|
+
assertNetworkDescriptorV2(capturedDescriptor);
|
|
239
|
+
if (!equals(serialize(capturedDescriptor.policyAuthority), authorityBytes)) {
|
|
240
|
+
throw new Error("Network descriptor changed during capture");
|
|
241
|
+
}
|
|
242
|
+
const entry = deserialize(capturedEntryBytes, Entry);
|
|
243
|
+
if (!(entry instanceof EntryV0)) {
|
|
244
|
+
throw new Error("Authority entry must use EntryV0");
|
|
245
|
+
}
|
|
246
|
+
if (!equals(capturedEntryBytes, serialize(entry))) {
|
|
247
|
+
throw new Error("Authority EntryV0 storage is not canonical");
|
|
248
|
+
}
|
|
249
|
+
if (!(entry._meta instanceof DecryptedThing)) {
|
|
250
|
+
throw new Error("Authority EntryV0 metadata must be public");
|
|
251
|
+
}
|
|
252
|
+
if (!(entry._payload instanceof DecryptedThing)) {
|
|
253
|
+
throw new Error("Authority EntryV0 payload must be public");
|
|
254
|
+
}
|
|
255
|
+
if (entry._signatures === undefined ||
|
|
256
|
+
entry._signatures.signatures.length !== 1 ||
|
|
257
|
+
!(entry._signatures.signatures[0] instanceof DecryptedThing)) {
|
|
258
|
+
throw new Error("Authority EntryV0 must contain one public signature");
|
|
259
|
+
}
|
|
260
|
+
entry.init({ encoding: NO_ENCODING });
|
|
261
|
+
const meta = entry.meta;
|
|
262
|
+
const payload = entry.payload;
|
|
263
|
+
const signatures = entry.signatures;
|
|
264
|
+
if (!equals(scanned.metaBytes, serialize(meta)) ||
|
|
265
|
+
!equals(scanned.payloadBytes, serialize(payload)) ||
|
|
266
|
+
!equals(scanned.signatureBytes, serialize(signatures[0]))) {
|
|
267
|
+
throw new Error("Authority EntryV0 nested encoding is not canonical");
|
|
268
|
+
}
|
|
269
|
+
if (meta.type !== EntryType.APPEND ||
|
|
270
|
+
meta.next.length > limits.maximumDirectParents ||
|
|
271
|
+
!equals(meta.clock.id, authorityBytes)) {
|
|
272
|
+
throw new Error("Authority EntryV0 metadata does not match its profile");
|
|
273
|
+
}
|
|
274
|
+
if (signatures.length !== 1 ||
|
|
275
|
+
!equals(serialize(signatures[0].publicKey), authorityBytes)) {
|
|
276
|
+
throw new Error("Authority EntryV0 signer is not the policy authority");
|
|
277
|
+
}
|
|
278
|
+
if (limits.exactPayloadBytes !== undefined &&
|
|
279
|
+
payload.data.byteLength !== limits.exactPayloadBytes) {
|
|
280
|
+
throw new Error(`Authority EntryV0 payload must contain exactly ${limits.exactPayloadBytes} bytes`);
|
|
281
|
+
}
|
|
282
|
+
let signatureIsValid = false;
|
|
283
|
+
try {
|
|
284
|
+
signatureIsValid = await verify(signatures[0], scanned.signableBytes);
|
|
285
|
+
}
|
|
286
|
+
catch {
|
|
287
|
+
// Unsupported prehashes and malformed signatures fail closed.
|
|
288
|
+
}
|
|
289
|
+
if (!signatureIsValid) {
|
|
290
|
+
throw new Error("Authority EntryV0 signature is invalid");
|
|
291
|
+
}
|
|
292
|
+
const prepared = await calculateRawCid(capturedEntryBytes);
|
|
293
|
+
return {
|
|
294
|
+
descriptor: capturedDescriptor,
|
|
295
|
+
entryBytes: capturedEntryBytes,
|
|
296
|
+
entryCid: prepared.cid,
|
|
297
|
+
entryDigest: copyUint8ArrayV2(prepared.block.cid.multihash.digest),
|
|
298
|
+
gid: meta.gid,
|
|
299
|
+
metaData: meta.data === undefined ? undefined : copyUint8ArrayV2(meta.data),
|
|
300
|
+
directParents: canonicalDirectParentsV2(meta.next),
|
|
301
|
+
payloadBytes: copyUint8ArrayV2(payload.data),
|
|
302
|
+
};
|
|
303
|
+
};
|
|
304
|
+
//# sourceMappingURL=v2-authority-entry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"v2-authority-entry.js","sourceRoot":"","sources":["../../src/v2-authority-entry.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { NetworkDescriptorV2, ResourceFenceV2 } from "./v2.js";
|
|
2
|
+
export type AuthenticatedResourceFenceEntryV2 = Readonly<{
|
|
3
|
+
entryBytes: Uint8Array;
|
|
4
|
+
entryCid: string;
|
|
5
|
+
digest: Uint8Array;
|
|
6
|
+
body: ResourceFenceV2;
|
|
7
|
+
gid: string;
|
|
8
|
+
metaData?: Uint8Array;
|
|
9
|
+
directParents: ReadonlyArray<Readonly<{
|
|
10
|
+
cid: string;
|
|
11
|
+
digest: Uint8Array;
|
|
12
|
+
}>>;
|
|
13
|
+
}>;
|
|
14
|
+
export type AuthenticateResourceFenceEntryV2Properties = Readonly<{
|
|
15
|
+
entryBytes: Uint8Array;
|
|
16
|
+
descriptor: NetworkDescriptorV2;
|
|
17
|
+
expectedResourceId: Uint8Array;
|
|
18
|
+
expectedGid: string;
|
|
19
|
+
}>;
|
|
20
|
+
/**
|
|
21
|
+
* Authenticate a raw resource-fence EntryV0 against immutable resource
|
|
22
|
+
* context. The returned token does not prove policy acceptance, causal
|
|
23
|
+
* ancestry, fork freedom, freshness, or durability.
|
|
24
|
+
*/
|
|
25
|
+
export declare const authenticateResourceFenceEntryV2: ({ entryBytes, descriptor, expectedResourceId, expectedGid, }: AuthenticateResourceFenceEntryV2Properties) => Promise<AuthenticatedResourceFenceEntryV2>;
|
|
26
|
+
//# sourceMappingURL=v2-resource-fence-entry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"v2-resource-fence-entry.d.ts","sourceRoot":"","sources":["../../src/v2-resource-fence-entry.ts"],"names":[],"mappings":"AAKA,OAAO,EACN,mBAAmB,EACnB,eAAe,EAOf,MAAM,SAAS,CAAC;AAQjB,MAAM,MAAM,iCAAiC,GAAG,QAAQ,CAAC;IACxD,UAAU,EAAE,UAAU,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,UAAU,CAAC;IACnB,IAAI,EAAE,eAAe,CAAC;IACtB,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,CAAC,EAAE,UAAU,CAAC;IACtB,aAAa,EAAE,aAAa,CAAC,QAAQ,CAAC;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,UAAU,CAAA;KAAE,CAAC,CAAC,CAAC;CAC5E,CAAC,CAAC;AAEH,MAAM,MAAM,0CAA0C,GAAG,QAAQ,CAAC;IACjE,UAAU,EAAE,UAAU,CAAC;IACvB,UAAU,EAAE,mBAAmB,CAAC;IAChC,kBAAkB,EAAE,UAAU,CAAC;IAC/B,WAAW,EAAE,MAAM,CAAC;CACpB,CAAC,CAAC;AA4BH;;;;GAIG;AACH,eAAO,MAAM,gCAAgC,GAAU,8DAKpD,0CAA0C,KAAG,OAAO,CAAC,iCAAiC,CAqBxF,CAAC"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { equals } from "uint8arrays";
|
|
2
|
+
import { authenticateAuthorityEntryV0V2, } from "./v2-authority-entry.js";
|
|
3
|
+
import { NetworkDescriptorV2, ResourceFenceV2, TRUSTED_NETWORK_V2_MAX_RESOURCE_FENCE_DIRECT_PARENTS, TRUSTED_NETWORK_V2_MAX_RESOURCE_FENCE_ENTRY_BYTES, TRUSTED_NETWORK_V2_RESOURCE_FENCE_BODY_BYTES, copyUint8ArrayWithLengthV2, decodeResourceFenceV2, exactUint8ArrayByteLengthV2, } from "./v2.js";
|
|
4
|
+
const RESOURCE_FENCE_AUTHORITY_LIMITS_V2 = Object.freeze({
|
|
5
|
+
maximumEntryBytes: TRUSTED_NETWORK_V2_MAX_RESOURCE_FENCE_ENTRY_BYTES,
|
|
6
|
+
maximumDirectParents: TRUSTED_NETWORK_V2_MAX_RESOURCE_FENCE_DIRECT_PARENTS,
|
|
7
|
+
exactPayloadBytes: TRUSTED_NETWORK_V2_RESOURCE_FENCE_BODY_BYTES,
|
|
8
|
+
});
|
|
9
|
+
const captureResourceIdV2 = (resourceId) => {
|
|
10
|
+
let byteLength;
|
|
11
|
+
try {
|
|
12
|
+
byteLength = exactUint8ArrayByteLengthV2(resourceId);
|
|
13
|
+
}
|
|
14
|
+
catch {
|
|
15
|
+
throw new Error("Expected resource id must contain exactly 32 bytes");
|
|
16
|
+
}
|
|
17
|
+
if (byteLength !== 32) {
|
|
18
|
+
throw new Error("Expected resource id must contain exactly 32 bytes");
|
|
19
|
+
}
|
|
20
|
+
return copyUint8ArrayWithLengthV2(resourceId, byteLength);
|
|
21
|
+
};
|
|
22
|
+
const toResourceFenceTokenV2 = (authenticated, body) => ({
|
|
23
|
+
entryBytes: authenticated.entryBytes,
|
|
24
|
+
entryCid: authenticated.entryCid,
|
|
25
|
+
digest: authenticated.entryDigest,
|
|
26
|
+
body,
|
|
27
|
+
gid: authenticated.gid,
|
|
28
|
+
metaData: authenticated.metaData,
|
|
29
|
+
directParents: authenticated.directParents,
|
|
30
|
+
});
|
|
31
|
+
/**
|
|
32
|
+
* Authenticate a raw resource-fence EntryV0 against immutable resource
|
|
33
|
+
* context. The returned token does not prove policy acceptance, causal
|
|
34
|
+
* ancestry, fork freedom, freshness, or durability.
|
|
35
|
+
*/
|
|
36
|
+
export const authenticateResourceFenceEntryV2 = async ({ entryBytes, descriptor, expectedResourceId, expectedGid, }) => {
|
|
37
|
+
if (typeof expectedGid !== "string") {
|
|
38
|
+
throw new Error("Expected resource gid must be a string");
|
|
39
|
+
}
|
|
40
|
+
const capturedResourceId = captureResourceIdV2(expectedResourceId);
|
|
41
|
+
const authenticated = await authenticateAuthorityEntryV0V2(entryBytes, descriptor, RESOURCE_FENCE_AUTHORITY_LIMITS_V2);
|
|
42
|
+
if (authenticated.gid !== expectedGid) {
|
|
43
|
+
throw new Error("Resource fence belongs to another resource log");
|
|
44
|
+
}
|
|
45
|
+
const body = decodeResourceFenceV2(authenticated.payloadBytes, authenticated.descriptor);
|
|
46
|
+
if (!equals(body.resourceId, capturedResourceId)) {
|
|
47
|
+
throw new Error("Resource fence belongs to another resource");
|
|
48
|
+
}
|
|
49
|
+
return toResourceFenceTokenV2(authenticated, body);
|
|
50
|
+
};
|
|
51
|
+
//# sourceMappingURL=v2-resource-fence-entry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"v2-resource-fence-entry.js","sourceRoot":"","sources":["../../src/v2-resource-fence-entry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAEN,8BAA8B,GAC9B,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACN,mBAAmB,EACnB,eAAe,EACf,oDAAoD,EACpD,iDAAiD,EACjD,4CAA4C,EAC5C,0BAA0B,EAC1B,qBAAqB,EACrB,2BAA2B,GAC3B,MAAM,SAAS,CAAC;AAEjB,MAAM,kCAAkC,GAAG,MAAM,CAAC,MAAM,CAAC;IACxD,iBAAiB,EAAE,iDAAiD;IACpE,oBAAoB,EAAE,oDAAoD;IAC1E,iBAAiB,EAAE,4CAA4C;CAC/D,CAAC,CAAC;AAmBH,MAAM,mBAAmB,GAAG,CAAC,UAAsB,EAAc,EAAE;IAClE,IAAI,UAAkB,CAAC;IACvB,IAAI,CAAC;QACJ,UAAU,GAAG,2BAA2B,CAAC,UAAU,CAAC,CAAC;IACtD,CAAC;IAAC,MAAM,CAAC;QACR,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAC;IACvE,CAAC;IACD,IAAI,UAAU,KAAK,EAAE,EAAE,CAAC;QACvB,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAC;IACvE,CAAC;IACD,OAAO,0BAA0B,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;AAC3D,CAAC,CAAC;AAEF,MAAM,sBAAsB,GAAG,CAC9B,aAA8C,EAC9C,IAAqB,EACe,EAAE,CAAC,CAAC;IACxC,UAAU,EAAE,aAAa,CAAC,UAAU;IACpC,QAAQ,EAAE,aAAa,CAAC,QAAQ;IAChC,MAAM,EAAE,aAAa,CAAC,WAAW;IACjC,IAAI;IACJ,GAAG,EAAE,aAAa,CAAC,GAAG;IACtB,QAAQ,EAAE,aAAa,CAAC,QAAQ;IAChC,aAAa,EAAE,aAAa,CAAC,aAAa;CAC1C,CAAC,CAAC;AAEH;;;;GAIG;AACH,MAAM,CAAC,MAAM,gCAAgC,GAAG,KAAK,EAAE,EACtD,UAAU,EACV,UAAU,EACV,kBAAkB,EAClB,WAAW,GACiC,EAA8C,EAAE;IAC5F,IAAI,OAAO,WAAW,KAAK,QAAQ,EAAE,CAAC;QACrC,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;IAC3D,CAAC;IACD,MAAM,kBAAkB,GAAG,mBAAmB,CAAC,kBAAkB,CAAC,CAAC;IACnE,MAAM,aAAa,GAAG,MAAM,8BAA8B,CACzD,UAAU,EACV,UAAU,EACV,kCAAkC,CAClC,CAAC;IACF,IAAI,aAAa,CAAC,GAAG,KAAK,WAAW,EAAE,CAAC;QACvC,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;IACnE,CAAC;IACD,MAAM,IAAI,GAAG,qBAAqB,CACjC,aAAa,CAAC,YAAY,EAC1B,aAAa,CAAC,UAAU,CACxB,CAAC;IACF,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,kBAAkB,CAAC,EAAE,CAAC;QAClD,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;IAC/D,CAAC;IACD,OAAO,sBAAsB,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;AACpD,CAAC,CAAC"}
|
package/dist/src/v2.d.ts
CHANGED
|
@@ -23,6 +23,12 @@ export declare const TRUSTED_NETWORK_V2_ENTRY_V0_AUTHORITY_ONLY_SIGNATURE_PROFIL
|
|
|
23
23
|
* it is part of signature profile 1 rather than a replica-local resource knob.
|
|
24
24
|
*/
|
|
25
25
|
export declare const TRUSTED_NETWORK_V2_MAX_POLICY_ENTRY_BYTES: number;
|
|
26
|
+
/**
|
|
27
|
+
* Consensus bounds for a canonical signed resource-fence EntryV0. These are
|
|
28
|
+
* protocol constants, not resource-adapter configuration.
|
|
29
|
+
*/
|
|
30
|
+
export declare const TRUSTED_NETWORK_V2_MAX_RESOURCE_FENCE_ENTRY_BYTES: number;
|
|
31
|
+
export declare const TRUSTED_NETWORK_V2_MAX_RESOURCE_FENCE_DIRECT_PARENTS = 64;
|
|
26
32
|
export declare const TRUSTED_NETWORK_V2_NETWORK_ID_DOMAIN = "peerbit/trusted-network/v2/network-id/v1";
|
|
27
33
|
export declare const TRUSTED_NETWORK_V2_POLICY_DIGEST_DOMAIN = "peerbit/trusted-network/v2/policy-body/v1";
|
|
28
34
|
/** Fixed first-profile record lengths. Changing either requires a new variant. */
|
|
@@ -35,6 +41,9 @@ export declare const TrustedNetworkRole: Readonly<{
|
|
|
35
41
|
readonly REPLICATOR: 8;
|
|
36
42
|
}>;
|
|
37
43
|
export declare const TRUSTED_NETWORK_V2_KNOWN_ROLE_BITS: number;
|
|
44
|
+
export declare const exactUint8ArrayByteLengthV2: (value: unknown) => number;
|
|
45
|
+
export declare const copyUint8ArrayWithLengthV2: (value: Uint8Array, byteLength: number) => Uint8Array;
|
|
46
|
+
export declare const copyUint8ArrayV2: (value: Uint8Array) => Uint8Array;
|
|
38
47
|
export declare class NetworkDescriptorV2 {
|
|
39
48
|
protocolVersion: number;
|
|
40
49
|
networkNonce: Uint8Array;
|
package/dist/src/v2.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"v2.d.ts","sourceRoot":"","sources":["../../src/v2.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,aAAa,EAAc,MAAM,iBAAiB,CAAC;AAC5D,OAAO,EACN,OAAO,EACP,KAAK,aAAa,EAClB,KAAK,4BAA4B,EACjC,MAAM,kBAAkB,CAAC;AAG1B;;;;;;GAMG;AAEH,eAAO,MAAM,mCAAmC,IAAI,CAAC;AACrD,eAAO,MAAM,qCAAqC,IAAI,CAAC;AAEvD;;;;;;GAMG;AACH,eAAO,MAAM,4DAA4D,IAAI,CAAC;AAE9E;;;;GAIG;AACH,eAAO,MAAM,yCAAyC,QAAa,CAAC;AAEpE,eAAO,MAAM,oCAAoC,6CACN,CAAC;AAC5C,eAAO,MAAM,uCAAuC,8CACR,CAAC;AAE7C,kFAAkF;AAClF,eAAO,MAAM,4CAA4C,MAAM,CAAC;AAChE,eAAO,MAAM,+CAA+C,MAAM,CAAC;AAEnE,eAAO,MAAM,kBAAkB;;;;;EAKpB,CAAC;AAEZ,eAAO,MAAM,kCAAkC,QAIjB,CAAC;
|
|
1
|
+
{"version":3,"file":"v2.d.ts","sourceRoot":"","sources":["../../src/v2.ts"],"names":[],"mappings":"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"}
|
package/dist/src/v2.js
CHANGED
|
@@ -59,6 +59,12 @@ export const TRUSTED_NETWORK_V2_ENTRY_V0_AUTHORITY_ONLY_SIGNATURE_PROFILE = 1;
|
|
|
59
59
|
* it is part of signature profile 1 rather than a replica-local resource knob.
|
|
60
60
|
*/
|
|
61
61
|
export const TRUSTED_NETWORK_V2_MAX_POLICY_ENTRY_BYTES = 128 * 1024;
|
|
62
|
+
/**
|
|
63
|
+
* Consensus bounds for a canonical signed resource-fence EntryV0. These are
|
|
64
|
+
* protocol constants, not resource-adapter configuration.
|
|
65
|
+
*/
|
|
66
|
+
export const TRUSTED_NETWORK_V2_MAX_RESOURCE_FENCE_ENTRY_BYTES = 8 * 1024;
|
|
67
|
+
export const TRUSTED_NETWORK_V2_MAX_RESOURCE_FENCE_DIRECT_PARENTS = 64;
|
|
62
68
|
export const TRUSTED_NETWORK_V2_NETWORK_ID_DOMAIN = "peerbit/trusted-network/v2/network-id/v1";
|
|
63
69
|
export const TRUSTED_NETWORK_V2_POLICY_DIGEST_DOMAIN = "peerbit/trusted-network/v2/policy-body/v1";
|
|
64
70
|
/** Fixed first-profile record lengths. Changing either requires a new variant. */
|
|
@@ -79,7 +85,7 @@ const textEncoder = new TextEncoder();
|
|
|
79
85
|
const TYPED_ARRAY_PROTOTYPE = Object.getPrototypeOf(Uint8Array.prototype);
|
|
80
86
|
const TYPED_ARRAY_BYTE_LENGTH = Object.getOwnPropertyDescriptor(TYPED_ARRAY_PROTOTYPE, "byteLength").get;
|
|
81
87
|
const TYPED_ARRAY_TAG = Object.getOwnPropertyDescriptor(TYPED_ARRAY_PROTOTYPE, Symbol.toStringTag).get;
|
|
82
|
-
const
|
|
88
|
+
export const exactUint8ArrayByteLengthV2 = (value) => {
|
|
83
89
|
if (!ArrayBuffer.isView(value) ||
|
|
84
90
|
TYPED_ARRAY_TAG.call(value) !== "Uint8Array") {
|
|
85
91
|
throw new TypeError("Expected a genuine Uint8Array");
|
|
@@ -90,6 +96,15 @@ const exactUint8ArrayByteLength = (value) => {
|
|
|
90
96
|
}
|
|
91
97
|
return byteLength;
|
|
92
98
|
};
|
|
99
|
+
export const copyUint8ArrayWithLengthV2 = (value, byteLength) => {
|
|
100
|
+
const copy = new Uint8Array(byteLength);
|
|
101
|
+
Uint8Array.prototype.set.call(copy, value);
|
|
102
|
+
return copy;
|
|
103
|
+
};
|
|
104
|
+
export const copyUint8ArrayV2 = (value) => {
|
|
105
|
+
const byteLength = exactUint8ArrayByteLengthV2(value);
|
|
106
|
+
return copyUint8ArrayWithLengthV2(value, byteLength);
|
|
107
|
+
};
|
|
93
108
|
const assertByte = (value, label) => {
|
|
94
109
|
if (!Number.isInteger(value) || value < 0 || value > 0xff) {
|
|
95
110
|
throw new Error(`${label} must be a u8`);
|
|
@@ -108,7 +123,7 @@ const assertU64 = (value, label) => {
|
|
|
108
123
|
const assertBytes32 = (value, label) => {
|
|
109
124
|
let byteLength;
|
|
110
125
|
try {
|
|
111
|
-
byteLength =
|
|
126
|
+
byteLength = exactUint8ArrayByteLengthV2(value);
|
|
112
127
|
}
|
|
113
128
|
catch {
|
|
114
129
|
throw new Error(`${label} must contain exactly 32 bytes`);
|
|
@@ -607,7 +622,7 @@ export const assertOperationPolicyProofV2 = (proof, descriptor) => {
|
|
|
607
622
|
const decodeExactCanonicalV2 = (bytes, exactLength, type) => {
|
|
608
623
|
let byteLength;
|
|
609
624
|
try {
|
|
610
|
-
byteLength =
|
|
625
|
+
byteLength = exactUint8ArrayByteLengthV2(bytes);
|
|
611
626
|
}
|
|
612
627
|
catch {
|
|
613
628
|
throw new Error(`TrustedNetwork v2 record must contain ${exactLength} bytes`);
|
|
@@ -615,8 +630,7 @@ const decodeExactCanonicalV2 = (bytes, exactLength, type) => {
|
|
|
615
630
|
if (byteLength !== exactLength) {
|
|
616
631
|
throw new Error(`TrustedNetwork v2 record must contain ${exactLength} bytes`);
|
|
617
632
|
}
|
|
618
|
-
const captured =
|
|
619
|
-
Uint8Array.prototype.set.call(captured, bytes);
|
|
633
|
+
const captured = copyUint8ArrayWithLengthV2(bytes, byteLength);
|
|
620
634
|
const value = deserialize(captured, type);
|
|
621
635
|
assertCanonicalEncoding(captured, value);
|
|
622
636
|
return value;
|
package/dist/src/v2.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"v2.js","sourceRoot":"","sources":["../../src/v2.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"v2.js","sourceRoot":"","sources":["../../src/v2.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.113",
|
|
4
4
|
"description": "Access controller that operates on a DB",
|
|
5
5
|
"sideEffects": false,
|
|
6
6
|
"type": "module",
|
|
@@ -55,18 +55,19 @@
|
|
|
55
55
|
"@dao-xyz/borsh": "^6.0.0",
|
|
56
56
|
"@libp2p/interface": "^3.2.5",
|
|
57
57
|
"uint8arrays": "^5.1.0",
|
|
58
|
-
"@peerbit/any-store": "2.2.17",
|
|
59
58
|
"@peerbit/any-store-interface": "1.1.4",
|
|
59
|
+
"@peerbit/any-store": "2.2.17",
|
|
60
|
+
"@peerbit/blocks-interface": "2.1.7",
|
|
60
61
|
"@peerbit/crypto": "3.1.6",
|
|
61
62
|
"@peerbit/document": "15.0.18",
|
|
62
63
|
"@peerbit/log": "6.2.27",
|
|
63
|
-
"@peerbit/
|
|
64
|
-
"@peerbit/
|
|
64
|
+
"@peerbit/shared-log": "16.0.17",
|
|
65
|
+
"@peerbit/program": "6.0.57"
|
|
65
66
|
},
|
|
66
67
|
"devDependencies": {
|
|
67
68
|
"ethers": "^6.17.0",
|
|
68
|
-
"@peerbit/
|
|
69
|
-
"@peerbit/
|
|
69
|
+
"@peerbit/test-utils": "3.1.36",
|
|
70
|
+
"@peerbit/time": "3.0.1"
|
|
70
71
|
},
|
|
71
72
|
"repository": {
|
|
72
73
|
"type": "git",
|
|
@@ -0,0 +1,430 @@
|
|
|
1
|
+
import { deserialize, serialize } from "@dao-xyz/borsh";
|
|
2
|
+
import {
|
|
3
|
+
calculateRawCid,
|
|
4
|
+
cidifyString,
|
|
5
|
+
codecMap,
|
|
6
|
+
defaultHasher,
|
|
7
|
+
stringifyCid,
|
|
8
|
+
} from "@peerbit/blocks-interface";
|
|
9
|
+
import { DecryptedThing, verify } from "@peerbit/crypto";
|
|
10
|
+
import { Entry, EntryType, EntryV0, NO_ENCODING } from "@peerbit/log";
|
|
11
|
+
import { equals } from "uint8arrays";
|
|
12
|
+
import {
|
|
13
|
+
NetworkDescriptorV2,
|
|
14
|
+
assertNetworkDescriptorV2,
|
|
15
|
+
copyUint8ArrayV2,
|
|
16
|
+
copyUint8ArrayWithLengthV2,
|
|
17
|
+
exactUint8ArrayByteLengthV2,
|
|
18
|
+
} from "./v2.js";
|
|
19
|
+
|
|
20
|
+
/** Internal limits selected by a concrete TrustedNetwork v2 record profile. */
|
|
21
|
+
export type AuthorityEntryV0LimitsV2 = {
|
|
22
|
+
maximumEntryBytes: number;
|
|
23
|
+
maximumDirectParents: number;
|
|
24
|
+
exactPayloadBytes?: number;
|
|
25
|
+
};
|
|
26
|
+
|
|
27
|
+
export type AuthenticatedAuthorityEntryV0V2 = {
|
|
28
|
+
descriptor: NetworkDescriptorV2;
|
|
29
|
+
entryBytes: Uint8Array;
|
|
30
|
+
entryCid: string;
|
|
31
|
+
entryDigest: Uint8Array;
|
|
32
|
+
gid: string;
|
|
33
|
+
metaData?: Uint8Array;
|
|
34
|
+
directParents: Array<{ cid: string; digest: Uint8Array }>;
|
|
35
|
+
payloadBytes: Uint8Array;
|
|
36
|
+
};
|
|
37
|
+
|
|
38
|
+
type ScannedAuthorityEntryV0 = {
|
|
39
|
+
metaBytes: Uint8Array;
|
|
40
|
+
payloadBytes: Uint8Array;
|
|
41
|
+
signatureBytes: Uint8Array;
|
|
42
|
+
signableBytes: Uint8Array;
|
|
43
|
+
};
|
|
44
|
+
|
|
45
|
+
class BoundsReaderV2 {
|
|
46
|
+
private offset = 0;
|
|
47
|
+
private readonly view: DataView;
|
|
48
|
+
|
|
49
|
+
constructor(private readonly bytes: Uint8Array) {
|
|
50
|
+
this.view = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength);
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
get position(): number {
|
|
54
|
+
return this.offset;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
readU8(label: string): number {
|
|
58
|
+
return this.readExact(1, label)[0]!;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
readU32(label: string): number {
|
|
62
|
+
this.requireRemaining(4, label);
|
|
63
|
+
const value = this.view.getUint32(this.offset, true);
|
|
64
|
+
this.offset += 4;
|
|
65
|
+
return value;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
readBytes(label: string): Uint8Array {
|
|
69
|
+
return this.readExact(this.readU32(`${label} length`), label);
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
readExact(byteLength: number, label: string): Uint8Array {
|
|
73
|
+
this.requireRemaining(byteLength, label);
|
|
74
|
+
const start = this.offset;
|
|
75
|
+
this.offset += byteLength;
|
|
76
|
+
return this.bytes.subarray(start, this.offset);
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
expectU8(expected: number, label: string): void {
|
|
80
|
+
if (this.readU8(label) !== expected) {
|
|
81
|
+
throw new Error(`Authority EntryV0 has invalid ${label}`);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
expectDone(label: string): void {
|
|
86
|
+
if (this.offset !== this.bytes.byteLength) {
|
|
87
|
+
throw new Error(`Authority EntryV0 has trailing ${label} bytes`);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
private requireRemaining(byteLength: number, label: string): void {
|
|
92
|
+
if (
|
|
93
|
+
!Number.isSafeInteger(byteLength) ||
|
|
94
|
+
byteLength < 0 ||
|
|
95
|
+
byteLength > this.bytes.byteLength - this.offset
|
|
96
|
+
) {
|
|
97
|
+
throw new Error(`Authority EntryV0 has truncated ${label}`);
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
const readPublicWrapperV2 = (
|
|
103
|
+
reader: BoundsReaderV2,
|
|
104
|
+
label: string,
|
|
105
|
+
): Uint8Array => {
|
|
106
|
+
reader.expectU8(0, `${label} MaybeEncrypted variant`);
|
|
107
|
+
reader.expectU8(0, `${label} DecryptedThing variant`);
|
|
108
|
+
return reader.readBytes(label);
|
|
109
|
+
};
|
|
110
|
+
|
|
111
|
+
const scanMetaV2 = (
|
|
112
|
+
metaBytes: Uint8Array,
|
|
113
|
+
authorityBytes: Uint8Array,
|
|
114
|
+
maximumDirectParents: number,
|
|
115
|
+
): void => {
|
|
116
|
+
const reader = new BoundsReaderV2(metaBytes);
|
|
117
|
+
reader.expectU8(0, "metadata variant");
|
|
118
|
+
reader.expectU8(0, "clock variant");
|
|
119
|
+
if (!equals(reader.readBytes("clock id"), authorityBytes)) {
|
|
120
|
+
throw new Error("Authority EntryV0 clock id is not the policy authority");
|
|
121
|
+
}
|
|
122
|
+
reader.expectU8(0, "timestamp variant");
|
|
123
|
+
reader.readExact(8, "timestamp wall time");
|
|
124
|
+
reader.readExact(4, "timestamp logical time");
|
|
125
|
+
reader.readBytes("gid");
|
|
126
|
+
|
|
127
|
+
const directParentCount = reader.readU32("direct-parent count");
|
|
128
|
+
if (directParentCount > maximumDirectParents) {
|
|
129
|
+
throw new Error(
|
|
130
|
+
`Authority EntryV0 may contain at most ${maximumDirectParents} direct parents`,
|
|
131
|
+
);
|
|
132
|
+
}
|
|
133
|
+
for (let i = 0; i < directParentCount; i++) {
|
|
134
|
+
reader.readBytes("direct parent");
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
if (reader.readU8("entry type") !== EntryType.APPEND) {
|
|
138
|
+
throw new Error("Authority EntryV0 must be an APPEND entry");
|
|
139
|
+
}
|
|
140
|
+
const metaDataOption = reader.readU8("metadata data option");
|
|
141
|
+
if (metaDataOption === 1) {
|
|
142
|
+
reader.readBytes("metadata data");
|
|
143
|
+
} else if (metaDataOption !== 0) {
|
|
144
|
+
throw new Error("Authority EntryV0 has invalid metadata data option");
|
|
145
|
+
}
|
|
146
|
+
reader.expectDone("metadata");
|
|
147
|
+
};
|
|
148
|
+
|
|
149
|
+
const scanPayloadV2 = (
|
|
150
|
+
payloadBytes: Uint8Array,
|
|
151
|
+
exactPayloadBytes?: number,
|
|
152
|
+
): void => {
|
|
153
|
+
const reader = new BoundsReaderV2(payloadBytes);
|
|
154
|
+
reader.expectU8(0, "payload variant");
|
|
155
|
+
const data = reader.readBytes("payload data");
|
|
156
|
+
if (
|
|
157
|
+
exactPayloadBytes !== undefined &&
|
|
158
|
+
data.byteLength !== exactPayloadBytes
|
|
159
|
+
) {
|
|
160
|
+
throw new Error(
|
|
161
|
+
`Authority EntryV0 payload must contain exactly ${exactPayloadBytes} bytes`,
|
|
162
|
+
);
|
|
163
|
+
}
|
|
164
|
+
reader.expectDone("payload");
|
|
165
|
+
};
|
|
166
|
+
|
|
167
|
+
const SECP256K1_SIGNATURE_TEXT_BYTES = 132;
|
|
168
|
+
const SECP256K1_LOW_S_MAX_HEX =
|
|
169
|
+
"7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0";
|
|
170
|
+
|
|
171
|
+
const isLowerHexByteV2 = (value: number): boolean =>
|
|
172
|
+
(value >= 0x30 && value <= 0x39) || (value >= 0x61 && value <= 0x66);
|
|
173
|
+
|
|
174
|
+
const assertCanonicalSecp256k1SignatureV2 = (signature: Uint8Array): void => {
|
|
175
|
+
if (
|
|
176
|
+
signature.byteLength !== SECP256K1_SIGNATURE_TEXT_BYTES ||
|
|
177
|
+
signature[0] !== 0x30 ||
|
|
178
|
+
signature[1] !== 0x78
|
|
179
|
+
) {
|
|
180
|
+
throw new Error("Authority EntryV0 secp256k1 signature is not canonical");
|
|
181
|
+
}
|
|
182
|
+
for (let i = 2; i < signature.byteLength; i++) {
|
|
183
|
+
if (!isLowerHexByteV2(signature[i]!)) {
|
|
184
|
+
throw new Error("Authority EntryV0 secp256k1 signature is not canonical");
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
if (
|
|
188
|
+
signature[130] !== 0x31 ||
|
|
189
|
+
(signature[131] !== 0x62 && signature[131] !== 0x63)
|
|
190
|
+
) {
|
|
191
|
+
throw new Error("Authority EntryV0 secp256k1 signature is not canonical");
|
|
192
|
+
}
|
|
193
|
+
for (let i = 0; i < SECP256K1_LOW_S_MAX_HEX.length; i++) {
|
|
194
|
+
const actual = signature[66 + i]!;
|
|
195
|
+
const maximum = SECP256K1_LOW_S_MAX_HEX.charCodeAt(i);
|
|
196
|
+
if (actual < maximum) break;
|
|
197
|
+
if (actual > maximum) {
|
|
198
|
+
throw new Error("Authority EntryV0 secp256k1 signature is not canonical");
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
};
|
|
202
|
+
|
|
203
|
+
const scanSignatureV2 = (
|
|
204
|
+
signatureBytes: Uint8Array,
|
|
205
|
+
authorityBytes: Uint8Array,
|
|
206
|
+
): void => {
|
|
207
|
+
const reader = new BoundsReaderV2(signatureBytes);
|
|
208
|
+
reader.expectU8(0, "signature variant");
|
|
209
|
+
const signature = reader.readBytes("signature data");
|
|
210
|
+
const publicKeyVariant = reader.readU8("signature public-key variant");
|
|
211
|
+
const publicKeyLength =
|
|
212
|
+
publicKeyVariant === 0 ? 32 : publicKeyVariant === 1 ? 33 : undefined;
|
|
213
|
+
if (publicKeyLength === undefined) {
|
|
214
|
+
throw new Error("Authority EntryV0 uses an unsupported signing key");
|
|
215
|
+
}
|
|
216
|
+
const publicKey = reader.readExact(publicKeyLength, "signature public key");
|
|
217
|
+
const serializedPublicKey = new Uint8Array(publicKeyLength + 1);
|
|
218
|
+
serializedPublicKey[0] = publicKeyVariant;
|
|
219
|
+
serializedPublicKey.set(publicKey, 1);
|
|
220
|
+
if (!equals(serializedPublicKey, authorityBytes)) {
|
|
221
|
+
throw new Error("Authority EntryV0 signer is not the policy authority");
|
|
222
|
+
}
|
|
223
|
+
if (publicKeyVariant === 1) {
|
|
224
|
+
assertCanonicalSecp256k1SignatureV2(signature);
|
|
225
|
+
}
|
|
226
|
+
reader.readU8("signature prehash");
|
|
227
|
+
reader.expectDone("signature");
|
|
228
|
+
};
|
|
229
|
+
|
|
230
|
+
const scanAuthorityEntryV0 = (
|
|
231
|
+
entryBytes: Uint8Array,
|
|
232
|
+
authorityBytes: Uint8Array,
|
|
233
|
+
limits: AuthorityEntryV0LimitsV2,
|
|
234
|
+
): ScannedAuthorityEntryV0 => {
|
|
235
|
+
const reader = new BoundsReaderV2(entryBytes);
|
|
236
|
+
reader.expectU8(0, "entry variant");
|
|
237
|
+
const metaBytes = readPublicWrapperV2(reader, "metadata");
|
|
238
|
+
const payloadBytes = readPublicWrapperV2(reader, "payload");
|
|
239
|
+
const reserved = reader.readExact(4, "reserved bytes");
|
|
240
|
+
if (
|
|
241
|
+
reserved[0] !== 0 ||
|
|
242
|
+
reserved[1] !== 0 ||
|
|
243
|
+
reserved[2] !== 0 ||
|
|
244
|
+
reserved[3] !== 0
|
|
245
|
+
) {
|
|
246
|
+
throw new Error("Authority EntryV0 reserved bytes must be zero");
|
|
247
|
+
}
|
|
248
|
+
const signablePrefixLength = reader.position;
|
|
249
|
+
reader.expectU8(1, "signatures option");
|
|
250
|
+
reader.expectU8(0, "signatures variant");
|
|
251
|
+
if (reader.readU32("signature count") !== 1) {
|
|
252
|
+
throw new Error("Authority EntryV0 must contain exactly one signature");
|
|
253
|
+
}
|
|
254
|
+
const signatureBytes = readPublicWrapperV2(reader, "signature");
|
|
255
|
+
reader.expectU8(0, "hash option");
|
|
256
|
+
reader.expectDone("storage");
|
|
257
|
+
|
|
258
|
+
scanMetaV2(metaBytes, authorityBytes, limits.maximumDirectParents);
|
|
259
|
+
scanPayloadV2(payloadBytes, limits.exactPayloadBytes);
|
|
260
|
+
scanSignatureV2(signatureBytes, authorityBytes);
|
|
261
|
+
const signableBytes = new Uint8Array(signablePrefixLength + 2);
|
|
262
|
+
signableBytes.set(entryBytes.subarray(0, signablePrefixLength));
|
|
263
|
+
return { metaBytes, payloadBytes, signatureBytes, signableBytes };
|
|
264
|
+
};
|
|
265
|
+
|
|
266
|
+
const validateLimitsV2 = (limits: AuthorityEntryV0LimitsV2): void => {
|
|
267
|
+
if (
|
|
268
|
+
!Number.isSafeInteger(limits.maximumEntryBytes) ||
|
|
269
|
+
limits.maximumEntryBytes < 1 ||
|
|
270
|
+
!Number.isSafeInteger(limits.maximumDirectParents) ||
|
|
271
|
+
limits.maximumDirectParents < 0 ||
|
|
272
|
+
(limits.exactPayloadBytes !== undefined &&
|
|
273
|
+
(!Number.isSafeInteger(limits.exactPayloadBytes) ||
|
|
274
|
+
limits.exactPayloadBytes < 0))
|
|
275
|
+
) {
|
|
276
|
+
throw new Error("Invalid internal authority EntryV0 limits");
|
|
277
|
+
}
|
|
278
|
+
};
|
|
279
|
+
|
|
280
|
+
const canonicalDirectParentsV2 = (
|
|
281
|
+
parents: string[],
|
|
282
|
+
): Array<{ cid: string; digest: Uint8Array }> => {
|
|
283
|
+
const seen = new Set<string>();
|
|
284
|
+
return parents.map((cid) => {
|
|
285
|
+
let parsed: ReturnType<typeof cidifyString>;
|
|
286
|
+
try {
|
|
287
|
+
parsed = cidifyString(cid);
|
|
288
|
+
} catch {
|
|
289
|
+
throw new Error(
|
|
290
|
+
"Authority EntryV0 direct parents must use canonical CIDv1/raw/sha2-256",
|
|
291
|
+
);
|
|
292
|
+
}
|
|
293
|
+
if (
|
|
294
|
+
!cid ||
|
|
295
|
+
parsed.version !== 1 ||
|
|
296
|
+
parsed.code !== codecMap.raw.code ||
|
|
297
|
+
parsed.multihash.code !== defaultHasher.code ||
|
|
298
|
+
parsed.multihash.digest.byteLength !== 32 ||
|
|
299
|
+
stringifyCid(parsed) !== cid
|
|
300
|
+
) {
|
|
301
|
+
throw new Error(
|
|
302
|
+
"Authority EntryV0 direct parents must use canonical CIDv1/raw/sha2-256",
|
|
303
|
+
);
|
|
304
|
+
}
|
|
305
|
+
if (seen.has(cid)) {
|
|
306
|
+
throw new Error("Authority EntryV0 direct parents must be unique");
|
|
307
|
+
}
|
|
308
|
+
seen.add(cid);
|
|
309
|
+
return {
|
|
310
|
+
cid,
|
|
311
|
+
digest: copyUint8ArrayV2(parsed.multihash.digest),
|
|
312
|
+
};
|
|
313
|
+
});
|
|
314
|
+
};
|
|
315
|
+
|
|
316
|
+
/**
|
|
317
|
+
* Authenticate one bounded raw EntryV0 authority envelope. This establishes
|
|
318
|
+
* canonical bytes, authority signature, and structural facts only. It does not
|
|
319
|
+
* establish policy acceptance, causal ancestry, freshness, or durability.
|
|
320
|
+
*/
|
|
321
|
+
export const authenticateAuthorityEntryV0V2 = async (
|
|
322
|
+
entryBytes: Uint8Array,
|
|
323
|
+
descriptor: NetworkDescriptorV2,
|
|
324
|
+
limits: AuthorityEntryV0LimitsV2,
|
|
325
|
+
): Promise<AuthenticatedAuthorityEntryV0V2> => {
|
|
326
|
+
validateLimitsV2(limits);
|
|
327
|
+
let byteLength: number;
|
|
328
|
+
try {
|
|
329
|
+
byteLength = exactUint8ArrayByteLengthV2(entryBytes);
|
|
330
|
+
} catch {
|
|
331
|
+
throw new Error("Authority entry must use canonical EntryV0 bytes");
|
|
332
|
+
}
|
|
333
|
+
if (byteLength < 1 || byteLength > limits.maximumEntryBytes) {
|
|
334
|
+
throw new Error(
|
|
335
|
+
`Authority EntryV0 must contain 1-${limits.maximumEntryBytes} bytes`,
|
|
336
|
+
);
|
|
337
|
+
}
|
|
338
|
+
const capturedEntryBytes = copyUint8ArrayWithLengthV2(entryBytes, byteLength);
|
|
339
|
+
|
|
340
|
+
assertNetworkDescriptorV2(descriptor);
|
|
341
|
+
const authorityBytes = serialize(descriptor.policyAuthority);
|
|
342
|
+
const scanned = scanAuthorityEntryV0(
|
|
343
|
+
capturedEntryBytes,
|
|
344
|
+
authorityBytes,
|
|
345
|
+
limits,
|
|
346
|
+
);
|
|
347
|
+
const capturedDescriptor = deserialize(
|
|
348
|
+
serialize(descriptor),
|
|
349
|
+
NetworkDescriptorV2,
|
|
350
|
+
);
|
|
351
|
+
assertNetworkDescriptorV2(capturedDescriptor);
|
|
352
|
+
if (!equals(serialize(capturedDescriptor.policyAuthority), authorityBytes)) {
|
|
353
|
+
throw new Error("Network descriptor changed during capture");
|
|
354
|
+
}
|
|
355
|
+
const entry = deserialize(capturedEntryBytes, Entry);
|
|
356
|
+
if (!(entry instanceof EntryV0)) {
|
|
357
|
+
throw new Error("Authority entry must use EntryV0");
|
|
358
|
+
}
|
|
359
|
+
if (!equals(capturedEntryBytes, serialize(entry))) {
|
|
360
|
+
throw new Error("Authority EntryV0 storage is not canonical");
|
|
361
|
+
}
|
|
362
|
+
if (!(entry._meta instanceof DecryptedThing)) {
|
|
363
|
+
throw new Error("Authority EntryV0 metadata must be public");
|
|
364
|
+
}
|
|
365
|
+
if (!(entry._payload instanceof DecryptedThing)) {
|
|
366
|
+
throw new Error("Authority EntryV0 payload must be public");
|
|
367
|
+
}
|
|
368
|
+
if (
|
|
369
|
+
entry._signatures === undefined ||
|
|
370
|
+
entry._signatures.signatures.length !== 1 ||
|
|
371
|
+
!(entry._signatures.signatures[0] instanceof DecryptedThing)
|
|
372
|
+
) {
|
|
373
|
+
throw new Error("Authority EntryV0 must contain one public signature");
|
|
374
|
+
}
|
|
375
|
+
|
|
376
|
+
entry.init({ encoding: NO_ENCODING });
|
|
377
|
+
const meta = entry.meta;
|
|
378
|
+
const payload = entry.payload;
|
|
379
|
+
const signatures = entry.signatures;
|
|
380
|
+
if (
|
|
381
|
+
!equals(scanned.metaBytes, serialize(meta)) ||
|
|
382
|
+
!equals(scanned.payloadBytes, serialize(payload)) ||
|
|
383
|
+
!equals(scanned.signatureBytes, serialize(signatures[0]!))
|
|
384
|
+
) {
|
|
385
|
+
throw new Error("Authority EntryV0 nested encoding is not canonical");
|
|
386
|
+
}
|
|
387
|
+
if (
|
|
388
|
+
meta.type !== EntryType.APPEND ||
|
|
389
|
+
meta.next.length > limits.maximumDirectParents ||
|
|
390
|
+
!equals(meta.clock.id, authorityBytes)
|
|
391
|
+
) {
|
|
392
|
+
throw new Error("Authority EntryV0 metadata does not match its profile");
|
|
393
|
+
}
|
|
394
|
+
if (
|
|
395
|
+
signatures.length !== 1 ||
|
|
396
|
+
!equals(serialize(signatures[0]!.publicKey), authorityBytes)
|
|
397
|
+
) {
|
|
398
|
+
throw new Error("Authority EntryV0 signer is not the policy authority");
|
|
399
|
+
}
|
|
400
|
+
if (
|
|
401
|
+
limits.exactPayloadBytes !== undefined &&
|
|
402
|
+
payload.data.byteLength !== limits.exactPayloadBytes
|
|
403
|
+
) {
|
|
404
|
+
throw new Error(
|
|
405
|
+
`Authority EntryV0 payload must contain exactly ${limits.exactPayloadBytes} bytes`,
|
|
406
|
+
);
|
|
407
|
+
}
|
|
408
|
+
|
|
409
|
+
let signatureIsValid = false;
|
|
410
|
+
try {
|
|
411
|
+
signatureIsValid = await verify(signatures[0]!, scanned.signableBytes);
|
|
412
|
+
} catch {
|
|
413
|
+
// Unsupported prehashes and malformed signatures fail closed.
|
|
414
|
+
}
|
|
415
|
+
if (!signatureIsValid) {
|
|
416
|
+
throw new Error("Authority EntryV0 signature is invalid");
|
|
417
|
+
}
|
|
418
|
+
|
|
419
|
+
const prepared = await calculateRawCid(capturedEntryBytes);
|
|
420
|
+
return {
|
|
421
|
+
descriptor: capturedDescriptor,
|
|
422
|
+
entryBytes: capturedEntryBytes,
|
|
423
|
+
entryCid: prepared.cid,
|
|
424
|
+
entryDigest: copyUint8ArrayV2(prepared.block.cid.multihash.digest),
|
|
425
|
+
gid: meta.gid,
|
|
426
|
+
metaData: meta.data === undefined ? undefined : copyUint8ArrayV2(meta.data),
|
|
427
|
+
directParents: canonicalDirectParentsV2(meta.next),
|
|
428
|
+
payloadBytes: copyUint8ArrayV2(payload.data),
|
|
429
|
+
};
|
|
430
|
+
};
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
import { equals } from "uint8arrays";
|
|
2
|
+
import {
|
|
3
|
+
type AuthenticatedAuthorityEntryV0V2,
|
|
4
|
+
authenticateAuthorityEntryV0V2,
|
|
5
|
+
} from "./v2-authority-entry.js";
|
|
6
|
+
import {
|
|
7
|
+
NetworkDescriptorV2,
|
|
8
|
+
ResourceFenceV2,
|
|
9
|
+
TRUSTED_NETWORK_V2_MAX_RESOURCE_FENCE_DIRECT_PARENTS,
|
|
10
|
+
TRUSTED_NETWORK_V2_MAX_RESOURCE_FENCE_ENTRY_BYTES,
|
|
11
|
+
TRUSTED_NETWORK_V2_RESOURCE_FENCE_BODY_BYTES,
|
|
12
|
+
copyUint8ArrayWithLengthV2,
|
|
13
|
+
decodeResourceFenceV2,
|
|
14
|
+
exactUint8ArrayByteLengthV2,
|
|
15
|
+
} from "./v2.js";
|
|
16
|
+
|
|
17
|
+
const RESOURCE_FENCE_AUTHORITY_LIMITS_V2 = Object.freeze({
|
|
18
|
+
maximumEntryBytes: TRUSTED_NETWORK_V2_MAX_RESOURCE_FENCE_ENTRY_BYTES,
|
|
19
|
+
maximumDirectParents: TRUSTED_NETWORK_V2_MAX_RESOURCE_FENCE_DIRECT_PARENTS,
|
|
20
|
+
exactPayloadBytes: TRUSTED_NETWORK_V2_RESOURCE_FENCE_BODY_BYTES,
|
|
21
|
+
});
|
|
22
|
+
|
|
23
|
+
export type AuthenticatedResourceFenceEntryV2 = Readonly<{
|
|
24
|
+
entryBytes: Uint8Array;
|
|
25
|
+
entryCid: string;
|
|
26
|
+
digest: Uint8Array;
|
|
27
|
+
body: ResourceFenceV2;
|
|
28
|
+
gid: string;
|
|
29
|
+
metaData?: Uint8Array;
|
|
30
|
+
directParents: ReadonlyArray<Readonly<{ cid: string; digest: Uint8Array }>>;
|
|
31
|
+
}>;
|
|
32
|
+
|
|
33
|
+
export type AuthenticateResourceFenceEntryV2Properties = Readonly<{
|
|
34
|
+
entryBytes: Uint8Array;
|
|
35
|
+
descriptor: NetworkDescriptorV2;
|
|
36
|
+
expectedResourceId: Uint8Array;
|
|
37
|
+
expectedGid: string;
|
|
38
|
+
}>;
|
|
39
|
+
|
|
40
|
+
const captureResourceIdV2 = (resourceId: Uint8Array): Uint8Array => {
|
|
41
|
+
let byteLength: number;
|
|
42
|
+
try {
|
|
43
|
+
byteLength = exactUint8ArrayByteLengthV2(resourceId);
|
|
44
|
+
} catch {
|
|
45
|
+
throw new Error("Expected resource id must contain exactly 32 bytes");
|
|
46
|
+
}
|
|
47
|
+
if (byteLength !== 32) {
|
|
48
|
+
throw new Error("Expected resource id must contain exactly 32 bytes");
|
|
49
|
+
}
|
|
50
|
+
return copyUint8ArrayWithLengthV2(resourceId, byteLength);
|
|
51
|
+
};
|
|
52
|
+
|
|
53
|
+
const toResourceFenceTokenV2 = (
|
|
54
|
+
authenticated: AuthenticatedAuthorityEntryV0V2,
|
|
55
|
+
body: ResourceFenceV2,
|
|
56
|
+
): AuthenticatedResourceFenceEntryV2 => ({
|
|
57
|
+
entryBytes: authenticated.entryBytes,
|
|
58
|
+
entryCid: authenticated.entryCid,
|
|
59
|
+
digest: authenticated.entryDigest,
|
|
60
|
+
body,
|
|
61
|
+
gid: authenticated.gid,
|
|
62
|
+
metaData: authenticated.metaData,
|
|
63
|
+
directParents: authenticated.directParents,
|
|
64
|
+
});
|
|
65
|
+
|
|
66
|
+
/**
|
|
67
|
+
* Authenticate a raw resource-fence EntryV0 against immutable resource
|
|
68
|
+
* context. The returned token does not prove policy acceptance, causal
|
|
69
|
+
* ancestry, fork freedom, freshness, or durability.
|
|
70
|
+
*/
|
|
71
|
+
export const authenticateResourceFenceEntryV2 = async ({
|
|
72
|
+
entryBytes,
|
|
73
|
+
descriptor,
|
|
74
|
+
expectedResourceId,
|
|
75
|
+
expectedGid,
|
|
76
|
+
}: AuthenticateResourceFenceEntryV2Properties): Promise<AuthenticatedResourceFenceEntryV2> => {
|
|
77
|
+
if (typeof expectedGid !== "string") {
|
|
78
|
+
throw new Error("Expected resource gid must be a string");
|
|
79
|
+
}
|
|
80
|
+
const capturedResourceId = captureResourceIdV2(expectedResourceId);
|
|
81
|
+
const authenticated = await authenticateAuthorityEntryV0V2(
|
|
82
|
+
entryBytes,
|
|
83
|
+
descriptor,
|
|
84
|
+
RESOURCE_FENCE_AUTHORITY_LIMITS_V2,
|
|
85
|
+
);
|
|
86
|
+
if (authenticated.gid !== expectedGid) {
|
|
87
|
+
throw new Error("Resource fence belongs to another resource log");
|
|
88
|
+
}
|
|
89
|
+
const body = decodeResourceFenceV2(
|
|
90
|
+
authenticated.payloadBytes,
|
|
91
|
+
authenticated.descriptor,
|
|
92
|
+
);
|
|
93
|
+
if (!equals(body.resourceId, capturedResourceId)) {
|
|
94
|
+
throw new Error("Resource fence belongs to another resource");
|
|
95
|
+
}
|
|
96
|
+
return toResourceFenceTokenV2(authenticated, body);
|
|
97
|
+
};
|
package/src/v2.ts
CHANGED
|
@@ -42,6 +42,13 @@ export const TRUSTED_NETWORK_V2_ENTRY_V0_AUTHORITY_ONLY_SIGNATURE_PROFILE = 1;
|
|
|
42
42
|
*/
|
|
43
43
|
export const TRUSTED_NETWORK_V2_MAX_POLICY_ENTRY_BYTES = 128 * 1024;
|
|
44
44
|
|
|
45
|
+
/**
|
|
46
|
+
* Consensus bounds for a canonical signed resource-fence EntryV0. These are
|
|
47
|
+
* protocol constants, not resource-adapter configuration.
|
|
48
|
+
*/
|
|
49
|
+
export const TRUSTED_NETWORK_V2_MAX_RESOURCE_FENCE_ENTRY_BYTES = 8 * 1024;
|
|
50
|
+
export const TRUSTED_NETWORK_V2_MAX_RESOURCE_FENCE_DIRECT_PARENTS = 64;
|
|
51
|
+
|
|
45
52
|
export const TRUSTED_NETWORK_V2_NETWORK_ID_DOMAIN =
|
|
46
53
|
"peerbit/trusted-network/v2/network-id/v1";
|
|
47
54
|
export const TRUSTED_NETWORK_V2_POLICY_DIGEST_DOMAIN =
|
|
@@ -76,7 +83,7 @@ const TYPED_ARRAY_TAG = Object.getOwnPropertyDescriptor(
|
|
|
76
83
|
Symbol.toStringTag,
|
|
77
84
|
)!.get!;
|
|
78
85
|
|
|
79
|
-
const
|
|
86
|
+
export const exactUint8ArrayByteLengthV2 = (value: unknown): number => {
|
|
80
87
|
if (
|
|
81
88
|
!ArrayBuffer.isView(value) ||
|
|
82
89
|
TYPED_ARRAY_TAG.call(value) !== "Uint8Array"
|
|
@@ -90,6 +97,20 @@ const exactUint8ArrayByteLength = (value: unknown): number => {
|
|
|
90
97
|
return byteLength;
|
|
91
98
|
};
|
|
92
99
|
|
|
100
|
+
export const copyUint8ArrayWithLengthV2 = (
|
|
101
|
+
value: Uint8Array,
|
|
102
|
+
byteLength: number,
|
|
103
|
+
): Uint8Array => {
|
|
104
|
+
const copy = new Uint8Array(byteLength);
|
|
105
|
+
Uint8Array.prototype.set.call(copy, value);
|
|
106
|
+
return copy;
|
|
107
|
+
};
|
|
108
|
+
|
|
109
|
+
export const copyUint8ArrayV2 = (value: Uint8Array): Uint8Array => {
|
|
110
|
+
const byteLength = exactUint8ArrayByteLengthV2(value);
|
|
111
|
+
return copyUint8ArrayWithLengthV2(value, byteLength);
|
|
112
|
+
};
|
|
113
|
+
|
|
93
114
|
const assertByte = (value: number, label: string): void => {
|
|
94
115
|
if (!Number.isInteger(value) || value < 0 || value > 0xff) {
|
|
95
116
|
throw new Error(`${label} must be a u8`);
|
|
@@ -111,7 +132,7 @@ const assertU64 = (value: bigint, label: string): void => {
|
|
|
111
132
|
const assertBytes32 = (value: Uint8Array, label: string): void => {
|
|
112
133
|
let byteLength: number;
|
|
113
134
|
try {
|
|
114
|
-
byteLength =
|
|
135
|
+
byteLength = exactUint8ArrayByteLengthV2(value);
|
|
115
136
|
} catch {
|
|
116
137
|
throw new Error(`${label} must contain exactly 32 bytes`);
|
|
117
138
|
}
|
|
@@ -513,7 +534,7 @@ const decodeExactCanonicalV2 = <T>(
|
|
|
513
534
|
): T => {
|
|
514
535
|
let byteLength: number;
|
|
515
536
|
try {
|
|
516
|
-
byteLength =
|
|
537
|
+
byteLength = exactUint8ArrayByteLengthV2(bytes);
|
|
517
538
|
} catch {
|
|
518
539
|
throw new Error(
|
|
519
540
|
`TrustedNetwork v2 record must contain ${exactLength} bytes`,
|
|
@@ -524,8 +545,7 @@ const decodeExactCanonicalV2 = <T>(
|
|
|
524
545
|
`TrustedNetwork v2 record must contain ${exactLength} bytes`,
|
|
525
546
|
);
|
|
526
547
|
}
|
|
527
|
-
const captured =
|
|
528
|
-
Uint8Array.prototype.set.call(captured, bytes);
|
|
548
|
+
const captured = copyUint8ArrayWithLengthV2(bytes, byteLength);
|
|
529
549
|
const value = deserialize(captured, type);
|
|
530
550
|
assertCanonicalEncoding(captured, value);
|
|
531
551
|
return value;
|