{"_id":"@freedomofpress/crypto-browser","_rev":"15-115f584e927b2ba22c5644e15a4b05b7","name":"@freedomofpress/crypto-browser","dist-tags":{"latest":"0.1.8"},"versions":{"0.1.0":{"name":"@freedomofpress/crypto-browser","version":"0.1.0","keywords":["cryptography","asn1","x509","encoding","browser","webcrypto","sigstore"],"author":{"name":"Giulio B. and Sacha Servan-Schreiber"},"license":"Apache-2.0","_id":"@freedomofpress/crypto-browser@0.1.0","maintainers":[{"name":"freedomofpress_admin","email":"npm-admin@freedom.press"},{"name":"lsd-cat","email":"npm@lsd.cat"},{"name":"soleilera","email":"soleilera@proton.me"}],"homepage":"https://github.com/freedomofpress/crypto-browser#readme","bugs":{"url":"https://github.com/freedomofpress/crypto-browser/issues"},"dist":{"shasum":"9f6b44536443bd3177b2e37e944adad91259b127","tarball":"https://registry.npmjs.org/@freedomofpress/crypto-browser/-/crypto-browser-0.1.0.tgz","fileCount":79,"integrity":"sha512-mSJqloOwCTeiK+62Yo3z/TH95MFQj50B3QP+IJtbbSmbJp9Oi597+2cjPRHCgzkywc3dxlc5BFpGATAVom6I3g==","signatures":[{"sig":"MEUCIEZPMfGhcg66nRsV2lfgDIfLTjcFLPSvTh6/wqrk//OTAiEAq6gfveg6+wlnN+BIfZrkX1rDNB4eNvMSBpjeV7tiAXo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":166164},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","gitHead":"3e67a3b50c8049e0c7a13896105080edd41a3a95","scripts":{"test":"vitest run","build":"tsc","test:browser":"vitest run --config vite.config.playwright.ts","prepublishOnly":"npm run build"},"_npmUser":{"name":"lsd-cat","email":"npm@lsd.cat"},"repository":{"url":"git+https://github.com/freedomofpress/crypto-browser.git","type":"git"},"_npmVersion":"11.6.0","description":"Browser-compatible cryptography utilities.","directories":{},"_nodeVersion":"24.10.0","dependencies":{"@noble/curves":"^1.6.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^6.0.7","vitest":"^3.2.4","playwright":"^1.49.1","typescript":"^5.0.0","@types/node":"^24.0.0","@vitest/browser":"^3.2.4"},"peerDependencies":{"@noble/curves":"^1.6.0"},"_npmOperationalInternal":{"tmp":"tmp/crypto-browser_0.1.0_1764199109177_0.008642390939352262","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@freedomofpress/crypto-browser","version":"0.1.1","keywords":["cryptography","asn1","x509","encoding","browser","webcrypto","sigstore"],"author":{"name":"Giulio B. and Sacha Servan-Schreiber"},"license":"Apache-2.0","_id":"@freedomofpress/crypto-browser@0.1.1","maintainers":[{"name":"freedomofpress_admin","email":"npm-admin@freedom.press"},{"name":"lsd-cat","email":"npm@lsd.cat"},{"name":"soleilera","email":"soleilera@proton.me"}],"homepage":"https://github.com/freedomofpress/crypto-browser#readme","bugs":{"url":"https://github.com/freedomofpress/crypto-browser/issues"},"dist":{"shasum":"4eac3c3e6c8cfbec38b5caff175b44d30bbee8a6","tarball":"https://registry.npmjs.org/@freedomofpress/crypto-browser/-/crypto-browser-0.1.1.tgz","fileCount":79,"integrity":"sha512-XblZvMdeAuBBqZChmEjz7MJ5lokWzxwwk/U4IMBHla+Y+2j9JTcexdH2fLGXx/f1J+ksvNDqVnqCMtrE1lSKMQ==","signatures":[{"sig":"MEUCIBJ/cxNzGZ3Yzcj7PqvpKGlp+xCCS6VXJmeaZpV283nWAiEA0Z4l4fuiwJx0DCiss5oCugqMp7uRjKLTXJ1tgpnsFlk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":155560},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"gitHead":"df4831946570b80962f92a1c8bc539084de62678","scripts":{"test":"vitest run","build":"tsc","test:browser":"vitest run --config vite.config.playwright.ts","prepublishOnly":"npm run build"},"_npmUser":{"name":"lsd-cat","email":"npm@lsd.cat"},"repository":{"url":"git+https://github.com/freedomofpress/crypto-browser.git","type":"git"},"_npmVersion":"10.8.2","description":"Browser-compatible cryptography utilities.","directories":{},"_nodeVersion":"20.19.5","dependencies":{"@noble/curves":"^1.6.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^6.0.7","vitest":"^3.2.4","playwright":"^1.49.1","typescript":"^5.0.0","@types/node":"^24.0.0","@vitest/browser":"^3.2.4"},"peerDependencies":{"@noble/curves":"^1.6.0"},"_npmOperationalInternal":{"tmp":"tmp/crypto-browser_0.1.1_1764439155191_0.17104080474962036","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@freedomofpress/crypto-browser","version":"0.1.2","keywords":["cryptography","asn1","x509","encoding","browser","webcrypto","sigstore"],"author":{"name":"Giulio B. and Sacha Servan-Schreiber"},"license":"Apache-2.0","_id":"@freedomofpress/crypto-browser@0.1.2","maintainers":[{"name":"freedomofpress_admin","email":"npm-admin@freedom.press"},{"name":"lsd-cat","email":"npm@lsd.cat"},{"name":"soleilera","email":"soleilera@proton.me"}],"homepage":"https://github.com/freedomofpress/crypto-browser#readme","bugs":{"url":"https://github.com/freedomofpress/crypto-browser/issues"},"dist":{"shasum":"005436f116c6d7d3d9059ddf7efab287cb66c176","tarball":"https://registry.npmjs.org/@freedomofpress/crypto-browser/-/crypto-browser-0.1.2.tgz","fileCount":55,"integrity":"sha512-ZNVxnvHzU4/rpVv6uUrO1+WXDA2+HeugMo+3qvZTCQ7bpmwF1IGW7z0x9Hmn9C6Y8ABDXqZ7tNNtiQrk7O5LfQ==","signatures":[{"sig":"MEUCIGEYcBvQ3VGXr+48ZTUSbPyjd2vjRD/wrPz7Yx3/9jcTAiEAryt2vHOHnNCS1xjQPXPHH88aD+Qq7EOq5puxS/3RYbg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":93621},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"gitHead":"d632b3b15e50c09a40227095875483332c5c636b","scripts":{"test":"vitest run","build":"tsc","test:browser":"vitest run --config vite.config.playwright.ts","prepublishOnly":"npm run build"},"_npmUser":{"name":"lsd-cat","email":"npm@lsd.cat"},"repository":{"url":"git+https://github.com/freedomofpress/crypto-browser.git","type":"git"},"_npmVersion":"10.8.2","description":"Browser-compatible cryptography utilities.","directories":{},"_nodeVersion":"20.19.5","dependencies":{"@noble/curves":"^1.6.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^6.0.7","vitest":"^3.2.4","playwright":"^1.49.1","typescript":"^5.0.0","@types/node":"^24.0.0","@vitest/browser":"^3.2.4"},"peerDependencies":{"@noble/curves":"^1.6.0"},"_npmOperationalInternal":{"tmp":"tmp/crypto-browser_0.1.2_1764458947081_0.6187862830053044","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"@freedomofpress/crypto-browser","version":"0.1.3","keywords":["cryptography","asn1","x509","encoding","browser","webcrypto","sigstore"],"author":{"name":"Giulio B. and Sacha Servan-Schreiber"},"license":"Apache-2.0","_id":"@freedomofpress/crypto-browser@0.1.3","maintainers":[{"name":"freedomofpress_admin","email":"npm-admin@freedom.press"},{"name":"lsd-cat","email":"npm@lsd.cat"},{"name":"soleilera","email":"soleilera@proton.me"}],"homepage":"https://github.com/freedomofpress/crypto-browser#readme","bugs":{"url":"https://github.com/freedomofpress/crypto-browser/issues"},"dist":{"shasum":"6a8c6356210b17f8d9fe58126828514a4b3912a4","tarball":"https://registry.npmjs.org/@freedomofpress/crypto-browser/-/crypto-browser-0.1.3.tgz","fileCount":55,"integrity":"sha512-eu8o97k4sJvQPMZMN2WI9SYS24tyUgdxHab3yGpllgtc0D0ucNNI3IlY0DL/xwiKxfaQaxC87nmThfdm4ocLTA==","signatures":[{"sig":"MEYCIQDKnNM3MrLhRQvI2m9dPAXwjdKAvuakuKWcUmKtLgEzIAIhALYq1hrY+Wy7MXZYPvNqcGDv06vTFq2Haab2Y0N6ppAp","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":94664},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"gitHead":"31989fd358feed78a39d020b7d5f6506620057ae","scripts":{"test":"vitest run","build":"tsc","test:browser":"vitest run --config vite.config.playwright.ts","prepublishOnly":"npm run build"},"_npmUser":{"name":"lsd-cat","email":"npm@lsd.cat"},"repository":{"url":"git+https://github.com/freedomofpress/crypto-browser.git","type":"git"},"_npmVersion":"10.8.2","description":"Browser-compatible cryptography utilities.","directories":{},"_nodeVersion":"20.19.5","dependencies":{"@noble/curves":"^1.6.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^6.0.7","vitest":"^3.2.4","playwright":"^1.49.1","typescript":"^5.0.0","@types/node":"^24.0.0","@vitest/browser":"^3.2.4"},"peerDependencies":{"@noble/curves":"^1.6.0"},"_npmOperationalInternal":{"tmp":"tmp/crypto-browser_0.1.3_1764460777213_0.11195369354893892","host":"s3://npm-registry-packages-npm-production"}},"0.1.4":{"name":"@freedomofpress/crypto-browser","version":"0.1.4","keywords":["cryptography","asn1","x509","encoding","browser","webcrypto","sigstore"],"author":{"name":"Giulio B. and Sacha Servan-Schreiber"},"license":"Apache-2.0","_id":"@freedomofpress/crypto-browser@0.1.4","maintainers":[{"name":"freedomofpress_admin","email":"npm-admin@freedom.press"},{"name":"lsd-cat","email":"npm@lsd.cat"},{"name":"soleilera","email":"soleilera@proton.me"}],"homepage":"https://github.com/freedomofpress/crypto-browser#readme","bugs":{"url":"https://github.com/freedomofpress/crypto-browser/issues"},"dist":{"shasum":"b4589ba3992ee29d4d3458b84254674290b601f9","tarball":"https://registry.npmjs.org/@freedomofpress/crypto-browser/-/crypto-browser-0.1.4.tgz","fileCount":55,"integrity":"sha512-Z8XGb7ghySvhzufe8BqRnyxBY5NwDlMpZTx3NKrGD0wKtq4sWpj2vPlVKQTzXMJql9+OEY4U/MZ5DvBB27CDEw==","signatures":[{"sig":"MEUCIES3xO0FhWc0NJkZah6uzmHpDLn5ZvK5V3GFkuacl5I7AiEAoOuhrothysJechNZIT2F60Dj5jtd34x0Qtua8ZuRMJY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":94749},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"gitHead":"a2f80ea0bf656e996c67fa4d56acce0f8267964c","scripts":{"test":"vitest run","build":"tsc","test:browser":"vitest run --config vite.config.playwright.ts","prepublishOnly":"npm run build"},"_npmUser":{"name":"lsd-cat","email":"npm@lsd.cat"},"repository":{"url":"git+https://github.com/freedomofpress/crypto-browser.git","type":"git"},"_npmVersion":"10.8.2","description":"Browser-compatible cryptography utilities.","directories":{},"_nodeVersion":"20.19.5","dependencies":{"@noble/curves":"^1.6.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^6.0.7","vitest":"^3.2.4","playwright":"^1.49.1","typescript":"^5.0.0","@types/node":"^24.0.0","@vitest/browser":"^3.2.4"},"peerDependencies":{"@noble/curves":"^1.6.0"},"_npmOperationalInternal":{"tmp":"tmp/crypto-browser_0.1.4_1764463227824_0.6067901668967917","host":"s3://npm-registry-packages-npm-production"}},"0.1.5":{"name":"@freedomofpress/crypto-browser","version":"0.1.5","keywords":["cryptography","asn1","x509","encoding","browser","webcrypto","sigstore"],"author":{"name":"Giulio B. and Sacha Servan-Schreiber"},"license":"Apache-2.0","_id":"@freedomofpress/crypto-browser@0.1.5","maintainers":[{"name":"freedomofpress_admin","email":"npm-admin@freedom.press"},{"name":"lsd-cat","email":"npm@lsd.cat"},{"name":"soleilera","email":"soleilera@proton.me"}],"homepage":"https://github.com/freedomofpress/crypto-browser#readme","bugs":{"url":"https://github.com/freedomofpress/crypto-browser/issues"},"dist":{"shasum":"353526681dcbc8db2816fd1e16501c5e6e7820df","tarball":"https://registry.npmjs.org/@freedomofpress/crypto-browser/-/crypto-browser-0.1.5.tgz","fileCount":55,"integrity":"sha512-mnd+NSfMabr5CS88HRLOqXOZdsrViaZq0Q/8UiPUzfhJx/53ShPt2OlkVlDABCmdeotqSIT0gg8Oz4YsYhb1iA==","signatures":[{"sig":"MEUCIQDaE3ClQQcqFKhvRr6lX9OoGJl3sXPdPk4G/Nu7NUa/egIgZGh1/44fNzJHoMbFGo7txk/qyJtWtX7QlKkAEfblEbg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":94517},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"gitHead":"bd0765b6bc01332b7465ae442d4bc71ae5c560b3","scripts":{"test":"vitest run","build":"tsc","test:browser":"vitest run --config vite.config.playwright.ts","prepublishOnly":"npm run build"},"_npmUser":{"name":"lsd-cat","email":"npm@lsd.cat"},"repository":{"url":"git+https://github.com/freedomofpress/crypto-browser.git","type":"git"},"_npmVersion":"10.8.2","description":"Browser-compatible cryptography utilities.","directories":{},"_nodeVersion":"20.19.5","dependencies":{"@noble/curves":"^1.6.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^6.0.7","vitest":"^3.2.4","playwright":"^1.49.1","typescript":"^5.0.0","@types/node":"^24.0.0","@vitest/browser":"^3.2.4"},"peerDependencies":{"@noble/curves":"^1.6.0"},"_npmOperationalInternal":{"tmp":"tmp/crypto-browser_0.1.5_1764636460612_0.9367463964809746","host":"s3://npm-registry-packages-npm-production"}},"0.1.6":{"name":"@freedomofpress/crypto-browser","version":"0.1.6","keywords":["cryptography","asn1","x509","encoding","browser","webcrypto","sigstore"],"author":{"name":"Giulio B. and Sacha Servan-Schreiber"},"license":"Apache-2.0","_id":"@freedomofpress/crypto-browser@0.1.6","maintainers":[{"name":"freedomofpress_admin","email":"npm-admin@freedom.press"},{"name":"lsd-cat","email":"npm@lsd.cat"},{"name":"soleilera","email":"soleilera@proton.me"}],"homepage":"https://github.com/freedomofpress/crypto-browser#readme","bugs":{"url":"https://github.com/freedomofpress/crypto-browser/issues"},"dist":{"shasum":"5f4f2f3b151156cc8f83a3f48fbef356155be60b","tarball":"https://registry.npmjs.org/@freedomofpress/crypto-browser/-/crypto-browser-0.1.6.tgz","fileCount":55,"integrity":"sha512-2tCPDKefb7gLzwmBNdCLmLq1h1mPLaHgPYdY+cJjX8W+FjoWZh6VenLEqvNQ7sznAJfagMQJoWHnh53GkG0I2g==","signatures":[{"sig":"MEQCIEdqOOEi5xUJ1oaPpg2Bmt2cpSRt7VcTZ13igLUT5wr7AiAjL9HGjc2XgGWsZIhdpk1BlkhzgIrihEAZOLXdq3Im8g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@freedomofpress%2fcrypto-browser@0.1.6","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":94517},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"gitHead":"e4d515517325840ac5771a57ad3871a511d7c337","scripts":{"test":"vitest run","build":"tsc","test:browser":"vitest run --config vite.config.playwright.ts","prepublishOnly":"npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:a6490c3c-54cf-4e46-8f40-b14d7931fca4"}},"repository":{"url":"git+https://github.com/freedomofpress/crypto-browser.git","type":"git"},"_npmVersion":"11.6.4","description":"Browser-compatible cryptography utilities.","directories":{},"_nodeVersion":"20.19.5","dependencies":{"@noble/curves":"^1.6.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^6.0.7","vitest":"^3.2.4","playwright":"^1.49.1","typescript":"^5.0.0","@types/node":"^24.0.0","@vitest/browser":"^3.2.4"},"peerDependencies":{"@noble/curves":"^1.6.0"},"_npmOperationalInternal":{"tmp":"tmp/crypto-browser_0.1.6_1764636828973_0.2517134101514811","host":"s3://npm-registry-packages-npm-production"}},"0.1.7":{"name":"@freedomofpress/crypto-browser","version":"0.1.7","keywords":["cryptography","asn1","x509","encoding","browser","webcrypto","sigstore"],"author":{"name":"Giulio B. and Sacha Servan-Schreiber"},"license":"Apache-2.0","_id":"@freedomofpress/crypto-browser@0.1.7","maintainers":[{"name":"enpaul","email":"ethan@freedom.press"},{"name":"ada_fpf","email":"ada@freedom.press"},{"name":"mdaleo404","email":"marco@freedom.press"},{"name":"mig5_fpf","email":"mig@freedom.press"},{"name":"soleilera","email":"soleilera@proton.me"},{"name":"lsd-cat","email":"npm@lsd.cat"}],"homepage":"https://github.com/freedomofpress/crypto-browser#readme","bugs":{"url":"https://github.com/freedomofpress/crypto-browser/issues"},"dist":{"shasum":"f0a31e39f88b499b128a221f97fefa24ecd7a00e","tarball":"https://registry.npmjs.org/@freedomofpress/crypto-browser/-/crypto-browser-0.1.7.tgz","fileCount":55,"integrity":"sha512-zjWmZDKdAu8g0Zq1IjBQ+sKQ/NpfzStBDFjy/qHUSMVEL4wNlNGtA7lhtw8v8asXa0yqF2QTYQ3rq6xCTQeADw==","signatures":[{"sig":"MEQCIE5eb3SemwkjvRIK5pxuKQ3tumXM6IjkOt0deJdcw3zxAiBDzRk2GY36WBieqzLjDhjT/mmjd5mUOBxvCVrT/PdjeQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@freedomofpress%2fcrypto-browser@0.1.7","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":100848},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"gitHead":"14c52e6b493050990ba7e6dd6a95aa26463c76e9","scripts":{"test":"vitest run","build":"tsc","test:browser":"vitest run --config vite.config.playwright.ts","prepublishOnly":"npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:a6490c3c-54cf-4e46-8f40-b14d7931fca4"}},"repository":{"url":"git+https://github.com/freedomofpress/crypto-browser.git","type":"git"},"_npmVersion":"11.10.0","description":"Browser-compatible cryptography utilities.","directories":{},"_nodeVersion":"20.20.0","dependencies":{"@noble/curves":"^1.6.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^6.0.7","vitest":"^3.2.4","playwright":"^1.49.1","typescript":"^5.0.0","@types/node":"^24.0.0","@vitest/browser":"^3.2.4"},"peerDependencies":{"@noble/curves":"^1.6.0"},"_npmOperationalInternal":{"tmp":"tmp/crypto-browser_0.1.7_1771025080554_0.3908040500105221","host":"s3://npm-registry-packages-npm-production"}},"0.1.8":{"_id":"@freedomofpress/crypto-browser@0.1.8","bugs":{"url":"https://github.com/freedomofpress/crypto-browser/issues"},"dist":{"shasum":"31c49b733a735f49222a2df44ad6df65974ed107","tarball":"https://registry.npmjs.org/@freedomofpress/crypto-browser/-/crypto-browser-0.1.8.tgz","fileCount":55,"integrity":"sha512-jvD36HxllT2UCPYzcs4R2UxA8r6dI+4Y62Gm+eVAnC4S3yCrzy2E0Ag1O48FhmMmVo3ZjwchcU8vAJzUSKHzEQ==","signatures":[{"sig":"MEUCIQCzKv9oBSyM6eLssgpqFYZQ9Xp+9UC9GrknJ+vBDI4NugIgHbCK2r/O0TPVZT9usdxRiVu8u5TSbvji/SXjgTR7/Rc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIAvGInM4r1bZWWpBv4VSNdouL+X8VnVjECnFAPYa5P3mAiEA3ql2JyPNsquhgrzd03+Vz1TpKZ1hNh9F8SNYdYlcTQ8="}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@freedomofpress%2fcrypto-browser@0.1.8","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":106576},"main":"dist/index.js","name":"@freedomofpress/crypto-browser","type":"module","types":"dist/index.d.ts","author":{"name":"Giulio B. and Sacha Servan-Schreiber"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"gitHead":"071a9c4284f3b3cd700c763953c730045cbf7a3e","license":"Apache-2.0","scripts":{"test":"vitest run","build":"tsc","test:browser":"vitest run --config vite.config.playwright.ts","prepublishOnly":"npm run build","test:browser:install":"playwright install chromium firefox && node node_modules/playwright-legacy/cli.js install chromium-headless-shell"},"version":"0.1.8","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:a6490c3c-54cf-4e46-8f40-b14d7931fca4"}},"homepage":"https://github.com/freedomofpress/crypto-browser#readme","keywords":["cryptography","asn1","x509","encoding","browser","webcrypto","sigstore"],"repository":{"url":"git+https://github.com/freedomofpress/crypto-browser.git","type":"git"},"_npmVersion":"11.19.0","description":"Browser-compatible cryptography utilities.","directories":{},"maintainers":[{"name":"enpaul","email":"ethan@freedom.press"},{"name":"ada_fpf","email":"ada@freedom.press"},{"name":"mdaleo404","email":"marco@freedom.press"},{"name":"mig5_fpf","email":"mig@freedom.press"},{"name":"soleilera","email":"soleilera@proton.me"},{"name":"lsd-cat","email":"npm@lsd.cat"}],"_nodeVersion":"24.20.0","dependencies":{"@noble/curves":"^1.6.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^6.0.7","vitest":"^3.2.4","playwright":"^1.49.1","typescript":"^5.0.0","@types/node":"^24.0.0","@vitest/browser":"^3.2.4","playwright-legacy":"npm:playwright-core@1.52.0"},"peerDependencies":{"@noble/curves":"^1.6.0"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/crypto-browser_0.1.8_1789845621360_0.6082285104144958"}}},"time":{"created":"2025-11-26T23:18:29.104Z","modified":"2026-09-19T19:20:21.790Z","0.1.0":"2025-11-26T23:18:29.377Z","0.1.1":"2025-11-29T17:59:15.437Z","0.1.2":"2025-11-29T23:29:07.266Z","0.1.3":"2025-11-29T23:59:37.408Z","0.1.4":"2025-11-30T00:40:28.021Z","0.1.5":"2025-12-02T00:47:40.814Z","0.1.6":"2025-12-02T00:53:49.153Z","0.1.7":"2026-02-13T23:24:40.726Z","0.1.8":"2026-09-19T19:20:21.454Z"},"bugs":{"url":"https://github.com/freedomofpress/crypto-browser/issues"},"author":{"name":"Giulio B. and Sacha Servan-Schreiber"},"license":"Apache-2.0","homepage":"https://github.com/freedomofpress/crypto-browser#readme","keywords":["cryptography","asn1","x509","encoding","browser","webcrypto","sigstore"],"repository":{"url":"git+https://github.com/freedomofpress/crypto-browser.git","type":"git"},"description":"Browser-compatible cryptography utilities.","maintainers":[{"name":"enpaul","email":"ethan@freedom.press"},{"name":"ada_fpf","email":"ada@freedom.press"},{"name":"mdaleo404","email":"marco@freedom.press"},{"name":"mig5_fpf","email":"mig@freedom.press"},{"name":"soleilera","email":"soleilera@proton.me"},{"name":"lsd-cat","email":"npm@lsd.cat"}],"readme":"# crypto-browser\n\n[![CI](https://github.com/freedomofpress/crypto-browser/actions/workflows/ci.yml/badge.svg)](https://github.com/freedomofpress/crypto-browser/actions/workflows/ci.yml)\n\nBrowser-compatible cryptography utilities for Sigstore and TUF verification.\n\nUsed by [tuf-browser](https://github.com/freedomofpress/tuf-browser) and [sigstore-browser](https://github.com/freedomofpress/sigstore-browser).\n\n> [!CAUTION]\n> This library has not received an independent security audit. Maintenance is performed by volunteers, and the project is not officially supported or endorsed by the Freedom of the Press Foundation.\n\n## Features\n\n### ASN.1 Parsing & Encoding\n- **ASN1Obj**: Parse and encode DER-encoded ASN.1 structures\n- **ASN1Tag**: Handle ASN.1 tags and type checking\n- **Length encoding/decoding**: DER length format support\n- **Type parsers**: Extract integers, OIDs, dates, bit strings, booleans from ASN.1\n\n### Encoding Utilities\n- **Base64**: Encode/decode with standard and URL-safe variants\n- **Hex**: Encode/decode hexadecimal strings\n- **PEM**: Convert between PEM and DER formats\n- **UTF-8**: String to Uint8Array conversion\n- **Constant-time comparison**: Timing-attack resistant byte comparison\n\n### Cryptographic Operations\n- **Key import**: Support for ECDSA (P-256/P-384/P-521), Ed25519, and RSA keys\n- **Signature verification**: Verify signatures using Web Crypto API\n  - ECDSA with SHA-256/384/512\n  - Ed25519\n  - RSA-PSS and RSASSA-PKCS1-v1_5\n- **Digest verification**: ECDSA signature verification over pre-computed digests (using @noble/curves)\n- **PKCS#1 to SPKI conversion**: Convert RSA keys for Web Crypto compatibility\n\n### Additional Utilities\n- **ByteStream**: Efficient byte buffer with auto-growing allocation\n- **Canonical JSON**: TUF-compliant canonical JSON encoding\n\n## Installation\n\n```bash\nnpm install @freedomofpress/crypto-browser\n```\n\n## Usage\n\n### Import a public key and verify a signature\n\n```typescript\nimport { importKey, verifySignature } from '@freedomofpress/crypto-browser';\n\nconst publicKey = await importKey('ECDSA', 'P-256', pemKey);\nconst isValid = await verifySignature(publicKey, message, signature, 'sha256');\n```\n\n### Parse ASN.1 structures\n\n```typescript\nimport { ASN1Obj } from '@freedomofpress/crypto-browser';\n\nconst asn1 = ASN1Obj.parseBuffer(derBytes);\nconst oid = asn1.subs[0].toOID();\nconst integer = asn1.subs[1].toInteger();\n```\n\n### Encode/decode utilities\n\n```typescript\nimport {\n  base64ToUint8Array,\n  uint8ArrayToHex,\n  toDER,\n  fromDER,\n} from '@freedomofpress/crypto-browser';\n\nconst bytes = base64ToUint8Array('SGVsbG8=');\nconst hex = uint8ArrayToHex(bytes);\nconst der = toDER(pemString);\nconst pem = fromDER(derBytes, 'PUBLIC KEY');\n```\n\n## Dependencies\n\n- `@noble/curves`: Used for low-level ECDSA verification over pre-computed digests\n\n## Structure\n\n```\nsrc/\n  asn1/           # ASN.1 parsing and encoding\n  encoding.ts     # Base64, hex, UTF-8 encoding\n  pem.ts          # PEM format conversion\n  stream.ts       # ByteStream utility\n  crypto.ts       # Cryptographic operations\n  canonicalize.ts # Canonical JSON\n```\n\n## Development\n\n```bash\n# Install dependencies\nnpm install\n\n# Build the project\nnpm run build\n```\n\n## License\n\nApache-2.0 - see [LICENSE](LICENSE) file for details.\n\n## Acknowledgments\n\nThis package provides browser-compatible versions of cryptographic utilities from the Sigstore and TUF ecosystems. All code is licensed under Apache-2.0.\n\n**Primary Sources:**\n- [sigstore-js](https://github.com/sigstore/sigstore-js) - ASN.1 parsing, PEM encoding, and stream utilities\n- [tuf-js](https://github.com/theupdateframework/tuf-js) - Canonical JSON implementation\n\nAll files maintain their original copyright headers.\n","readmeFilename":"README.md"}