{"_id":"@absolutejs/secure-transfer-webcrypto","_rev":"3-6cd9b7fbefbb71715e8705458256f823","name":"@absolutejs/secure-transfer-webcrypto","dist-tags":{"latest":"0.1.1"},"versions":{"0.0.1":{"name":"@absolutejs/secure-transfer-webcrypto","version":"0.0.1","author":{"name":"Alex Kahn"},"license":"Apache-2.0","_id":"@absolutejs/secure-transfer-webcrypto@0.0.1","maintainers":[{"name":"alexkahndev","email":"alexkahn2019@gmail.com"}],"homepage":"https://github.com/absolutejs/secure-transfer-providers/tree/main/webcrypto","bugs":{"url":"https://github.com/absolutejs/secure-transfer-providers/issues"},"dist":{"shasum":"7479c0f3c85805d48b699711387a4bd1e80c5018","tarball":"https://registry.npmjs.org/@absolutejs/secure-transfer-webcrypto/-/secure-transfer-webcrypto-0.0.1.tgz","fileCount":16,"integrity":"sha512-av/lesqqO4EiTsE63u7fXVaYR/4J7YUHmw4WU2nvrc9uUr1wkrEnwCuNjMqxVeTF+D+XhXRbeo1q3E1ImOjTDQ==","signatures":[{"sig":"MEQCIBoHJMNbdE0LxUqG3s/14Uh98v6QViW8RwXwG0AExdFPAiBM35CROug8+z7QIvmxFROgIlDFNN+CeLsQttu1bIR/vg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":25428},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./manifest":{"types":"./dist/manifest.d.ts","import":"./dist/manifest.js","default":"./dist/manifest.js"},"./manifest.json":"./dist/manifest.json","./provider-manifest":{"types":"./dist/provider-manifest.d.ts","import":"./dist/provider-manifest.js","default":"./dist/provider-manifest.js"}},"gitHead":"0e48a70a0759edd1d98fcba42a43b3b1030a7a85","scripts":{"test":"bun test tests/","build":"rm -rf dist && bun build src/index.ts src/provider-manifest.ts src/manifest.ts --outdir dist --root src --sourcemap --target=browser --external @absolutejs/secure-transfer --external @absolutejs/manifest --external @sinclair/typebox && tsc --project tsconfig.build.json && absolute-manifest emit","format":"prettier --write \"./**/*.{ts,json,md}\"","release":"bun run check:package && npm publish --access public","typecheck":"tsc --noEmit","check:package":"bun run format && bun run typecheck && bun run test && bun run build && bun run verify-package","verify-package":"absolute-manifest verify-package"},"_npmUser":{"name":"alexkahndev","email":"alexkahn2019@gmail.com"},"absolutejs":{"manifestContract":2},"repository":{"url":"git+https://github.com/absolutejs/secure-transfer-providers.git","type":"git","directory":"webcrypto"},"_npmVersion":"10.9.2","description":"WebCrypto AES-256-GCM authenticated-record provider for @absolutejs/secure-transfer.","directories":{},"_nodeVersion":"22.14.0","dependencies":{"@sinclair/typebox":"^0.34.0","@absolutejs/manifest":"^0.9.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"prettier":"^3.9.0","@types/bun":"^1.3.14","typescript":"^5.9.0","@absolutejs/secure-transfer":"https://registry.npmjs.org/@absolutejs/secure-transfer/-/secure-transfer-0.0.2.tgz"},"peerDependencies":{"@absolutejs/secure-transfer":">=0.0.1 <0.1"},"_npmOperationalInternal":{"tmp":"tmp/secure-transfer-webcrypto_0.0.1_1787791889710_0.39330827968238813","host":"s3://npm-registry-packages-npm-production"}},"0.1.0":{"name":"@absolutejs/secure-transfer-webcrypto","version":"0.1.0","author":{"name":"Alex Kahn"},"license":"Apache-2.0","_id":"@absolutejs/secure-transfer-webcrypto@0.1.0","maintainers":[{"name":"alexkahndev","email":"alexkahn2019@gmail.com"}],"homepage":"https://github.com/absolutejs/secure-transfer-providers/tree/main/webcrypto","bugs":{"url":"https://github.com/absolutejs/secure-transfer-providers/issues"},"dist":{"shasum":"1f53809768bba2cbae3cb30196cae1b737bb5152","tarball":"https://registry.npmjs.org/@absolutejs/secure-transfer-webcrypto/-/secure-transfer-webcrypto-0.1.0.tgz","fileCount":17,"integrity":"sha512-tSXEYsDYz1vJuqkV/alsrC0OmnUodGefh1TjHpY2lcpOEOgftQ23d93H+DvqfeuBS3gixvVdR63i9/0GkWVRnA==","signatures":[{"sig":"MEUCIQDVjp8/VcwHxs9ogMrR5yrknKNQhKaQwrma/uOySFTLtgIgOP6cj+cxy1BUZG4bzFw8IegbNRvvWnFt+qRbv8U9tT4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":38955},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./manifest":{"types":"./dist/manifest.d.ts","import":"./dist/manifest.js","default":"./dist/manifest.js"},"./manifest.json":"./dist/manifest.json","./provider-manifest":{"types":"./dist/provider-manifest.d.ts","import":"./dist/provider-manifest.js","default":"./dist/provider-manifest.js"}},"gitHead":"b139a5a13efc4c0e1ca223a707ea7e24816beee0","scripts":{"test":"bun test tests/","build":"rm -rf dist && bun build src/index.ts src/provider-manifest.ts src/manifest.ts --outdir dist --root src --sourcemap --target=browser --external @absolutejs/secure-transfer --external @absolutejs/manifest --external @sinclair/typebox && tsc --project tsconfig.build.json && absolute-manifest emit","format":"prettier --write \"./**/*.{ts,json,md}\"","release":"bun run check:package && npm publish --access public","typecheck":"tsc --noEmit","check:package":"bun run format && bun run typecheck && bun run test && bun run build && bun run verify-package","verify-package":"absolute-manifest verify-package"},"_npmUser":{"name":"alexkahndev","email":"alexkahn2019@gmail.com"},"absolutejs":{"manifestContract":2},"repository":{"url":"git+https://github.com/absolutejs/secure-transfer-providers.git","type":"git","directory":"webcrypto"},"_npmVersion":"10.9.2","description":"WebCrypto AES-256-GCM authenticated-record provider for @absolutejs/secure-transfer.","directories":{},"_nodeVersion":"22.14.0","dependencies":{"@sinclair/typebox":"^0.34.0","@absolutejs/manifest":"^0.9.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"prettier":"^3.9.0","@types/bun":"^1.3.14","typescript":"^5.9.0","@absolutejs/secure-transfer":"https://registry.npmjs.org/@absolutejs/secure-transfer/-/secure-transfer-0.1.1.tgz"},"peerDependencies":{"@absolutejs/secure-transfer":">=0.1.1 <0.2"},"_npmOperationalInternal":{"tmp":"tmp/secure-transfer-webcrypto_0.1.0_1787794722143_0.6053626726675174","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@absolutejs/secure-transfer-webcrypto","version":"0.1.1","description":"WebCrypto AES-256-GCM authenticated-record provider for @absolutejs/secure-transfer.","type":"module","license":"Apache-2.0","author":{"name":"Alex Kahn"},"repository":{"type":"git","url":"git+https://github.com/absolutejs/secure-transfer-providers.git","directory":"webcrypto"},"homepage":"https://github.com/absolutejs/secure-transfer-providers/tree/main/webcrypto","bugs":{"url":"https://github.com/absolutejs/secure-transfer-providers/issues"},"main":"./dist/index.js","module":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./provider-manifest":{"types":"./dist/provider-manifest.d.ts","import":"./dist/provider-manifest.js","default":"./dist/provider-manifest.js"},"./manifest":{"types":"./dist/manifest.d.ts","import":"./dist/manifest.js","default":"./dist/manifest.js"},"./manifest.json":"./dist/manifest.json"},"publishConfig":{"access":"public"},"scripts":{"build":"rm -rf dist && bun build src/index.ts src/provider-manifest.ts src/manifest.ts --outdir dist --root src --sourcemap --target=browser --external @absolutejs/secure-transfer --external @absolutejs/manifest --external @sinclair/typebox && tsc --project tsconfig.build.json && absolute-manifest emit","check:package":"bun run format && bun run typecheck && bun run test && bun run build && bun run verify-package","format":"prettier --write \"./**/*.{ts,json,md}\"","release":"bun run check:package && npm publish --access public","test":"bun test tests/","typecheck":"tsc --noEmit","verify-package":"absolute-manifest verify-package"},"dependencies":{"@absolutejs/manifest":"^0.9.0","@sinclair/typebox":"^0.34.0"},"devDependencies":{"@absolutejs/secure-transfer":"https://registry.npmjs.org/@absolutejs/secure-transfer/-/secure-transfer-0.3.0.tgz","@types/bun":"^1.3.14","prettier":"^3.9.0","typescript":"^5.9.0"},"peerDependencies":{"@absolutejs/secure-transfer":">=0.1.1 <0.4"},"absolutejs":{"manifestContract":2},"_id":"@absolutejs/secure-transfer-webcrypto@0.1.1","gitHead":"6af0047418a57c0d6482e8218103d158f3b3e36b","_nodeVersion":"22.14.0","_npmVersion":"10.9.2","dist":{"integrity":"sha512-Sn1KbTu3STGaztTG6vWr9DB5Slp6zyjfptE5XUZiU06m2pl8EHpkMe4R8grt+4Htkl1ckJXpm3rQ8y6a/z7klg==","shasum":"c0ca035e3ad323bd7d901d76f4c261d7a45f9b88","tarball":"https://registry.npmjs.org/@absolutejs/secure-transfer-webcrypto/-/secure-transfer-webcrypto-0.1.1.tgz","fileCount":17,"unpackedSize":39116,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCICnFZLnrlSRMThCCzgEVtrx1LvavMi8ti7ihUOeY++7wAiBYD4cXHPJbtvmPbt4POZOCT3V3swG48shU7UFyENZWSw=="}]},"_npmUser":{"name":"alexkahndev","email":"alexkahn2019@gmail.com"},"directories":{},"maintainers":[{"name":"alexkahndev","email":"alexkahn2019@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/secure-transfer-webcrypto_0.1.1_1787797527816_0.480167945371508"},"_hasShrinkwrap":false}},"time":{"created":"2026-08-27T00:51:29.502Z","modified":"2026-08-27T02:25:28.128Z","0.0.1":"2026-08-27T00:51:29.863Z","0.1.0":"2026-08-27T01:38:42.325Z","0.1.1":"2026-08-27T02:25:27.979Z"},"bugs":{"url":"https://github.com/absolutejs/secure-transfer-providers/issues"},"author":{"name":"Alex Kahn"},"license":"Apache-2.0","homepage":"https://github.com/absolutejs/secure-transfer-providers/tree/main/webcrypto","repository":{"type":"git","url":"git+https://github.com/absolutejs/secure-transfer-providers.git","directory":"webcrypto"},"description":"WebCrypto AES-256-GCM authenticated-record provider for @absolutejs/secure-transfer.","maintainers":[{"name":"alexkahndev","email":"alexkahn2019@gmail.com"}],"readme":"# `@absolutejs/secure-transfer-webcrypto`\n\nInterchangeable WebCrypto provider for `@absolutejs/secure-transfer`. Each\ntransfer receives fresh random AES-256-GCM key material and a 96-bit nonce base.\nEvery record nonce is derived by XORing that base with the record sequence,\nfollowing the construction used by RFC 8188. Record metadata is authenticated as\nadditional data.\n\n```ts\nimport { createSecureTransferWebcryptoProvider } from \"@absolutejs/secure-transfer-webcrypto\";\n\nconst cryptoProvider = createSecureTransferWebcryptoProvider();\n```\n\nProtect resumable-upload receipts with a separate root key:\n\n```ts\nconst receiptProtector = await createSecureTransferWebcryptoReceiptProtector({\n  key: crypto.getRandomValues(new Uint8Array(32)),\n});\n```\n\nPersist that root key in a platform keystore rather than regenerating it. It is\nimported as a non-exportable HKDF key, derives an isolated AES-256-GCM key for\neach receipt ID, and uses a fresh 96-bit nonce for every checkpoint. Do not reuse\nthe transfer content key as the receipt root key.\n\nThe capability contains the content key and nonce base. It is a bearer secret and\nmust only appear inside an E2EE-protected transfer descriptor. This provider does\nnot store or distribute capabilities.\n\nThe provider caps plaintext records at 16 MiB and the number of records at\n1,048,576. Applications should normally choose smaller records for bounded memory\nand resumability.\n\nThis is an experimental `0.x` release without an independent audit.\nRun `bun run certify:browser` from the repository root to repeat the real\nChromium round-trip and context-substitution gate.\n\n## License\n\nApache-2.0\n","readmeFilename":"README.md"}