@motebit/crypto 2.1.0 → 3.0.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 +10 -0
- package/dist/agent-settlement-anchor.d.ts +122 -0
- package/dist/agent-settlement-anchor.d.ts.map +1 -0
- package/dist/artifacts.d.ts +29 -2
- package/dist/artifacts.d.ts.map +1 -1
- package/dist/credential-anchor.d.ts +8 -1
- package/dist/credential-anchor.d.ts.map +1 -1
- package/dist/deletion-certificate.d.ts +2 -2
- package/dist/deletion-certificate.d.ts.map +1 -1
- package/dist/federation-settlement-anchor.d.ts +138 -0
- package/dist/federation-settlement-anchor.d.ts.map +1 -0
- package/dist/index.d.ts +12 -48
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +303 -30
- package/dist/merkle.d.ts +57 -1
- package/dist/merkle.d.ts.map +1 -1
- package/package.json +4 -4
package/README.md
CHANGED
|
@@ -120,6 +120,13 @@ const vc = await issueReputationCredential(
|
|
|
120
120
|
- **`verifySovereignBinding(motebitId, genesisPublicKeyHex)`** — True iff `motebitId` is the sovereign commitment to the genesis key. `verifyKeyBindingAtTime` sets `sovereign: true` on its result when this holds.
|
|
121
121
|
- **`verifyMigratingKeyBinding(motebitId, presentedKeyHex, identityFile?)`** — Does `presentedKeyHex` legitimately control `motebitId` right now? The migration key↔id check (spec/migration-v1.md §8.2 step 6), fail-closed: a never-rotated sovereign id binds its key directly; a rotated key binds via the identity file's sovereign-rooted succession chain. Composes `verifySovereignBinding` and `verifyKeyBindingAtTime`.
|
|
122
122
|
|
|
123
|
+
### Settlement anchoring
|
|
124
|
+
|
|
125
|
+
- **`verifyAgentSettlementAnchor(record, proof, chainVerifier?)`** — Worker-side self-verification of a per-agent settlement Merkle inclusion proof (`spec/agent-settlement-anchor-v1.md`): the held `SettlementRecord` hashes to the anchored leaf, the Merkle path reconstructs to the root, and the relay's batch signature (suite `AGENT_SETTLEMENT_ANCHOR_SUITE`) checks out — all offline, with only the record, the proof, and the relay's public key. SCITT / RFC 6962 shape. The optional `chainVerifier` adds the onchain non-repudiation cross-check.
|
|
126
|
+
- **`computeAgentSettlementLeaf(record)`** — The leaf hash for a `SettlementRecord`: `SHA-256(canonicalJson(record))` over the whole signed object (never a field projection), so producer and holder derive the identical leaf from the bytes they each hold.
|
|
127
|
+
- **`verifyFederationSettlementAnchor(record, proof, chainVerifier?)`** — Peer-side self-verification of an inter-relay settlement Merkle inclusion proof (`spec/relay-federation-v1.md` §7.6): the held `FederationSettlementRecord` hashes to the anchored leaf, the Merkle path reconstructs to the root, and the relay's batch signature (suite `FEDERATION_SETTLEMENT_ANCHOR_SUITE`) checks out — all offline, with only the record, the proof, and the relay's public key. The federation analogue of `verifyAgentSettlementAnchor`; same SCITT / RFC 6962 shape. The optional `chainVerifier` adds the onchain non-repudiation cross-check.
|
|
128
|
+
- **`computeFederationSettlementLeaf(record)`** — The leaf hash for a `FederationSettlementRecord`: `SHA-256(canonicalJson(record))` over the whole signed object (never a field projection), so producer and holder derive the identical leaf from the bytes they each hold.
|
|
129
|
+
|
|
123
130
|
### Primitives
|
|
124
131
|
|
|
125
132
|
- **`generateKeypair()`** — Generate an Ed25519 keypair.
|
|
@@ -127,6 +134,9 @@ const vc = await issueReputationCredential(
|
|
|
127
134
|
- **`ed25519Verify(signature, message, publicKey)`** — Raw Ed25519 verify.
|
|
128
135
|
- **`canonicalJson(obj)`** — Deterministic JSON serialization (JCS/RFC 8785).
|
|
129
136
|
- **`hash(data)`** — SHA-256 hex string.
|
|
137
|
+
- **`hashLeaf(entry, treeHashVersion?)`** — Merkle leaf hash under a `MerkleTreeVersion`: `SHA-256(entry)` for `merkle-sha256-plain-v1` (default), `SHA-256(0x00 ‖ entry)` for the RFC 6962 §2.1 `merkle-sha256-rfc6962-v2` leaf tag. The single dispatch point every leaf builder routes through; throws on an unimplemented version.
|
|
138
|
+
- **`canonicalLeaf(value, treeHashVersion?)`** — JCS-canonicalize `value` then `hashLeaf` it. `canonicalLeaf(x)` (v1 default) is byte-identical to `hash(canonicalJson(x))`.
|
|
139
|
+
- **`resolveTreeHashVersion(raw)`** — Verifier-boundary resolver for a proof's wire `tree_hash_version`: `absent ⇒ merkle-sha256-plain-v1`, a known value to itself, an unknown string to `null` so the caller rejects fail-closed (never silent-downgrade). See `docs/doctrine/merkle-tree-hash-versioning.md`.
|
|
130
140
|
- **`createSignedToken(payload, privateKey)`** — Create a signed auth token.
|
|
131
141
|
- **`verifySignedToken(token, publicKey)`** — Verify a signed auth token.
|
|
132
142
|
- **`publicKeyToDidKey(publicKey)`** / **`didKeyToPublicKey(did)`** — did:key conversion.
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Per-agent settlement anchor — leaf hashing and self-verification.
|
|
3
|
+
*
|
|
4
|
+
* Permissive floor (Apache-2.0): these functions are part of the open
|
|
5
|
+
* protocol. A worker who holds (a) their signed `SettlementRecord`, (b) an
|
|
6
|
+
* `AgentSettlementAnchorProof` for it, and (c) the relay's public key can
|
|
7
|
+
* verify — offline, with only `@motebit/crypto` — that the relay anchored
|
|
8
|
+
* exactly that record into a Merkle root, without contacting the relay.
|
|
9
|
+
*
|
|
10
|
+
* motebit/agent-settlement-anchor@1.0 §3 (leaf hash) and §5 (verification).
|
|
11
|
+
* This is the portable verifier that closes the self-attesting loop the
|
|
12
|
+
* producer (`services/relay/src/anchoring.ts`), the proof endpoint
|
|
13
|
+
* (`GET /api/v1/settlements/:id/anchor-proof`), and the wire types
|
|
14
|
+
* (`@motebit/protocol`) were already shipping without.
|
|
15
|
+
*
|
|
16
|
+
* Sibling of `credential-anchor.ts`: same Merkle primitive
|
|
17
|
+
* (`verifyMerkleInclusion`), same 4-step shape. The third consumer of the
|
|
18
|
+
* canonical `merkle.ts` primitive (see `crypto/CLAUDE.md` rule 6).
|
|
19
|
+
*/
|
|
20
|
+
import type { MerkleTreeVersion } from "@motebit/protocol";
|
|
21
|
+
import type { ChainAnchorVerifier } from "./credential-anchor.js";
|
|
22
|
+
/**
|
|
23
|
+
* The one suite AgentSettlementAnchorBatch records sign under today.
|
|
24
|
+
* JCS canonicalization, Ed25519 primitive, hex signature + hex public-key
|
|
25
|
+
* encoding (note: hex, unlike the base64url SettlementRecord suite — the
|
|
26
|
+
* anchor batch and the settlement it commits are independently signed
|
|
27
|
+
* artifacts with their own suites).
|
|
28
|
+
*/
|
|
29
|
+
export declare const AGENT_SETTLEMENT_ANCHOR_SUITE: "motebit-jcs-ed25519-hex-v1";
|
|
30
|
+
/**
|
|
31
|
+
* Compute a per-agent settlement leaf hash for Merkle anchoring.
|
|
32
|
+
*
|
|
33
|
+
* The input is the WHOLE signed `SettlementRecord` (signature included),
|
|
34
|
+
* passed as a plain object. The leaf is `SHA-256(canonicalJson(record))` —
|
|
35
|
+
* the holder reproduces it from exactly the bytes they hold, with no field
|
|
36
|
+
* projection. (This is the SCITT / RFC 6962 invariant: anchor the exact
|
|
37
|
+
* signed object; never a re-typed subset — a subset cannot be reproduced
|
|
38
|
+
* from the holder's record and the receipt dies on arrival.)
|
|
39
|
+
*
|
|
40
|
+
* `canonicalJson` is JCS/RFC 8785 — the same canonicalization the relay
|
|
41
|
+
* used to sign the record, so a worker who holds the signed record and a
|
|
42
|
+
* verifier who holds the producer's row derive the identical leaf.
|
|
43
|
+
*
|
|
44
|
+
* @param settlement - The full signed SettlementRecord object (with signature)
|
|
45
|
+
* @returns Hex-encoded SHA-256 hash
|
|
46
|
+
*/
|
|
47
|
+
export declare function computeAgentSettlementLeaf(settlement: Record<string, unknown>, treeHashVersion?: MerkleTreeVersion): Promise<string>;
|
|
48
|
+
/** Result of verifying a per-agent settlement anchor proof. */
|
|
49
|
+
export interface AgentSettlementAnchorVerifyResult {
|
|
50
|
+
/** Whether all checked steps passed. */
|
|
51
|
+
valid: boolean;
|
|
52
|
+
/** Individual step results. */
|
|
53
|
+
steps: {
|
|
54
|
+
/** Step 1: the held SettlementRecord hashes to the claimed leaf. */
|
|
55
|
+
hash_valid: boolean;
|
|
56
|
+
/** Step 2: Merkle proof reconstructs to the claimed root. */
|
|
57
|
+
merkle_valid: boolean;
|
|
58
|
+
/** Step 3: relay's Ed25519 signature over the batch payload is valid. */
|
|
59
|
+
relay_signature_valid: boolean;
|
|
60
|
+
/** Step 4: onchain anchor verified (null if not checked). */
|
|
61
|
+
chain_verified: boolean | null;
|
|
62
|
+
};
|
|
63
|
+
/** Error messages for failed steps. */
|
|
64
|
+
errors: string[];
|
|
65
|
+
}
|
|
66
|
+
/** The anchor-proof fields needed for verification (subset of `AgentSettlementAnchorProof`). */
|
|
67
|
+
export interface AgentSettlementAnchorProofFields {
|
|
68
|
+
settlement_hash: string;
|
|
69
|
+
batch_id: string;
|
|
70
|
+
merkle_root: string;
|
|
71
|
+
leaf_count: number;
|
|
72
|
+
first_settled_at: number;
|
|
73
|
+
last_settled_at: number;
|
|
74
|
+
leaf_index: number;
|
|
75
|
+
siblings: string[];
|
|
76
|
+
layer_sizes: number[];
|
|
77
|
+
relay_id: string;
|
|
78
|
+
relay_public_key: string;
|
|
79
|
+
/**
|
|
80
|
+
* Cryptosuite discriminator for `batch_signature`. Always
|
|
81
|
+
* `"motebit-jcs-ed25519-hex-v1"`. Signature-bound: the suite is part of
|
|
82
|
+
* the canonical batch payload (see step 3), so a cross-suite confusion
|
|
83
|
+
* cannot pass verification. Verifiers reject missing or unknown values
|
|
84
|
+
* fail-closed.
|
|
85
|
+
*/
|
|
86
|
+
suite: typeof AGENT_SETTLEMENT_ANCHOR_SUITE;
|
|
87
|
+
batch_signature: string;
|
|
88
|
+
anchor: {
|
|
89
|
+
chain: string;
|
|
90
|
+
network: string;
|
|
91
|
+
tx_hash: string;
|
|
92
|
+
anchored_at: number;
|
|
93
|
+
} | null;
|
|
94
|
+
/**
|
|
95
|
+
* Tree-hash recipe for the Merkle path. **Absent ⇒ `merkle-sha256-plain-v1`**.
|
|
96
|
+
* Resolved fail-closed (unknown ⇒ reject, never silent-downgrade); threaded to
|
|
97
|
+
* the leaf builder (step 1) and `verifyMerkleInclusion` (step 2).
|
|
98
|
+
*/
|
|
99
|
+
tree_hash_version?: MerkleTreeVersion;
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Verify a per-agent settlement anchor proof — the 4-step self-verification
|
|
103
|
+
* algorithm. Steps 1–3 are fully offline. Step 4 (onchain lookup) requires a
|
|
104
|
+
* callback and is skipped if not provided or if the proof has no onchain anchor.
|
|
105
|
+
*
|
|
106
|
+
* @param settlement - The full signed SettlementRecord the worker holds (with signature)
|
|
107
|
+
* @param proof - The AgentSettlementAnchorProof served by the relay
|
|
108
|
+
* @param chainVerifier - Optional callback for step 4 (onchain verification)
|
|
109
|
+
* @returns Verification result with per-step breakdown
|
|
110
|
+
*
|
|
111
|
+
* @example
|
|
112
|
+
* ```ts
|
|
113
|
+
* import { verifyAgentSettlementAnchor } from "@motebit/crypto";
|
|
114
|
+
*
|
|
115
|
+
* const result = await verifyAgentSettlementAnchor(settlementRecord, proof);
|
|
116
|
+
* if (result.valid) {
|
|
117
|
+
* // Steps 1-3 passed: the relay anchored exactly this settlement.
|
|
118
|
+
* }
|
|
119
|
+
* ```
|
|
120
|
+
*/
|
|
121
|
+
export declare function verifyAgentSettlementAnchor(settlement: Record<string, unknown>, proof: AgentSettlementAnchorProofFields, chainVerifier?: ChainAnchorVerifier): Promise<AgentSettlementAnchorVerifyResult>;
|
|
122
|
+
//# sourceMappingURL=agent-settlement-anchor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-settlement-anchor.d.ts","sourceRoot":"","sources":["../src/agent-settlement-anchor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAK3D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAElE;;;;;;GAMG;AACH,eAAO,MAAM,6BAA6B,EAAG,4BAAqC,CAAC;AAInF;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAsB,0BAA0B,CAC9C,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACnC,eAAe,GAAE,iBAA4C,GAC5D,OAAO,CAAC,MAAM,CAAC,CAKjB;AAID,+DAA+D;AAC/D,MAAM,WAAW,iCAAiC;IAChD,wCAAwC;IACxC,KAAK,EAAE,OAAO,CAAC;IACf,+BAA+B;IAC/B,KAAK,EAAE;QACL,oEAAoE;QACpE,UAAU,EAAE,OAAO,CAAC;QACpB,6DAA6D;QAC7D,YAAY,EAAE,OAAO,CAAC;QACtB,yEAAyE;QACzE,qBAAqB,EAAE,OAAO,CAAC;QAC/B,6DAA6D;QAC7D,cAAc,EAAE,OAAO,GAAG,IAAI,CAAC;KAChC,CAAC;IACF,uCAAuC;IACvC,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,gGAAgG;AAChG,MAAM,WAAW,gCAAgC;IAC/C,eAAe,EAAE,MAAM,CAAC;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,gBAAgB,EAAE,MAAM,CAAC;IACzB,eAAe,EAAE,MAAM,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,gBAAgB,EAAE,MAAM,CAAC;IACzB;;;;;;OAMG;IACH,KAAK,EAAE,OAAO,6BAA6B,CAAC;IAC5C,eAAe,EAAE,MAAM,CAAC;IACxB,MAAM,EAAE;QACN,KAAK,EAAE,MAAM,CAAC;QACd,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,EAAE,MAAM,CAAC;QAChB,WAAW,EAAE,MAAM,CAAC;KACrB,GAAG,IAAI,CAAC;IACT;;;;OAIG;IACH,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;CACvC;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAsB,2BAA2B,CAC/C,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACnC,KAAK,EAAE,gCAAgC,EACvC,aAAa,CAAC,EAAE,mBAAmB,GAClC,OAAO,CAAC,iCAAiC,CAAC,CA+G5C"}
|
package/dist/artifacts.d.ts
CHANGED
|
@@ -529,8 +529,8 @@ export declare function signBalanceWaiver(waiver: Omit<BalanceWaiver, "signature
|
|
|
529
529
|
* the caller's responsibility (neither is a cryptographic property).
|
|
530
530
|
*/
|
|
531
531
|
export declare function verifyBalanceWaiver(waiver: BalanceWaiver, agentPublicKey: Uint8Array): Promise<boolean>;
|
|
532
|
-
import type { SettlementRecord } from "@motebit/protocol";
|
|
533
|
-
export type { SettlementRecord };
|
|
532
|
+
import type { SettlementRecord, FederationSettlementRecord } from "@motebit/protocol";
|
|
533
|
+
export type { SettlementRecord, FederationSettlementRecord };
|
|
534
534
|
/** The one suite SettlementRecords sign under today. */
|
|
535
535
|
export declare const SETTLEMENT_RECORD_SUITE: "motebit-jcs-ed25519-b64-v1";
|
|
536
536
|
/**
|
|
@@ -564,6 +564,33 @@ export declare function signSettlement(settlement: Omit<SettlementRecord, "signa
|
|
|
564
564
|
* - primitive-level verification failure
|
|
565
565
|
*/
|
|
566
566
|
export declare function verifySettlement(settlement: SettlementRecord, issuerPublicKey: Uint8Array): Promise<boolean>;
|
|
567
|
+
/** The one suite FederationSettlementRecords sign under today. */
|
|
568
|
+
export declare const FEDERATION_SETTLEMENT_RECORD_SUITE: "motebit-jcs-ed25519-b64-v1";
|
|
569
|
+
/**
|
|
570
|
+
* Sign a federation settlement record. Each relay signs its OWN copy of a
|
|
571
|
+
* federated settlement (the issuer is the booking relay), committing to the
|
|
572
|
+
* (gross, fee, net, rate) tuple so it cannot issue inconsistent records to
|
|
573
|
+
* different observers — the per-agent `signSettlement` move applied to the
|
|
574
|
+
* inter-relay stream (relay-federation-v1.md §7.6).
|
|
575
|
+
*
|
|
576
|
+
* The signed record is the verbatim-artifact whose canonical bytes become the
|
|
577
|
+
* Merkle leaf (spec/agent-settlement-anchor-v1.md §9.1): the relay persists
|
|
578
|
+
* `canonicalJson(record)` and anchors `canonicalLeaf(record)`, so a peer that
|
|
579
|
+
* holds the record reproduces the leaf with `@motebit/crypto` alone.
|
|
580
|
+
*
|
|
581
|
+
* Callers pass the record without `signature` or `suite`; the signer owns both.
|
|
582
|
+
*/
|
|
583
|
+
export declare function signFederationSettlement(settlement: Omit<FederationSettlementRecord, "signature" | "suite">, issuerPrivateKey: Uint8Array): Promise<FederationSettlementRecord>;
|
|
584
|
+
/**
|
|
585
|
+
* Verify a federation settlement record's signature. Reconstructs canonical
|
|
586
|
+
* JSON over all fields except `signature` and verifies Ed25519 against the
|
|
587
|
+
* issuing relay's public key (resolved from `issuer_relay_id` via the
|
|
588
|
+
* federation peer registry).
|
|
589
|
+
*
|
|
590
|
+
* Fail-closed on missing/unknown `suite`, base64url decode errors, or
|
|
591
|
+
* primitive-level verification failure.
|
|
592
|
+
*/
|
|
593
|
+
export declare function verifyFederationSettlement(settlement: FederationSettlementRecord, issuerPublicKey: Uint8Array): Promise<boolean>;
|
|
567
594
|
/** The one suite KeySuccessionRecords sign under today. */
|
|
568
595
|
export declare const KEY_SUCCESSION_SUITE: "motebit-jcs-ed25519-hex-v1";
|
|
569
596
|
/**
|
package/dist/artifacts.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"artifacts.d.ts","sourceRoot":"","sources":["../src/artifacts.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAwCH;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,oFAAoF;IACpF,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,WAAW,GAAG,QAAQ,GAAG,QAAQ,CAAC;IAC1C,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,mBAAmB,CAAC,EAAE,eAAe,EAAE,CAAC;IACxC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB;;;;;;;OAOG;IACH,KAAK,EAAE,4BAA4B,CAAC;IACpC,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,wDAAwD;AACxD,eAAO,MAAM,uBAAuB,EAAG,4BAAqC,CAAC;AAE7E;;;;;;;;;GASG;AACH,wBAAsB,oBAAoB,CAAC,CAAC,SAAS,IAAI,CAAC,eAAe,EAAE,WAAW,GAAG,OAAO,CAAC,EAC/F,OAAO,EAAE,CAAC,EACV,UAAU,EAAE,UAAU,EACtB,SAAS,CAAC,EAAE,UAAU,GACrB,OAAO,CAAC,CAAC,GAAG;IAAE,KAAK,EAAE,OAAO,uBAAuB,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC,CAgC3E;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAsB,sBAAsB,CAC1C,OAAO,EAAE,eAAe,EACxB,SAAS,EAAE,UAAU,GACpB,OAAO,CAAC,OAAO,CAAC,CA+BlB;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,OAAO,CAAC;IACf,+DAA+D;IAC/D,gBAAgB,EAAE,MAAM,CAAC;IACzB,qFAAqF;IACrF,iBAAiB,EAAE,MAAM,CAAC;IAC1B,yDAAyD;IACzD,MAAM,EAAE,IAAI,GAAG,aAAa,GAAG,YAAY,GAAG,kBAAkB,CAAC;CAClE;AAED,wBAAsB,8BAA8B,CAClD,OAAO,EAAE,eAAe,EACxB,SAAS,EAAE,UAAU,GACpB,OAAO,CAAC,mBAAmB,CAAC,CAiC9B;AAID;;;;;;;;;;;;;GAaG;AACH,MAAM,WAAW,6BAA6B;IAC5C,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,oFAAoF;IACpF,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,WAAW,GAAG,QAAQ,GAAG,QAAQ,CAAC;IAC1C,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,gFAAgF;IAChF,iBAAiB,CAAC,EAAE,UAAU,GAAG,SAAS,GAAG,WAAW,GAAG,gBAAgB,CAAC;IAC5E;;;;;OAKG;IACH,KAAK,EAAE,4BAA4B,CAAC;IACpC,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,6DAA6D;AAC7D,eAAO,MAAM,6BAA6B,EAAG,4BAAqC,CAAC;AAEnF;;;;;;;;;GASG;AACH,wBAAsB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAErE;AAED;;;;;;;;GAQG;AACH,wBAAsB,yBAAyB,CAC7C,CAAC,SAAS,IAAI,CAAC,6BAA6B,EAAE,WAAW,GAAG,OAAO,CAAC,EAEpE,OAAO,EAAE,CAAC,EACV,UAAU,EAAE,UAAU,EACtB,SAAS,CAAC,EAAE,UAAU,GACrB,OAAO,CAAC,CAAC,GAAG;IAAE,KAAK,EAAE,OAAO,6BAA6B,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC,CAsBjF;AAED;;;GAGG;AACH,wBAAsB,2BAA2B,CAC/C,OAAO,EAAE,6BAA6B,EACtC,SAAS,EAAE,UAAU,GACpB,OAAO,CAAC,OAAO,CAAC,CA+BlB;AAWD,OAAO,KAAK,EACV,8BAA8B,EAC9B,2BAA2B,EAC3B,eAAe,EAChB,MAAM,mBAAmB,CAAC;AAE3B,8DAA8D;AAC9D,eAAO,MAAM,8BAA8B,EAAG,4BAAqC,CAAC;AAEpF;;;;;;;;;;;GAWG;AACH,wBAAsB,0BAA0B,CAC9C,OAAO,EAAE,aAAa,CAAC,2BAA2B,CAAC,GAClD,OAAO,CAAC,MAAM,CAAC,CAEjB;AAED;;;;;;;;GAQG;AACH,wBAAsB,0BAA0B,CAC9C,CAAC,SAAS,IAAI,CAAC,8BAA8B,EAAE,YAAY,CAAC,GAAG;IAAE,UAAU,CAAC,EAAE,MAAM,CAAA;CAAE,EAEtF,OAAO,EAAE,CAAC,EACV,UAAU,EAAE,UAAU,EACtB,SAAS,CAAC,EAAE,UAAU,GACrB,OAAO,CAAC,CAAC,GAAG;IAAE,KAAK,EAAE,OAAO,8BAA8B,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC,CAsBlF;AAED;;;;;;GAMG;AACH,wBAAsB,4BAA4B,CAChD,OAAO,EAAE,8BAA8B,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,EAC9E,SAAS,EAAE,UAAU,GACpB,OAAO,CAAC,OAAO,CAAC,CA+BlB;AAID;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,4BAA4B;IAC3C,uEAAuE;IACvE,gBAAgB,EAAE,MAAM,CAAC;IACzB,6BAA6B;IAC7B,eAAe,EAAE,MAAM,CAAC;IACxB,0EAA0E;IAC1E,gBAAgB,EAAE,MAAM,CAAC;IACzB,iFAAiF;IACjF,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,2DAA2D;IAC3D,YAAY,EAAE,MAAM,CAAC;IACrB;;;;;;;OAOG;IACH,KAAK,EAAE,eAAe,CAAC;IACvB,gEAAgE;IAChE,mBAAmB,EAAE,MAAM,CAAC;IAC5B,2CAA2C;IAC3C,WAAW,EAAE,MAAM,CAAC;IACpB,0CAA0C;IAC1C,WAAW,EAAE,MAAM,CAAC;IACpB,oFAAoF;IACpF,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,2CAA2C;IAC3C,YAAY,EAAE,MAAM,CAAC;IACrB,yCAAyC;IACzC,YAAY,EAAE,MAAM,CAAC;CACtB;AAED;;;;;;;;GAQG;AACH,wBAAsB,2BAA2B,CAC/C,KAAK,EAAE,4BAA4B,EACnC,UAAU,EAAE,UAAU,EACtB,SAAS,EAAE,UAAU,GACpB,OAAO,CAAC,eAAe,CAAC,CAiB1B;AAID,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,OAAO,CAAC;IAClB;;;;;;;;;;OAUG;IACH,SAAS,CAAC,EAAE,UAAU,GAAG,UAAU,CAAC;IACpC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,mBAAmB,EAAE,CAAC;CACpC;AAED;;;GAGG;AACH,MAAM,MAAM,SAAS,GAAG,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;AAEhD;;;;GAIG;AACH,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,eAAe,EACxB,SAAS,EAAE,SAAS,GACnB,OAAO,CAAC,mBAAmB,CAAC,CA4C9B;AAcD,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,eAAe,CAAC;IACzB,iBAAiB,EAAE,UAAU,CAAC;CAC/B;AAED;;;;;;;;;GASG;AACH,wBAAsB,qBAAqB,CACzC,KAAK,EAAE,iBAAiB,EAAE,GACzB,OAAO,CAAC;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAwB7D;AAID;;;;;;;;;;GAUG;AACH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACzD,YAAY,EAAE,eAAe,EAAE,CAAC;AAEhC,uDAAuD;AACvD,eAAO,MAAM,sBAAsB,EAAG,4BAAqC,CAAC;AAE5E;;;;;;;;GAQG;AACH,wBAAsB,cAAc,CAClC,UAAU,EAAE,IAAI,CAAC,eAAe,EAAE,WAAW,GAAG,OAAO,CAAC,EACxD,mBAAmB,EAAE,UAAU,GAC9B,OAAO,CAAC,eAAe,CAAC,CAM1B;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAsB,gBAAgB,CACpC,UAAU,EAAE,eAAe,EAC3B,OAAO,CAAC,EAAE;IAAE,WAAW,CAAC,EAAE,OAAO,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,GAChD,OAAO,CAAC,OAAO,CAAC,CAmBlB;AAED;;;;;;;;;GASG;AACH,wBAAsB,qBAAqB,CACzC,KAAK,EAAE,eAAe,EAAE,GACvB,OAAO,CAAC;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAoC7C;AAMD,OAAO,KAAK,EAAE,eAAe,EAAE,aAAa,EAAE,eAAe,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAC5H,YAAY,EAAE,eAAe,EAAE,aAAa,EAAE,eAAe,EAAE,cAAc,EAAE,iBAAiB,EAAE,CAAC;AAEnG,yFAAyF;AACzF,eAAO,MAAM,sBAAsB,EAAG,4BAAqC,CAAC;AAE5E,2FAA2F;AAC3F,eAAO,MAAM,wBAAwB,EAAG,4BAAqC,CAAC;AAE9E,uFAAuF;AACvF,eAAO,MAAM,qBAAqB,EAAG,4BAAqC,CAAC;AAE3E,4FAA4F;AAC5F,eAAO,MAAM,sBAAsB,EAAG,4BAAqC,CAAC;AAE5E,sFAAsF;AACtF,eAAO,MAAM,oBAAoB,EAAG,4BAAqC,CAAC;AAE1E;;;;;;;;;;GAUG;AACH,wBAAsB,mBAAmB,CACvC,IAAI,EAAE,IAAI,CAAC,eAAe,EAAE,WAAW,GAAG,OAAO,CAAC,EAClD,cAAc,EAAE,UAAU,GACzB,OAAO,CAAC,eAAe,CAAC,CAM1B;AAED;;;;;;GAMG;AACH,wBAAsB,qBAAqB,CACzC,IAAI,EAAE,eAAe,EACrB,aAAa,EAAE,UAAU,GACxB,OAAO,CAAC,OAAO,CAAC,CAWlB;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,qBAAqB,CACzC,UAAU,EAAE,IAAI,CAAC,iBAAiB,EAAE,WAAW,GAAG,OAAO,CAAC,EAC1D,qBAAqB,EAAE,UAAU,GAChC,OAAO,CAAC,iBAAiB,CAAC,CAM5B;AAED;;;;;;;;;;;;GAYG;AACH,wBAAsB,uBAAuB,CAC3C,UAAU,EAAE,iBAAiB,EAC7B,oBAAoB,EAAE,UAAU,EAChC,QAAQ,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,GACjC,OAAO,CAAC,OAAO,CAAC,CA2BlB;AAED;;;;;;;;GAQG;AACH,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,IAAI,CAAC,cAAc,EAAE,WAAW,GAAG,OAAO,CAAC,EACpD,eAAe,EAAE,UAAU,GAC1B,OAAO,CAAC,cAAc,CAAC,CAMzB;AAED;;;;;;GAMG;AACH,wBAAsB,oBAAoB,CACxC,OAAO,EAAE,cAAc,EACvB,cAAc,EAAE,UAAU,GACzB,OAAO,CAAC,OAAO,CAAC,CAWlB;AAED;;;;;;;GAOG;AACH,wBAAsB,mBAAmB,CACvC,QAAQ,EAAE,IAAI,CAAC,eAAe,EAAE,WAAW,GAAG,OAAO,CAAC,EACtD,mBAAmB,EAAE,UAAU,GAC9B,OAAO,CAAC,eAAe,CAAC,CAM1B;AAED;;;;;;GAMG;AACH,wBAAsB,qBAAqB,CACzC,QAAQ,EAAE,eAAe,EACzB,kBAAkB,EAAE,UAAU,GAC7B,OAAO,CAAC,OAAO,CAAC,CAWlB;AAED;;;;;;GAMG;AACH,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,IAAI,CAAC,aAAa,EAAE,WAAW,GAAG,OAAO,CAAC,EAClD,kBAAkB,EAAE,UAAU,GAC7B,OAAO,CAAC,aAAa,CAAC,CAMxB;AAED;;;;GAIG;AACH,wBAAsB,mBAAmB,CACvC,MAAM,EAAE,aAAa,EACrB,iBAAiB,EAAE,UAAU,GAC5B,OAAO,CAAC,OAAO,CAAC,CAWlB;AAID,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAC9D,YAAY,EAAE,oBAAoB,EAAE,CAAC;AAErC,4DAA4D;AAC5D,eAAO,MAAM,2BAA2B,EAAG,4BAAqC,CAAC;AAEjF;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,wBAAwB,CAC5C,OAAO,EAAE,IAAI,CAAC,oBAAoB,EAAE,WAAW,GAAG,OAAO,GAAG,YAAY,CAAC,EACzE,UAAU,EAAE,UAAU,EACtB,SAAS,CAAC,EAAE,UAAU,GACrB,OAAO,CAAC,oBAAoB,CAAC,CAS/B;AAED;;;;;;GAMG;AACH,wBAAsB,0BAA0B,CAC9C,OAAO,EAAE,oBAAoB,EAC7B,SAAS,EAAE,UAAU,GACpB,OAAO,CAAC,OAAO,CAAC,CAWlB;AAID,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACvD,YAAY,EAAE,aAAa,EAAE,CAAC;AAE9B,yFAAyF;AACzF,eAAO,MAAM,oBAAoB,EAAG,4BAAqC,CAAC;AAE1E;;;;;;;;;GASG;AACH,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,IAAI,CAAC,aAAa,EAAE,WAAW,GAAG,OAAO,CAAC,EAClD,eAAe,EAAE,UAAU,GAC1B,OAAO,CAAC,aAAa,CAAC,CAMxB;AAED;;;;;;GAMG;AACH,wBAAsB,mBAAmB,CACvC,MAAM,EAAE,aAAa,EACrB,cAAc,EAAE,UAAU,GACzB,OAAO,CAAC,OAAO,CAAC,CAWlB;AAID,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,YAAY,EAAE,gBAAgB,EAAE,CAAC;AAEjC,wDAAwD;AACxD,eAAO,MAAM,uBAAuB,EAAG,4BAAqC,CAAC;AAE7E;;;;;;;;;;;;GAYG;AACH,wBAAsB,cAAc,CAClC,UAAU,EAAE,IAAI,CAAC,gBAAgB,EAAE,WAAW,GAAG,OAAO,CAAC,EACzD,gBAAgB,EAAE,UAAU,GAC3B,OAAO,CAAC,gBAAgB,CAAC,CAM3B;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,gBAAgB,CACpC,UAAU,EAAE,gBAAgB,EAC5B,eAAe,EAAE,UAAU,GAC1B,OAAO,CAAC,OAAO,CAAC,CAWlB;AAID,2DAA2D;AAC3D,eAAO,MAAM,oBAAoB,EAAG,4BAAqC,CAAC;AAE1E;;;GAGG;AACH,MAAM,WAAW,mBAAmB;IAClC,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;;;OAKG;IACH,KAAK,EAAE,OAAO,oBAAoB,CAAC;IACnC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,oEAAoE;IACpE,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,+DAA+D;IAC/D,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B;AA6BD;;;;GAIG;AACH,wBAAsB,iBAAiB,CACrC,aAAa,EAAE,UAAU,EACzB,aAAa,EAAE,UAAU,EACzB,YAAY,EAAE,UAAU,EACxB,YAAY,EAAE,UAAU,EACxB,MAAM,CAAC,EAAE,MAAM,GACd,OAAO,CAAC,mBAAmB,CAAC,CAoB9B;AAED;;;;GAIG;AACH,wBAAsB,8BAA8B,CAClD,kBAAkB,EAAE,UAAU,EAC9B,aAAa,EAAE,UAAU,EACzB,YAAY,EAAE,UAAU,EACxB,YAAY,EAAE,UAAU,EACxB,MAAM,CAAC,EAAE,MAAM,GACd,OAAO,CAAC,mBAAmB,CAAC,CA4B9B;AAED;;;;;GAKG;AACH,wBAAsB,mBAAmB,CACvC,MAAM,EAAE,mBAAmB,EAC3B,oBAAoB,CAAC,EAAE,MAAM,GAC5B,OAAO,CAAC,OAAO,CAAC,CAgClB;AAID,kDAAkD;AAClD,MAAM,WAAW,qBAAqB;IACpC,KAAK,EAAE,OAAO,CAAC;IACf,kBAAkB,EAAE,MAAM,CAAC;IAC3B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;CAC5C;AAED;;;GAGG;AACH,wBAAsB,qBAAqB,CACzC,KAAK,EAAE,mBAAmB,EAAE,EAC5B,oBAAoB,CAAC,EAAE,MAAM,GAC5B,OAAO,CAAC,qBAAqB,CAAC,CA+EhC;AAID,sEAAsE;AACtE,eAAO,MAAM,yBAAyB,EAAG,4BAAqC,CAAC;AAE/E;;;;GAIG;AACH,wBAAsB,sBAAsB,CAC1C,kBAAkB,EAAE,UAAU,EAC9B,kBAAkB,EAAE,UAAU,EAC9B,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC;IACT,OAAO,EAAE,MAAM,CAAC;IAChB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC,CAkBD;AAED;;;GAGG;AACH,wBAAsB,wBAAwB,CAC5C,UAAU,EAAE;IACV,kBAAkB,EAAE,MAAM,CAAC;IAC3B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,SAAS,EAAE,MAAM,CAAC;CACnB,EACD,oBAAoB,EAAE,MAAM,EAC5B,oBAAoB,EAAE,MAAM,GAC3B,OAAO,CAAC,OAAO,CAAC,CA+BlB;AAID,4DAA4D;AAC5D,eAAO,MAAM,2BAA2B,EAAG,4BAAqC,CAAC;AAEjF,MAAM,WAAW,4BAA4B;IAC3C,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,oBAAoB,EAAE,eAAe,EAAE,CAAC;IACxC,YAAY,EAAE,MAAM,CAAC;IACrB;;;;OAIG;IACH,KAAK,EAAE,OAAO,2BAA2B,CAAC;IAC1C,mBAAmB,EAAE,MAAM,CAAC;CAC7B;AAED;;;;GAIG;AACH,wBAAsB,wBAAwB,CAC5C,OAAO,EAAE,IAAI,CAAC,4BAA4B,EAAE,cAAc,GAAG,qBAAqB,GAAG,OAAO,CAAC,EAC7F,mBAAmB,EAAE,UAAU,GAC9B,OAAO,CAAC,4BAA4B,CAAC,CAoBvC;AAED;;;;;;GAMG;AACH,wBAAsB,0BAA0B,CAC9C,OAAO,EAAE,4BAA4B,EACrC,kBAAkB,EAAE,UAAU,EAC9B,eAAe,CAAC,EAAE,SAAS,GAC1B,OAAO,CAAC;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAuD7C;AAcD,mEAAmE;AACnE,eAAO,MAAM,yBAAyB,EAAG,4BAAqC,CAAC;AAE/E;;;GAGG;AACH,MAAM,WAAW,0BAA0B;IACzC,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,OAAO,yBAAyB,CAAC;IACxC,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;;;;;;;GAQG;AACH,wBAAsB,sBAAsB,CAC1C,CAAC,SAAS,IAAI,CAAC,0BAA0B,EAAE,WAAW,GAAG,OAAO,CAAC,EAEjE,IAAI,EAAE,CAAC,EACP,UAAU,EAAE,UAAU,GACrB,OAAO,CAAC,CAAC,GAAG;IAAE,KAAK,EAAE,OAAO,yBAAyB,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC,CAS7E;AAED;;;;;;;;GAQG;AACH,MAAM,MAAM,8BAA8B,GACtC;IAAE,KAAK,EAAE,IAAI,CAAA;CAAE,GACf;IAAE,KAAK,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,WAAW,GAAG,OAAO,GAAG,mBAAmB,GAAG,eAAe,CAAA;CAAE,CAAC;AAE5F,qFAAqF;AACrF,eAAO,MAAM,8BAA8B,QAAgB,CAAC;AAE5D,wBAAsB,wBAAwB,CAC5C,IAAI,EAAE,0BAA0B,EAChC,GAAG,GAAE,MAAmB,GACvB,OAAO,CAAC,8BAA8B,CAAC,CAoCzC;AAID,OAAO,KAAK,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAEvF;;;;;;GAMG;AACH,wBAAsB,4BAA4B,CAChD,QAAQ,EAAE,sBAAsB,EAAE,GACjC,OAAO,CAAC,MAAM,CAAC,CAGjB;AAED,MAAM,MAAM,iCAAiC,GACzC;IAAE,KAAK,EAAE,IAAI,CAAA;CAAE,GACf;IACE,KAAK,EAAE,KAAK,CAAC;IACb,MAAM,EAAE,uBAAuB,GAAG,mBAAmB,GAAG,mBAAmB,GAAG,WAAW,CAAC;CAC3F,CAAC;AAEN;;;;;;;;;;;;;GAaG;AACH,wBAAsB,2BAA2B,CAC/C,QAAQ,EAAE,qBAAqB,EAC/B,SAAS,EAAE,UAAU,GACpB,OAAO,CAAC,iCAAiC,CAAC,CAe5C;AAID,OAAO,KAAK,EACV,gBAAgB,EAChB,cAAc,EACd,oBAAoB,EACpB,gBAAgB,EAChB,qBAAqB,EAEtB,MAAM,mBAAmB,CAAC;AAuB3B,wEAAwE;AACxE,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,gBAAgB,EACzB,SAAS,EAAE,UAAU,GACpB,OAAO,CAAC,OAAO,CAAC,CAElB;AAED;;;;;;;GAOG;AACH,wBAAsB,oBAAoB,CACxC,OAAO,EAAE,IAAI,CAAC,gBAAgB,EAAE,WAAW,CAAC,EAC5C,UAAU,EAAE,UAAU,GACrB,OAAO,CAAC,gBAAgB,CAAC,CAO3B;AAED,qEAAqE;AACrE,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,cAAc,EACrB,SAAS,EAAE,UAAU,GACpB,OAAO,CAAC,OAAO,CAAC,CAElB;AAED,8EAA8E;AAC9E,wBAAgB,0BAA0B,CACxC,WAAW,EAAE,oBAAoB,EACjC,SAAS,EAAE,UAAU,GACpB,OAAO,CAAC,OAAO,CAAC,CAElB;AAED;8EAC8E;AAC9E,wBAAgB,2BAA2B,CACzC,YAAY,EAAE,qBAAqB,EACnC,SAAS,EAAE,UAAU,GACpB,OAAO,CAAC,OAAO,CAAC,CAElB;AAED;;;;;;GAMG;AACH,wBAAsB,sBAAsB,CAC1C,MAAM,EAAE,gBAAgB,EACxB,SAAS,EAAE,UAAU,GACpB,OAAO,CAAC,OAAO,CAAC,CAUlB;AAID,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAEvD;;;;;;;;;;;;GAYG;AACH,wBAAsB,mBAAmB,CACvC,QAAQ,EAAE,aAAa,EACvB,SAAS,EAAE,UAAU,GACpB,OAAO,CAAC,OAAO,CAAC,CAQlB;AAED;;;;;;;GAOG;AACH,wBAAsB,oBAAoB,CACxC,MAAM,EAAE,IAAI,CAAC,gBAAgB,EAAE,aAAa,GAAG,WAAW,CAAC,EAC3D,UAAU,EAAE,UAAU,GACrB,OAAO,CAAC,gBAAgB,CAAC,CAS3B"}
|
|
1
|
+
{"version":3,"file":"artifacts.d.ts","sourceRoot":"","sources":["../src/artifacts.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,6 +7,7 @@
|
|
|
7
7
|
*
|
|
8
8
|
* motebit/credential-anchor@1.0 §3 (leaf hash) and §5.2 (verification).
|
|
9
9
|
*/
|
|
10
|
+
import type { MerkleTreeVersion } from "@motebit/protocol";
|
|
10
11
|
/** The one suite CredentialAnchorBatch records sign under today. */
|
|
11
12
|
export declare const CREDENTIAL_ANCHOR_SUITE: "motebit-jcs-ed25519-hex-v1";
|
|
12
13
|
/**
|
|
@@ -19,7 +20,7 @@ export declare const CREDENTIAL_ANCHOR_SUITE: "motebit-jcs-ed25519-hex-v1";
|
|
|
19
20
|
* @param credential - Full verifiable credential object (with proof)
|
|
20
21
|
* @returns Hex-encoded SHA-256 hash
|
|
21
22
|
*/
|
|
22
|
-
export declare function computeCredentialLeaf(credential: Record<string, unknown
|
|
23
|
+
export declare function computeCredentialLeaf(credential: Record<string, unknown>, treeHashVersion?: MerkleTreeVersion): Promise<string>;
|
|
23
24
|
/** Result of verifying a credential anchor proof. */
|
|
24
25
|
export interface CredentialAnchorVerifyResult {
|
|
25
26
|
/** Whether all checked steps passed. */
|
|
@@ -81,6 +82,12 @@ export interface CredentialAnchorProofFields {
|
|
|
81
82
|
tx_hash: string;
|
|
82
83
|
anchored_at: number;
|
|
83
84
|
} | null;
|
|
85
|
+
/**
|
|
86
|
+
* Tree-hash recipe for the Merkle path. **Absent ⇒ `merkle-sha256-plain-v1`**.
|
|
87
|
+
* Resolved fail-closed (unknown ⇒ reject, never silent-downgrade); threaded to
|
|
88
|
+
* the leaf builder (step 1) and `verifyMerkleInclusion` (step 2).
|
|
89
|
+
*/
|
|
90
|
+
tree_hash_version?: MerkleTreeVersion;
|
|
84
91
|
}
|
|
85
92
|
/**
|
|
86
93
|
* Verify a credential anchor proof — the 4-step self-verification algorithm.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"credential-anchor.d.ts","sourceRoot":"","sources":["../src/credential-anchor.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;
|
|
1
|
+
{"version":3,"file":"credential-anchor.d.ts","sourceRoot":"","sources":["../src/credential-anchor.ts"],"names":[],"mappings":"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"}
|
|
@@ -24,9 +24,9 @@
|
|
|
24
24
|
* admissible signature is then cryptographically verified through
|
|
25
25
|
* `verifyBySuite`.
|
|
26
26
|
*/
|
|
27
|
-
import type { DeletionCertificate, HorizonWitness, HorizonWitnessRequestBody
|
|
27
|
+
import type { DeletionCertificate, HorizonWitness, HorizonWitnessRequestBody } from "@motebit/protocol";
|
|
28
28
|
/** The cryptosuite every deletion certificate signs under today. */
|
|
29
|
-
export declare const DELETION_CERTIFICATE_SUITE:
|
|
29
|
+
export declare const DELETION_CERTIFICATE_SUITE: "motebit-jcs-ed25519-b64-v1";
|
|
30
30
|
/**
|
|
31
31
|
* Filing window for `WitnessOmissionDispute` (retention phase 4b-3).
|
|
32
32
|
* A dispute MUST be filed within 24h of the cert's `issued_at`;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deletion-certificate.d.ts","sourceRoot":"","sources":["../src/deletion-certificate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,OAAO,KAAK,EACV,mBAAmB,EAEnB,cAAc,EACd,yBAAyB,
|
|
1
|
+
{"version":3,"file":"deletion-certificate.d.ts","sourceRoot":"","sources":["../src/deletion-certificate.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Federation settlement anchor — leaf hashing and self-verification.
|
|
3
|
+
*
|
|
4
|
+
* Permissive floor (Apache-2.0): these functions are part of the open
|
|
5
|
+
* protocol. A peer relay that holds (a) a signed `FederationSettlementRecord`,
|
|
6
|
+
* (b) a `FederationSettlementAnchorProof` for it, and (c) the booking relay's
|
|
7
|
+
* public key can verify — offline, with only `@motebit/crypto` — that the
|
|
8
|
+
* relay anchored exactly that record into a Merkle root, without contacting it.
|
|
9
|
+
*
|
|
10
|
+
* relay-federation-v1.md §7.6 (Merkle batch) + the §9.1 convergence
|
|
11
|
+
* (agent-settlement-anchor-v1.md): the federation leaf is now the
|
|
12
|
+
* verbatim-artifact hash the per-agent and credential streams already use, and
|
|
13
|
+
* this is the portable verifier that closes the self-attesting loop the
|
|
14
|
+
* producer (`services/relay/src/anchoring.ts`), the proof endpoint
|
|
15
|
+
* (`GET /federation/v1/settlement/proof`), and the wire types
|
|
16
|
+
* (`@motebit/protocol`) were shipping without.
|
|
17
|
+
*
|
|
18
|
+
* Sibling of `agent-settlement-anchor.ts` and `credential-anchor.ts`: same
|
|
19
|
+
* Merkle primitive (`verifyMerkleInclusion`), same 4-step shape. The FOURTH
|
|
20
|
+
* consumer of the canonical `merkle.ts` primitive (see `crypto/CLAUDE.md` rule 6).
|
|
21
|
+
*/
|
|
22
|
+
import type { MerkleTreeVersion } from "@motebit/protocol";
|
|
23
|
+
import type { ChainAnchorVerifier } from "./credential-anchor.js";
|
|
24
|
+
/**
|
|
25
|
+
* The one suite federation anchor batch records sign under today. JCS
|
|
26
|
+
* canonicalization, Ed25519 primitive, hex signature + hex public-key encoding
|
|
27
|
+
* (note: hex, unlike the base64url `FederationSettlementRecord` suite — the
|
|
28
|
+
* anchor batch and the settlement it commits are independently signed artifacts
|
|
29
|
+
* with their own suites, exactly as on the per-agent stream).
|
|
30
|
+
*/
|
|
31
|
+
export declare const FEDERATION_SETTLEMENT_ANCHOR_SUITE: "motebit-jcs-ed25519-hex-v1";
|
|
32
|
+
/**
|
|
33
|
+
* Compute a federation settlement leaf hash for Merkle anchoring.
|
|
34
|
+
*
|
|
35
|
+
* The input is the WHOLE signed `FederationSettlementRecord` (signature
|
|
36
|
+
* included), passed as a plain object. The leaf is `SHA-256(canonicalJson(record))`
|
|
37
|
+
* — the holder reproduces it from exactly the bytes they hold, with no field
|
|
38
|
+
* projection. (This is the SCITT / RFC 6962 invariant: anchor the exact signed
|
|
39
|
+
* object; never a re-typed subset — a subset cannot be reproduced from the
|
|
40
|
+
* holder's record and the receipt dies on arrival. It is the move
|
|
41
|
+
* agent-settlement-anchor-v1.md §9.1 named for this stream.)
|
|
42
|
+
*
|
|
43
|
+
* `canonicalJson` is JCS/RFC 8785 — the same canonicalization the relay used to
|
|
44
|
+
* sign the record, so a peer who holds the signed record and a verifier who
|
|
45
|
+
* holds the producer's row derive the identical leaf.
|
|
46
|
+
*
|
|
47
|
+
* @param settlement - The full signed FederationSettlementRecord object
|
|
48
|
+
* @returns Hex-encoded SHA-256 hash
|
|
49
|
+
*/
|
|
50
|
+
export declare function computeFederationSettlementLeaf(settlement: Record<string, unknown>, treeHashVersion?: MerkleTreeVersion): Promise<string>;
|
|
51
|
+
/** Result of verifying a federation settlement anchor proof. */
|
|
52
|
+
export interface FederationSettlementAnchorVerifyResult {
|
|
53
|
+
/** Whether all checked steps passed. */
|
|
54
|
+
valid: boolean;
|
|
55
|
+
/** Individual step results. */
|
|
56
|
+
steps: {
|
|
57
|
+
/** Step 1: the held FederationSettlementRecord hashes to the claimed leaf. */
|
|
58
|
+
hash_valid: boolean;
|
|
59
|
+
/** Step 2: Merkle proof reconstructs to the claimed root. */
|
|
60
|
+
merkle_valid: boolean;
|
|
61
|
+
/** Step 3: relay's Ed25519 signature over the batch payload is valid. */
|
|
62
|
+
relay_signature_valid: boolean;
|
|
63
|
+
/** Step 4: onchain anchor verified (null if not checked). */
|
|
64
|
+
chain_verified: boolean | null;
|
|
65
|
+
};
|
|
66
|
+
/** Error messages for failed steps. */
|
|
67
|
+
errors: string[];
|
|
68
|
+
}
|
|
69
|
+
/** The anchor-proof fields needed for verification (subset of `FederationSettlementAnchorProof`). */
|
|
70
|
+
export interface FederationSettlementAnchorProofFields {
|
|
71
|
+
settlement_hash: string;
|
|
72
|
+
batch_id: string;
|
|
73
|
+
merkle_root: string;
|
|
74
|
+
leaf_count: number;
|
|
75
|
+
first_settled_at: number;
|
|
76
|
+
last_settled_at: number;
|
|
77
|
+
leaf_index: number;
|
|
78
|
+
siblings: string[];
|
|
79
|
+
layer_sizes: number[];
|
|
80
|
+
relay_id: string;
|
|
81
|
+
relay_public_key: string;
|
|
82
|
+
/**
|
|
83
|
+
* Cryptosuite discriminator for `batch_signature`. Always
|
|
84
|
+
* `"motebit-jcs-ed25519-hex-v1"`. Signature-bound: the suite is part of the
|
|
85
|
+
* canonical batch payload (see step 3), so a cross-suite confusion cannot
|
|
86
|
+
* pass verification. Verifiers reject missing or unknown values fail-closed.
|
|
87
|
+
*/
|
|
88
|
+
suite: typeof FEDERATION_SETTLEMENT_ANCHOR_SUITE;
|
|
89
|
+
batch_signature: string;
|
|
90
|
+
anchor: {
|
|
91
|
+
chain: string;
|
|
92
|
+
network: string;
|
|
93
|
+
tx_hash: string;
|
|
94
|
+
anchored_at: number;
|
|
95
|
+
} | null;
|
|
96
|
+
/**
|
|
97
|
+
* Tree-hash recipe for the Merkle path. **Absent ⇒ `merkle-sha256-plain-v1`**.
|
|
98
|
+
* Resolved fail-closed (unknown ⇒ reject, never silent-downgrade); threaded to
|
|
99
|
+
* the leaf builder (step 1) and `verifyMerkleInclusion` (step 2).
|
|
100
|
+
*/
|
|
101
|
+
tree_hash_version?: MerkleTreeVersion;
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Verify a federation settlement anchor proof — the 4-step self-verification
|
|
105
|
+
* algorithm. Steps 1–3 are fully offline. Step 4 (onchain lookup) requires a
|
|
106
|
+
* callback and is skipped if not provided or if the proof has no onchain anchor.
|
|
107
|
+
*
|
|
108
|
+
* **Scope — what this proves and what it does NOT.** A `valid` result proves the
|
|
109
|
+
* relay anchored *these exact record bytes* into a signed, (optionally) onchain
|
|
110
|
+
* Merkle root — content non-equivocation. It does NOT, by design (mirroring the
|
|
111
|
+
* per-agent `verifyAgentSettlementAnchor`):
|
|
112
|
+
* - bind the served `settlement` to a particular `settlement_id` or to the
|
|
113
|
+
* caller's own view of the settlement. A relay could return a *valid*
|
|
114
|
+
* `{proof, record}` for a *different* settlement. A caller auditing a
|
|
115
|
+
* specific settlement MUST compare `settlement.settlement_id` / amounts /
|
|
116
|
+
* counterparties against its own row.
|
|
117
|
+
* - verify the record's OWN Ed25519 signature. The signature bytes are inside
|
|
118
|
+
* the hashed leaf (so tampering fails step 1), but "the issuing relay
|
|
119
|
+
* attested the (gross,fee,net,rate) tuple" requires a separate
|
|
120
|
+
* `verifyFederationSettlement(record, issuerKey)` call.
|
|
121
|
+
*
|
|
122
|
+
* @param settlement - The full signed FederationSettlementRecord the peer holds
|
|
123
|
+
* @param proof - The FederationSettlementAnchorProof served by the relay
|
|
124
|
+
* @param chainVerifier - Optional callback for step 4 (onchain verification)
|
|
125
|
+
* @returns Verification result with per-step breakdown
|
|
126
|
+
*
|
|
127
|
+
* @example
|
|
128
|
+
* ```ts
|
|
129
|
+
* import { verifyFederationSettlementAnchor } from "@motebit/crypto";
|
|
130
|
+
*
|
|
131
|
+
* const result = await verifyFederationSettlementAnchor(record, proof);
|
|
132
|
+
* if (result.valid) {
|
|
133
|
+
* // Steps 1-3 passed: the relay anchored exactly this settlement.
|
|
134
|
+
* }
|
|
135
|
+
* ```
|
|
136
|
+
*/
|
|
137
|
+
export declare function verifyFederationSettlementAnchor(settlement: Record<string, unknown>, proof: FederationSettlementAnchorProofFields, chainVerifier?: ChainAnchorVerifier): Promise<FederationSettlementAnchorVerifyResult>;
|
|
138
|
+
//# sourceMappingURL=federation-settlement-anchor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"federation-settlement-anchor.d.ts","sourceRoot":"","sources":["../src/federation-settlement-anchor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAK3D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAElE;;;;;;GAMG;AACH,eAAO,MAAM,kCAAkC,EAAG,4BAAqC,CAAC;AAIxF;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAsB,+BAA+B,CACnD,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACnC,eAAe,GAAE,iBAA4C,GAC5D,OAAO,CAAC,MAAM,CAAC,CAKjB;AAID,gEAAgE;AAChE,MAAM,WAAW,sCAAsC;IACrD,wCAAwC;IACxC,KAAK,EAAE,OAAO,CAAC;IACf,+BAA+B;IAC/B,KAAK,EAAE;QACL,8EAA8E;QAC9E,UAAU,EAAE,OAAO,CAAC;QACpB,6DAA6D;QAC7D,YAAY,EAAE,OAAO,CAAC;QACtB,yEAAyE;QACzE,qBAAqB,EAAE,OAAO,CAAC;QAC/B,6DAA6D;QAC7D,cAAc,EAAE,OAAO,GAAG,IAAI,CAAC;KAChC,CAAC;IACF,uCAAuC;IACvC,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,qGAAqG;AACrG,MAAM,WAAW,qCAAqC;IACpD,eAAe,EAAE,MAAM,CAAC;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,gBAAgB,EAAE,MAAM,CAAC;IACzB,eAAe,EAAE,MAAM,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,gBAAgB,EAAE,MAAM,CAAC;IACzB;;;;;OAKG;IACH,KAAK,EAAE,OAAO,kCAAkC,CAAC;IACjD,eAAe,EAAE,MAAM,CAAC;IACxB,MAAM,EAAE;QACN,KAAK,EAAE,MAAM,CAAC;QACd,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,EAAE,MAAM,CAAC;QAChB,WAAW,EAAE,MAAM,CAAC;KACrB,GAAG,IAAI,CAAC;IACT;;;;OAIG;IACH,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;CACvC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,wBAAsB,gCAAgC,CACpD,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACnC,KAAK,EAAE,qCAAqC,EAC5C,aAAa,CAAC,EAAE,mBAAmB,GAClC,OAAO,CAAC,sCAAsC,CAAC,CA8GjD"}
|
package/dist/index.d.ts
CHANGED
|
@@ -21,6 +21,7 @@
|
|
|
21
21
|
* import { issueReputationCredential } from "@motebit/crypto";
|
|
22
22
|
* const vc = await issueReputationCredential(snapshot, privateKey, publicKey, did);
|
|
23
23
|
*/
|
|
24
|
+
import type { MerkleTreeVersion } from "@motebit/protocol";
|
|
24
25
|
export interface MotebitIdentityFile {
|
|
25
26
|
spec: string;
|
|
26
27
|
motebit_id: string;
|
|
@@ -249,27 +250,6 @@ export interface VerifyOptions {
|
|
|
249
250
|
*/
|
|
250
251
|
hardwareAttestation?: HardwareAttestationVerifiers;
|
|
251
252
|
}
|
|
252
|
-
/**
|
|
253
|
-
* @deprecated since 1.0.0, removed in 3.0.0. Use {@link VerifyResult} instead.
|
|
254
|
-
*
|
|
255
|
-
* Reason: pre-0.4.0 return shape with a flat `error: string` field and no
|
|
256
|
-
* type discriminator. The modern {@link VerifyResult} is a discriminated
|
|
257
|
-
* union (`type: "identity" | "receipt" | "credential" | "presentation"`)
|
|
258
|
-
* with a structured `errors: Array<{ message: string }>` — one shape covers
|
|
259
|
-
* every artifact type motebit verifies.
|
|
260
|
-
*/
|
|
261
|
-
export interface LegacyVerifyResult {
|
|
262
|
-
valid: boolean;
|
|
263
|
-
identity: MotebitIdentityFile | null;
|
|
264
|
-
did?: string;
|
|
265
|
-
error?: string;
|
|
266
|
-
succession?: {
|
|
267
|
-
valid: boolean;
|
|
268
|
-
genesis_public_key?: string;
|
|
269
|
-
rotations: number;
|
|
270
|
-
error?: string;
|
|
271
|
-
};
|
|
272
|
-
}
|
|
273
253
|
/**
|
|
274
254
|
* Parse a motebit.md file into its components.
|
|
275
255
|
* Does not verify the signature — use `verify()` for that.
|
|
@@ -372,7 +352,7 @@ export declare function verifyMigratingKeyBinding(motebitId: string, presentedKe
|
|
|
372
352
|
* produces the log and the verifier that checks inclusion MUST agree on this
|
|
373
353
|
* convention. See `docs/doctrine/identity-binding-verification.md`.
|
|
374
354
|
*/
|
|
375
|
-
export declare function identityLogLeaf(motebitId: string, currentKeyHex: string): Promise<string>;
|
|
355
|
+
export declare function identityLogLeaf(motebitId: string, currentKeyHex: string, treeHashVersion?: MerkleTreeVersion): Promise<string>;
|
|
376
356
|
/** Merkle inclusion proof of an identity-log leaf under an anchored root. */
|
|
377
357
|
export interface IdentityLogInclusionProof {
|
|
378
358
|
/** Leaf position in the bottom layer (0-based). */
|
|
@@ -388,6 +368,13 @@ export interface IdentityLogInclusionProof {
|
|
|
388
368
|
* non-zero-network and defeats split-view equivocation.
|
|
389
369
|
*/
|
|
390
370
|
readonly anchoredRoot: string;
|
|
371
|
+
/**
|
|
372
|
+
* Tree-hash recipe for the leaf + Merkle path. **Absent ⇒
|
|
373
|
+
* `merkle-sha256-plain-v1`** — proofs minted before this axis existed verify
|
|
374
|
+
* unchanged. Resolved fail-closed: an unknown value rejects the binding
|
|
375
|
+
* (never silently downgrades). A v2 identity-log producer emits it.
|
|
376
|
+
*/
|
|
377
|
+
readonly tree_hash_version?: MerkleTreeVersion;
|
|
391
378
|
}
|
|
392
379
|
/**
|
|
393
380
|
* Anchored identity binding: sovereign-root binding (via
|
|
@@ -511,39 +498,16 @@ export declare function verifySkillBundle(input: SkillBundleInput): Promise<Skil
|
|
|
511
498
|
* ```
|
|
512
499
|
*/
|
|
513
500
|
export declare function verify(artifact: unknown, options?: VerifyOptions): Promise<VerifyResult>;
|
|
514
|
-
/**
|
|
515
|
-
* Verify a motebit.md identity file. Backward-compatible with pre-0.4.0.
|
|
516
|
-
*
|
|
517
|
-
* @deprecated since 1.0.0, removed in 3.0.0. Use `verify(content, { expectedType: "identity" })` instead.
|
|
518
|
-
*
|
|
519
|
-
* Reason: `verify()` is the unified dispatcher for every signed artifact
|
|
520
|
-
* type (identity, receipt, credential, presentation) and returns a typed
|
|
521
|
-
* {@link VerifyResult} discriminated union. `verifyIdentityFile` is the
|
|
522
|
-
* pre-0.4.0 identity-only wrapper kept alive for the deprecation window —
|
|
523
|
-
* it reshapes `verify()`'s output into the legacy flat-`error` format.
|
|
524
|
-
*
|
|
525
|
-
* Migration:
|
|
526
|
-
* ```ts
|
|
527
|
-
* // Before:
|
|
528
|
-
* const r = await verifyIdentityFile(content);
|
|
529
|
-
* if (r.valid) console.log(r.did);
|
|
530
|
-
* else console.log(r.error);
|
|
531
|
-
*
|
|
532
|
-
* // After:
|
|
533
|
-
* const r = await verify(content, { expectedType: "identity" });
|
|
534
|
-
* if (r.type === "identity" && r.valid) console.log(r.did);
|
|
535
|
-
* else console.log(r.errors?.[0]?.message);
|
|
536
|
-
* ```
|
|
537
|
-
*/
|
|
538
|
-
export declare function verifyIdentityFile(content: string): Promise<LegacyVerifyResult>;
|
|
539
501
|
export * from "./signing.js";
|
|
540
502
|
export * from "./artifacts.js";
|
|
541
503
|
export { signVerifiableCredential, verifyVerifiableCredential, signVerifiablePresentation, verifyVerifiablePresentation, issueGradientCredential, issueReputationCredential, issueTrustCredential, createPresentation, type GradientCredentialSubject, type ReputationCredentialSubject, type TrustCredentialSubject, } from "./credentials.js";
|
|
542
504
|
export { signContentArtifact, verifyContentArtifact, CONTENT_ARTIFACT_SUITE, } from "./content-artifact.js";
|
|
543
505
|
export type { ContentArtifactManifest, SignContentArtifactOptions, VerifyContentArtifactResult, } from "./content-artifact.js";
|
|
544
506
|
export { computeCredentialLeaf, verifyCredentialAnchor, verifyRevocationAnchor, type CredentialAnchorVerifyResult, type CredentialAnchorProofFields, type ChainAnchorVerifier, type RevocationAnchorVerifyResult, type RevocationAnchorProof, } from "./credential-anchor.js";
|
|
507
|
+
export { AGENT_SETTLEMENT_ANCHOR_SUITE, computeAgentSettlementLeaf, verifyAgentSettlementAnchor, type AgentSettlementAnchorVerifyResult, type AgentSettlementAnchorProofFields, } from "./agent-settlement-anchor.js";
|
|
508
|
+
export { FEDERATION_SETTLEMENT_ANCHOR_SUITE, computeFederationSettlementLeaf, verifyFederationSettlementAnchor, type FederationSettlementAnchorVerifyResult, type FederationSettlementAnchorProofFields, } from "./federation-settlement-anchor.js";
|
|
545
509
|
export { SKILL_SIGNATURE_SUITE, canonicalizeSkillManifestBytes, canonicalizeSkillEnvelopeBytes, signSkillManifest, signSkillEnvelope, verifySkillManifest, verifySkillManifestDetailed, verifySkillEnvelope, verifySkillEnvelopeDetailed, decodeSkillSignaturePublicKey, type SkillVerifyReason, type SkillVerifyDetail, } from "./skills.js";
|
|
546
510
|
export { DELETION_CERTIFICATE_SUITE, WITNESS_OMISSION_DISPUTE_WINDOW_MS, canonicalizeMultiSignatureCert, canonicalizeHorizonCert, canonicalizeHorizonCertForWitness, signCertAsSubject, signCertAsOperator, signCertAsDelegate, signCertAsGuardian, signHorizonCertAsIssuer, signHorizonWitness, canonicalizeHorizonWitnessRequestBody, signHorizonWitnessRequestBody, verifyHorizonWitnessRequestSignature, verifyDeletionCertificate, verifyRetentionManifest, type DeletionCertificateVerifyResult, type DeletionCertificateVerifyContext, type RetentionManifestVerifyResult, } from "./deletion-certificate.js";
|
|
547
511
|
export { canonicalizeWitnessOmissionDispute, signWitnessOmissionDispute, verifyWitnessOmissionDispute, type WitnessOmissionDisputeVerifyResult, type WitnessOmissionDisputeVerifyContext, } from "./witness-omission-dispute.js";
|
|
548
|
-
export { verifyMerkleInclusion } from "./merkle.js";
|
|
512
|
+
export { verifyMerkleInclusion, hashLeaf, canonicalLeaf, resolveTreeHashVersion, } from "./merkle.js";
|
|
549
513
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -4972,6 +4972,25 @@ function isScopeNarrowed(parentScope, childScope) {
|
|
|
4972
4972
|
}
|
|
4973
4973
|
|
|
4974
4974
|
// src/merkle.ts
|
|
4975
|
+
var NODE_TAG_V2 = new Uint8Array([1]);
|
|
4976
|
+
var LEAF_TAG_V2 = new Uint8Array([0]);
|
|
4977
|
+
async function hashLeaf(entry, treeHashVersion = "merkle-sha256-plain-v1") {
|
|
4978
|
+
if (treeHashVersion === "merkle-sha256-plain-v1") {
|
|
4979
|
+
return toHex(await sha2562(entry));
|
|
4980
|
+
}
|
|
4981
|
+
if (treeHashVersion === "merkle-sha256-rfc6962-v2") {
|
|
4982
|
+
return toHex(await sha2562(concat(LEAF_TAG_V2, entry)));
|
|
4983
|
+
}
|
|
4984
|
+
throw new Error(`Unsupported MerkleTreeVersion: ${String(treeHashVersion)}`);
|
|
4985
|
+
}
|
|
4986
|
+
async function canonicalLeaf(value, treeHashVersion = "merkle-sha256-plain-v1") {
|
|
4987
|
+
return hashLeaf(new TextEncoder().encode(canonicalJson(value)), treeHashVersion);
|
|
4988
|
+
}
|
|
4989
|
+
function resolveTreeHashVersion(raw) {
|
|
4990
|
+
if (raw === void 0) return "merkle-sha256-plain-v1";
|
|
4991
|
+
if (raw === "merkle-sha256-plain-v1" || raw === "merkle-sha256-rfc6962-v2") return raw;
|
|
4992
|
+
return null;
|
|
4993
|
+
}
|
|
4975
4994
|
function fromHex(hex) {
|
|
4976
4995
|
const bytes = new Uint8Array(hex.length / 2);
|
|
4977
4996
|
for (let i = 0; i < hex.length; i += 2) {
|
|
@@ -4988,7 +5007,18 @@ function concat(a, b) {
|
|
|
4988
5007
|
out.set(b, a.length);
|
|
4989
5008
|
return out;
|
|
4990
5009
|
}
|
|
4991
|
-
|
|
5010
|
+
function concat3(a, b, c) {
|
|
5011
|
+
const out = new Uint8Array(a.length + b.length + c.length);
|
|
5012
|
+
out.set(a);
|
|
5013
|
+
out.set(b, a.length);
|
|
5014
|
+
out.set(c, a.length + b.length);
|
|
5015
|
+
return out;
|
|
5016
|
+
}
|
|
5017
|
+
async function verifyMerkleInclusion(leaf, index, siblings, layerSizes, expectedRoot, treeHashVersion = "merkle-sha256-plain-v1") {
|
|
5018
|
+
if (treeHashVersion !== "merkle-sha256-plain-v1" && treeHashVersion !== "merkle-sha256-rfc6962-v2") {
|
|
5019
|
+
return false;
|
|
5020
|
+
}
|
|
5021
|
+
const nodeTag = treeHashVersion === "merkle-sha256-rfc6962-v2" ? NODE_TAG_V2 : null;
|
|
4992
5022
|
let current;
|
|
4993
5023
|
try {
|
|
4994
5024
|
current = fromHex(leaf);
|
|
@@ -5008,7 +5038,9 @@ async function verifyMerkleInclusion(leaf, index, siblings, layerSizes, expected
|
|
|
5008
5038
|
} catch {
|
|
5009
5039
|
return false;
|
|
5010
5040
|
}
|
|
5011
|
-
const
|
|
5041
|
+
const left = idx % 2 === 0 ? current : siblingBytes;
|
|
5042
|
+
const right = idx % 2 === 0 ? siblingBytes : current;
|
|
5043
|
+
const combined = nodeTag ? concat3(nodeTag, left, right) : concat(left, right);
|
|
5012
5044
|
current = await sha2562(combined);
|
|
5013
5045
|
sibIdx++;
|
|
5014
5046
|
}
|
|
@@ -5888,6 +5920,26 @@ async function verifySettlement(settlement, issuerPublicKey) {
|
|
|
5888
5920
|
return false;
|
|
5889
5921
|
}
|
|
5890
5922
|
}
|
|
5923
|
+
var FEDERATION_SETTLEMENT_RECORD_SUITE = "motebit-jcs-ed25519-b64-v1";
|
|
5924
|
+
async function signFederationSettlement(settlement, issuerPrivateKey) {
|
|
5925
|
+
const body = { ...settlement, suite: FEDERATION_SETTLEMENT_RECORD_SUITE };
|
|
5926
|
+
const canonical = canonicalJson(body);
|
|
5927
|
+
const message = new TextEncoder().encode(canonical);
|
|
5928
|
+
const sig = await signBySuite(FEDERATION_SETTLEMENT_RECORD_SUITE, message, issuerPrivateKey);
|
|
5929
|
+
return { ...body, signature: toBase64Url(sig) };
|
|
5930
|
+
}
|
|
5931
|
+
async function verifyFederationSettlement(settlement, issuerPublicKey) {
|
|
5932
|
+
if (settlement.suite !== FEDERATION_SETTLEMENT_RECORD_SUITE) return false;
|
|
5933
|
+
const { signature, ...body } = settlement;
|
|
5934
|
+
const canonical = canonicalJson(body);
|
|
5935
|
+
const message = new TextEncoder().encode(canonical);
|
|
5936
|
+
try {
|
|
5937
|
+
const sig = fromBase64Url(signature);
|
|
5938
|
+
return await verifyBySuite(settlement.suite, message, sig, issuerPublicKey);
|
|
5939
|
+
} catch {
|
|
5940
|
+
return false;
|
|
5941
|
+
}
|
|
5942
|
+
}
|
|
5891
5943
|
var KEY_SUCCESSION_SUITE = "motebit-jcs-ed25519-hex-v1";
|
|
5892
5944
|
function keySuccessionPayload(oldPublicKeyHex, newPublicKeyHex, timestamp, reason, recovery) {
|
|
5893
5945
|
const obj = {
|
|
@@ -6533,14 +6585,25 @@ async function verifyContentArtifact(manifest, content) {
|
|
|
6533
6585
|
|
|
6534
6586
|
// src/credential-anchor.ts
|
|
6535
6587
|
var CREDENTIAL_ANCHOR_SUITE = "motebit-jcs-ed25519-hex-v1";
|
|
6536
|
-
async function computeCredentialLeaf(credential) {
|
|
6537
|
-
|
|
6538
|
-
const hash2 = await sha2562(new TextEncoder().encode(canonical));
|
|
6539
|
-
return bytesToHex4(hash2);
|
|
6588
|
+
async function computeCredentialLeaf(credential, treeHashVersion = "merkle-sha256-plain-v1") {
|
|
6589
|
+
return canonicalLeaf(credential, treeHashVersion);
|
|
6540
6590
|
}
|
|
6541
6591
|
async function verifyCredentialAnchor(credential, anchorProof, chainVerifier) {
|
|
6542
6592
|
const errors = [];
|
|
6543
|
-
const
|
|
6593
|
+
const treeHashVersion = resolveTreeHashVersion(anchorProof.tree_hash_version);
|
|
6594
|
+
if (treeHashVersion === null) {
|
|
6595
|
+
return {
|
|
6596
|
+
valid: false,
|
|
6597
|
+
steps: {
|
|
6598
|
+
hash_valid: false,
|
|
6599
|
+
merkle_valid: false,
|
|
6600
|
+
relay_signature_valid: false,
|
|
6601
|
+
chain_verified: null
|
|
6602
|
+
},
|
|
6603
|
+
errors: [`Unknown tree_hash_version "${String(anchorProof.tree_hash_version)}" \u2014 rejected`]
|
|
6604
|
+
};
|
|
6605
|
+
}
|
|
6606
|
+
const computedHash = await computeCredentialLeaf(credential, treeHashVersion);
|
|
6544
6607
|
const hashValid = computedHash === anchorProof.credential_hash;
|
|
6545
6608
|
if (!hashValid) {
|
|
6546
6609
|
errors.push(
|
|
@@ -6552,7 +6615,8 @@ async function verifyCredentialAnchor(credential, anchorProof, chainVerifier) {
|
|
|
6552
6615
|
anchorProof.leaf_index,
|
|
6553
6616
|
anchorProof.siblings,
|
|
6554
6617
|
anchorProof.layer_sizes,
|
|
6555
|
-
anchorProof.merkle_root
|
|
6618
|
+
anchorProof.merkle_root,
|
|
6619
|
+
treeHashVersion
|
|
6556
6620
|
);
|
|
6557
6621
|
if (!merkleValid) {
|
|
6558
6622
|
errors.push("Merkle proof does not reconstruct to the claimed root");
|
|
@@ -6679,6 +6743,200 @@ async function verifyRevocationAnchor(proof, revocationPayload, chainVerifier) {
|
|
|
6679
6743
|
};
|
|
6680
6744
|
}
|
|
6681
6745
|
|
|
6746
|
+
// src/agent-settlement-anchor.ts
|
|
6747
|
+
var AGENT_SETTLEMENT_ANCHOR_SUITE = "motebit-jcs-ed25519-hex-v1";
|
|
6748
|
+
async function computeAgentSettlementLeaf(settlement, treeHashVersion = "merkle-sha256-plain-v1") {
|
|
6749
|
+
return canonicalLeaf(settlement, treeHashVersion);
|
|
6750
|
+
}
|
|
6751
|
+
async function verifyAgentSettlementAnchor(settlement, proof, chainVerifier) {
|
|
6752
|
+
const errors = [];
|
|
6753
|
+
const treeHashVersion = resolveTreeHashVersion(proof.tree_hash_version);
|
|
6754
|
+
if (treeHashVersion === null) {
|
|
6755
|
+
return {
|
|
6756
|
+
valid: false,
|
|
6757
|
+
steps: {
|
|
6758
|
+
hash_valid: false,
|
|
6759
|
+
merkle_valid: false,
|
|
6760
|
+
relay_signature_valid: false,
|
|
6761
|
+
chain_verified: null
|
|
6762
|
+
},
|
|
6763
|
+
errors: [`Unknown tree_hash_version "${String(proof.tree_hash_version)}" \u2014 rejected`]
|
|
6764
|
+
};
|
|
6765
|
+
}
|
|
6766
|
+
const computedHash = await computeAgentSettlementLeaf(settlement, treeHashVersion);
|
|
6767
|
+
const hashValid = computedHash === proof.settlement_hash;
|
|
6768
|
+
if (!hashValid) {
|
|
6769
|
+
errors.push(
|
|
6770
|
+
`Hash mismatch: held record hashes to ${computedHash.slice(0, 16)}\u2026, proof claims ${proof.settlement_hash.slice(0, 16)}\u2026`
|
|
6771
|
+
);
|
|
6772
|
+
}
|
|
6773
|
+
const merkleValid = await verifyMerkleInclusion(
|
|
6774
|
+
proof.settlement_hash,
|
|
6775
|
+
proof.leaf_index,
|
|
6776
|
+
proof.siblings,
|
|
6777
|
+
proof.layer_sizes,
|
|
6778
|
+
proof.merkle_root,
|
|
6779
|
+
treeHashVersion
|
|
6780
|
+
);
|
|
6781
|
+
if (!merkleValid) {
|
|
6782
|
+
errors.push("Merkle proof does not reconstruct to the claimed root");
|
|
6783
|
+
}
|
|
6784
|
+
const suite = proof.suite;
|
|
6785
|
+
let relaySignatureValid = false;
|
|
6786
|
+
if (suite !== AGENT_SETTLEMENT_ANCHOR_SUITE) {
|
|
6787
|
+
errors.push(`Relay batch signature: missing or unsupported suite "${String(suite)}"`);
|
|
6788
|
+
} else {
|
|
6789
|
+
const batchPayload = canonicalJson({
|
|
6790
|
+
batch_id: proof.batch_id,
|
|
6791
|
+
merkle_root: proof.merkle_root,
|
|
6792
|
+
leaf_count: proof.leaf_count,
|
|
6793
|
+
first_settled_at: proof.first_settled_at,
|
|
6794
|
+
last_settled_at: proof.last_settled_at,
|
|
6795
|
+
relay_id: proof.relay_id,
|
|
6796
|
+
suite
|
|
6797
|
+
});
|
|
6798
|
+
const payloadBytes = new TextEncoder().encode(batchPayload);
|
|
6799
|
+
try {
|
|
6800
|
+
relaySignatureValid = await verifyBySuite(
|
|
6801
|
+
suite,
|
|
6802
|
+
payloadBytes,
|
|
6803
|
+
hexToBytes5(proof.batch_signature),
|
|
6804
|
+
hexToBytes5(proof.relay_public_key)
|
|
6805
|
+
);
|
|
6806
|
+
} catch {
|
|
6807
|
+
relaySignatureValid = false;
|
|
6808
|
+
}
|
|
6809
|
+
if (!relaySignatureValid) {
|
|
6810
|
+
errors.push("Relay batch signature verification failed");
|
|
6811
|
+
}
|
|
6812
|
+
}
|
|
6813
|
+
let chainVerified = null;
|
|
6814
|
+
if (proof.anchor && chainVerifier) {
|
|
6815
|
+
try {
|
|
6816
|
+
chainVerified = await chainVerifier({
|
|
6817
|
+
...proof.anchor,
|
|
6818
|
+
expected_root: proof.merkle_root
|
|
6819
|
+
});
|
|
6820
|
+
if (!chainVerified) {
|
|
6821
|
+
errors.push("Onchain anchor verification failed");
|
|
6822
|
+
}
|
|
6823
|
+
} catch (err2) {
|
|
6824
|
+
chainVerified = false;
|
|
6825
|
+
errors.push(
|
|
6826
|
+
`Onchain verification error: ${err2 instanceof Error ? err2.message : String(err2)}`
|
|
6827
|
+
);
|
|
6828
|
+
}
|
|
6829
|
+
}
|
|
6830
|
+
const valid = hashValid && merkleValid && relaySignatureValid && (chainVerified === null || chainVerified);
|
|
6831
|
+
return {
|
|
6832
|
+
valid,
|
|
6833
|
+
steps: {
|
|
6834
|
+
hash_valid: hashValid,
|
|
6835
|
+
merkle_valid: merkleValid,
|
|
6836
|
+
relay_signature_valid: relaySignatureValid,
|
|
6837
|
+
chain_verified: chainVerified
|
|
6838
|
+
},
|
|
6839
|
+
errors
|
|
6840
|
+
};
|
|
6841
|
+
}
|
|
6842
|
+
|
|
6843
|
+
// src/federation-settlement-anchor.ts
|
|
6844
|
+
var FEDERATION_SETTLEMENT_ANCHOR_SUITE = "motebit-jcs-ed25519-hex-v1";
|
|
6845
|
+
async function computeFederationSettlementLeaf(settlement, treeHashVersion = "merkle-sha256-plain-v1") {
|
|
6846
|
+
return canonicalLeaf(settlement, treeHashVersion);
|
|
6847
|
+
}
|
|
6848
|
+
async function verifyFederationSettlementAnchor(settlement, proof, chainVerifier) {
|
|
6849
|
+
const errors = [];
|
|
6850
|
+
const treeHashVersion = resolveTreeHashVersion(proof.tree_hash_version);
|
|
6851
|
+
if (treeHashVersion === null) {
|
|
6852
|
+
return {
|
|
6853
|
+
valid: false,
|
|
6854
|
+
steps: {
|
|
6855
|
+
hash_valid: false,
|
|
6856
|
+
merkle_valid: false,
|
|
6857
|
+
relay_signature_valid: false,
|
|
6858
|
+
chain_verified: null
|
|
6859
|
+
},
|
|
6860
|
+
errors: [`Unknown tree_hash_version "${String(proof.tree_hash_version)}" \u2014 rejected`]
|
|
6861
|
+
};
|
|
6862
|
+
}
|
|
6863
|
+
const computedHash = await computeFederationSettlementLeaf(settlement, treeHashVersion);
|
|
6864
|
+
const hashValid = computedHash === proof.settlement_hash;
|
|
6865
|
+
if (!hashValid) {
|
|
6866
|
+
errors.push(
|
|
6867
|
+
`Hash mismatch: held record hashes to ${computedHash.slice(0, 16)}\u2026, proof claims ${proof.settlement_hash.slice(0, 16)}\u2026`
|
|
6868
|
+
);
|
|
6869
|
+
}
|
|
6870
|
+
const merkleValid = await verifyMerkleInclusion(
|
|
6871
|
+
proof.settlement_hash,
|
|
6872
|
+
proof.leaf_index,
|
|
6873
|
+
proof.siblings,
|
|
6874
|
+
proof.layer_sizes,
|
|
6875
|
+
proof.merkle_root,
|
|
6876
|
+
treeHashVersion
|
|
6877
|
+
);
|
|
6878
|
+
if (!merkleValid) {
|
|
6879
|
+
errors.push("Merkle proof does not reconstruct to the claimed root");
|
|
6880
|
+
}
|
|
6881
|
+
const suite = proof.suite;
|
|
6882
|
+
let relaySignatureValid = false;
|
|
6883
|
+
if (suite !== FEDERATION_SETTLEMENT_ANCHOR_SUITE) {
|
|
6884
|
+
errors.push(`Relay batch signature: missing or unsupported suite "${String(suite)}"`);
|
|
6885
|
+
} else {
|
|
6886
|
+
const batchPayload = canonicalJson({
|
|
6887
|
+
batch_id: proof.batch_id,
|
|
6888
|
+
merkle_root: proof.merkle_root,
|
|
6889
|
+
leaf_count: proof.leaf_count,
|
|
6890
|
+
first_settled_at: proof.first_settled_at,
|
|
6891
|
+
last_settled_at: proof.last_settled_at,
|
|
6892
|
+
relay_id: proof.relay_id,
|
|
6893
|
+
suite
|
|
6894
|
+
});
|
|
6895
|
+
const payloadBytes = new TextEncoder().encode(batchPayload);
|
|
6896
|
+
try {
|
|
6897
|
+
relaySignatureValid = await verifyBySuite(
|
|
6898
|
+
suite,
|
|
6899
|
+
payloadBytes,
|
|
6900
|
+
hexToBytes5(proof.batch_signature),
|
|
6901
|
+
hexToBytes5(proof.relay_public_key)
|
|
6902
|
+
);
|
|
6903
|
+
} catch {
|
|
6904
|
+
relaySignatureValid = false;
|
|
6905
|
+
}
|
|
6906
|
+
if (!relaySignatureValid) {
|
|
6907
|
+
errors.push("Relay batch signature verification failed");
|
|
6908
|
+
}
|
|
6909
|
+
}
|
|
6910
|
+
let chainVerified = null;
|
|
6911
|
+
if (proof.anchor && chainVerifier) {
|
|
6912
|
+
try {
|
|
6913
|
+
chainVerified = await chainVerifier({
|
|
6914
|
+
...proof.anchor,
|
|
6915
|
+
expected_root: proof.merkle_root
|
|
6916
|
+
});
|
|
6917
|
+
if (!chainVerified) {
|
|
6918
|
+
errors.push("Onchain anchor verification failed");
|
|
6919
|
+
}
|
|
6920
|
+
} catch (err2) {
|
|
6921
|
+
chainVerified = false;
|
|
6922
|
+
errors.push(
|
|
6923
|
+
`Onchain verification error: ${err2 instanceof Error ? err2.message : String(err2)}`
|
|
6924
|
+
);
|
|
6925
|
+
}
|
|
6926
|
+
}
|
|
6927
|
+
const valid = hashValid && merkleValid && relaySignatureValid && (chainVerified === null || chainVerified);
|
|
6928
|
+
return {
|
|
6929
|
+
valid,
|
|
6930
|
+
steps: {
|
|
6931
|
+
hash_valid: hashValid,
|
|
6932
|
+
merkle_valid: merkleValid,
|
|
6933
|
+
relay_signature_valid: relaySignatureValid,
|
|
6934
|
+
chain_verified: chainVerified
|
|
6935
|
+
},
|
|
6936
|
+
errors
|
|
6937
|
+
};
|
|
6938
|
+
}
|
|
6939
|
+
|
|
6682
6940
|
// src/deletion-certificate.ts
|
|
6683
6941
|
var DELETION_CERTIFICATE_SUITE = "motebit-jcs-ed25519-b64-v1";
|
|
6684
6942
|
var WITNESS_OMISSION_DISPUTE_WINDOW_MS = 24 * 60 * 60 * 1e3;
|
|
@@ -7011,7 +7269,7 @@ async function verifyRetentionManifest(manifest, operatorPublicKey) {
|
|
|
7011
7269
|
errors.push(`unexpected spec: ${String(manifest.spec)}`);
|
|
7012
7270
|
}
|
|
7013
7271
|
if (manifest.suite !== "motebit-jcs-ed25519-hex-v1") {
|
|
7014
|
-
errors.push(`unexpected suite: ${manifest.suite}`);
|
|
7272
|
+
errors.push(`unexpected suite: ${String(manifest.suite)}`);
|
|
7015
7273
|
}
|
|
7016
7274
|
if (errors.length > 0) {
|
|
7017
7275
|
return { valid: false, errors, manifest: null };
|
|
@@ -7764,14 +8022,15 @@ async function verifyMigratingKeyBinding(motebitId, presentedKeyHex, identityFil
|
|
|
7764
8022
|
return false;
|
|
7765
8023
|
}
|
|
7766
8024
|
}
|
|
7767
|
-
async function identityLogLeaf(motebitId, currentKeyHex) {
|
|
7768
|
-
|
|
7769
|
-
|
|
7770
|
-
|
|
7771
|
-
|
|
7772
|
-
|
|
7773
|
-
|
|
7774
|
-
|
|
8025
|
+
async function identityLogLeaf(motebitId, currentKeyHex, treeHashVersion = "merkle-sha256-plain-v1") {
|
|
8026
|
+
return canonicalLeaf(
|
|
8027
|
+
{
|
|
8028
|
+
type: "motebit-identity-binding",
|
|
8029
|
+
motebit_id: motebitId,
|
|
8030
|
+
public_key: currentKeyHex
|
|
8031
|
+
},
|
|
8032
|
+
treeHashVersion
|
|
8033
|
+
);
|
|
7775
8034
|
}
|
|
7776
8035
|
async function verifyIdentityBindingAnchored(identity, signingKeyHex, atTimestampMs, proof, guardianPublicKeyHex) {
|
|
7777
8036
|
const sovereign = await verifyKeyBindingAtTime(
|
|
@@ -7781,13 +8040,26 @@ async function verifyIdentityBindingAnchored(identity, signingKeyHex, atTimestam
|
|
|
7781
8040
|
guardianPublicKeyHex
|
|
7782
8041
|
);
|
|
7783
8042
|
if (!sovereign.bound) return sovereign;
|
|
7784
|
-
const
|
|
8043
|
+
const treeHashVersion = resolveTreeHashVersion(proof.tree_hash_version);
|
|
8044
|
+
if (treeHashVersion === null) {
|
|
8045
|
+
return {
|
|
8046
|
+
bound: false,
|
|
8047
|
+
...sovereign.genesisPublicKey ? { genesisPublicKey: sovereign.genesisPublicKey } : {},
|
|
8048
|
+
reason: `unknown tree_hash_version "${String(proof.tree_hash_version)}" on identity-log proof`
|
|
8049
|
+
};
|
|
8050
|
+
}
|
|
8051
|
+
const leaf = await identityLogLeaf(
|
|
8052
|
+
identity.motebit_id,
|
|
8053
|
+
identity.identity.public_key,
|
|
8054
|
+
treeHashVersion
|
|
8055
|
+
);
|
|
7785
8056
|
const included = await verifyMerkleInclusion(
|
|
7786
8057
|
leaf,
|
|
7787
8058
|
proof.index,
|
|
7788
8059
|
proof.siblings,
|
|
7789
8060
|
proof.layerSizes,
|
|
7790
|
-
proof.anchoredRoot
|
|
8061
|
+
proof.anchoredRoot,
|
|
8062
|
+
treeHashVersion
|
|
7791
8063
|
);
|
|
7792
8064
|
if (!included) {
|
|
7793
8065
|
return {
|
|
@@ -8187,18 +8459,9 @@ async function verify(artifact, options) {
|
|
|
8187
8459
|
return verifySkillEnvelopeArtifact(resolved);
|
|
8188
8460
|
}
|
|
8189
8461
|
}
|
|
8190
|
-
async function verifyIdentityFile(content) {
|
|
8191
|
-
const result = await verifyIdentity(content);
|
|
8192
|
-
return {
|
|
8193
|
-
valid: result.valid,
|
|
8194
|
-
identity: result.identity,
|
|
8195
|
-
did: result.did,
|
|
8196
|
-
error: result.errors?.[0]?.message,
|
|
8197
|
-
succession: result.succession
|
|
8198
|
-
};
|
|
8199
|
-
}
|
|
8200
8462
|
export {
|
|
8201
8463
|
ADJUDICATOR_VOTE_SUITE,
|
|
8464
|
+
AGENT_SETTLEMENT_ANCHOR_SUITE,
|
|
8202
8465
|
BALANCE_WAIVER_SUITE,
|
|
8203
8466
|
COLLABORATIVE_RECEIPT_SUITE,
|
|
8204
8467
|
COMPUTER_SESSION_RECEIPT_SUITE,
|
|
@@ -8213,6 +8476,8 @@ export {
|
|
|
8213
8476
|
DISPUTE_REQUEST_SUITE,
|
|
8214
8477
|
DISPUTE_RESOLUTION_SUITE,
|
|
8215
8478
|
EXECUTION_RECEIPT_SUITE,
|
|
8479
|
+
FEDERATION_SETTLEMENT_ANCHOR_SUITE,
|
|
8480
|
+
FEDERATION_SETTLEMENT_RECORD_SUITE,
|
|
8216
8481
|
GUARDIAN_REVOCATION_SUITE,
|
|
8217
8482
|
KEY_SUCCESSION_SUITE,
|
|
8218
8483
|
SETTLEMENT_RECORD_SUITE,
|
|
@@ -8224,6 +8489,7 @@ export {
|
|
|
8224
8489
|
base58btcEncode,
|
|
8225
8490
|
bytesToHex4 as bytesToHex,
|
|
8226
8491
|
canonicalJson,
|
|
8492
|
+
canonicalLeaf,
|
|
8227
8493
|
canonicalSecureEnclaveBodyForTest,
|
|
8228
8494
|
canonicalSha256,
|
|
8229
8495
|
canonicalizeHorizonCert,
|
|
@@ -8233,8 +8499,10 @@ export {
|
|
|
8233
8499
|
canonicalizeSkillEnvelopeBytes,
|
|
8234
8500
|
canonicalizeSkillManifestBytes,
|
|
8235
8501
|
canonicalizeWitnessOmissionDispute,
|
|
8502
|
+
computeAgentSettlementLeaf,
|
|
8236
8503
|
computeCredentialLeaf,
|
|
8237
8504
|
computeExecutionTimelineHash,
|
|
8505
|
+
computeFederationSettlementLeaf,
|
|
8238
8506
|
createPresentation,
|
|
8239
8507
|
createSignedToken,
|
|
8240
8508
|
decodeSkillSignaturePublicKey,
|
|
@@ -8249,6 +8517,7 @@ export {
|
|
|
8249
8517
|
getPublicKeyBySuite,
|
|
8250
8518
|
hash,
|
|
8251
8519
|
hashComputerSessionActions,
|
|
8520
|
+
hashLeaf,
|
|
8252
8521
|
hashToolPayload,
|
|
8253
8522
|
hexPublicKeyToDidKey,
|
|
8254
8523
|
hexToBytes5 as hexToBytes,
|
|
@@ -8261,6 +8530,7 @@ export {
|
|
|
8261
8530
|
parse,
|
|
8262
8531
|
parseScopeSet,
|
|
8263
8532
|
publicKeyToDidKey,
|
|
8533
|
+
resolveTreeHashVersion,
|
|
8264
8534
|
sha2562 as sha256,
|
|
8265
8535
|
signAdjudicatorVote,
|
|
8266
8536
|
signBalanceWaiver,
|
|
@@ -8281,6 +8551,7 @@ export {
|
|
|
8281
8551
|
signDisputeRequest,
|
|
8282
8552
|
signDisputeResolution,
|
|
8283
8553
|
signExecutionReceipt,
|
|
8554
|
+
signFederationSettlement,
|
|
8284
8555
|
signGuardianRecoverySuccession,
|
|
8285
8556
|
signGuardianRevocation,
|
|
8286
8557
|
signHorizonCertAsIssuer,
|
|
@@ -8299,6 +8570,7 @@ export {
|
|
|
8299
8570
|
toBase64Url,
|
|
8300
8571
|
verify,
|
|
8301
8572
|
verifyAdjudicatorVote,
|
|
8573
|
+
verifyAgentSettlementAnchor,
|
|
8302
8574
|
verifyBalanceWaiver,
|
|
8303
8575
|
verifyBySuite,
|
|
8304
8576
|
verifyCollaborativeReceipt,
|
|
@@ -8318,12 +8590,13 @@ export {
|
|
|
8318
8590
|
verifyDisputeResolution,
|
|
8319
8591
|
verifyExecutionReceipt,
|
|
8320
8592
|
verifyExecutionReceiptDetailed,
|
|
8593
|
+
verifyFederationSettlement,
|
|
8594
|
+
verifyFederationSettlementAnchor,
|
|
8321
8595
|
verifyGoalExecutionManifest,
|
|
8322
8596
|
verifyGuardianRevocation,
|
|
8323
8597
|
verifyHardwareAttestationClaim,
|
|
8324
8598
|
verifyHorizonWitnessRequestSignature,
|
|
8325
8599
|
verifyIdentityBindingAnchored,
|
|
8326
|
-
verifyIdentityFile,
|
|
8327
8600
|
verifyKeyBindingAtTime,
|
|
8328
8601
|
verifyKeySuccession,
|
|
8329
8602
|
verifyMerkleInclusion,
|
package/dist/merkle.d.ts
CHANGED
|
@@ -13,6 +13,54 @@
|
|
|
13
13
|
* - `witness-omission-dispute.ts` — `inclusion_proof` evidence
|
|
14
14
|
* against a horizon cert's `federation_graph_anchor.merkle_root`.
|
|
15
15
|
*/
|
|
16
|
+
import type { MerkleTreeVersion } from "@motebit/protocol";
|
|
17
|
+
/**
|
|
18
|
+
* Hash a Merkle leaf under a tree-hash version — the single dispatch point for
|
|
19
|
+
* the RFC 6962 §2.1 leaf-domain `0x00` tag, the leaf-side mirror of the
|
|
20
|
+
* interior-node `0x01` tag applied in {@link verifyMerkleInclusion}'s combine
|
|
21
|
+
* step. v1 = `SHA-256(entry)`; v2 = `SHA-256(0x00 ‖ entry)`. Every leaf builder
|
|
22
|
+
* (settlement, credential, identity-log, consolidation) routes its leaf hash
|
|
23
|
+
* through here, so the leaf tag lives in exactly one place — the
|
|
24
|
+
* `check-suite-dispatch` shape applied to the Merkle axis (locked by
|
|
25
|
+
* `check-merkle-tree-hash-canonical`).
|
|
26
|
+
*
|
|
27
|
+
* Producer-side contract: THROWS on a version this primitive does not implement
|
|
28
|
+
* (a builder asking for an unregistered version is a programming error, not
|
|
29
|
+
* untrusted input — unlike the verifier path, which returns `false`). The
|
|
30
|
+
* high-level verifiers validate the proof's `tree_hash_version` at their own
|
|
31
|
+
* boundary before threading it down, so an unhandled value never reaches here
|
|
32
|
+
* from untrusted input.
|
|
33
|
+
*
|
|
34
|
+
* @param entry - the leaf's entry bytes (e.g. encoded `canonicalJson(record)`)
|
|
35
|
+
* @param treeHashVersion - tree-hash recipe; default `merkle-sha256-plain-v1`
|
|
36
|
+
* @returns hex-encoded SHA-256 leaf hash
|
|
37
|
+
*/
|
|
38
|
+
export declare function hashLeaf(entry: Uint8Array, treeHashVersion?: MerkleTreeVersion): Promise<string>;
|
|
39
|
+
/**
|
|
40
|
+
* JCS-canonicalize a value, then leaf-hash it via {@link hashLeaf}.
|
|
41
|
+
* `canonicalLeaf(x)` (v1 default) is byte-identical to `canonicalSha256(x)` —
|
|
42
|
+
* the leaf builders that used the latter keep their v1 output unchanged while
|
|
43
|
+
* gaining the v2 path for free. The shared canonicalization means a producer
|
|
44
|
+
* and a holder who hold the same object derive the identical leaf.
|
|
45
|
+
*
|
|
46
|
+
* @param value - the object the leaf commits to (signature included for signed artifacts)
|
|
47
|
+
* @param treeHashVersion - tree-hash recipe; default `merkle-sha256-plain-v1`
|
|
48
|
+
* @returns hex-encoded SHA-256 leaf hash
|
|
49
|
+
*/
|
|
50
|
+
export declare function canonicalLeaf(value: unknown, treeHashVersion?: MerkleTreeVersion): Promise<string>;
|
|
51
|
+
/**
|
|
52
|
+
* Resolve a proof's wire `tree_hash_version` string to a `MerkleTreeVersion` at
|
|
53
|
+
* a verifier boundary. **Absent ⇒ `merkle-sha256-plain-v1`** (never silently
|
|
54
|
+
* upgraded — threat-model rule a); a known value passes through; an UNKNOWN
|
|
55
|
+
* string returns `null` so the caller fails closed and REJECTS (never downgrades
|
|
56
|
+
* to v1 — threat-model rule b). The leaf-builder + Merkle-inclusion calls
|
|
57
|
+
* downstream then receive a narrow, supported version. Mirrors the
|
|
58
|
+
* `verifyBySuite` suite-resolution contract, one axis over. The two string
|
|
59
|
+
* literals here are the verifier-side dispatch arms the closed-registry gate
|
|
60
|
+
* (`check-merkle-tree-hash-canonical`) keeps aligned with
|
|
61
|
+
* `ALL_MERKLE_TREE_VERSIONS`.
|
|
62
|
+
*/
|
|
63
|
+
export declare function resolveTreeHashVersion(raw: string | undefined): MerkleTreeVersion | null;
|
|
16
64
|
/**
|
|
17
65
|
* Verify a Merkle inclusion proof against an expected root.
|
|
18
66
|
*
|
|
@@ -24,11 +72,19 @@
|
|
|
24
72
|
* Returns `false` on any malformed input or hash mismatch — never
|
|
25
73
|
* throws. Same fail-closed contract as `verifyBySuite`.
|
|
26
74
|
*
|
|
75
|
+
* The `leaf` is the already-computed bottom-layer leaf HASH; the leaf-domain
|
|
76
|
+
* `0x00` tag (RFC 6962 §2.1) lives in the leaf builders that produce it, so this
|
|
77
|
+
* primitive applies only the interior-node `0x01` tag (under v2). `absent ⇒ v1`
|
|
78
|
+
* is resolved by the caller (the high-level verifier reads the proof's
|
|
79
|
+
* `tree_hash_version`); the default here keeps the ~dozen existing 5-arg callers
|
|
80
|
+
* byte-identical (v1) until they thread a version.
|
|
81
|
+
*
|
|
27
82
|
* @param leaf - hex-encoded SHA-256 leaf hash
|
|
28
83
|
* @param index - leaf position in the bottom layer (0-based)
|
|
29
84
|
* @param siblings - hex-encoded sibling hashes, leaf-to-root order
|
|
30
85
|
* @param layerSizes - bottom-up layer cardinalities
|
|
31
86
|
* @param expectedRoot - hex-encoded SHA-256 root the proof must reconstruct
|
|
87
|
+
* @param treeHashVersion - tree-hash recipe; default `merkle-sha256-plain-v1`
|
|
32
88
|
*/
|
|
33
|
-
export declare function verifyMerkleInclusion(leaf: string, index: number, siblings: string[], layerSizes: number[], expectedRoot: string): Promise<boolean>;
|
|
89
|
+
export declare function verifyMerkleInclusion(leaf: string, index: number, siblings: string[], layerSizes: number[], expectedRoot: string, treeHashVersion?: MerkleTreeVersion): Promise<boolean>;
|
|
34
90
|
//# sourceMappingURL=merkle.d.ts.map
|
package/dist/merkle.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"merkle.d.ts","sourceRoot":"","sources":["../src/merkle.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;
|
|
1
|
+
{"version":3,"file":"merkle.d.ts","sourceRoot":"","sources":["../src/merkle.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AA0B3D;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAsB,QAAQ,CAC5B,KAAK,EAAE,UAAU,EACjB,eAAe,GAAE,iBAA4C,GAC5D,OAAO,CAAC,MAAM,CAAC,CAQjB;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,aAAa,CACjC,KAAK,EAAE,OAAO,EACd,eAAe,GAAE,iBAA4C,GAC5D,OAAO,CAAC,MAAM,CAAC,CAEjB;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,iBAAiB,GAAG,IAAI,CAIxF;AAiCD;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAsB,qBAAqB,CACzC,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,MAAM,EAAE,EAClB,UAAU,EAAE,MAAM,EAAE,EACpB,YAAY,EAAE,MAAM,EACpB,eAAe,GAAE,iBAA4C,GAC5D,OAAO,CAAC,OAAO,CAAC,CA8ClB"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@motebit/crypto",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "3.0.0",
|
|
4
4
|
"description": "Sign and verify every Motebit artifact — identity files, execution receipts, credentials, delegations, succession records, credential anchors. Ed25519 today, cryptosuite-agile for post-quantum tomorrow. Apache-2.0, zero monorepo dependencies.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -61,11 +61,11 @@
|
|
|
61
61
|
"@noble/ed25519": "~3.1.0",
|
|
62
62
|
"@noble/hashes": "^2.2.0",
|
|
63
63
|
"@types/node": "^22.0.0",
|
|
64
|
-
"fast-check": "^4.
|
|
64
|
+
"fast-check": "^4.8.0",
|
|
65
65
|
"tsup": "^8.0.0",
|
|
66
66
|
"typescript": "^5.6.0",
|
|
67
|
-
"vitest": "^
|
|
68
|
-
"@motebit/protocol": "
|
|
67
|
+
"vitest": "^4.1.8",
|
|
68
|
+
"@motebit/protocol": "3.0.0"
|
|
69
69
|
},
|
|
70
70
|
"engines": {
|
|
71
71
|
"node": ">=20"
|