@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.
Files changed (144) hide show
  1. package/README.md +49 -40
  2. package/dist/__tests__/audit-anchors.test.d.ts +2 -0
  3. package/dist/__tests__/audit-anchors.test.d.ts.map +1 -0
  4. package/dist/__tests__/audit-anchors.test.js +152 -0
  5. package/dist/__tests__/audit-anchors.test.js.map +1 -0
  6. package/dist/__tests__/audit-anomalies.test.d.ts +2 -0
  7. package/dist/__tests__/audit-anomalies.test.d.ts.map +1 -0
  8. package/dist/__tests__/audit-anomalies.test.js +663 -0
  9. package/dist/__tests__/audit-anomalies.test.js.map +1 -0
  10. package/dist/__tests__/audit-attestation.test.d.ts +2 -0
  11. package/dist/__tests__/audit-attestation.test.d.ts.map +1 -0
  12. package/dist/__tests__/audit-attestation.test.js +403 -0
  13. package/dist/__tests__/audit-attestation.test.js.map +1 -0
  14. package/dist/__tests__/audit-bench-smoke.test.d.ts +2 -0
  15. package/dist/__tests__/audit-bench-smoke.test.d.ts.map +1 -0
  16. package/dist/__tests__/audit-bench-smoke.test.js +87 -0
  17. package/dist/__tests__/audit-bench-smoke.test.js.map +1 -0
  18. package/dist/__tests__/audit-boundary.test.d.ts +20 -0
  19. package/dist/__tests__/audit-boundary.test.d.ts.map +1 -0
  20. package/dist/__tests__/audit-boundary.test.js +84 -0
  21. package/dist/__tests__/audit-boundary.test.js.map +1 -0
  22. package/dist/__tests__/audit-cli.test.d.ts +2 -0
  23. package/dist/__tests__/audit-cli.test.d.ts.map +1 -0
  24. package/dist/__tests__/audit-cli.test.js +239 -0
  25. package/dist/__tests__/audit-cli.test.js.map +1 -0
  26. package/dist/__tests__/audit-dependencies.test.d.ts +2 -0
  27. package/dist/__tests__/audit-dependencies.test.d.ts.map +1 -0
  28. package/dist/__tests__/audit-dependencies.test.js +116 -0
  29. package/dist/__tests__/audit-dependencies.test.js.map +1 -0
  30. package/dist/__tests__/audit-fixtures.d.ts +265 -0
  31. package/dist/__tests__/audit-fixtures.d.ts.map +1 -0
  32. package/dist/__tests__/audit-fixtures.js +511 -0
  33. package/dist/__tests__/audit-fixtures.js.map +1 -0
  34. package/dist/__tests__/audit-ingest.test.d.ts +2 -0
  35. package/dist/__tests__/audit-ingest.test.d.ts.map +1 -0
  36. package/dist/__tests__/audit-ingest.test.js +473 -0
  37. package/dist/__tests__/audit-ingest.test.js.map +1 -0
  38. package/dist/__tests__/audit-memory-ingest.test.d.ts +12 -0
  39. package/dist/__tests__/audit-memory-ingest.test.d.ts.map +1 -0
  40. package/dist/__tests__/audit-memory-ingest.test.js +120 -0
  41. package/dist/__tests__/audit-memory-ingest.test.js.map +1 -0
  42. package/dist/__tests__/audit-property.test.d.ts +2 -0
  43. package/dist/__tests__/audit-property.test.d.ts.map +1 -0
  44. package/dist/__tests__/audit-property.test.js +771 -0
  45. package/dist/__tests__/audit-property.test.js.map +1 -0
  46. package/dist/__tests__/audit-real-fixtures.test.d.ts +2 -0
  47. package/dist/__tests__/audit-real-fixtures.test.d.ts.map +1 -0
  48. package/dist/__tests__/audit-real-fixtures.test.js +132 -0
  49. package/dist/__tests__/audit-real-fixtures.test.js.map +1 -0
  50. package/dist/__tests__/audit-real-live.test.d.ts +2 -0
  51. package/dist/__tests__/audit-real-live.test.d.ts.map +1 -0
  52. package/dist/__tests__/audit-real-live.test.js +107 -0
  53. package/dist/__tests__/audit-real-live.test.js.map +1 -0
  54. package/dist/__tests__/audit-reconstruct.test.d.ts +2 -0
  55. package/dist/__tests__/audit-reconstruct.test.d.ts.map +1 -0
  56. package/dist/__tests__/audit-reconstruct.test.js +287 -0
  57. package/dist/__tests__/audit-reconstruct.test.js.map +1 -0
  58. package/dist/__tests__/audit-report.test.d.ts +2 -0
  59. package/dist/__tests__/audit-report.test.d.ts.map +1 -0
  60. package/dist/__tests__/audit-report.test.js +186 -0
  61. package/dist/__tests__/audit-report.test.js.map +1 -0
  62. package/dist/__tests__/audit-roundtrip.test.d.ts +2 -0
  63. package/dist/__tests__/audit-roundtrip.test.d.ts.map +1 -0
  64. package/dist/__tests__/audit-roundtrip.test.js +368 -0
  65. package/dist/__tests__/audit-roundtrip.test.js.map +1 -0
  66. package/dist/__tests__/audit-temporal.test.d.ts +2 -0
  67. package/dist/__tests__/audit-temporal.test.d.ts.map +1 -0
  68. package/dist/__tests__/audit-temporal.test.js +364 -0
  69. package/dist/__tests__/audit-temporal.test.js.map +1 -0
  70. package/dist/__tests__/audit-tiers.test.d.ts +2 -0
  71. package/dist/__tests__/audit-tiers.test.d.ts.map +1 -0
  72. package/dist/__tests__/audit-tiers.test.js +282 -0
  73. package/dist/__tests__/audit-tiers.test.js.map +1 -0
  74. package/dist/__tests__/audit-witness-real.test.d.ts +19 -0
  75. package/dist/__tests__/audit-witness-real.test.d.ts.map +1 -0
  76. package/dist/__tests__/audit-witness-real.test.js +82 -0
  77. package/dist/__tests__/audit-witness-real.test.js.map +1 -0
  78. package/dist/__tests__/audit-witness.test.d.ts +2 -0
  79. package/dist/__tests__/audit-witness.test.d.ts.map +1 -0
  80. package/dist/__tests__/audit-witness.test.js +308 -0
  81. package/dist/__tests__/audit-witness.test.js.map +1 -0
  82. package/dist/__tests__/chain-hash-anchor.test.d.ts +22 -0
  83. package/dist/__tests__/chain-hash-anchor.test.d.ts.map +1 -0
  84. package/dist/__tests__/chain-hash-anchor.test.js +55 -0
  85. package/dist/__tests__/chain-hash-anchor.test.js.map +1 -0
  86. package/dist/__tests__/declared-proof-fixture.d.ts +66 -0
  87. package/dist/__tests__/declared-proof-fixture.d.ts.map +1 -0
  88. package/dist/__tests__/declared-proof-fixture.js +66 -0
  89. package/dist/__tests__/declared-proof-fixture.js.map +1 -0
  90. package/dist/__tests__/mock-proof-fixture.d.ts +15 -0
  91. package/dist/__tests__/mock-proof-fixture.d.ts.map +1 -0
  92. package/dist/__tests__/mock-proof-fixture.js +34 -0
  93. package/dist/__tests__/mock-proof-fixture.js.map +1 -0
  94. package/dist/__tests__/proof-hash-regression.test.js +4 -43
  95. package/dist/__tests__/proof-hash-regression.test.js.map +1 -1
  96. package/dist/__tests__/proof-hash.test.js +3 -21
  97. package/dist/__tests__/proof-hash.test.js.map +1 -1
  98. package/dist/__tests__/proof-integrity.test.d.ts +2 -0
  99. package/dist/__tests__/proof-integrity.test.d.ts.map +1 -0
  100. package/dist/__tests__/proof-integrity.test.js +426 -0
  101. package/dist/__tests__/proof-integrity.test.js.map +1 -0
  102. package/dist/__tests__/realistic-proof-fixture.d.ts +56 -0
  103. package/dist/__tests__/realistic-proof-fixture.d.ts.map +1 -0
  104. package/dist/__tests__/realistic-proof-fixture.js +57 -0
  105. package/dist/__tests__/realistic-proof-fixture.js.map +1 -0
  106. package/dist/__tests__/verifier.test.js +74 -0
  107. package/dist/__tests__/verifier.test.js.map +1 -1
  108. package/package.json +10 -5
  109. package/src/__tests__/audit-anchors.test.ts +188 -0
  110. package/src/__tests__/audit-anomalies.test.ts +815 -0
  111. package/src/__tests__/audit-attestation.test.ts +529 -0
  112. package/src/__tests__/audit-bench-smoke.test.ts +108 -0
  113. package/src/__tests__/audit-boundary.test.ts +96 -0
  114. package/src/__tests__/audit-cli.test.ts +288 -0
  115. package/src/__tests__/audit-dependencies.test.ts +141 -0
  116. package/src/__tests__/audit-fixtures.ts +736 -0
  117. package/src/__tests__/audit-ingest.test.ts +575 -0
  118. package/src/__tests__/audit-memory-ingest.test.ts +140 -0
  119. package/src/__tests__/audit-property.test.ts +892 -0
  120. package/src/__tests__/audit-real-fixtures.test.ts +153 -0
  121. package/src/__tests__/audit-real-live.test.ts +128 -0
  122. package/src/__tests__/audit-reconstruct.test.ts +353 -0
  123. package/src/__tests__/audit-report.test.ts +222 -0
  124. package/src/__tests__/audit-roundtrip.test.ts +464 -0
  125. package/src/__tests__/audit-temporal.test.ts +446 -0
  126. package/src/__tests__/audit-tiers.test.ts +343 -0
  127. package/src/__tests__/audit-witness-real.test.ts +92 -0
  128. package/src/__tests__/audit-witness.test.ts +345 -0
  129. package/src/__tests__/chain-hash-anchor.test.ts +67 -0
  130. package/src/__tests__/declared-proof-fixture.ts +65 -0
  131. package/src/__tests__/mock-proof-fixture.ts +36 -0
  132. package/src/__tests__/proof-hash-regression.test.ts +4 -44
  133. package/src/__tests__/proof-hash.test.ts +3 -22
  134. package/src/__tests__/proof-integrity.test.ts +541 -0
  135. package/src/__tests__/real-fixtures/anchor-after-112762.json +47 -0
  136. package/src/__tests__/real-fixtures/anchor-with-ethereum-112758.json +47 -0
  137. package/src/__tests__/real-fixtures/live-proof-0.json +42 -0
  138. package/src/__tests__/real-fixtures/live-proof-1.json +43 -0
  139. package/src/__tests__/real-fixtures/live-proof-2.json +43 -0
  140. package/src/__tests__/real-fixtures/successor-112760.json +38 -0
  141. package/src/__tests__/real-fixtures/witness-25525146.json +6 -0
  142. package/src/__tests__/real-fixtures/witness-25525147.json +6 -0
  143. package/src/__tests__/realistic-proof-fixture.ts +57 -0
  144. 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": "hEShATgioFkRH79pbW9kdWxlX2lkeCdpLTA2NTAyNzM0MjNmZjY3NTY3LWVuYzAxOWYzMmI4Mzk5MTBhYTBmZGlnZXN0ZlNIQTM4NGl0aW1lc3RhbXAbAAABnzK41cRkcGNyc7AAWDDi/Muud+5AqsSDDoTxleBdaetFR7vZYfTTRZ/roQgHFAQkrKQq0DgQNUmCWYyGucsBWDBLTVs2YbPvwSkgkAyA4Sbkzng8Ui3mwCoqW/evOiuTJ7hndvGI5L4cHEBKEp29pJMCWDCqpocYsUGkoR5m9y7wvCGxRK9tQYqYQ6eKikVbqRkoSnYLrUcQAtGWfWNOF75ObcsDWDD+UwK5y1gm9uJGWywTP7nx46KUMZGUv4pHEWPSDdx91LwKDPm88/yRbkF8pnByVT4EWDB/NnLXYAC6yWpaRfuiml8mtOMJ0c28NmxuHHZxb2qRGqxwMMGDPYSq4Peo5aubZAIFWDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGWDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHWDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIWDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJWDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKWDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALWDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMWDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANWDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOWDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPWDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABrY2VydGlmaWNhdGVZAn4wggJ6MIICAaADAgECAhABnzK4OZEKoAAAAABqSmydMAoGCCqGSM49BAMDMIGOMQswCQYDVQQGEwJVUzETMBEGA1UECAwKV2FzaGluZ3RvbjEQMA4GA1UEBwwHU2VhdHRsZTEPMA0GA1UECgwGQW1hem9uMQwwCgYDVQQLDANBV1MxOTA3BgNVBAMMMGktMDY1MDI3MzQyM2ZmNjc1NjcudXMtZWFzdC0yLmF3cy5uaXRyby1lbmNsYXZlczAeFw0yNjA3MDUxNDM5MjJaFw0yNjA3MDUxNzM5MjVaMIGTMQswCQYDVQQGEwJVUzETMBEGA1UECAwKV2FzaGluZ3RvbjEQMA4GA1UEBwwHU2VhdHRsZTEPMA0GA1UECgwGQW1hem9uMQwwCgYDVQQLDANBV1MxPjA8BgNVBAMMNWktMDY1MDI3MzQyM2ZmNjc1NjctZW5jMDE5ZjMyYjgzOTkxMGFhMC51cy1lYXN0LTIuYXdzMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAEm1BCoP6LxWFtDtzvLduvzdMH3a739nOKdxJJ9bPT+EXo+LelF3XMPhqXncuIjfoyj0OlUCE/HmyyqTpyZ/6rH2BV1RrmXPwAcycktUAxUX4a7nG3GQjKNrDnmm0WyzaJox0wGzAMBgNVHRMBAf8EAjAAMAsGA1UdDwQEAwIGwDAKBggqhkjOPQQDAwNnADBkAjAxdkLcwgEN7PO6V1ut7zOavduSdyYOP7EUsjt6OAjMbvfSmDgJHW8t8s4qDhM0wyICMFix11oGJWW7FBHWk1tXc+7jciZFEZcJOiXBkp0PNO1L+VaLKOX4eP8eJOBklCqqF2hjYWJ1bmRsZYRZAhUwggIRMIIBlqADAgECAhEA+TF1aBuQr+EdRsy05Of4VjAKBggqhkjOPQQDAzBJMQswCQYDVQQGEwJVUzEPMA0GA1UECgwGQW1hem9uMQwwCgYDVQQLDANBV1MxGzAZBgNVBAMMEmF3cy5uaXRyby1lbmNsYXZlczAeFw0xOTEwMjgxMzI4MDVaFw00OTEwMjgxNDI4MDVaMEkxCzAJBgNVBAYTAlVTMQ8wDQYDVQQKDAZBbWF6b24xDDAKBgNVBAsMA0FXUzEbMBkGA1UEAwwSYXdzLm5pdHJvLWVuY2xhdmVzMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAE/AJU66YIwfNocOKa2pC+RjgyknNuiUv/9nLZiURLUFHlNKSx9tvjwLxYGjK3sXYHDt4S1po/6iEbZudSz33R3QlfbxNw9BcIQ9ncEAEh5M9jASgJZkSHyXlihDBNxT/0o0IwQDAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBSQJbUN2QVH55bDlvpync+Zqd9LljAOBgNVHQ8BAf8EBAMCAYYwCgYIKoZIzj0EAwMDaQAwZgIxAKN/L5Ghyb1e57hifBaY0lUDjh8DQ/lbY6lijD05gJVFoR68vy47Vdiu7nG0w9at8wIxAKLzmxYFsnAopd1LoGm1AW5ltPvej+AGHWpTGX+c2vXZQ7xh/CvrA8tv7o0jAvPf9lkCwzCCAr8wggJEoAMCAQICEF8vVI1wbqxg6kcFPXaM3XQwCgYIKoZIzj0EAwMwSTELMAkGA1UEBhMCVVMxDzANBgNVBAoMBkFtYXpvbjEMMAoGA1UECwwDQVdTMRswGQYDVQQDDBJhd3Mubml0cm8tZW5jbGF2ZXMwHhcNMjYwNzAzMDYyMDU5WhcNMjYwNzIzMDcyMDU5WjBkMQswCQYDVQQGEwJVUzEPMA0GA1UECgwGQW1hem9uMQwwCgYDVQQLDANBV1MxNjA0BgNVBAMMLWQ4MjA4MzVhOTJjYTc2ZGEudXMtZWFzdC0yLmF3cy5uaXRyby1lbmNsYXZlczB2MBAGByqGSM49AgEGBSuBBAAiA2IABDQhCexaqPVM5KIEBf2tyFW/BpEg8xvhyJlqOMi+MXKC6kgKc1xjkF0CIwK/0TJF33gl8GdZbb8leXECalE2r73jsTyVE89zdRqp2KZNam9JIqZaS4YzAZNzAukNJNSTBKOB1TCB0jASBgNVHRMBAf8ECDAGAQH/AgECMB8GA1UdIwQYMBaAFJAltQ3ZBUfnlsOW+nKdz5mp30uWMB0GA1UdDgQWBBQuIS5KPfbDhVKjKkpoZ4Z5Ni0kNjAOBgNVHQ8BAf8EBAMCAYYwbAYDVR0fBGUwYzBhoF+gXYZbaHR0cDovL2F3cy1uaXRyby1lbmNsYXZlcy1jcmwuczMuYW1hem9uYXdzLmNvbS9jcmwvYWI0OTYwY2MtN2Q2My00MmJkLTllOWYtNTkzMzhjYjY3Zjg0LmNybDAKBggqhkjOPQQDAwNpADBmAjEA6TlvrFTWYsLxEcqexReIs9LoHR1T0Mc+Z4nbsuTKYxZ/DckhBUBtwb21pkqXOPXsAjEA0W9NqVXIvf6wKZq1Tj7Ma0bI5//pF3yY+51AXqe/OxXtuVLCDJU8DzQs6kO3l7n5WQMYMIIDFDCCApqgAwIBAgIQVMvwRmRrPKkULmtPHMpkLzAKBggqhkjOPQQDAzBkMQswCQYDVQQGEwJVUzEPMA0GA1UECgwGQW1hem9uMQwwCgYDVQQLDANBV1MxNjA0BgNVBAMMLWQ4MjA4MzVhOTJjYTc2ZGEudXMtZWFzdC0yLmF3cy5uaXRyby1lbmNsYXZlczAeFw0yNjA3MDQxNjQ2NTBaFw0yNjA3MTAxMTQ2NTBaMIGJMTwwOgYDVQQDDDNiY2VlNTQ5MDc0M2FhZjAyLnpvbmFsLnVzLWVhc3QtMi5hd3Mubml0cm8tZW5jbGF2ZXMxDDAKBgNVBAsMA0FXUzEPMA0GA1UECgwGQW1hem9uMQswCQYDVQQGEwJVUzELMAkGA1UECAwCV0ExEDAOBgNVBAcMB1NlYXR0bGUwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAAQH5Mqd7FUES6kLtIaraYyPLRCADRKY7eU+VmzcaPi/o7Kaw1M4O19gF9YykqgljJI3JZjSlCdGpAkXc7fhjLThafIEJyCoWwvqCzHfNWDjn8KRwXC4Rbq0CcrnLVfkKOijgeowgecwEgYDVR0TAQH/BAgwBgEB/wIBATAfBgNVHSMEGDAWgBQuIS5KPfbDhVKjKkpoZ4Z5Ni0kNjAdBgNVHQ4EFgQUIFd//mBKu3Vg1YJ+PYIax0J3CHwwDgYDVR0PAQH/BAQDAgGGMIGABgNVHR8EeTB3MHWgc6Bxhm9odHRwOi8vY3JsLXVzLWVhc3QtMi1hd3Mtbml0cm8tZW5jbGF2ZXMuczMudXMtZWFzdC0yLmFtYXpvbmF3cy5jb20vY3JsLzE1YTE5MDI3LThhZTAtNDg0Mi04M2E5LTMzYjBlZDE1ZjEyMi5jcmwwCgYIKoZIzj0EAwMDaAAwZQIxAP3tm4ch3tLmVHei0J7J8CVoAqh5cSEEyo2YFL6P3LK5nCrw57wpeWf5i0/jlS+44gIwav/C8wLSvoJhKtLDhzJbkqg1Ma+AMZ2Go2PljBEEPsRhqINcVMhrIm33s6QuI7OVWQLBMIICvTCCAkSgAwIBAgIUAUcd+Bobbg/EX1cfnQGOMiN7bCgwCgYIKoZIzj0EAwMwgYkxPDA6BgNVBAMMM2JjZWU1NDkwNzQzYWFmMDIuem9uYWwudXMtZWFzdC0yLmF3cy5uaXRyby1lbmNsYXZlczEMMAoGA1UECwwDQVdTMQ8wDQYDVQQKDAZBbWF6b24xCzAJBgNVBAYTAlVTMQswCQYDVQQIDAJXQTEQMA4GA1UEBwwHU2VhdHRsZTAeFw0yNjA3MDUwMzA3MzFaFw0yNjA3MDYwMzA3MzFaMIGOMQswCQYDVQQGEwJVUzETMBEGA1UECAwKV2FzaGluZ3RvbjEQMA4GA1UEBwwHU2VhdHRsZTEPMA0GA1UECgwGQW1hem9uMQwwCgYDVQQLDANBV1MxOTA3BgNVBAMMMGktMDY1MDI3MzQyM2ZmNjc1NjcudXMtZWFzdC0yLmF3cy5uaXRyby1lbmNsYXZlczB2MBAGByqGSM49AgEGBSuBBAAiA2IABDhoMFUcb8bP5C1T3N/oAjW5AkdYF14mzccQF90SDUWeC6d2tXRoMm9VXQhH0pWw8Hf3dl4HIpoujKP3dHNDBccJ8B4dKffbwUyn29CWZNg4bVXAkui5aVa27N3/6GSznKNmMGQwEgYDVR0TAQH/BAgwBgEB/wIBADAOBgNVHQ8BAf8EBAMCAgQwHQYDVR0OBBYEFI3Ez5VD2q8WGxgPpifG0Lc/M02zMB8GA1UdIwQYMBaAFCBXf/5gSrt1YNWCfj2CGsdCdwh8MAoGCCqGSM49BAMDA2cAMGQCMA0NSv1pE5B9UxpW4X7TRfT2wl0vXnIVRV6Hhg1cpymlhDtQPWFzIRDnClYPsdMVdgIwbkN18gRFaHAkTZ/Dd5sIkvKlMXsGh9ZK69p9Tj1OzDCl4IFqd5IPRkrOLvzkP6rZanB1YmxpY19rZXn2aXVzZXJfZGF0YVggfLBYnoP8kpjPzc8E7gmF3LvO0hz0VEBSLHjKivu2otplbm9uY2X2/1hgypgJTP0ROvmmK3EUuaypyTeRr39ALexEv87406jU/zJ1u1QVtmXZOyuhIsxjL4CUij0g8/jMyY+jWkZzfMA7RA0CIegizU1C6dngrhs5EeHeXFsSoQxjeGfERWx8gu27"
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
  // ---------------------------------------------------------------------------