{"_id":"@algovoi/rfc9421-verifier","_rev":"12-74015b312e1bfafe2ca57d5499591afa","name":"@algovoi/rfc9421-verifier","dist-tags":{"latest":"0.4.4"},"versions":{"0.1.0":{"name":"@algovoi/rfc9421-verifier","version":"0.1.0","keywords":["rfc9421","rfc9530","http-signatures","ed25519","agentic-payments","compliance"],"author":{"name":"AlgoVoi","email":"chopmob@gmail.com"},"license":"Apache-2.0","_id":"@algovoi/rfc9421-verifier@0.1.0","maintainers":[{"name":"algovoi","email":"chopmob@gmail.com"}],"homepage":"https://github.com/chopmob-cloud/algovoi-rfc9421-verifier","bugs":{"url":"https://github.com/chopmob-cloud/algovoi-rfc9421-verifier/issues"},"dist":{"shasum":"ed8e419eef33a67ead966ebc4838398c667d15e3","tarball":"https://registry.npmjs.org/@algovoi/rfc9421-verifier/-/rfc9421-verifier-0.1.0.tgz","fileCount":17,"integrity":"sha512-fOywdLw8k5nB6gg7PjZobXP6fMGHf3x2sla8AE3444iJfIZUVQ2TECQMz4Ve4UX/wNu9TIK2CSvjUBqG7DmjCA==","signatures":[{"sig":"MEYCIQDrFsQ3T/ePTYwm3x7PW/pQky4N1sxIkksbZf8i9aTiAQIhAP3ZW2Y4M6GUb1CCVKoLuYdXvwVI6t/5otzhTLPgubTz","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":44428},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"f73cb20eddbe7bb68ec46f8ea00c5ab0df7a68e6","scripts":{"test":"vitest run","build":"tsc","clean":"rimraf dist","test:watch":"vitest","prepublishOnly":"npm run clean && npm run build && npm test"},"_npmUser":{"name":"algovoi","email":"chopmob@gmail.com"},"repository":{"url":"git+https://github.com/chopmob-cloud/algovoi-rfc9421-verifier.git","type":"git","directory":"typescript"},"_npmVersion":"11.6.2","description":"AlgoVoi RFC 9421 HTTP Message Signatures + RFC 9530 Content-Digest reference verifier","directories":{},"_nodeVersion":"24.12.0","dependencies":{"@noble/ed25519":"^2.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"rimraf":"^5.0.0","vitest":"^1.6.0","typescript":"^5.4.0","@types/node":"^20.0.0"},"_npmOperationalInternal":{"tmp":"tmp/rfc9421-verifier_0.1.0_1779603106710_0.6725446760688119","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@algovoi/rfc9421-verifier","version":"0.1.1","keywords":["rfc9421","rfc9530","http-signatures","ed25519","agentic-payments","compliance"],"author":{"name":"AlgoVoi","email":"chopmob@gmail.com"},"license":"Apache-2.0","_id":"@algovoi/rfc9421-verifier@0.1.1","maintainers":[{"name":"algovoi","email":"chopmob@gmail.com"}],"homepage":"https://github.com/chopmob-cloud/algovoi-rfc9421-verifier","bugs":{"url":"https://github.com/chopmob-cloud/algovoi-rfc9421-verifier/issues"},"dist":{"shasum":"8530015aeff7a891ed5d0fb1a0335739b941f988","tarball":"https://registry.npmjs.org/@algovoi/rfc9421-verifier/-/rfc9421-verifier-0.1.1.tgz","fileCount":17,"integrity":"sha512-nuDZGjLxmApXkO2X9l4RO09XqGpXYuX9afdl+1UB2gs67j5RxRWwWLOpKEHl8t3/nhurGDTxjFvD6skB+0IPgw==","signatures":[{"sig":"MEUCICGB7lql2pGcvG42aEyLDgq9fjU3lCKf31iDC0rGHQStAiEAqCAThc3Tt9xnT3PqQFCWbahc//vemitfpj6Apitlxno=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":45347},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"7ad2335ad4b26cea4c8a989932eecd2ed3519dc2","scripts":{"test":"vitest run","build":"tsc","clean":"rimraf dist","test:watch":"vitest","prepublishOnly":"npm run clean && npm run build && npm test"},"_npmUser":{"name":"algovoi","email":"chopmob@gmail.com"},"repository":{"url":"git+https://github.com/chopmob-cloud/algovoi-rfc9421-verifier.git","type":"git","directory":"typescript"},"_npmVersion":"11.6.2","description":"AlgoVoi RFC 9421 HTTP Message Signatures + RFC 9530 Content-Digest reference verifier","directories":{},"_nodeVersion":"24.12.0","dependencies":{"@noble/ed25519":"^2.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"rimraf":"^5.0.0","vitest":"^1.6.0","typescript":"^5.4.0","@types/node":"^20.0.0"},"_npmOperationalInternal":{"tmp":"tmp/rfc9421-verifier_0.1.1_1779805509392_0.19897808931447836","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@algovoi/rfc9421-verifier","version":"0.2.0","keywords":["rfc9421","rfc9530","http-signatures","ed25519","agentic-payments","compliance"],"author":{"name":"AlgoVoi","email":"chopmob@gmail.com"},"license":"Apache-2.0","_id":"@algovoi/rfc9421-verifier@0.2.0","maintainers":[{"name":"algovoi","email":"chopmob@gmail.com"}],"homepage":"https://github.com/chopmob-cloud/algovoi-rfc9421-verifier","bugs":{"url":"https://github.com/chopmob-cloud/algovoi-rfc9421-verifier/issues"},"dist":{"shasum":"6aac250fdb6ab5e968f38a31980ba67df73a82e4","tarball":"https://registry.npmjs.org/@algovoi/rfc9421-verifier/-/rfc9421-verifier-0.2.0.tgz","fileCount":17,"integrity":"sha512-YZFmGD1T9H6Wpf5XPdZ5Gq9yU3CWQeRdncDt8xJa+McPDGN73bQ4+fIBFIMDKz4C4+yoV+51R3c+mlNqT34p0g==","signatures":[{"sig":"MEUCIQD8nZqEfY8bqYYXrNay8Hpd54Wu93oBEMUFm++EnDleFQIgZYyYCpM0RetAwO6TQgBdDbNceJUJnTx0EO1L5RKsLB4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":51074},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"b4653ba16a298c403b51e551e3fbe59269096f6a","scripts":{"test":"vitest run","build":"tsc","clean":"rimraf dist","test:watch":"vitest","prepublishOnly":"npm run clean && npm run build && npm test"},"_npmUser":{"name":"algovoi","email":"chopmob@gmail.com"},"repository":{"url":"git+https://github.com/chopmob-cloud/algovoi-rfc9421-verifier.git","type":"git","directory":"typescript"},"_npmVersion":"11.6.2","description":"AlgoVoi RFC 9421 HTTP Message Signatures + RFC 9530 Content-Digest reference verifier","directories":{},"_nodeVersion":"24.12.0","dependencies":{"@noble/ed25519":"^2.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"rimraf":"^5.0.0","vitest":"^1.6.0","typescript":"^5.4.0","@types/node":"^20.0.0"},"_npmOperationalInternal":{"tmp":"tmp/rfc9421-verifier_0.2.0_1779896746104_0.7388515219225718","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"@algovoi/rfc9421-verifier","version":"0.2.1","keywords":["rfc9421","rfc9530","http-signatures","ed25519","agentic-payments","compliance"],"author":{"name":"AlgoVoi","email":"chopmob@gmail.com"},"license":"Apache-2.0","_id":"@algovoi/rfc9421-verifier@0.2.1","maintainers":[{"name":"algovoi","email":"chopmob@gmail.com"}],"homepage":"https://github.com/chopmob-cloud/algovoi-rfc9421-verifier","bugs":{"url":"https://github.com/chopmob-cloud/algovoi-rfc9421-verifier/issues"},"dist":{"shasum":"93c0ee249ff530efdda70011a16e2486371b2a43","tarball":"https://registry.npmjs.org/@algovoi/rfc9421-verifier/-/rfc9421-verifier-0.2.1.tgz","fileCount":17,"integrity":"sha512-UKJHqTVxThcqMZGEY4eACtNvIMh8LgEgLx7OVQTewkxGYq2Mx1LSsUdQ1+m0lmZVsOVtgO/iOIPNbTx3PD3VMw==","signatures":[{"sig":"MEQCIDRNEdZOxuSP0pDfiY/m1aIASibuKgq9dxhfJpa6ly8kAiBeXfCkBTtGehgkPMPiNYFZMb8QwMJxPomOBHQ/8uh9xQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":51869},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"94ff99e6fd20955207dd6a795b6f5a806b6927f7","scripts":{"test":"vitest run","build":"tsc","clean":"rimraf dist","test:watch":"vitest","prepublishOnly":"npm run clean && npm run build && npm test"},"_npmUser":{"name":"algovoi","email":"chopmob@gmail.com"},"repository":{"url":"git+https://github.com/chopmob-cloud/algovoi-rfc9421-verifier.git","type":"git","directory":"typescript"},"_npmVersion":"11.6.2","description":"AlgoVoi RFC 9421 HTTP Message Signatures + RFC 9530 Content-Digest reference verifier","directories":{},"_nodeVersion":"24.12.0","dependencies":{"@noble/ed25519":"^2.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"rimraf":"^5.0.0","vitest":"^1.6.0","typescript":"^5.4.0","@types/node":"^20.0.0"},"_npmOperationalInternal":{"tmp":"tmp/rfc9421-verifier_0.2.1_1779897205724_0.2612597342855161","host":"s3://npm-registry-packages-npm-production"}},"0.3.1":{"name":"@algovoi/rfc9421-verifier","version":"0.3.1","keywords":["rfc9421","rfc9530","http-signatures","ed25519","agentic-payments","compliance"],"author":{"name":"AlgoVoi","email":"chopmob@gmail.com"},"license":"Apache-2.0","_id":"@algovoi/rfc9421-verifier@0.3.1","maintainers":[{"name":"algovoi","email":"chopmob@gmail.com"}],"homepage":"https://github.com/chopmob-cloud/algovoi-rfc9421-verifier","bugs":{"url":"https://github.com/chopmob-cloud/algovoi-rfc9421-verifier/issues"},"dist":{"shasum":"6d84b0fc22de0d2136b452abc4dfe8314023b63d","tarball":"https://registry.npmjs.org/@algovoi/rfc9421-verifier/-/rfc9421-verifier-0.3.1.tgz","fileCount":19,"integrity":"sha512-UcZMq/bbtvgo4ZZc2jdj2vzCU2M/soGGz2SJ819+SkYjqYt+iGd+EZyJQ7ry9n37+upVlkq5eoHy5gbJpYMbwg==","signatures":[{"sig":"MEQCIFW12x6+Gl1VQz0AvZwl2MqGkGSjtxRLIJtoS1pZVp40AiBk/t34xSdLbEX/KT4N5Oe4CSHaqFc3FUr93DD3HDBHyQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":63727},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"2c241edfcb10f79c70a54140669e77aa4c6ec425","scripts":{"test":"vitest run","build":"tsc","clean":"rimraf dist","test:watch":"vitest","prepublishOnly":"npm run clean && npm run build && npm test"},"_npmUser":{"name":"algovoi","email":"chopmob@gmail.com"},"repository":{"url":"git+https://github.com/chopmob-cloud/algovoi-rfc9421-verifier.git","type":"git","directory":"typescript"},"_npmVersion":"11.6.2","description":"AlgoVoi RFC 9421 HTTP Message Signatures + RFC 9530 Content-Digest reference verifier","directories":{},"_nodeVersion":"24.12.0","dependencies":{"@noble/ed25519":"^2.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"rimraf":"^5.0.0","vitest":"^1.6.0","typescript":"^5.4.0","@types/node":"^20.0.0"},"_npmOperationalInternal":{"tmp":"tmp/rfc9421-verifier_0.3.1_1782972486891_0.7944680082322706","host":"s3://npm-registry-packages-npm-production"}},"0.3.2":{"name":"@algovoi/rfc9421-verifier","version":"0.3.2","keywords":["rfc9421","rfc9530","http-signatures","ed25519","agentic-payments","compliance"],"author":{"name":"AlgoVoi","email":"chopmob@gmail.com"},"license":"Apache-2.0","_id":"@algovoi/rfc9421-verifier@0.3.2","maintainers":[{"name":"algovoi","email":"chopmob@gmail.com"}],"homepage":"https://github.com/chopmob-cloud/algovoi-rfc9421-verifier","bugs":{"url":"https://github.com/chopmob-cloud/algovoi-rfc9421-verifier/issues"},"dist":{"shasum":"3b6929c9366f755912200bea627690d6c5565b40","tarball":"https://registry.npmjs.org/@algovoi/rfc9421-verifier/-/rfc9421-verifier-0.3.2.tgz","fileCount":17,"integrity":"sha512-9ide9wT/yBtPFKuFzqKjf7p+NxhsaD2cmjVdJY76BQ586EeChZC4U1mfUSmbRpdB4rEnozvttvcCBaCfmh6PZg==","signatures":[{"sig":"MEUCIDZzQDxYFyLFTqnTG1NH20eInoWNMRJHDxpGbt5/ZxPMAiEA3S1GdmFIwNKDdprOcWr43UqPL4LbvjFJofXneMXfkkY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":53193},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"1fe8198597fb77fcd2f71adf982b56237281fc33","scripts":{"test":"vitest run","build":"tsc","clean":"rimraf dist","test:watch":"vitest","prepublishOnly":"npm run clean && npm run build && npm test"},"_npmUser":{"name":"algovoi","email":"chopmob@gmail.com"},"repository":{"url":"git+https://github.com/chopmob-cloud/algovoi-rfc9421-verifier.git","type":"git","directory":"typescript"},"_npmVersion":"11.6.2","description":"AlgoVoi RFC 9421 HTTP Message Signatures + RFC 9530 Content-Digest reference verifier","directories":{},"_nodeVersion":"24.12.0","dependencies":{"@noble/ed25519":"^2.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"rimraf":"^5.0.0","vitest":"^1.6.0","typescript":"^5.4.0","@types/node":"^20.0.0"},"_npmOperationalInternal":{"tmp":"tmp/rfc9421-verifier_0.3.2_1784120759248_0.6865739948918999","host":"s3://npm-registry-packages-npm-production"}},"0.3.3":{"name":"@algovoi/rfc9421-verifier","version":"0.3.3","keywords":["rfc9421","rfc9530","http-signatures","ed25519","agentic-payments","compliance"],"author":{"name":"AlgoVoi","email":"chopmob@gmail.com"},"license":"Apache-2.0","_id":"@algovoi/rfc9421-verifier@0.3.3","maintainers":[{"name":"algovoi","email":"chopmob@gmail.com"}],"homepage":"https://github.com/chopmob-cloud/algovoi-rfc9421-verifier","bugs":{"url":"https://github.com/chopmob-cloud/algovoi-rfc9421-verifier/issues"},"dist":{"shasum":"7039cec6667d3683d8c5e7ef074c15e95e7c67f2","tarball":"https://registry.npmjs.org/@algovoi/rfc9421-verifier/-/rfc9421-verifier-0.3.3.tgz","fileCount":19,"integrity":"sha512-yxLtZ+PBndA1lVnRuY8ywclwcU6fOnlJMc7+tzYF8UDiZiC8eTiIKBhicangg5PEBbMN6KSyK//Oa+tCecN6ig==","signatures":[{"sig":"MEUCIBmNXMk2MlS4COYZDp57wI66lzTl3yG9Ubhi58ba07uTAiEA7k6xG8S4v0LrKucUe/XAwRNkyvXxpRiWIK2YX9r8O6w=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":65950},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"23d3950697824b688650ea43103ab3551c974851","scripts":{"test":"vitest run","build":"tsc","clean":"rimraf dist","test:watch":"vitest","prepublishOnly":"npm run clean && npm run build && npm test"},"_npmUser":{"name":"algovoi","email":"chopmob@gmail.com"},"repository":{"url":"git+https://github.com/chopmob-cloud/algovoi-rfc9421-verifier.git","type":"git","directory":"typescript"},"_npmVersion":"11.6.2","description":"AlgoVoi RFC 9421 HTTP Message Signatures + RFC 9530 Content-Digest reference verifier","directories":{},"_nodeVersion":"24.12.0","dependencies":{"@noble/ed25519":"^2.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"rimraf":"^5.0.0","vitest":"^1.6.0","typescript":"^5.4.0","@types/node":"^20.0.0"},"_npmOperationalInternal":{"tmp":"tmp/rfc9421-verifier_0.3.3_1785702048514_0.33884169359743543","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@algovoi/rfc9421-verifier","version":"0.4.0","keywords":["rfc9421","rfc9530","http-signatures","ed25519","agentic-payments","compliance"],"author":{"name":"AlgoVoi","email":"chopmob@gmail.com"},"license":"Apache-2.0","_id":"@algovoi/rfc9421-verifier@0.4.0","maintainers":[{"name":"algovoi","email":"chopmob@gmail.com"}],"homepage":"https://github.com/chopmob-cloud/algovoi-rfc9421-verifier","bugs":{"url":"https://github.com/chopmob-cloud/algovoi-rfc9421-verifier/issues"},"dist":{"shasum":"1e3c44f93b07c4fe6f75305ce409a8d74dedecae","tarball":"https://registry.npmjs.org/@algovoi/rfc9421-verifier/-/rfc9421-verifier-0.4.0.tgz","fileCount":22,"integrity":"sha512-T1u/BYzDdZLNl7wuB0YClbn0anlss1InPSbT62GtVhpmJEYQtqXxmPfGENxXN/Ao6jiIuLtVn5Id8i7Vr+jvrQ==","signatures":[{"sig":"MEUCIC2CEGBClq3xw7B0XoiBE2wK2+YVPlZwwMEAhCcfLfkXAiEAzvQo6OLzpl0Szia2/uKY0Aznge7s0OtsBF7AqnqmzrE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":89606},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"3a7e289ffd184d6253e4f8785964db25ea3d37d4","scripts":{"test":"vitest run","build":"tsc","clean":"rimraf dist","test:watch":"vitest","prepublishOnly":"npm run clean && npm run build && npm test"},"_npmUser":{"name":"algovoi","email":"chopmob@gmail.com"},"repository":{"url":"git+https://github.com/chopmob-cloud/algovoi-rfc9421-verifier.git","type":"git","directory":"typescript"},"_npmVersion":"11.6.2","description":"AlgoVoi RFC 9421 HTTP Message Signatures + RFC 9530 Content-Digest reference verifier","directories":{},"_nodeVersion":"24.12.0","dependencies":{"@noble/ed25519":"^2.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"rimraf":"^5.0.0","vitest":"^1.6.0","typescript":"^5.4.0","@types/node":"^20.0.0"},"_npmOperationalInternal":{"tmp":"tmp/rfc9421-verifier_0.4.0_1786183559979_0.6833098862294145","host":"s3://npm-registry-packages-npm-production"}},"0.4.1":{"name":"@algovoi/rfc9421-verifier","version":"0.4.1","keywords":["rfc9421","rfc9530","http-signatures","ed25519","agentic-payments","compliance"],"author":{"name":"AlgoVoi","email":"chopmob@gmail.com"},"license":"Apache-2.0","_id":"@algovoi/rfc9421-verifier@0.4.1","maintainers":[{"name":"algovoi","email":"chopmob@gmail.com"}],"homepage":"https://github.com/chopmob-cloud/algovoi-rfc9421-verifier","bugs":{"url":"https://github.com/chopmob-cloud/algovoi-rfc9421-verifier/issues"},"dist":{"shasum":"086ec4a0aefe9245b893cfbee563e3f549ca8c33","tarball":"https://registry.npmjs.org/@algovoi/rfc9421-verifier/-/rfc9421-verifier-0.4.1.tgz","fileCount":22,"integrity":"sha512-vpj7lypCHooxpgDdW+njT6wlXzZ//s3qttvCs3iqnQk04TGPTFj4OWGKpM/g8jWjUSR0dMztr0a921YmJN+Omw==","signatures":[{"sig":"MEUCIQD37QQO6FtauRgrcjrEvJC9Ip7e1jOyfiX4aVguSoLchwIgUvxtRN/6V8u2YBBowaqSUdWNFEFamLTuj3LCTmTfVC4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":91715},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"704f5f6bbab2dba0fe0942116cb0772af4572a27","scripts":{"test":"vitest run","build":"tsc","clean":"rimraf dist","test:watch":"vitest","prepublishOnly":"npm run clean && npm run build && npm test"},"_npmUser":{"name":"algovoi","email":"chopmob@gmail.com"},"repository":{"url":"git+https://github.com/chopmob-cloud/algovoi-rfc9421-verifier.git","type":"git","directory":"typescript"},"_npmVersion":"11.6.2","description":"AlgoVoi RFC 9421 HTTP Message Signatures + RFC 9530 Content-Digest reference verifier","directories":{},"_nodeVersion":"24.12.0","dependencies":{"@noble/ed25519":"^2.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"rimraf":"^5.0.0","vitest":"^1.6.0","typescript":"^5.4.0","@types/node":"^20.0.0"},"_npmOperationalInternal":{"tmp":"tmp/rfc9421-verifier_0.4.1_1786190396891_0.5287699789814795","host":"s3://npm-registry-packages-npm-production"}},"0.4.2":{"name":"@algovoi/rfc9421-verifier","version":"0.4.2","keywords":["rfc9421","rfc9530","http-signatures","ed25519","agentic-payments","compliance"],"author":{"name":"AlgoVoi","email":"chopmob@gmail.com"},"license":"Apache-2.0","_id":"@algovoi/rfc9421-verifier@0.4.2","maintainers":[{"name":"algovoi","email":"chopmob@gmail.com"}],"homepage":"https://github.com/chopmob-cloud/algovoi-rfc9421-verifier","bugs":{"url":"https://github.com/chopmob-cloud/algovoi-rfc9421-verifier/issues"},"dist":{"shasum":"817bc2814289aca984b199d3fd011111b0e079e8","tarball":"https://registry.npmjs.org/@algovoi/rfc9421-verifier/-/rfc9421-verifier-0.4.2.tgz","fileCount":25,"integrity":"sha512-3aaB7MUBFimzbU5mvpyxpU0MmWZvM2uQxMXOVs8/e06a8CVlpldq2lXKDKKu3+HhkVRSgZ74fq1e4P+fgunMlg==","signatures":[{"sig":"MEUCIQDPloATIEToNY2VYrf+7C8mRdUw9ObfNyIoKHxg9IxYowIgC4nYmlDGX9FT1fcj3BowhAaHmzqvuaY86ymOc0ZL5Nw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":100685},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"ed09be77e51189da677df9ab5d4669ddc4652593","scripts":{"test":"vitest run","build":"tsc","clean":"rimraf dist","test:watch":"vitest","prepublishOnly":"npm run clean && npm run build && npm test"},"_npmUser":{"name":"algovoi","email":"chopmob@gmail.com"},"repository":{"url":"git+https://github.com/chopmob-cloud/algovoi-rfc9421-verifier.git","type":"git","directory":"typescript"},"_npmVersion":"11.6.2","description":"AlgoVoi RFC 9421 HTTP Message Signatures + RFC 9530 Content-Digest reference verifier","directories":{},"_nodeVersion":"24.12.0","dependencies":{"@noble/ed25519":"^2.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"rimraf":"^5.0.0","vitest":"^1.6.0","typescript":"^5.4.0","@types/node":"^20.0.0"},"_npmOperationalInternal":{"tmp":"tmp/rfc9421-verifier_0.4.2_1786214492036_0.6060827756857046","host":"s3://npm-registry-packages-npm-production"}},"0.4.3":{"name":"@algovoi/rfc9421-verifier","version":"0.4.3","keywords":["rfc9421","rfc9530","http-signatures","ed25519","agentic-payments","compliance"],"author":{"name":"AlgoVoi","email":"chopmob@gmail.com"},"license":"Apache-2.0","_id":"@algovoi/rfc9421-verifier@0.4.3","maintainers":[{"name":"algovoi","email":"chopmob@gmail.com"}],"homepage":"https://github.com/chopmob-cloud/algovoi-rfc9421-verifier","bugs":{"url":"https://github.com/chopmob-cloud/algovoi-rfc9421-verifier/issues"},"dist":{"shasum":"dc9b499855c5ef00feb8ba511dbb43fc3160a9cc","tarball":"https://registry.npmjs.org/@algovoi/rfc9421-verifier/-/rfc9421-verifier-0.4.3.tgz","fileCount":25,"integrity":"sha512-8ifkFFCxCvSEtCKmR8LPYzLglxyvHOGFqw8n2MWphZZofTax1GphMLcv1XOeSGWjQkv/GkOEFKmY4+ROZ0rJxw==","signatures":[{"sig":"MEYCIQD3DEB8ZRXWYSlpsyrpw33jpTzqPsG+LdiC6mAWNvcYLwIhAKJ+82zkXJvd3TeXoiUe1SvNv6dOUdgD5SF5Ueqlta98","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":102860},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"1dd1a0ead7f52e2b90827db7157fbbae3ccfbc66","scripts":{"test":"vitest run","build":"tsc","clean":"rimraf dist","test:watch":"vitest","prepublishOnly":"npm run clean && npm run build && npm test"},"_npmUser":{"name":"algovoi","email":"chopmob@gmail.com"},"repository":{"url":"git+https://github.com/chopmob-cloud/algovoi-rfc9421-verifier.git","type":"git","directory":"typescript"},"_npmVersion":"11.6.2","description":"AlgoVoi RFC 9421 HTTP Message Signatures + RFC 9530 Content-Digest reference verifier","directories":{},"_nodeVersion":"24.12.0","dependencies":{"@noble/ed25519":"^2.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"rimraf":"^5.0.0","vitest":"^1.6.0","typescript":"^5.4.0","@types/node":"^20.0.0"},"_npmOperationalInternal":{"tmp":"tmp/rfc9421-verifier_0.4.3_1786449753918_0.45008263464420906","host":"s3://npm-registry-packages-npm-production"}},"0.4.4":{"name":"@algovoi/rfc9421-verifier","version":"0.4.4","description":"AlgoVoi RFC 9421 HTTP Message Signatures + RFC 9530 Content-Digest reference verifier","keywords":["rfc9421","rfc9530","http-signatures","ed25519","agentic-payments","compliance"],"homepage":"https://github.com/chopmob-cloud/algovoi-rfc9421-verifier","repository":{"type":"git","url":"git+https://github.com/chopmob-cloud/algovoi-rfc9421-verifier.git","directory":"typescript"},"bugs":{"url":"https://github.com/chopmob-cloud/algovoi-rfc9421-verifier/issues"},"license":"Apache-2.0","author":{"name":"AlgoVoi","email":"chopmob@gmail.com"},"type":"module","main":"./dist/index.js","module":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"import":"./dist/index.js","types":"./dist/index.d.ts"}},"scripts":{"build":"tsc","test":"vitest run","test:watch":"vitest","clean":"rimraf dist","prepublishOnly":"npm run clean && npm run build && npm test"},"engines":{"node":">=18"},"dependencies":{"@noble/ed25519":"^2.1.0"},"devDependencies":{"@types/node":"^20.0.0","rimraf":"^5.0.0","typescript":"^5.4.0","vitest":"^1.6.0"},"publishConfig":{"access":"public"},"gitHead":"dfb528426a56037efd6759bbad419113ff2f8fd4","_id":"@algovoi/rfc9421-verifier@0.4.4","_nodeVersion":"24.12.0","_npmVersion":"11.6.2","dist":{"integrity":"sha512-KKLptJZWAnEQc/JlIjGvRETDQKTJtuuV8tXilOiKlyA4WLmHp3kfa1oRR4K1BOU0UtD7MLFs2/amhhzaeuP3QQ==","shasum":"6d2f0a91aac46cdb892dbd7c36b74a6f1b1997b6","tarball":"https://registry.npmjs.org/@algovoi/rfc9421-verifier/-/rfc9421-verifier-0.4.4.tgz","fileCount":25,"unpackedSize":108891,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEMCHzFiUnC8//iNByQ1LnGkP+V8WOgJglw/EmnokxBKs88CIBOC/yPFinvRxYk3kgNtyF4Oob10bXAZvgqIv1RrF47B"}]},"_npmUser":{"name":"algovoi","email":"chopmob@gmail.com"},"directories":{},"maintainers":[{"name":"algovoi","email":"chopmob@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/rfc9421-verifier_0.4.4_1786785947117_0.8880346103222918"},"_hasShrinkwrap":false}},"time":{"created":"2026-05-24T06:11:46.556Z","modified":"2026-08-15T09:25:47.412Z","0.1.0":"2026-05-24T06:11:46.851Z","0.1.1":"2026-05-26T14:25:09.549Z","0.2.0":"2026-05-27T15:45:46.235Z","0.2.1":"2026-05-27T15:53:25.861Z","0.3.1":"2026-07-02T06:08:07.085Z","0.3.2":"2026-07-15T13:05:59.396Z","0.3.3":"2026-08-02T20:20:48.663Z","0.4.0":"2026-08-08T10:06:00.135Z","0.4.1":"2026-08-08T11:59:57.038Z","0.4.2":"2026-08-08T18:41:32.197Z","0.4.3":"2026-08-11T12:02:34.072Z","0.4.4":"2026-08-15T09:25:47.251Z"},"bugs":{"url":"https://github.com/chopmob-cloud/algovoi-rfc9421-verifier/issues"},"author":{"name":"AlgoVoi","email":"chopmob@gmail.com"},"license":"Apache-2.0","homepage":"https://github.com/chopmob-cloud/algovoi-rfc9421-verifier","keywords":["rfc9421","rfc9530","http-signatures","ed25519","agentic-payments","compliance"],"repository":{"type":"git","url":"git+https://github.com/chopmob-cloud/algovoi-rfc9421-verifier.git","directory":"typescript"},"description":"AlgoVoi RFC 9421 HTTP Message Signatures + RFC 9530 Content-Digest reference verifier","maintainers":[{"name":"algovoi","email":"chopmob@gmail.com"}],"readme":"# algovoi-rfc9421-verifier\r\n\r\n[![PyPI](https://img.shields.io/pypi/v/algovoi-rfc9421-verifier?label=PyPI)](https://pypi.org/project/algovoi-rfc9421-verifier/)\r\n[![npm](https://img.shields.io/npm/v/@algovoi/rfc9421-verifier?label=npm)](https://www.npmjs.com/package/@algovoi/rfc9421-verifier)\r\n[![Apache 2.0](https://img.shields.io/badge/license-Apache--2.0-green)](./LICENSE)\r\n[![IETF I-D](https://img.shields.io/badge/companion%20IETF%20I--D-draft--hopley--x402--compliance--receipt--00-blue)](https://datatracker.ietf.org/doc/draft-hopley-x402-compliance-receipt/)\r\n\r\nAlgoVoi-authored reference verifier for\r\n[RFC 9421 (HTTP Message Signatures)](https://www.rfc-editor.org/rfc/rfc9421)\r\nplus\r\n[RFC 9530 (Digest Fields for HTTP)](https://www.rfc-editor.org/rfc/rfc9530).\r\nPython and TypeScript, byte-for-byte parity, Apache 2.0.\r\n\r\nUse cases:\r\n\r\n- Verify an incoming RFC 9421-signed HTTP request against a known\r\n  public key.\r\n- Re-validate a captured request after it traverses a TLS-re-terminating\r\n  proxy chain (the property pinned in the\r\n  [`rfc9421_proxy_chain_v0`](https://github.com/chopmob-cloud/algovoi-jcs-conformance-vectors/tree/main/vectors/rfc9421_proxy_chain_v0)\r\n  conformance fixture).\r\n- Build conformance test harnesses anchored to the RFC 8032 Section\r\n  7.1 deterministic Ed25519 reference keypair.\r\n\r\n## Packages\r\n\r\n| Language | Package | Install |\r\n|---|---|---|\r\n| Python | [`algovoi-rfc9421-verifier`](https://pypi.org/project/algovoi-rfc9421-verifier/) | `pip install algovoi-rfc9421-verifier` |\r\n| TypeScript | [`@algovoi/rfc9421-verifier`](https://www.npmjs.com/package/@algovoi/rfc9421-verifier) | `npm install @algovoi/rfc9421-verifier` |\r\n\r\nBoth packages are byte-deterministic on identical inputs and tested\r\nagainst the same RFC 8032 Section 7.1 Test 1 reference fixture.\r\n\r\n## Quick start\r\n\r\n### Python\r\n\r\n```python\r\nfrom algovoi_rfc9421_verifier import verify_request\r\n\r\nresult = verify_request(\r\n    method=\"GET\",\r\n    authority=\"api.algovoi.co.uk\",\r\n    path=\"/compliance/attestation\",\r\n    headers={\r\n        \"content-digest\": \"sha-256=:47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=:\",\r\n        \"signature-input\": (\r\n            'sig=(\"@method\" \"@authority\" \"@path\" \"content-digest\" \"created\");'\r\n            'created=1778955520;keyid=\"did:web:api.algovoi.co.uk\";alg=\"ed25519\"'\r\n        ),\r\n        \"signature\": (\r\n            \"sig=:Xj1peMjEYi75R/QQFYpU9q/gHwQKYwgt1etjAX1qc0zugTMJoJ86Uhy/jTZ175b3\"\r\n            \"zFhp0j8cLjmDJvGmySDBAQ==:\"\r\n        ),\r\n    },\r\n    body=b\"\",\r\n    public_key=\"d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a\",\r\n)\r\nassert result.valid\r\n```\r\n\r\n### TypeScript\r\n\r\n```typescript\r\nimport { verifyRequest } from \"@algovoi/rfc9421-verifier\";\r\n\r\nconst result = await verifyRequest({\r\n  method: \"GET\",\r\n  authority: \"api.algovoi.co.uk\",\r\n  path: \"/compliance/attestation\",\r\n  headers: {\r\n    \"content-digest\": \"sha-256=:47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=:\",\r\n    \"signature-input\":\r\n      'sig=(\"@method\" \"@authority\" \"@path\" \"content-digest\" \"created\");created=1778955520;keyid=\"did:web:api.algovoi.co.uk\";alg=\"ed25519\"',\r\n    signature:\r\n      \"sig=:Xj1peMjEYi75R/QQFYpU9q/gHwQKYwgt1etjAX1qc0zugTMJoJ86Uhy/jTZ175b3zFhp0j8cLjmDJvGmySDBAQ==:\",\r\n  },\r\n  body: new Uint8Array(),\r\n  publicKey:\r\n    \"d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a\",\r\n});\r\nif (result.valid) console.log(\"verified\");\r\n```\r\n\r\n## Signing-base mode\r\n\r\n`verify_request` / `verifyRequest` default to **`rfc9421`** (since v0.3.0),\r\nbuilding the full RFC 9421 §2.5 signing base including the mandatory\r\n`@signature-params` line. This verifies any RFC-compliant signer and the\r\n[`rfc9421_proxy_chain_v1`](https://github.com/chopmob-cloud/algovoi-jcs-conformance-vectors/tree/main/vectors/rfc9421_proxy_chain_v1)\r\nfixture. Pass `mode: \"algovoi-v0\"` for the legacy base (no\r\n`@signature-params` line, `@method` lowercased) used by the\r\n`rfc9421_proxy_chain_v0` fixture. Python and TypeScript share the same\r\ndefault, so cross-language verification stays byte-for-byte identical.\r\n\r\n## API surface\r\n\r\n| Function | Purpose |\r\n|---|---|\r\n| `verify_request` / `verifyRequest` | High-level: parse all headers, build signing base, verify Content-Digest, verify Ed25519 signature, return a `VerifyResult` with per-step success flags. |\r\n| `verify_signature` / `verifySignature` | Lower-level: caller supplies the signing base; library verifies Ed25519 only. |\r\n| `verify_content_digest` / `verifyContentDigest` | Validate RFC 9530 `Content-Digest` header against a body. SHA-256 and SHA-512 supported. |\r\n| `build_signing_base` / `buildSigningBase` | Construct the RFC 9421 §2.5 signing base from covered components + values. |\r\n| `parse_signature_input` / `parseSignatureInput` | Parse a `Signature-Input` header. Accepts the strict labelled form and the unlabelled real-world form. |\r\n| `parse_signature_value` / `parseSignatureValue` | Parse a `Signature` header. |\r\n| `compute_content_digest` / `computeContentDigest` | Compute a `Content-Digest` header value for a body. |\r\n\r\n## Verification hardening options\r\n\r\n`verifyRequest` applies the checks below on top of the signature. A valid signature\r\ndoes not by itself make a request *safe*; these options enforce freshness, coverage,\r\nand algorithm policy (Python names in parentheses):\r\n\r\n- `requiredComponents` (`required_components`) — reject unless every listed component\r\n  (e.g. `@method`, `@authority`, `@path`) is covered (closes request-line-rewrite gaps).\r\n- `requireContentDigest` (`require_content_digest`, default `true`) — require\r\n  `content-digest` to be a covered component and verify it against the body (no body-swap).\r\n- `allowedAlgorithms` (`allowed_algorithms`, default `[\"ed25519\"]`) — algorithm\r\n  allow-list; an absent `alg` is always rejected.\r\n- `now`, `maxAgeSeconds`, `maxSkewSeconds`, `requireCreated`, `enforceExpires` —\r\n  freshness window; only *signed* `created` / `expires` are trusted.\r\n- `nonceSeen` (`nonce_seen`) — single-use nonce probe `(nonce, keyid) => seen`,\r\n  checked after the signature verifies; fails closed on a thrown error.\r\n- `expectedTag` / `requireTag` — enforce the RFC 9421 `tag` (anti cross-protocol reuse).\r\n\r\nAlways on: non-canonical, off-curve, and small-order Ed25519 public keys are rejected\r\nbefore verification, and the `Signature` value must be canonical base64.\r\n\r\n```typescript\r\nconst result = await verifyRequest({\r\n  method: \"POST\", authority: \"api.example\", path: \"/pay\",\r\n  headers, body, publicKey,\r\n  requiredComponents: [\"@method\", \"@authority\", \"@path\"],\r\n  requireCreated: true, maxAgeSeconds: 300,\r\n  nonceSeen: (nonce, keyid) => store.seen(nonce, keyid),\r\n});\r\nif (!result.valid) {\r\n  // deny\r\n}\r\n```\r\n\r\n## Scope\r\n\r\n- **Algorithms**: Ed25519 only. ECDSA-P256 and RSA-PSS are roadmap.\r\n- **Derived components**: `@method`, `@authority`, `@path`,\r\n  `@target-uri`, `@scheme`, `@status`, plus `created` and `expires`\r\n  parameters. `@request-target`, `@query`, `@query-param` are roadmap.\r\n- **Header forms**: strict labelled `<label>=(...)` and unlabelled\r\n  `(...);created=...` real-world forms both accepted.\r\n- **Content-Digest**: SHA-256 (mandatory per RFC 9530) and SHA-512.\r\n  Other algorithms in the IANA registry are roadmap.\r\n\r\nThe v0.1.0 surface is sufficient to verify any AlgoVoi production\r\ncompliance receipt and the `rfc9421_proxy_chain_v0` conformance\r\nfixture. Multi-algorithm + multi-label support arrives in v0.2.0.\r\n\r\n## Conformance fixture\r\n\r\nThe reference fixture for the verifier is at\r\n[`chopmob-cloud/algovoi-jcs-conformance-vectors/vectors/rfc9421_proxy_chain_v0/`](https://github.com/chopmob-cloud/algovoi-jcs-conformance-vectors/tree/main/vectors/rfc9421_proxy_chain_v0).\r\nIt uses the RFC 8032 Section 7.1 Test 1 deterministic Ed25519 keypair\r\nand includes a `tcpdump` wire-capture record (`E2E_PROOF.md`)\r\ndemonstrating that the RFC 9421 headers survive a 3-hop\r\nTLS-re-terminating proxy chain (Cloudflare edge → nginx → FastAPI)\r\nbyte-identical.\r\n\r\n## Companion IETF Internet-Draft\r\n\r\nThis library is part of the AlgoVoi substrate that anchors\r\n[`draft-hopley-x402-compliance-receipt-00`](https://datatracker.ietf.org/doc/draft-hopley-x402-compliance-receipt/)\r\n(Independent Submission, Informational; posted 2026-05-23). The\r\nreceipt-format audit-chain property in the I-D assumes signed\r\nreceipts can be transported and re-verified independently of the\r\noriginating gateway — exactly the property this verifier checks.\r\n\r\n## Related AlgoVoi substrate packages\r\n\r\n| Package | Purpose |\r\n|---|---|\r\n| [`algovoi-substrate`](https://pypi.org/project/algovoi-substrate/) / [`@algovoi/substrate`](https://www.npmjs.com/package/@algovoi/substrate) | JCS RFC 8785 canonicalisation, `action_ref`, transactional lifecycle, compliance receipt builder |\r\n| [`algovoi-audit-verifier`](https://pypi.org/project/algovoi-audit-verifier/) / [`@algovoi/audit-verifier`](https://www.npmjs.com/package/@algovoi/audit-verifier) | Selective-disclosure audit bundle verifier; consumes substrate output |\r\n| **`algovoi-rfc9421-verifier`** / `@algovoi/rfc9421-verifier` | **This package.** RFC 9421/9530 HTTP signature verifier |\r\n\r\n## Relationship to the canonicalisation discipline\r\n\r\nThis package verifies HTTP message signatures per RFC 9421 + RFC 9530 -- a different canonicalisation surface from the AlgoVoi JCS RFC 8785 receipt-body discipline at [docs.algovoi.co.uk/canonicalisation-substrate](https://docs.algovoi.co.uk/canonicalisation-substrate). HTTP signature verification (this package) and receipt-content verification (`@algovoi/audit-verifier` + the receipt-format packages) are complementary surfaces: this verifier confirms wire-level message integrity; the AlgoVoi JCS substrate confirms receipt-body canonical integrity. Both are AlgoVoi-authored under sole authorship.\r\n\r\nParties anchoring to the AlgoVoi canonicalisation discipline are recorded in the [Substrate Adopters Registry](https://docs.algovoi.co.uk/adopters); the registry's `canon_version` pin criterion applies to receipt-body artefacts, not to HTTP signatures as such.\r\n\r\n## Licence\r\n\r\nApache 2.0. See [`LICENSE`](./LICENSE).\r\n\r\n## Author\r\n\r\nAlgoVoi (Christopher Hopley, GitHub [`chopmob-cloud`](https://github.com/chopmob-cloud)).\r\n","readmeFilename":"README.md"}