@mikeargento/bitgraph-verify 1.1.0 → 1.1.2
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/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/proof-hash.d.ts +21 -0
- package/dist/proof-hash.d.ts.map +1 -1
- package/dist/proof-hash.js +67 -5
- package/dist/proof-hash.js.map +1 -1
- package/dist/verifier.d.ts.map +1 -1
- package/dist/verifier.js +11 -5
- package/dist/verifier.js.map +1 -1
- package/package.json +1 -1
- package/src/index.ts +1 -1
- package/src/proof-hash.ts +68 -5
- package/src/verifier.ts +11 -5
package/dist/index.d.ts
CHANGED
|
@@ -8,6 +8,6 @@
|
|
|
8
8
|
export type { BitGraphProof, BitGraphPolicy, VerificationPolicy, SignedBody, EnforcementTier, Attribution, PolicyBinding, SlotAllocation, ActorIdentity, AuthorizationPayload, WebAuthnAuthorization, AgencyEnvelope, } from "./types.js";
|
|
9
9
|
export { verify, verifyProofIntegrity, resetEpochLinkState } from "./verifier.js";
|
|
10
10
|
export type { VerifyResult, ProofIntegrityResult } from "./verifier.js";
|
|
11
|
-
export { computeProofHash } from "./proof-hash.js";
|
|
11
|
+
export { computeProofHash, computeChainHash } from "./proof-hash.js";
|
|
12
12
|
export { canonicalize, canonicalizeToString, constantTimeEqual } from "./canonical.js";
|
|
13
13
|
//# 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":"AAEA;;;;;;GAMG;AAEH,YAAY,EACV,aAAa,EACb,cAAc,EACd,kBAAkB,EAClB,UAAU,EACV,eAAe,EACf,WAAW,EACX,aAAa,EACb,cAAc,EACd,aAAa,EACb,oBAAoB,EACpB,qBAAqB,EACrB,cAAc,GACf,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,MAAM,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAClF,YAAY,EAAE,YAAY,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAExE,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA;;;;;;GAMG;AAEH,YAAY,EACV,aAAa,EACb,cAAc,EACd,kBAAkB,EAClB,UAAU,EACV,eAAe,EACf,WAAW,EACX,aAAa,EACb,cAAc,EACd,aAAa,EACb,oBAAoB,EACpB,qBAAqB,EACrB,cAAc,GACf,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,MAAM,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAClF,YAAY,EAAE,YAAY,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAExE,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAErE,OAAO,EAAE,YAAY,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
// Copyright (c) 2024-2026 Mike Argento. Licensed under the MIT License. See LICENSE.
|
|
2
2
|
export { verify, verifyProofIntegrity, resetEpochLinkState } from "./verifier.js";
|
|
3
|
-
export { computeProofHash } from "./proof-hash.js";
|
|
3
|
+
export { computeProofHash, computeChainHash } from "./proof-hash.js";
|
|
4
4
|
export { canonicalize, canonicalizeToString, constantTimeEqual } from "./canonical.js";
|
|
5
5
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,qFAAqF;AAyBrF,OAAO,EAAE,MAAM,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAGlF,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,qFAAqF;AAyBrF,OAAO,EAAE,MAAM,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAGlF,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAErE,OAAO,EAAE,YAAY,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC"}
|
package/dist/proof-hash.d.ts
CHANGED
|
@@ -6,4 +6,25 @@ import type { BitGraphProof } from "./types.js";
|
|
|
6
6
|
* @returns Base64-standard encoded SHA-256 hash
|
|
7
7
|
*/
|
|
8
8
|
export declare function computeProofHash(proof: BitGraphProof | Record<string, unknown>): string;
|
|
9
|
+
/**
|
|
10
|
+
* Compute the CHAIN hash of a BitGraph proof: SHA-256 over the canonicalized
|
|
11
|
+
* whole proof object, with the ledger/service-added fields removed.
|
|
12
|
+
*
|
|
13
|
+
* This is the value the enclave writes into the NEXT proof's
|
|
14
|
+
* `commit.prevB64` (and into `epochLink.prevProofHashB64` at an epoch
|
|
15
|
+
* boundary): the enclave hashes the entire assembled proof, before the ledger
|
|
16
|
+
* or anchor service appends its convenience fields. To link a chain, match a
|
|
17
|
+
* proof's `commit.prevB64` against `computeChainHash(predecessor)`.
|
|
18
|
+
*
|
|
19
|
+
* This differs from computeProofHash, which hashes only the signed-body
|
|
20
|
+
* subset. The chain hash covers every enclave-produced field (signer
|
|
21
|
+
* signature, attestation report, slot allocation, attribution, and so on), so
|
|
22
|
+
* any change anywhere in a proof breaks the link from its successor.
|
|
23
|
+
*
|
|
24
|
+
* @param proof - The full BitGraphProof object (or equivalent Record). Any
|
|
25
|
+
* ledger/service-added field (see LEDGER_ADDED_FIELDS) is excluded before
|
|
26
|
+
* hashing.
|
|
27
|
+
* @returns Base64-standard encoded SHA-256 hash
|
|
28
|
+
*/
|
|
29
|
+
export declare function computeChainHash(proof: BitGraphProof | Record<string, unknown>): string;
|
|
9
30
|
//# sourceMappingURL=proof-hash.d.ts.map
|
package/dist/proof-hash.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"proof-hash.d.ts","sourceRoot":"","sources":["../src/proof-hash.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"proof-hash.d.ts","sourceRoot":"","sources":["../src/proof-hash.ts"],"names":[],"mappings":"AA2CA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEhD;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CA2BvF;AAsBD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAavF"}
|
package/dist/proof-hash.js
CHANGED
|
@@ -15,11 +15,17 @@
|
|
|
15
15
|
* - attribution (if present)
|
|
16
16
|
* - attestationFormat (if attestation present)
|
|
17
17
|
*
|
|
18
|
-
* This hash is used for:
|
|
19
|
-
* - prevB64 chain linking
|
|
18
|
+
* This hash (the signed-body hash) is used for:
|
|
20
19
|
* - S3 ledger key generation
|
|
21
20
|
* - Ethereum anchor binding
|
|
22
|
-
* - Proof deduplication and
|
|
21
|
+
* - Proof deduplication and canonical identity
|
|
22
|
+
*
|
|
23
|
+
* It is NOT the value referenced by commit.prevB64 or by
|
|
24
|
+
* epochLink.prevProofHashB64. Those reference the CHAIN hash: SHA-256 over
|
|
25
|
+
* the canonicalized WHOLE proof (every field, minus the ledger-added
|
|
26
|
+
* proofHash), computed by computeChainHash below. Matching prevB64 against
|
|
27
|
+
* computeProofHash instead of computeChainHash silently fails to link real
|
|
28
|
+
* chains.
|
|
23
29
|
*
|
|
24
30
|
* Algorithm:
|
|
25
31
|
* 1. Extract signed body fields
|
|
@@ -61,11 +67,67 @@ export function computeProofHash(proof) {
|
|
|
61
67
|
}
|
|
62
68
|
const bytes = canonicalize(signedBody);
|
|
63
69
|
const hash = sha256(bytes);
|
|
64
|
-
|
|
70
|
+
return base64(hash);
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Fields that are NOT produced by the enclave. They are appended to a proof
|
|
74
|
+
* AFTER it is signed, by the ledger or the anchor service, purely as read-time
|
|
75
|
+
* convenience. The enclave computed its chain hash before any of these
|
|
76
|
+
* existed, so they MUST be excluded from computeChainHash — otherwise a
|
|
77
|
+
* successor's `commit.prevB64` (computed by the enclave over the clean proof)
|
|
78
|
+
* can never match.
|
|
79
|
+
*
|
|
80
|
+
* proofHash — SHA-256 of the signed-body subset; added by the ledger at
|
|
81
|
+
* write time (see computeProofHash above).
|
|
82
|
+
* ethereum — { blockNumber, blockHash }; added by the anchor service to
|
|
83
|
+
* anchor records after the transaction is mined. Purely
|
|
84
|
+
* redundant: the block hash is already in the signed
|
|
85
|
+
* `attribution.message` and the block number in
|
|
86
|
+
* `attribution.title`. Present only on Ethereum-anchor proofs.
|
|
87
|
+
*
|
|
88
|
+
* Any future ledger/service-added field must be added here as well.
|
|
89
|
+
*/
|
|
90
|
+
const LEDGER_ADDED_FIELDS = ["proofHash", "ethereum"];
|
|
91
|
+
/**
|
|
92
|
+
* Compute the CHAIN hash of a BitGraph proof: SHA-256 over the canonicalized
|
|
93
|
+
* whole proof object, with the ledger/service-added fields removed.
|
|
94
|
+
*
|
|
95
|
+
* This is the value the enclave writes into the NEXT proof's
|
|
96
|
+
* `commit.prevB64` (and into `epochLink.prevProofHashB64` at an epoch
|
|
97
|
+
* boundary): the enclave hashes the entire assembled proof, before the ledger
|
|
98
|
+
* or anchor service appends its convenience fields. To link a chain, match a
|
|
99
|
+
* proof's `commit.prevB64` against `computeChainHash(predecessor)`.
|
|
100
|
+
*
|
|
101
|
+
* This differs from computeProofHash, which hashes only the signed-body
|
|
102
|
+
* subset. The chain hash covers every enclave-produced field (signer
|
|
103
|
+
* signature, attestation report, slot allocation, attribution, and so on), so
|
|
104
|
+
* any change anywhere in a proof breaks the link from its successor.
|
|
105
|
+
*
|
|
106
|
+
* @param proof - The full BitGraphProof object (or equivalent Record). Any
|
|
107
|
+
* ledger/service-added field (see LEDGER_ADDED_FIELDS) is excluded before
|
|
108
|
+
* hashing.
|
|
109
|
+
* @returns Base64-standard encoded SHA-256 hash
|
|
110
|
+
*/
|
|
111
|
+
export function computeChainHash(proof) {
|
|
112
|
+
const p = proof;
|
|
113
|
+
let hashable = p;
|
|
114
|
+
if (LEDGER_ADDED_FIELDS.some((k) => Object.prototype.hasOwnProperty.call(p, k))) {
|
|
115
|
+
// Shallow copy without the ledger/service-added fields; the enclave hashed
|
|
116
|
+
// the proof before these existed.
|
|
117
|
+
hashable = {};
|
|
118
|
+
for (const key of Object.keys(p)) {
|
|
119
|
+
if (!LEDGER_ADDED_FIELDS.includes(key))
|
|
120
|
+
hashable[key] = p[key];
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
const bytes = canonicalize(hashable);
|
|
124
|
+
return base64(sha256(bytes));
|
|
125
|
+
}
|
|
126
|
+
// Base64-standard encode (works in both Node.js and browser).
|
|
127
|
+
function base64(hash) {
|
|
65
128
|
if (typeof Buffer !== "undefined") {
|
|
66
129
|
return Buffer.from(hash).toString("base64");
|
|
67
130
|
}
|
|
68
|
-
// Browser fallback
|
|
69
131
|
let binary = "";
|
|
70
132
|
for (let i = 0; i < hash.length; i++) {
|
|
71
133
|
binary += String.fromCharCode(hash[i]);
|
package/dist/proof-hash.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"proof-hash.js","sourceRoot":"","sources":["../src/proof-hash.ts"],"names":[],"mappings":"AAAA,qFAAqF;AAErF
|
|
1
|
+
{"version":3,"file":"proof-hash.js","sourceRoot":"","sources":["../src/proof-hash.ts"],"names":[],"mappings":"AAAA,qFAAqF;AAErF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAG9C;;;;;GAKG;AACH,MAAM,UAAU,gBAAgB,CAAC,KAA8C;IAC7E,MAAM,CAAC,GAAG,KAAgC,CAAC;IAC3C,MAAM,MAAM,GAAG,CAAC,CAAC,MAA8C,CAAC;IAChE,MAAM,GAAG,GAAG,CAAC,CAAC,WAAyG,CAAC;IAExH,MAAM,UAAU,GAA4B;QAC1C,OAAO,EAAE,CAAC,CAAC,OAAO;QAClB,QAAQ,EAAE,CAAC,CAAC,QAAQ;QACpB,MAAM,EAAE,CAAC,CAAC,MAAM;QAChB,YAAY,EAAE,MAAM,EAAE,YAAY;QAClC,WAAW,EAAE,GAAG,EAAE,WAAW;QAC7B,WAAW,EAAE,GAAG,EAAE,WAAW;KAC9B,CAAC;IAEF,iCAAiC;IACjC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC;QAClB,UAAU,CAAC,WAAW,GAAG,CAAC,CAAC,WAAW,CAAC;IACzC,CAAC;IAED,wCAAwC;IACxC,IAAI,GAAG,EAAE,WAAW,EAAE,CAAC;QACrB,UAAU,CAAC,iBAAiB,GAAG,GAAG,CAAC,WAAW,CAAC,MAAM,CAAC;IACxD,CAAC;IAED,MAAM,KAAK,GAAG,YAAY,CAAC,UAAsC,CAAC,CAAC;IACnE,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAC3B,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC;AACtB,CAAC;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,mBAAmB,GAAsB,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;AAEzE;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,UAAU,gBAAgB,CAAC,KAA8C;IAC7E,MAAM,CAAC,GAAG,KAAgC,CAAC;IAC3C,IAAI,QAAQ,GAA4B,CAAC,CAAC;IAC1C,IAAI,mBAAmB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAChF,2EAA2E;QAC3E,kCAAkC;QAClC,QAAQ,GAAG,EAAE,CAAC;QACd,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;YACjC,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,GAAG,CAAC;gBAAE,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;QACjE,CAAC;IACH,CAAC;IACD,MAAM,KAAK,GAAG,YAAY,CAAC,QAAoC,CAAC,CAAC;IACjE,OAAO,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;AAC/B,CAAC;AAED,8DAA8D;AAC9D,SAAS,MAAM,CAAC,IAAgB;IAC9B,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE,CAAC;QAClC,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAC9C,CAAC;IACD,IAAI,MAAM,GAAG,EAAE,CAAC;IAChB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,MAAM,IAAI,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAE,CAAC,CAAC;IAC1C,CAAC;IACD,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC;AACtB,CAAC"}
|
package/dist/verifier.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verifier.d.ts","sourceRoot":"","sources":["../src/verifier.ts"],"names":[],"mappings":"AAqFA,OAAO,KAAK,EAAmB,aAAa,EAA8B,kBAAkB,EAA+D,MAAM,YAAY,CAAC;AAM9K,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,OAAO,CAAC;IACf,yEAAyE;IACzE,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,OAAO,CAAC;IACf;;;;;;;OAOG;IACH,eAAe,EAAE,aAAa,CAAC;IAC/B,yEAAyE;IACzE,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;;;;GASG;AACH,wBAAsB,MAAM,CAAC,IAAI,EAAE;IACjC,KAAK,EAAE,aAAa,CAAC;IACrB,KAAK,EAAE,UAAU,CAAC;IAClB,YAAY,CAAC,EAAE,kBAAkB,CAAC;CACnC,GAAG,OAAO,CAAC,YAAY,CAAC,CAIxB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH,wBAAsB,oBAAoB,CAAC,IAAI,EAAE;IAC/C,KAAK,EAAE,aAAa,CAAC;IACrB,YAAY,CAAC,EAAE,kBAAkB,CAAC;CACnC,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAMhC;
|
|
1
|
+
{"version":3,"file":"verifier.d.ts","sourceRoot":"","sources":["../src/verifier.ts"],"names":[],"mappings":"AAqFA,OAAO,KAAK,EAAmB,aAAa,EAA8B,kBAAkB,EAA+D,MAAM,YAAY,CAAC;AAM9K,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,OAAO,CAAC;IACf,yEAAyE;IACzE,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,OAAO,CAAC;IACf;;;;;;;OAOG;IACH,eAAe,EAAE,aAAa,CAAC;IAC/B,yEAAyE;IACzE,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;;;;GASG;AACH,wBAAsB,MAAM,CAAC,IAAI,EAAE;IACjC,KAAK,EAAE,aAAa,CAAC;IACrB,KAAK,EAAE,UAAU,CAAC;IAClB,YAAY,CAAC,EAAE,kBAAkB,CAAC;CACnC,GAAG,OAAO,CAAC,YAAY,CAAC,CAIxB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH,wBAAsB,oBAAoB,CAAC,IAAI,EAAE;IAC/C,KAAK,EAAE,aAAa,CAAC;IACrB,YAAY,CAAC,EAAE,kBAAkB,CAAC;CACnC,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAMhC;AAw1BD;;;GAGG;AACH,wBAAgB,mBAAmB,IAAI,IAAI,CAE1C"}
|
package/dist/verifier.js
CHANGED
|
@@ -680,8 +680,11 @@ async function verifySlotAllocation(proof) {
|
|
|
680
680
|
if (typeof slot.counter !== "string" || slot.counter.length === 0) {
|
|
681
681
|
return "slotAllocation.counter must be a non-empty string";
|
|
682
682
|
}
|
|
683
|
-
|
|
684
|
-
|
|
683
|
+
// time is OPTIONAL: the enclave builds slot bodies deliberately without a
|
|
684
|
+
// clock ("NO clocks. NO timestamps"), so real slot allocations omit it. Only
|
|
685
|
+
// validate it when present, mirroring commit.time.
|
|
686
|
+
if (slot.time !== undefined && (typeof slot.time !== "number" || !Number.isFinite(slot.time) || slot.time < 0)) {
|
|
687
|
+
return "slotAllocation.time must be a non-negative finite number when present";
|
|
685
688
|
}
|
|
686
689
|
if (typeof slot.epochId !== "string" || slot.epochId.length === 0) {
|
|
687
690
|
return "slotAllocation.epochId must be a non-empty string";
|
|
@@ -697,7 +700,10 @@ async function verifySlotAllocation(proof) {
|
|
|
697
700
|
version: slot.version,
|
|
698
701
|
nonceB64: slot.nonceB64,
|
|
699
702
|
counter: slot.counter,
|
|
700
|
-
time
|
|
703
|
+
// time is included only when present, so the reconstructed body matches the
|
|
704
|
+
// enclave's signed bytes for clockless slots (the real, common case) and
|
|
705
|
+
// for any slot that did carry a time.
|
|
706
|
+
...(slot.time !== undefined ? { time: slot.time } : {}),
|
|
701
707
|
epochId: slot.epochId,
|
|
702
708
|
publicKeyB64: slot.publicKeyB64,
|
|
703
709
|
...(slot.chainId ? { chainId: slot.chainId } : {}),
|
|
@@ -729,8 +735,8 @@ async function verifySlotAllocation(proof) {
|
|
|
729
735
|
return "slotAllocation signature verification failed";
|
|
730
736
|
}
|
|
731
737
|
// 3. Confirm slot body has no artifact data (causal independence)
|
|
732
|
-
// The slot body contains: version, nonceB64, counter,
|
|
733
|
-
// and optionally chainId. If any artifact-related field were present, it would
|
|
738
|
+
// The slot body contains: version, nonceB64, counter, epochId, publicKeyB64,
|
|
739
|
+
// and optionally time and chainId. If any artifact-related field were present, it would
|
|
734
740
|
// break the causal argument. We reject known artifact fields defensively.
|
|
735
741
|
const forbiddenKeys = new Set(["digestB64", "artifact", "hashAlg", "signatureB64"]);
|
|
736
742
|
const slotBodyKeys = Object.keys(slotBody);
|
package/dist/verifier.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verifier.js","sourceRoot":"","sources":["../src/verifier.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"verifier.js","sourceRoot":"","sources":["../src/verifier.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/index.ts
CHANGED
|
@@ -26,6 +26,6 @@ export type {
|
|
|
26
26
|
export { verify, verifyProofIntegrity, resetEpochLinkState } from "./verifier.js";
|
|
27
27
|
export type { VerifyResult, ProofIntegrityResult } from "./verifier.js";
|
|
28
28
|
|
|
29
|
-
export { computeProofHash } from "./proof-hash.js";
|
|
29
|
+
export { computeProofHash, computeChainHash } from "./proof-hash.js";
|
|
30
30
|
|
|
31
31
|
export { canonicalize, canonicalizeToString, constantTimeEqual } from "./canonical.js";
|
package/src/proof-hash.ts
CHANGED
|
@@ -16,11 +16,17 @@
|
|
|
16
16
|
* - attribution (if present)
|
|
17
17
|
* - attestationFormat (if attestation present)
|
|
18
18
|
*
|
|
19
|
-
* This hash is used for:
|
|
20
|
-
* - prevB64 chain linking
|
|
19
|
+
* This hash (the signed-body hash) is used for:
|
|
21
20
|
* - S3 ledger key generation
|
|
22
21
|
* - Ethereum anchor binding
|
|
23
|
-
* - Proof deduplication and
|
|
22
|
+
* - Proof deduplication and canonical identity
|
|
23
|
+
*
|
|
24
|
+
* It is NOT the value referenced by commit.prevB64 or by
|
|
25
|
+
* epochLink.prevProofHashB64. Those reference the CHAIN hash: SHA-256 over
|
|
26
|
+
* the canonicalized WHOLE proof (every field, minus the ledger-added
|
|
27
|
+
* proofHash), computed by computeChainHash below. Matching prevB64 against
|
|
28
|
+
* computeProofHash instead of computeChainHash silently fails to link real
|
|
29
|
+
* chains.
|
|
24
30
|
*
|
|
25
31
|
* Algorithm:
|
|
26
32
|
* 1. Extract signed body fields
|
|
@@ -69,12 +75,69 @@ export function computeProofHash(proof: BitGraphProof | Record<string, unknown>)
|
|
|
69
75
|
|
|
70
76
|
const bytes = canonicalize(signedBody as unknown as BitGraphProof);
|
|
71
77
|
const hash = sha256(bytes);
|
|
78
|
+
return base64(hash);
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
/**
|
|
82
|
+
* Fields that are NOT produced by the enclave. They are appended to a proof
|
|
83
|
+
* AFTER it is signed, by the ledger or the anchor service, purely as read-time
|
|
84
|
+
* convenience. The enclave computed its chain hash before any of these
|
|
85
|
+
* existed, so they MUST be excluded from computeChainHash — otherwise a
|
|
86
|
+
* successor's `commit.prevB64` (computed by the enclave over the clean proof)
|
|
87
|
+
* can never match.
|
|
88
|
+
*
|
|
89
|
+
* proofHash — SHA-256 of the signed-body subset; added by the ledger at
|
|
90
|
+
* write time (see computeProofHash above).
|
|
91
|
+
* ethereum — { blockNumber, blockHash }; added by the anchor service to
|
|
92
|
+
* anchor records after the transaction is mined. Purely
|
|
93
|
+
* redundant: the block hash is already in the signed
|
|
94
|
+
* `attribution.message` and the block number in
|
|
95
|
+
* `attribution.title`. Present only on Ethereum-anchor proofs.
|
|
96
|
+
*
|
|
97
|
+
* Any future ledger/service-added field must be added here as well.
|
|
98
|
+
*/
|
|
99
|
+
const LEDGER_ADDED_FIELDS: readonly string[] = ["proofHash", "ethereum"];
|
|
100
|
+
|
|
101
|
+
/**
|
|
102
|
+
* Compute the CHAIN hash of a BitGraph proof: SHA-256 over the canonicalized
|
|
103
|
+
* whole proof object, with the ledger/service-added fields removed.
|
|
104
|
+
*
|
|
105
|
+
* This is the value the enclave writes into the NEXT proof's
|
|
106
|
+
* `commit.prevB64` (and into `epochLink.prevProofHashB64` at an epoch
|
|
107
|
+
* boundary): the enclave hashes the entire assembled proof, before the ledger
|
|
108
|
+
* or anchor service appends its convenience fields. To link a chain, match a
|
|
109
|
+
* proof's `commit.prevB64` against `computeChainHash(predecessor)`.
|
|
110
|
+
*
|
|
111
|
+
* This differs from computeProofHash, which hashes only the signed-body
|
|
112
|
+
* subset. The chain hash covers every enclave-produced field (signer
|
|
113
|
+
* signature, attestation report, slot allocation, attribution, and so on), so
|
|
114
|
+
* any change anywhere in a proof breaks the link from its successor.
|
|
115
|
+
*
|
|
116
|
+
* @param proof - The full BitGraphProof object (or equivalent Record). Any
|
|
117
|
+
* ledger/service-added field (see LEDGER_ADDED_FIELDS) is excluded before
|
|
118
|
+
* hashing.
|
|
119
|
+
* @returns Base64-standard encoded SHA-256 hash
|
|
120
|
+
*/
|
|
121
|
+
export function computeChainHash(proof: BitGraphProof | Record<string, unknown>): string {
|
|
122
|
+
const p = proof as Record<string, unknown>;
|
|
123
|
+
let hashable: Record<string, unknown> = p;
|
|
124
|
+
if (LEDGER_ADDED_FIELDS.some((k) => Object.prototype.hasOwnProperty.call(p, k))) {
|
|
125
|
+
// Shallow copy without the ledger/service-added fields; the enclave hashed
|
|
126
|
+
// the proof before these existed.
|
|
127
|
+
hashable = {};
|
|
128
|
+
for (const key of Object.keys(p)) {
|
|
129
|
+
if (!LEDGER_ADDED_FIELDS.includes(key)) hashable[key] = p[key];
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
const bytes = canonicalize(hashable as unknown as BitGraphProof);
|
|
133
|
+
return base64(sha256(bytes));
|
|
134
|
+
}
|
|
72
135
|
|
|
73
|
-
|
|
136
|
+
// Base64-standard encode (works in both Node.js and browser).
|
|
137
|
+
function base64(hash: Uint8Array): string {
|
|
74
138
|
if (typeof Buffer !== "undefined") {
|
|
75
139
|
return Buffer.from(hash).toString("base64");
|
|
76
140
|
}
|
|
77
|
-
// Browser fallback
|
|
78
141
|
let binary = "";
|
|
79
142
|
for (let i = 0; i < hash.length; i++) {
|
|
80
143
|
binary += String.fromCharCode(hash[i]!);
|
package/src/verifier.ts
CHANGED
|
@@ -801,8 +801,11 @@ async function verifySlotAllocation(proof: BitGraphProof): Promise<string | null
|
|
|
801
801
|
if (typeof slot.counter !== "string" || slot.counter.length === 0) {
|
|
802
802
|
return "slotAllocation.counter must be a non-empty string";
|
|
803
803
|
}
|
|
804
|
-
|
|
805
|
-
|
|
804
|
+
// time is OPTIONAL: the enclave builds slot bodies deliberately without a
|
|
805
|
+
// clock ("NO clocks. NO timestamps"), so real slot allocations omit it. Only
|
|
806
|
+
// validate it when present, mirroring commit.time.
|
|
807
|
+
if (slot.time !== undefined && (typeof slot.time !== "number" || !Number.isFinite(slot.time) || slot.time < 0)) {
|
|
808
|
+
return "slotAllocation.time must be a non-negative finite number when present";
|
|
806
809
|
}
|
|
807
810
|
if (typeof slot.epochId !== "string" || slot.epochId.length === 0) {
|
|
808
811
|
return "slotAllocation.epochId must be a non-empty string";
|
|
@@ -819,7 +822,10 @@ async function verifySlotAllocation(proof: BitGraphProof): Promise<string | null
|
|
|
819
822
|
version: slot.version,
|
|
820
823
|
nonceB64: slot.nonceB64,
|
|
821
824
|
counter: slot.counter,
|
|
822
|
-
time
|
|
825
|
+
// time is included only when present, so the reconstructed body matches the
|
|
826
|
+
// enclave's signed bytes for clockless slots (the real, common case) and
|
|
827
|
+
// for any slot that did carry a time.
|
|
828
|
+
...(slot.time !== undefined ? { time: slot.time } : {}),
|
|
823
829
|
epochId: slot.epochId,
|
|
824
830
|
publicKeyB64: slot.publicKeyB64,
|
|
825
831
|
...(slot.chainId ? { chainId: slot.chainId } : {}),
|
|
@@ -853,8 +859,8 @@ async function verifySlotAllocation(proof: BitGraphProof): Promise<string | null
|
|
|
853
859
|
}
|
|
854
860
|
|
|
855
861
|
// 3. Confirm slot body has no artifact data (causal independence)
|
|
856
|
-
// The slot body contains: version, nonceB64, counter,
|
|
857
|
-
// and optionally chainId. If any artifact-related field were present, it would
|
|
862
|
+
// The slot body contains: version, nonceB64, counter, epochId, publicKeyB64,
|
|
863
|
+
// and optionally time and chainId. If any artifact-related field were present, it would
|
|
858
864
|
// break the causal argument. We reject known artifact fields defensively.
|
|
859
865
|
const forbiddenKeys = new Set(["digestB64", "artifact", "hashAlg", "signatureB64"]);
|
|
860
866
|
const slotBodyKeys = Object.keys(slotBody);
|