@mikeargento/bitgraph 1.1.0 → 1.1.1
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 +49 -40
- package/dist/__tests__/audit-anchors.test.d.ts +2 -0
- package/dist/__tests__/audit-anchors.test.d.ts.map +1 -0
- package/dist/__tests__/audit-anchors.test.js +152 -0
- package/dist/__tests__/audit-anchors.test.js.map +1 -0
- package/dist/__tests__/audit-anomalies.test.d.ts +2 -0
- package/dist/__tests__/audit-anomalies.test.d.ts.map +1 -0
- package/dist/__tests__/audit-anomalies.test.js +663 -0
- package/dist/__tests__/audit-anomalies.test.js.map +1 -0
- package/dist/__tests__/audit-attestation.test.d.ts +2 -0
- package/dist/__tests__/audit-attestation.test.d.ts.map +1 -0
- package/dist/__tests__/audit-attestation.test.js +403 -0
- package/dist/__tests__/audit-attestation.test.js.map +1 -0
- package/dist/__tests__/audit-bench-smoke.test.d.ts +2 -0
- package/dist/__tests__/audit-bench-smoke.test.d.ts.map +1 -0
- package/dist/__tests__/audit-bench-smoke.test.js +87 -0
- package/dist/__tests__/audit-bench-smoke.test.js.map +1 -0
- package/dist/__tests__/audit-boundary.test.d.ts +20 -0
- package/dist/__tests__/audit-boundary.test.d.ts.map +1 -0
- package/dist/__tests__/audit-boundary.test.js +84 -0
- package/dist/__tests__/audit-boundary.test.js.map +1 -0
- package/dist/__tests__/audit-cli.test.d.ts +2 -0
- package/dist/__tests__/audit-cli.test.d.ts.map +1 -0
- package/dist/__tests__/audit-cli.test.js +239 -0
- package/dist/__tests__/audit-cli.test.js.map +1 -0
- package/dist/__tests__/audit-dependencies.test.d.ts +2 -0
- package/dist/__tests__/audit-dependencies.test.d.ts.map +1 -0
- package/dist/__tests__/audit-dependencies.test.js +116 -0
- package/dist/__tests__/audit-dependencies.test.js.map +1 -0
- package/dist/__tests__/audit-fixtures.d.ts +265 -0
- package/dist/__tests__/audit-fixtures.d.ts.map +1 -0
- package/dist/__tests__/audit-fixtures.js +511 -0
- package/dist/__tests__/audit-fixtures.js.map +1 -0
- package/dist/__tests__/audit-ingest.test.d.ts +2 -0
- package/dist/__tests__/audit-ingest.test.d.ts.map +1 -0
- package/dist/__tests__/audit-ingest.test.js +473 -0
- package/dist/__tests__/audit-ingest.test.js.map +1 -0
- package/dist/__tests__/audit-memory-ingest.test.d.ts +12 -0
- package/dist/__tests__/audit-memory-ingest.test.d.ts.map +1 -0
- package/dist/__tests__/audit-memory-ingest.test.js +120 -0
- package/dist/__tests__/audit-memory-ingest.test.js.map +1 -0
- package/dist/__tests__/audit-property.test.d.ts +2 -0
- package/dist/__tests__/audit-property.test.d.ts.map +1 -0
- package/dist/__tests__/audit-property.test.js +771 -0
- package/dist/__tests__/audit-property.test.js.map +1 -0
- package/dist/__tests__/audit-real-fixtures.test.d.ts +2 -0
- package/dist/__tests__/audit-real-fixtures.test.d.ts.map +1 -0
- package/dist/__tests__/audit-real-fixtures.test.js +132 -0
- package/dist/__tests__/audit-real-fixtures.test.js.map +1 -0
- package/dist/__tests__/audit-real-live.test.d.ts +2 -0
- package/dist/__tests__/audit-real-live.test.d.ts.map +1 -0
- package/dist/__tests__/audit-real-live.test.js +107 -0
- package/dist/__tests__/audit-real-live.test.js.map +1 -0
- package/dist/__tests__/audit-reconstruct.test.d.ts +2 -0
- package/dist/__tests__/audit-reconstruct.test.d.ts.map +1 -0
- package/dist/__tests__/audit-reconstruct.test.js +287 -0
- package/dist/__tests__/audit-reconstruct.test.js.map +1 -0
- package/dist/__tests__/audit-report.test.d.ts +2 -0
- package/dist/__tests__/audit-report.test.d.ts.map +1 -0
- package/dist/__tests__/audit-report.test.js +186 -0
- package/dist/__tests__/audit-report.test.js.map +1 -0
- package/dist/__tests__/audit-roundtrip.test.d.ts +2 -0
- package/dist/__tests__/audit-roundtrip.test.d.ts.map +1 -0
- package/dist/__tests__/audit-roundtrip.test.js +368 -0
- package/dist/__tests__/audit-roundtrip.test.js.map +1 -0
- package/dist/__tests__/audit-temporal.test.d.ts +2 -0
- package/dist/__tests__/audit-temporal.test.d.ts.map +1 -0
- package/dist/__tests__/audit-temporal.test.js +364 -0
- package/dist/__tests__/audit-temporal.test.js.map +1 -0
- package/dist/__tests__/audit-tiers.test.d.ts +2 -0
- package/dist/__tests__/audit-tiers.test.d.ts.map +1 -0
- package/dist/__tests__/audit-tiers.test.js +282 -0
- package/dist/__tests__/audit-tiers.test.js.map +1 -0
- package/dist/__tests__/audit-witness-real.test.d.ts +19 -0
- package/dist/__tests__/audit-witness-real.test.d.ts.map +1 -0
- package/dist/__tests__/audit-witness-real.test.js +82 -0
- package/dist/__tests__/audit-witness-real.test.js.map +1 -0
- package/dist/__tests__/audit-witness.test.d.ts +2 -0
- package/dist/__tests__/audit-witness.test.d.ts.map +1 -0
- package/dist/__tests__/audit-witness.test.js +308 -0
- package/dist/__tests__/audit-witness.test.js.map +1 -0
- package/dist/__tests__/chain-hash-anchor.test.d.ts +22 -0
- package/dist/__tests__/chain-hash-anchor.test.d.ts.map +1 -0
- package/dist/__tests__/chain-hash-anchor.test.js +55 -0
- package/dist/__tests__/chain-hash-anchor.test.js.map +1 -0
- package/dist/__tests__/declared-proof-fixture.d.ts +66 -0
- package/dist/__tests__/declared-proof-fixture.d.ts.map +1 -0
- package/dist/__tests__/declared-proof-fixture.js +66 -0
- package/dist/__tests__/declared-proof-fixture.js.map +1 -0
- package/dist/__tests__/mock-proof-fixture.d.ts +15 -0
- package/dist/__tests__/mock-proof-fixture.d.ts.map +1 -0
- package/dist/__tests__/mock-proof-fixture.js +34 -0
- package/dist/__tests__/mock-proof-fixture.js.map +1 -0
- package/dist/__tests__/proof-hash-regression.test.js +4 -43
- package/dist/__tests__/proof-hash-regression.test.js.map +1 -1
- package/dist/__tests__/proof-hash.test.js +3 -21
- package/dist/__tests__/proof-hash.test.js.map +1 -1
- package/dist/__tests__/proof-integrity.test.d.ts +2 -0
- package/dist/__tests__/proof-integrity.test.d.ts.map +1 -0
- package/dist/__tests__/proof-integrity.test.js +426 -0
- package/dist/__tests__/proof-integrity.test.js.map +1 -0
- package/dist/__tests__/realistic-proof-fixture.d.ts +56 -0
- package/dist/__tests__/realistic-proof-fixture.d.ts.map +1 -0
- package/dist/__tests__/realistic-proof-fixture.js +57 -0
- package/dist/__tests__/realistic-proof-fixture.js.map +1 -0
- package/dist/__tests__/verifier.test.js +74 -0
- package/dist/__tests__/verifier.test.js.map +1 -1
- package/package.json +10 -5
- package/src/__tests__/audit-anchors.test.ts +188 -0
- package/src/__tests__/audit-anomalies.test.ts +815 -0
- package/src/__tests__/audit-attestation.test.ts +529 -0
- package/src/__tests__/audit-bench-smoke.test.ts +108 -0
- package/src/__tests__/audit-boundary.test.ts +96 -0
- package/src/__tests__/audit-cli.test.ts +288 -0
- package/src/__tests__/audit-dependencies.test.ts +141 -0
- package/src/__tests__/audit-fixtures.ts +736 -0
- package/src/__tests__/audit-ingest.test.ts +575 -0
- package/src/__tests__/audit-memory-ingest.test.ts +140 -0
- package/src/__tests__/audit-property.test.ts +892 -0
- package/src/__tests__/audit-real-fixtures.test.ts +153 -0
- package/src/__tests__/audit-real-live.test.ts +128 -0
- package/src/__tests__/audit-reconstruct.test.ts +353 -0
- package/src/__tests__/audit-report.test.ts +222 -0
- package/src/__tests__/audit-roundtrip.test.ts +464 -0
- package/src/__tests__/audit-temporal.test.ts +446 -0
- package/src/__tests__/audit-tiers.test.ts +343 -0
- package/src/__tests__/audit-witness-real.test.ts +92 -0
- package/src/__tests__/audit-witness.test.ts +345 -0
- package/src/__tests__/chain-hash-anchor.test.ts +67 -0
- package/src/__tests__/declared-proof-fixture.ts +65 -0
- package/src/__tests__/mock-proof-fixture.ts +36 -0
- package/src/__tests__/proof-hash-regression.test.ts +4 -44
- package/src/__tests__/proof-hash.test.ts +3 -22
- package/src/__tests__/proof-integrity.test.ts +541 -0
- package/src/__tests__/real-fixtures/anchor-after-112762.json +47 -0
- package/src/__tests__/real-fixtures/anchor-with-ethereum-112758.json +47 -0
- package/src/__tests__/real-fixtures/live-proof-0.json +42 -0
- package/src/__tests__/real-fixtures/live-proof-1.json +43 -0
- package/src/__tests__/real-fixtures/live-proof-2.json +43 -0
- package/src/__tests__/real-fixtures/successor-112760.json +38 -0
- package/src/__tests__/real-fixtures/witness-25525146.json +6 -0
- package/src/__tests__/real-fixtures/witness-25525147.json +6 -0
- package/src/__tests__/realistic-proof-fixture.ts +57 -0
- package/src/__tests__/verifier.test.ts +83 -0
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": "bitgraph/1",
|
|
3
|
+
"artifact": {
|
|
4
|
+
"hashAlg": "sha256",
|
|
5
|
+
"digestB64": "8/mfsj1Pp+ym7CJ2f8et7Xouz6jka1Il9ciQuN43CH0="
|
|
6
|
+
},
|
|
7
|
+
"commit": {
|
|
8
|
+
"nonceB64": "MrNjzABhASrAwL6WNs349KHmfEZ+8w4cvQTkp5YDAMo=",
|
|
9
|
+
"counter": "2",
|
|
10
|
+
"slotCounter": "1",
|
|
11
|
+
"slotHashB64": "TmkcvTLv9FYRO6ZW4FhYdrFqgzvSZV5eu+nh+vtAdLI=",
|
|
12
|
+
"epochId": "PlvP2VDcMH9RiBA3shEOrd8xEhHuJj6Gshym/V/qKNg=",
|
|
13
|
+
"chainId": "bitgraph:main"
|
|
14
|
+
},
|
|
15
|
+
"signer": {
|
|
16
|
+
"publicKeyB64": "yiKzaYXZyI+tHiSb7K/+OQv8XwErhez2TTk1efl6XAA=",
|
|
17
|
+
"signatureB64": "gTmcavrwO/NTvH/Y9D1UtluhnI8gpaFcMlg5Dhwh0HcG7szBfQHsfgrRS4sFiuGF+g1Fy/6rMlkKcDXzGN34AA=="
|
|
18
|
+
},
|
|
19
|
+
"environment": {
|
|
20
|
+
"enforcement": "measured-tee",
|
|
21
|
+
"measurement": "e2fccbae77ee40aac4830e84f195e05d69eb4547bbd961f4d3459feba10807140424aca42ad03810354982598c86b9cb",
|
|
22
|
+
"attestation": {
|
|
23
|
+
"format": "aws-nitro",
|
|
24
|
+
"reportB64": "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"
|
|
25
|
+
}
|
|
26
|
+
},
|
|
27
|
+
"slotAllocation": {
|
|
28
|
+
"version": "bitgraph/slot/1",
|
|
29
|
+
"nonceB64": "MrNjzABhASrAwL6WNs349KHmfEZ+8w4cvQTkp5YDAMo=",
|
|
30
|
+
"counter": "1",
|
|
31
|
+
"epochId": "PlvP2VDcMH9RiBA3shEOrd8xEhHuJj6Gshym/V/qKNg=",
|
|
32
|
+
"publicKeyB64": "yiKzaYXZyI+tHiSb7K/+OQv8XwErhez2TTk1efl6XAA=",
|
|
33
|
+
"chainId": "bitgraph:main",
|
|
34
|
+
"signatureB64": "rxkzZPfccmehwODUsn3pGUE3tMrXXvDapZpSSDUEUvmVMtySDfdlDof/U7vWomoc9LWq7wu2SnLqTKBxiU+ZCA=="
|
|
35
|
+
},
|
|
36
|
+
"attribution": {
|
|
37
|
+
"name": "Ethereum Anchor",
|
|
38
|
+
"title": "https://etherscan.io/block/25466974",
|
|
39
|
+
"message": "0x1032e7fc0daa60e7fe3de3660b85b36e4856c4ba89706d9c042b70d7d3d15a42"
|
|
40
|
+
},
|
|
41
|
+
"proofHash": "U6wkAAi1xVjyNh29DChA1W5ElotUOr7O8Elm+7KYIWA="
|
|
42
|
+
}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": "bitgraph/1",
|
|
3
|
+
"artifact": {
|
|
4
|
+
"hashAlg": "sha256",
|
|
5
|
+
"digestB64": "ESUC7RJzlM7B0nSN8sHRJG7DL9mKVxkXPpt+CJ7Y444="
|
|
6
|
+
},
|
|
7
|
+
"commit": {
|
|
8
|
+
"nonceB64": "xgakTqTOKFKzKw6kq4LD5KJjgdF49N4XlOKoMrXNDws=",
|
|
9
|
+
"counter": "4",
|
|
10
|
+
"slotCounter": "3",
|
|
11
|
+
"slotHashB64": "MhvCjSvRWj8hajVsHhovV2DVJ2DF0G58wjefwQQccB4=",
|
|
12
|
+
"epochId": "PlvP2VDcMH9RiBA3shEOrd8xEhHuJj6Gshym/V/qKNg=",
|
|
13
|
+
"prevB64": "QPzErM+JMwAgtfD/338t27OVF+hofPqGSpj+3YfwbyE=",
|
|
14
|
+
"chainId": "bitgraph:main"
|
|
15
|
+
},
|
|
16
|
+
"signer": {
|
|
17
|
+
"publicKeyB64": "yiKzaYXZyI+tHiSb7K/+OQv8XwErhez2TTk1efl6XAA=",
|
|
18
|
+
"signatureB64": "jXfVs+nEe8J7nTrCzzBLl6KVDstZG1ePkZkzwbui+HYjxnoFhUIcIXtlH0uhBkWKqimlzOn3qC10o9o+2ZKbAQ=="
|
|
19
|
+
},
|
|
20
|
+
"environment": {
|
|
21
|
+
"enforcement": "measured-tee",
|
|
22
|
+
"measurement": "e2fccbae77ee40aac4830e84f195e05d69eb4547bbd961f4d3459feba10807140424aca42ad03810354982598c86b9cb",
|
|
23
|
+
"attestation": {
|
|
24
|
+
"format": "aws-nitro",
|
|
25
|
+
"reportB64": "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"
|
|
26
|
+
}
|
|
27
|
+
},
|
|
28
|
+
"slotAllocation": {
|
|
29
|
+
"version": "bitgraph/slot/1",
|
|
30
|
+
"nonceB64": "xgakTqTOKFKzKw6kq4LD5KJjgdF49N4XlOKoMrXNDws=",
|
|
31
|
+
"counter": "3",
|
|
32
|
+
"epochId": "PlvP2VDcMH9RiBA3shEOrd8xEhHuJj6Gshym/V/qKNg=",
|
|
33
|
+
"publicKeyB64": "yiKzaYXZyI+tHiSb7K/+OQv8XwErhez2TTk1efl6XAA=",
|
|
34
|
+
"chainId": "bitgraph:main",
|
|
35
|
+
"signatureB64": "10pwWb07FNbKX570AL7hqITReUzXSdjDcr2AJ2GQ10I0+ym8YSP927zEFhw6WVC9jFzeU7HiD8bO7v3SbcdKCw=="
|
|
36
|
+
},
|
|
37
|
+
"attribution": {
|
|
38
|
+
"name": "Ethereum Anchor",
|
|
39
|
+
"title": "https://etherscan.io/block/25466976",
|
|
40
|
+
"message": "0x08b6186a7f39788779e6f33f0c7e311246eee75989607e17f5fa54980265e150"
|
|
41
|
+
},
|
|
42
|
+
"proofHash": "Uuc2fVxjat6b+jNI6JeJEb9VajcwIG2zZlXip+eptjY="
|
|
43
|
+
}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": "bitgraph/1",
|
|
3
|
+
"artifact": {
|
|
4
|
+
"hashAlg": "sha256",
|
|
5
|
+
"digestB64": "BFUXDO+afe23P2RIO8+QwrBjQicckLj/o23OKg16tB0="
|
|
6
|
+
},
|
|
7
|
+
"commit": {
|
|
8
|
+
"nonceB64": "dawXq4YT/dg+PjA4WVCO//QjM+YTDxd957t/MbXvGFw=",
|
|
9
|
+
"counter": "6",
|
|
10
|
+
"slotCounter": "5",
|
|
11
|
+
"slotHashB64": "sIeWFlU1MKIw0wVaELA13i6Y9IELZon3XOt5dJlcmak=",
|
|
12
|
+
"epochId": "PlvP2VDcMH9RiBA3shEOrd8xEhHuJj6Gshym/V/qKNg=",
|
|
13
|
+
"prevB64": "04aG0NuQ6dyOR8ps06w3EckYrMyykxqhjWgYUtGYdBc=",
|
|
14
|
+
"chainId": "bitgraph:main"
|
|
15
|
+
},
|
|
16
|
+
"signer": {
|
|
17
|
+
"publicKeyB64": "yiKzaYXZyI+tHiSb7K/+OQv8XwErhez2TTk1efl6XAA=",
|
|
18
|
+
"signatureB64": "q/horHzEoCgBIUrAJtDhiVJVxotPP4samrF0KvFjRwX3P8Xn8zTpfH+MCxPT5I0LFfNUlCjkorMNMRp5Pq5WBw=="
|
|
19
|
+
},
|
|
20
|
+
"environment": {
|
|
21
|
+
"enforcement": "measured-tee",
|
|
22
|
+
"measurement": "e2fccbae77ee40aac4830e84f195e05d69eb4547bbd961f4d3459feba10807140424aca42ad03810354982598c86b9cb",
|
|
23
|
+
"attestation": {
|
|
24
|
+
"format": "aws-nitro",
|
|
25
|
+
"reportB64": "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"
|
|
26
|
+
}
|
|
27
|
+
},
|
|
28
|
+
"slotAllocation": {
|
|
29
|
+
"version": "bitgraph/slot/1",
|
|
30
|
+
"nonceB64": "dawXq4YT/dg+PjA4WVCO//QjM+YTDxd957t/MbXvGFw=",
|
|
31
|
+
"counter": "5",
|
|
32
|
+
"epochId": "PlvP2VDcMH9RiBA3shEOrd8xEhHuJj6Gshym/V/qKNg=",
|
|
33
|
+
"publicKeyB64": "yiKzaYXZyI+tHiSb7K/+OQv8XwErhez2TTk1efl6XAA=",
|
|
34
|
+
"chainId": "bitgraph:main",
|
|
35
|
+
"signatureB64": "GH7TU/i0GuQjUdN900ghQnVfi44i9ztZKU91BrqgVBkVLIl7icQAGYkcV4q2mEAkG4KduI0vLjlqB/ZGFKS7CQ=="
|
|
36
|
+
},
|
|
37
|
+
"attribution": {
|
|
38
|
+
"name": "Ethereum Anchor",
|
|
39
|
+
"title": "https://etherscan.io/block/25466978",
|
|
40
|
+
"message": "0x134c1c8c5f72136a23df0b8cfb5891854e81960d0cdbfa6904bd1f97ab615aa2"
|
|
41
|
+
},
|
|
42
|
+
"proofHash": "fLBYnoP8kpjPzc8E7gmF3LvO0hz0VEBSLHjKivu2oto="
|
|
43
|
+
}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": "bitgraph/1",
|
|
3
|
+
"artifact": {
|
|
4
|
+
"hashAlg": "sha256",
|
|
5
|
+
"digestB64": "7jNcp7zUUDYJgWPs43b5YcezN2de1E8gcLs2HcjNsGo="
|
|
6
|
+
},
|
|
7
|
+
"commit": {
|
|
8
|
+
"nonceB64": "cq2F26E0XSfOLDtlqSn11Vr6rdFW5MjkxthcGdHOUSI=",
|
|
9
|
+
"counter": "112760",
|
|
10
|
+
"slotCounter": "112759",
|
|
11
|
+
"slotHashB64": "ZsK6G/WRgBxb5ueC4f56Ez9HuS9a6drxJyNdNfl3zTM=",
|
|
12
|
+
"epochId": "PlvP2VDcMH9RiBA3shEOrd8xEhHuJj6Gshym/V/qKNg=",
|
|
13
|
+
"prevB64": "oJywQpgdKdx7uPLeu46Ddsw+TYNZ3oj7Ggn2Mb9aeYo=",
|
|
14
|
+
"chainId": "bitgraph:main"
|
|
15
|
+
},
|
|
16
|
+
"signer": {
|
|
17
|
+
"publicKeyB64": "yiKzaYXZyI+tHiSb7K/+OQv8XwErhez2TTk1efl6XAA=",
|
|
18
|
+
"signatureB64": "1i2IIPiUXRoiA3aDsBr8Ch9uk5OK3dBQDOJwvfbfQJ+sOZz3hwYUn748TqlNWVwLTt+BZfNHBgWHn/42pg3OCg=="
|
|
19
|
+
},
|
|
20
|
+
"environment": {
|
|
21
|
+
"enforcement": "measured-tee",
|
|
22
|
+
"measurement": "e2fccbae77ee40aac4830e84f195e05d69eb4547bbd961f4d3459feba10807140424aca42ad03810354982598c86b9cb",
|
|
23
|
+
"attestation": {
|
|
24
|
+
"format": "aws-nitro",
|
|
25
|
+
"reportB64": "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"
|
|
26
|
+
}
|
|
27
|
+
},
|
|
28
|
+
"slotAllocation": {
|
|
29
|
+
"version": "bitgraph/slot/1",
|
|
30
|
+
"nonceB64": "cq2F26E0XSfOLDtlqSn11Vr6rdFW5MjkxthcGdHOUSI=",
|
|
31
|
+
"counter": "112759",
|
|
32
|
+
"epochId": "PlvP2VDcMH9RiBA3shEOrd8xEhHuJj6Gshym/V/qKNg=",
|
|
33
|
+
"publicKeyB64": "yiKzaYXZyI+tHiSb7K/+OQv8XwErhez2TTk1efl6XAA=",
|
|
34
|
+
"chainId": "bitgraph:main",
|
|
35
|
+
"signatureB64": "ovI3F2i0pm2VPeIbp9kNUlgBern6ZND25Uy3RL+mKK2QAFw/K6BNURLTeKXceA2ldj93yUtadVZjaUtyVzwgBw=="
|
|
36
|
+
},
|
|
37
|
+
"proofHash": "3C/VtgVa0UNFjAyN54WJEwdH31BsVt030BUsRTKjaGQ="
|
|
38
|
+
}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": "bitgraph-anchor-witness/1",
|
|
3
|
+
"headerRlpHex": "0xf90283a00efddec3e1353a6d4e2ab97d53bf4927e955f4898674793632d02eda6877062ea01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347944838b106fce9647bdf1e7877bf73ce8b0bad5f97a09a2c15ba57e93ce9d9791ba0fea0b4e629517cafa7cb785b3512fd3826b7ae97a066fbbc2864efade589d679e801620e81f328402cda0d1c1527c09af67f0bf5d7a0b7764b327bd43f0dcdc26fd10399081d2df828895f1dcb025da6e129c923904cb9010036e0e544ffff7cfc64f4fb77ed7c9fd63d53b77c25fd1adea52ff65ffddf4ca7fe1d73f9e2cf7b9772567b95a43f4583ff5ddbfefe37b35dd5edff9533a76dd7f4cfbffcdefcb9f8cbcb4f8ae74d53bde57ff61b91e7ca2f9bee3e1debfef9b34d6dfa3bda6f35cfb5bdcbbd5e797ffbfbdf5fea7ff307aedef4ddde1c5f76ef8fffdf6cff9faf3f57bdfd9e9ff7e6dffe4fff5bfd5b87ef8e3775e7f7ff7c79dff59b6fdeb1f194f971ade679f7af46b37fd6ff7de76bff99e5fa3ad4497577e94e9aae6d3d7bcf47c50cefcfe3fdef51fe8effffeeaf74abed97f2583ef9ebf972ed5fff76ce8a5777ba647e7bfce697afbdd95fbdafdfea59f2e4f7afc8a5808401857b9a840393870084024d82f7846a551da398546974616e2028746974616e6275696c6465722e78797a29a06b22a26d1a921e7e836c6ee233b41240a9fc4db1d40d4393691a6c914f033fa288000000000000000084111ee9cca077f23c9db56a9937cfbf10558318cb5fb72a1463222c82f34779457d1b543f5f80840b409d86a0e227ab9493e20878542a48fc26232417e7b70a3653d4b803c295fd8557870593a0e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
|
|
4
|
+
"blockNumber": 25525146,
|
|
5
|
+
"blockHash": "0xde7eada919e2a80b194b40143d923df8925d72bd99cb68470a3c33b0dca33a3d"
|
|
6
|
+
}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": "bitgraph-anchor-witness/1",
|
|
3
|
+
"headerRlpHex": "0xf90286a0de7eada919e2a80b194b40143d923df8925d72bd99cb68470a3c33b0dca33a3da01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347944838b106fce9647bdf1e7877bf73ce8b0bad5f97a0b92064dc4a22099ae5b38638aba78a9c1831ab1801ad670bafff5a0b2d03099ea061c9751fb5b7516cf6f30461f36e74184ec1add05deada4789ccbfc1396634c7a0bbf9794af3e7a1ff432e6c520e0a76f8c2b7e18bff65b36f3710728941d2d106b90100927fbded917dfeff36cea8b7a4a6b6d5f7771ff5b7f776c3b63b7bbd678b97e749f8f377ff7bf9df759ecfc3fa47373fcfbfaa6b5f7feb4ff7f77f9e62e33fd7df39fbbf0fb9771a5beffb7bf74de3a75679e61ef5f5e4fdd75f6f3fc9beeef0ff63de3ee3fb73d79dfe9dd73f3ecf865efb7dba71cfffdf0fbbdf17a94bc59afb79dcdef3f799edefdccd706fd6ae7eff4fbdedf926d3f875b6dde7f3dfff2853cfdf6f5fadf6fef76b5feeb1edbd4ebbdf757ebe953c9638f90a1268d6f3fffb9f6aff7d7e7bf7a4e7f6fd677b9df6d0a7207f5e297efcf3739d777fdeff47bef8ff5f9765bd8edefdd2e3fdf5fed355b7f17f2d7fded99736f7e5fbfb533b808401857b9b840393870084013bb7d4846a551daf98546974616e2028746974616e6275696c6465722e78797a29a08dfae01f028f3d39e6840a3793596adb90377d5957c5449e1736bc59269c28688800000000000000008411bc97c1a0e243c15ff07a8f7d7192279ebb664a407e4d8af8990a971a2080b391ced27b8283160000840b409d86a012fcc406a42e5e90f663f88fbcb1962a1c68232cc0bafedd145440dc979de95fa0e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
|
|
4
|
+
"blockNumber": 25525147,
|
|
5
|
+
"blockHash": "0x04f48a70f24f21daae546d1ae49132df9e767ba4238b92ae39f0c153eb1436dc"
|
|
6
|
+
}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared realistic proof fixture.
|
|
3
|
+
*
|
|
4
|
+
* Extracted verbatim from proof-hash-regression.test.ts (values unchanged,
|
|
5
|
+
* byte for byte) so other suites can import the fixture without importing
|
|
6
|
+
* a test file (which would re-register its suites under node:test).
|
|
7
|
+
*
|
|
8
|
+
* This mirrors what the TEE actually produces: a real-shaped Ethereum
|
|
9
|
+
* anchor proof with a TRUNCATED attestation blob and placeholder
|
|
10
|
+
* signatures. It is a canonical-hash and ingest fixture; it fails full
|
|
11
|
+
* verification by design and its attestation document must honestly
|
|
12
|
+
* report as present-but-unvalidatable (parse error), never as a pass.
|
|
13
|
+
*/
|
|
14
|
+
|
|
15
|
+
// Realistic proof: mirrors what the TEE actually produces
|
|
16
|
+
export const REALISTIC_PROOF = {
|
|
17
|
+
version: "bitgraph/1" as const,
|
|
18
|
+
artifact: {
|
|
19
|
+
hashAlg: "sha256" as const,
|
|
20
|
+
digestB64: "NkYJQ1Gi0hE0SIhv6c46MlqJdurmKHtbScOprDfoL6A=",
|
|
21
|
+
},
|
|
22
|
+
commit: {
|
|
23
|
+
nonceB64: "z1272XEvkMtibuBP0qG3oY37cewo6cJ/o1AuigOSVOk=",
|
|
24
|
+
counter: "1370",
|
|
25
|
+
slotCounter: "1369",
|
|
26
|
+
slotHashB64: "8IyrBOGB64ppP/RETEZTYyYesF5bfcwJ5dI9+u7r2yY=",
|
|
27
|
+
epochId: "7jU4N9703cm6A2t8YNoGsyOvbdePDpoaD8AKCFs7wko=",
|
|
28
|
+
prevB64: "KsJfA3MinpSwF+t4GuxU9vLmmaqAK8FhzhaepEnJBDc=",
|
|
29
|
+
chainId: "bitgraph:main",
|
|
30
|
+
},
|
|
31
|
+
signer: {
|
|
32
|
+
publicKeyB64: "9XjqKDS+e8NhhNoBqbisCKHpaR/HK6hH0x5AKdwc56w=",
|
|
33
|
+
signatureB64: "wbhAtN1dcF2nESBDB0sCQ4ebuZCav8ziLivYgofh7cXeupw5H97VyovHN4I/R9uS0vNaoPIP8js8uTkZnn/IBA==",
|
|
34
|
+
},
|
|
35
|
+
environment: {
|
|
36
|
+
enforcement: "measured-tee",
|
|
37
|
+
measurement: "638d655ad6091bed5c358628b7780de0cdbe138a37fe09d52bf8021a720680a2b3c730fee9f6bef79c1dbe68ef3cdd94",
|
|
38
|
+
attestation: {
|
|
39
|
+
format: "aws-nitro",
|
|
40
|
+
reportB64: "hEShATgioFkR...(truncated for test)",
|
|
41
|
+
},
|
|
42
|
+
},
|
|
43
|
+
slotAllocation: {
|
|
44
|
+
version: "bitgraph/slot/1" as const,
|
|
45
|
+
nonceB64: "z1272XEvkMtibuBP0qG3oY37cewo6cJ/o1AuigOSVOk=",
|
|
46
|
+
counter: "1369",
|
|
47
|
+
epochId: "7jU4N9703cm6A2t8YNoGsyOvbdePDpoaD8AKCFs7wko=",
|
|
48
|
+
publicKeyB64: "9XjqKDS+e8NhhNoBqbisCKHpaR/HK6hH0x5AKdwc56w=",
|
|
49
|
+
chainId: "bitgraph:main",
|
|
50
|
+
signatureB64: "yO34pHfmkjGY6HgDxcPIaFd/lnt/UFZuHQa10LmUvTHgsQP3S3bIEJX/xcXPRENKZ9duVe7c+81rAWdmhiRMBg==",
|
|
51
|
+
},
|
|
52
|
+
attribution: {
|
|
53
|
+
name: "Ethereum Anchor",
|
|
54
|
+
title: "https://etherscan.io/block/24800448",
|
|
55
|
+
message: "0x28ed3639cd705fb8cb2b915c1991e9f808b40e775bc8eb540702942729fec2c0",
|
|
56
|
+
},
|
|
57
|
+
};
|
|
@@ -5,6 +5,8 @@ import * as assert from "node:assert/strict";
|
|
|
5
5
|
import { getPublicKeyAsync, signAsync } from "@noble/ed25519";
|
|
6
6
|
import { Constructor } from "../constructor.js";
|
|
7
7
|
import { verify, resetEpochLinkState } from "../index.js";
|
|
8
|
+
import { verifyProofIntegrity } from "@mikeargento/bitgraph-verify";
|
|
9
|
+
import { DECLARED_12010 } from "./declared-proof-fixture.js";
|
|
8
10
|
import type { HostCapabilities } from "../host.js";
|
|
9
11
|
import type { BitGraphProof } from "../index.js";
|
|
10
12
|
|
|
@@ -522,6 +524,87 @@ describe("verify — policy: requireActor", () => {
|
|
|
522
524
|
});
|
|
523
525
|
});
|
|
524
526
|
|
|
527
|
+
// ---------------------------------------------------------------------------
|
|
528
|
+
// Agency: WebAuthn origin and RP binding
|
|
529
|
+
// ---------------------------------------------------------------------------
|
|
530
|
+
|
|
531
|
+
/* The real first declaration (#12,010) as it is, then the same proof with its
|
|
532
|
+
client data altered. The origin check runs BEFORE the signature check, so a
|
|
533
|
+
changed origin is reported as the origin problem it is, rather than as the
|
|
534
|
+
signature failure it also causes; and a changed origin whose host still
|
|
535
|
+
agrees with the rpIdHash passes the origin check and is then caught by the
|
|
536
|
+
signature, which is the order a reader would want the reasons in. */
|
|
537
|
+
function withClientData(proof: typeof DECLARED_12010, patch: (cd: Record<string, unknown>) => void): BitGraphProof {
|
|
538
|
+
const p = JSON.parse(JSON.stringify(proof)) as BitGraphProof;
|
|
539
|
+
const auth = (p.agency as { authorization: { clientDataJSON: string } }).authorization;
|
|
540
|
+
const cd = JSON.parse(auth.clientDataJSON) as Record<string, unknown>;
|
|
541
|
+
patch(cd);
|
|
542
|
+
auth.clientDataJSON = JSON.stringify(cd);
|
|
543
|
+
return p;
|
|
544
|
+
}
|
|
545
|
+
|
|
546
|
+
describe("verify — agency: WebAuthn origin and rpIdHash", () => {
|
|
547
|
+
test("the real declared proof verifies (origin https://bitgraph.ing, rpIdHash = SHA-256(bitgraph.ing))", async () => {
|
|
548
|
+
resetEpochLinkState();
|
|
549
|
+
const result = await verifyProofIntegrity({ proof: DECLARED_12010 as unknown as BitGraphProof });
|
|
550
|
+
assert.equal(result.valid, true, result.valid ? "" : result.reason);
|
|
551
|
+
});
|
|
552
|
+
|
|
553
|
+
test("an origin whose host disagrees with the authenticator's rpIdHash is refused as such", async () => {
|
|
554
|
+
resetEpochLinkState();
|
|
555
|
+
const tampered = withClientData(DECLARED_12010, (cd) => { cd.origin = "https://evil.example"; });
|
|
556
|
+
const result = await verifyProofIntegrity({ proof: tampered });
|
|
557
|
+
assert.equal(result.valid, false);
|
|
558
|
+
assert.match(result.reason ?? "", /rpIdHash does not match the origin/);
|
|
559
|
+
});
|
|
560
|
+
|
|
561
|
+
test("a missing origin is refused", async () => {
|
|
562
|
+
resetEpochLinkState();
|
|
563
|
+
const tampered = withClientData(DECLARED_12010, (cd) => { delete cd.origin; });
|
|
564
|
+
const result = await verifyProofIntegrity({ proof: tampered });
|
|
565
|
+
assert.equal(result.valid, false);
|
|
566
|
+
assert.match(result.reason ?? "", /missing origin/);
|
|
567
|
+
});
|
|
568
|
+
|
|
569
|
+
test("a subdomain of the RP ID passes the origin check (and is then caught by the signature)", async () => {
|
|
570
|
+
resetEpochLinkState();
|
|
571
|
+
const tampered = withClientData(DECLARED_12010, (cd) => { cd.origin = "https://app.bitgraph.ing"; });
|
|
572
|
+
const result = await verifyProofIntegrity({ proof: tampered });
|
|
573
|
+
assert.equal(result.valid, false);
|
|
574
|
+
assert.doesNotMatch(result.reason ?? "", /origin|rpIdHash/);
|
|
575
|
+
assert.match(result.reason ?? "", /signature/i);
|
|
576
|
+
});
|
|
577
|
+
|
|
578
|
+
test("policy allowedOrigins accepts the production origin", async () => {
|
|
579
|
+
resetEpochLinkState();
|
|
580
|
+
const result = await verifyProofIntegrity({
|
|
581
|
+
proof: DECLARED_12010 as unknown as BitGraphProof,
|
|
582
|
+
trustAnchors: { allowedOrigins: ["https://bitgraph.ing"] },
|
|
583
|
+
});
|
|
584
|
+
assert.equal(result.valid, true, result.valid ? "" : result.reason);
|
|
585
|
+
});
|
|
586
|
+
|
|
587
|
+
test("policy allowedOrigins refuses any other origin", async () => {
|
|
588
|
+
resetEpochLinkState();
|
|
589
|
+
const result = await verifyProofIntegrity({
|
|
590
|
+
proof: DECLARED_12010 as unknown as BitGraphProof,
|
|
591
|
+
trustAnchors: { allowedOrigins: ["https://other.example"] },
|
|
592
|
+
});
|
|
593
|
+
assert.equal(result.valid, false);
|
|
594
|
+
assert.match(result.reason ?? "", /origin .* is not in the allowed set/);
|
|
595
|
+
});
|
|
596
|
+
|
|
597
|
+
test("policy allowedOrigins refuses a proof with no agency", async () => {
|
|
598
|
+
const result = await verify({
|
|
599
|
+
proof: fx.proof,
|
|
600
|
+
bytes: fx.bytes,
|
|
601
|
+
trustAnchors: { allowedOrigins: ["https://bitgraph.ing"] },
|
|
602
|
+
});
|
|
603
|
+
assert.equal(result.valid, false);
|
|
604
|
+
assert.match(result.reason ?? "", /no agency/);
|
|
605
|
+
});
|
|
606
|
+
});
|
|
607
|
+
|
|
525
608
|
// ---------------------------------------------------------------------------
|
|
526
609
|
// resetEpochLinkState
|
|
527
610
|
// ---------------------------------------------------------------------------
|