{"_id":"@silencelaboratories/eddsa-wasm-bundler","_rev":"14-e16e021b5cf7ff3c3d691395359f45cb","name":"@silencelaboratories/eddsa-wasm-bundler","dist-tags":{"next":"1.0.0-pre.10","latest":"1.0.0-pre.13"},"versions":{"1.0.0-pre.6":{"name":"@silencelaboratories/eddsa-wasm-bundler","version":"1.0.0-pre.6","license":"SEE LICENSE IN LICENSE","_id":"@silencelaboratories/eddsa-wasm-bundler@1.0.0-pre.6","maintainers":[{"name":"leontiad","email":"iraklis@silencelaboratories.com"},{"name":"kartikchoubisa1","email":"kartik@silencelaboratories.com"},{"name":"andreisl","email":"reg@silencelaboratories.com"},{"name":"sl-arm","email":"artem@silencelaboratories.com"},{"name":"dakshgarg","email":"daksh@silencelaboratories.com"},{"name":"noahsilencelab","email":"noah@silencelaboratories.com"},{"name":"sushisilence","email":"susheendhar@silencelaboratories.com"},{"name":"bhaskarsl","email":"bhaskar@silencelaboratories.com"},{"name":"rhonstin_silencelaboratories","email":"bohdan@silencelaboratories.com"},{"name":"szymon.silence","email":"szymon@silencelaboratories.com"},{"name":"samdan07","email":"samdan@silencelaboratories.com"},{"name":"toriningen","email":"toriningen.me@gmail.com"}],"dist":{"shasum":"1ca05a7664adc4e696b414af3b7a8c0499414bb1","tarball":"https://registry.npmjs.org/@silencelaboratories/eddsa-wasm-bundler/-/eddsa-wasm-bundler-1.0.0-pre.6.tgz","fileCount":7,"integrity":"sha512-JxZeQ6gjyWVew5Qx1YWYQBZtbDBtyHnk3plROeDVgbSu3M7VdCB8V+16Ms1VTirFDeKCAXsbeQ9Hw5M+zkNF5Q==","signatures":[{"sig":"MEQCICaue692A8f2L5FWtuvbL3AqA1U7Q9076ZbdZ1mVRGXAAiAvOBW9GVo1+9nAabX0z0cJI1sg1eBVWv75HwAqYr14zQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":752133},"main":"eddsa-wasm-bundler.js","type":"module","types":"eddsa-wasm-bundler.d.ts","_npmUser":{"name":"sl-arm","email":"artem@silencelaboratories.com"},"_npmVersion":"10.9.8","description":"This crate exposes Silence Laboratories' threshold signing engines as a WebAssembly bundle. The bindings let JavaScript or TypeScript applications run multi-party key generation, signing, and key maintenance flows entirely in the browser, Node.js, or Deno","directories":{},"sideEffects":["./eddsa-wasm-bundler.js","./snippets/*"],"_nodeVersion":"22.22.3","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/eddsa-wasm-bundler_1.0.0-pre.6_1779127811277_0.7714304947821271","host":"s3://npm-registry-packages-npm-production"}},"1.0.0-pre.7":{"name":"@silencelaboratories/eddsa-wasm-bundler","version":"1.0.0-pre.7","license":"SEE LICENSE IN LICENSE","_id":"@silencelaboratories/eddsa-wasm-bundler@1.0.0-pre.7","maintainers":[{"name":"leontiad","email":"iraklis@silencelaboratories.com"},{"name":"kartikchoubisa1","email":"kartik@silencelaboratories.com"},{"name":"andreisl","email":"reg@silencelaboratories.com"},{"name":"sl-arm","email":"artem@silencelaboratories.com"},{"name":"dakshgarg","email":"daksh@silencelaboratories.com"},{"name":"noahsilencelab","email":"noah@silencelaboratories.com"},{"name":"sushisilence","email":"susheendhar@silencelaboratories.com"},{"name":"bhaskarsl","email":"bhaskar@silencelaboratories.com"},{"name":"rhonstin_silencelaboratories","email":"bohdan@silencelaboratories.com"},{"name":"szymon.silence","email":"szymon@silencelaboratories.com"},{"name":"samdan07","email":"samdan@silencelaboratories.com"},{"name":"toriningen","email":"toriningen.me@gmail.com"}],"dist":{"shasum":"04338007651ab6480d867a281278b8ec29991103","tarball":"https://registry.npmjs.org/@silencelaboratories/eddsa-wasm-bundler/-/eddsa-wasm-bundler-1.0.0-pre.7.tgz","fileCount":7,"integrity":"sha512-RyI5xkvMtpjc0sZLNny/9wIGxwCq97X0xFO7CoBjFNfFTQqnIfeNqBBwPA26piZDE4uLIS8Y+zmlI6wxIQfrtg==","signatures":[{"sig":"MEUCIQChkEUsk3v+m/TH01bi1zs+ivxiYKAygjC+i3jiJQS6egIgPPbVjvc7MXIVgkoFjSoaAMAYP1cZpCv88XTYwXMOKpQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":752133},"main":"eddsa-wasm-bundler.js","type":"module","types":"eddsa-wasm-bundler.d.ts","_npmUser":{"name":"sl-arm","email":"artem@silencelaboratories.com"},"_npmVersion":"10.9.8","description":"This crate exposes Silence Laboratories' threshold signing engines as a WebAssembly bundle. The bindings let JavaScript or TypeScript applications run multi-party key generation, signing, and key maintenance flows entirely in the browser, Node.js, or Deno","directories":{},"sideEffects":["./eddsa-wasm-bundler.js","./snippets/*"],"_nodeVersion":"22.22.3","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/eddsa-wasm-bundler_1.0.0-pre.7_1779176646514_0.7798379309439221","host":"s3://npm-registry-packages-npm-production"}},"0.0.8":{"name":"@silencelaboratories/eddsa-wasm-bundler","version":"0.0.8","license":"SEE LICENSE IN LICENSE","_id":"@silencelaboratories/eddsa-wasm-bundler@0.0.8","maintainers":[{"name":"leontiad","email":"iraklis@silencelaboratories.com"},{"name":"kartikchoubisa1","email":"kartik@silencelaboratories.com"},{"name":"andreisl","email":"reg@silencelaboratories.com"},{"name":"sl-arm","email":"artem@silencelaboratories.com"},{"name":"dakshgarg","email":"daksh@silencelaboratories.com"},{"name":"noahsilencelab","email":"noah@silencelaboratories.com"},{"name":"rhonstin_silencelaboratories","email":"bohdan@silencelaboratories.com"},{"name":"szymon.silence","email":"szymon@silencelaboratories.com"},{"name":"samdan07","email":"samdan@silencelaboratories.com"},{"name":"dushyantsilencelabs","email":"dushyant@silencelaboratories.com"}],"dist":{"shasum":"0221f218e6d4681910cb3c8f0799297ac250ae21","tarball":"https://registry.npmjs.org/@silencelaboratories/eddsa-wasm-bundler/-/eddsa-wasm-bundler-0.0.8.tgz","fileCount":7,"integrity":"sha512-A4zLErZ/BobDP+sF4bQB5vCdAIb5tYv9eyhE6Pi246TfNOj7C+G2RCVZXe52oT0fhkVIcu8YryUpgIdbhMmT3A==","signatures":[{"sig":"MEUCIQDvOnn7MBmo9TN8MxNOxd7VRiYPCYPRIl3xFUUzlpF0HgIgYTFMG7+asqEHJamTszRUonHO9UjpvRFkJlu+cii00NI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1111594},"main":"eddsa-wasm-bundler.js","type":"module","types":"eddsa-wasm-bundler.d.ts","gitHead":"88be529c436f2634668a411ce4fd0cf716008e71","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:37cc16c4-7f73-4da8-b794-e68a5a22c20d"}},"_npmVersion":"11.19.0","description":"This crate exposes Silence Laboratories' threshold signing engines as a WebAssembly bundle. The bindings let JavaScript or TypeScript applications run multi-party key generation, signing, and key maintenance flows entirely in the browser, Node.js, or Deno","directories":{},"sideEffects":["./eddsa-wasm-bundler.js","./snippets/*"],"_nodeVersion":"22.23.1","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/eddsa-wasm-bundler_0.0.8_1786011447006_0.7993935625876007","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-rc2":{"name":"@silencelaboratories/eddsa-wasm-bundler","version":"0.1.0-rc2","license":"SEE LICENSE IN LICENSE","_id":"@silencelaboratories/eddsa-wasm-bundler@0.1.0-rc2","maintainers":[{"name":"leontiad","email":"iraklis@silencelaboratories.com"},{"name":"kartikchoubisa1","email":"kartik@silencelaboratories.com"},{"name":"andreisl","email":"reg@silencelaboratories.com"},{"name":"sl-arm","email":"artem@silencelaboratories.com"},{"name":"dakshgarg","email":"daksh@silencelaboratories.com"},{"name":"noahsilencelab","email":"noah@silencelaboratories.com"},{"name":"rhonstin_silencelaboratories","email":"bohdan@silencelaboratories.com"},{"name":"szymon.silence","email":"szymon@silencelaboratories.com"},{"name":"samdan07","email":"samdan@silencelaboratories.com"},{"name":"dushyantsilencelabs","email":"dushyant@silencelaboratories.com"}],"dist":{"shasum":"fe5d20d3e40f45ffa0ee5bbdd4c89acfc33b7acb","tarball":"https://registry.npmjs.org/@silencelaboratories/eddsa-wasm-bundler/-/eddsa-wasm-bundler-0.1.0-rc2.tgz","fileCount":7,"integrity":"sha512-32FsrX4xQg40uZY7amZgZfsJ8BSCzfkYmHFBUESSmLWvmyA5ICE0Y+wh6NNKvegrRLf6NgFFgkfqAXrG1DOpAg==","signatures":[{"sig":"MEYCIQDJc+BJS1x2Zfo5LWbCWykGqH50LMCLEL1swaDT2MQZwQIhAPEoy9raKANIlKJ5kg0RiDEdwF6l+L9E859ksroK12C+","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1111745},"main":"eddsa-wasm-bundler.js","type":"module","types":"eddsa-wasm-bundler.d.ts","gitHead":"0543fbcef3901d147484a9c5780f66db10fdc85e","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:37cc16c4-7f73-4da8-b794-e68a5a22c20d"}},"_npmVersion":"11.19.0","description":"This crate exposes Silence Laboratories' threshold signing engines as a WebAssembly bundle. The bindings let JavaScript or TypeScript applications run multi-party key generation, signing, and key maintenance flows entirely in the browser, Node.js, or Deno","directories":{},"sideEffects":["./eddsa-wasm-bundler.js","./snippets/*"],"_nodeVersion":"22.23.1","_hasShrinkwrap":false,"readmeFilename":"README.md","_npmOperationalInternal":{"tmp":"tmp/eddsa-wasm-bundler_0.1.0-rc2_1786015094442_0.939801617877372","host":"s3://npm-registry-packages-npm-production"}},"1.0.0-pre.8":{"name":"@silencelaboratories/eddsa-wasm-bundler","version":"1.0.0-pre.8","license":"SEE LICENSE IN LICENSE","_id":"@silencelaboratories/eddsa-wasm-bundler@1.0.0-pre.8","maintainers":[{"name":"leontiad","email":"iraklis@silencelaboratories.com"},{"name":"kartikchoubisa1","email":"kartik@silencelaboratories.com"},{"name":"andreisl","email":"reg@silencelaboratories.com"},{"name":"sl-arm","email":"artem@silencelaboratories.com"},{"name":"dakshgarg","email":"daksh@silencelaboratories.com"},{"name":"noahsilencelab","email":"noah@silencelaboratories.com"},{"name":"rhonstin_silencelaboratories","email":"bohdan@silencelaboratories.com"},{"name":"szymon.silence","email":"szymon@silencelaboratories.com"},{"name":"samdan07","email":"samdan@silencelaboratories.com"},{"name":"dushyantsilencelabs","email":"dushyant@silencelaboratories.com"}],"dist":{"shasum":"49fd9d41d9900484acdede5fffbd5526af2894c5","tarball":"https://registry.npmjs.org/@silencelaboratories/eddsa-wasm-bundler/-/eddsa-wasm-bundler-1.0.0-pre.8.tgz","fileCount":7,"integrity":"sha512-ivktvHpzkNn9aKEbERYg0zA8a3Vg+Wd7rnbMLhSJ+gLZ9/lppaqDNyrftutj5IZVMnIdRT2BDn22ADUq89H4Ew==","signatures":[{"sig":"MEUCIQCXWA3ByTRnXWcgkLZv/NicRMIhsq2z1NuSymnLgu5tYgIgafghXvJTiPW3YQiJgE3Iw1v2QUjP0bIyRAelPlY3aaE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1117070},"main":"eddsa-wasm-bundler.js","type":"module","types":"eddsa-wasm-bundler.d.ts","gitHead":"6292fc1a80a86f3b4e0a38843cab635a05a150db","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:37cc16c4-7f73-4da8-b794-e68a5a22c20d"}},"_npmVersion":"11.19.1","description":"This crate exposes Silence Laboratories' threshold signing engines as a WebAssembly bundle. The bindings let JavaScript or TypeScript applications run multi-party key generation, signing, and key maintenance flows entirely in the browser, Node.js, or Deno","directories":{},"sideEffects":["./eddsa-wasm-bundler.js","./snippets/*"],"_nodeVersion":"22.23.1","_hasShrinkwrap":false,"readmeFilename":"README.md","_npmOperationalInternal":{"tmp":"tmp/eddsa-wasm-bundler_1.0.0-pre.8_1788192450601_0.20728398190784247","host":"s3://npm-registry-packages-npm-production"}},"1.0.0-pre.9":{"name":"@silencelaboratories/eddsa-wasm-bundler","version":"1.0.0-pre.9","license":"SEE LICENSE IN LICENSE","_id":"@silencelaboratories/eddsa-wasm-bundler@1.0.0-pre.9","maintainers":[{"name":"leontiad","email":"iraklis@silencelaboratories.com"},{"name":"kartikchoubisa1","email":"kartik@silencelaboratories.com"},{"name":"andreisl","email":"reg@silencelaboratories.com"},{"name":"sl-arm","email":"artem@silencelaboratories.com"},{"name":"dakshgarg","email":"daksh@silencelaboratories.com"},{"name":"noahsilencelab","email":"noah@silencelaboratories.com"},{"name":"rhonstin_silencelaboratories","email":"bohdan@silencelaboratories.com"},{"name":"szymon.silence","email":"szymon@silencelaboratories.com"},{"name":"samdan07","email":"samdan@silencelaboratories.com"},{"name":"dushyantsilencelabs","email":"dushyant@silencelaboratories.com"}],"dist":{"shasum":"6de3bc8c5f8fa157f9c9da53b79cb9c3811e9eaf","tarball":"https://registry.npmjs.org/@silencelaboratories/eddsa-wasm-bundler/-/eddsa-wasm-bundler-1.0.0-pre.9.tgz","fileCount":7,"integrity":"sha512-HzKnHEk5m+wItMuxu7liEKsp4qOX6sLiz+y+BY6X3/XJETm3zyrja33cyPTzQ8+NLwwt7X29upj8aS4QF8aUZA==","signatures":[{"sig":"MEQCIA7p0KiyO3+mGntu7POpyc76WJYXu495IlxIeRrMs8GfAiBnvyI2Z+kx6L7QZGaCtIF6wwovfBN5+60QwupmZYP87A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1117070},"main":"eddsa-wasm-bundler.js","type":"module","types":"eddsa-wasm-bundler.d.ts","gitHead":"c19d67ac4cb05f25fca6cdc587524e6193c0979a","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:37cc16c4-7f73-4da8-b794-e68a5a22c20d"}},"_npmVersion":"11.19.1","description":"This crate exposes Silence Laboratories' threshold signing engines as a WebAssembly bundle. The bindings let JavaScript or TypeScript applications run multi-party key generation, signing, and key maintenance flows entirely in the browser, Node.js, or Deno","directories":{},"sideEffects":["./eddsa-wasm-bundler.js","./snippets/*"],"_nodeVersion":"22.23.1","_hasShrinkwrap":false,"readmeFilename":"README.md","_npmOperationalInternal":{"tmp":"tmp/eddsa-wasm-bundler_1.0.0-pre.9_1788196106311_0.9120139800346789","host":"s3://npm-registry-packages-npm-production"}},"1.0.0-pre.10":{"name":"@silencelaboratories/eddsa-wasm-bundler","version":"1.0.0-pre.10","license":"SEE LICENSE IN LICENSE","_id":"@silencelaboratories/eddsa-wasm-bundler@1.0.0-pre.10","maintainers":[{"name":"leontiad","email":"iraklis@silencelaboratories.com"},{"name":"kartikchoubisa1","email":"kartik@silencelaboratories.com"},{"name":"andreisl","email":"reg@silencelaboratories.com"},{"name":"sl-arm","email":"artem@silencelaboratories.com"},{"name":"dakshgarg","email":"daksh@silencelaboratories.com"},{"name":"noahsilencelab","email":"noah@silencelaboratories.com"},{"name":"rhonstin_silencelaboratories","email":"bohdan@silencelaboratories.com"},{"name":"szymon.silence","email":"szymon@silencelaboratories.com"},{"name":"samdan07","email":"samdan@silencelaboratories.com"},{"name":"dushyantsilencelabs","email":"dushyant@silencelaboratories.com"}],"dist":{"shasum":"6e4cdd4160addcedcc3b00e15809a7f9f9469c79","tarball":"https://registry.npmjs.org/@silencelaboratories/eddsa-wasm-bundler/-/eddsa-wasm-bundler-1.0.0-pre.10.tgz","fileCount":7,"integrity":"sha512-c6Rx3j04p9B6fNxAdfX8F8Dpfcer6hiWeuLf44eiq9Qk9QmSCMYNx4PoeO7uXGtPHcOfzmB4RLtb70XUAciOMg==","signatures":[{"sig":"MEQCICqIa0AmNACBaGKr4XtfbNhdvoZnzO1U5q2cOptnhTZ8AiB1sHSbTeRrw3sjAx6DiO0ol0ZvF/vXr5dJazFqcu3e/w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQD1Tw6wmLlgCaz/ovZQfVoXCz/a99dsOYKIKVOOJWENbAIgYG5upfMLnFChvpZV0HFVktrENvg6BUPkvUYSf0PuWMw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1115639},"main":"eddsa-wasm-bundler.js","type":"module","types":"eddsa-wasm-bundler.d.ts","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:37cc16c4-7f73-4da8-b794-e68a5a22c20d"}},"_npmVersion":"11.19.1","description":"This crate exposes Silence Laboratories' threshold signing engines as a WebAssembly bundle. The bindings let JavaScript or TypeScript applications run multi-party key generation, signing, and key maintenance flows entirely in the browser, Node.js, or Deno","directories":{},"sideEffects":["./eddsa-wasm-bundler.js","./snippets/*"],"_nodeVersion":"22.23.2","_hasShrinkwrap":false,"readmeFilename":"README.md","_npmOperationalInternal":{"tmp":"tmp/eddsa-wasm-bundler_1.0.0-pre.10_1789641263825_0.2190166848714452","host":"s3://npm-registry-packages-npm-production"}},"1.0.0-pre.11":{"name":"@silencelaboratories/eddsa-wasm-bundler","version":"1.0.0-pre.11","license":"SEE LICENSE IN LICENSE","_id":"@silencelaboratories/eddsa-wasm-bundler@1.0.0-pre.11","maintainers":[{"name":"leontiad","email":"iraklis@silencelaboratories.com"},{"name":"kartikchoubisa1","email":"kartik@silencelaboratories.com"},{"name":"andreisl","email":"reg@silencelaboratories.com"},{"name":"sl-arm","email":"artem@silencelaboratories.com"},{"name":"dakshgarg","email":"daksh@silencelaboratories.com"},{"name":"noahsilencelab","email":"noah@silencelaboratories.com"},{"name":"rhonstin_silencelaboratories","email":"bohdan@silencelaboratories.com"},{"name":"szymon.silence","email":"szymon@silencelaboratories.com"},{"name":"samdan07","email":"samdan@silencelaboratories.com"},{"name":"dushyantsilencelabs","email":"dushyant@silencelaboratories.com"}],"dist":{"shasum":"7a54aa3880c0368fd9b49bb8670a678f5077d2dd","tarball":"https://registry.npmjs.org/@silencelaboratories/eddsa-wasm-bundler/-/eddsa-wasm-bundler-1.0.0-pre.11.tgz","fileCount":7,"integrity":"sha512-sZM7Ur0olunKIix2fPMMY5zU/874sY3s+TOWTuzqbKbVtiLORFgyVmpqOpd9ppQn4TRntfBx/FIcHizko0kVFA==","signatures":[{"sig":"MEUCIC8IPEst4syh8zoiuNj8P9YFRpxTF05MvhMBPMIYUyVjAiEA92pCb434dHZKKSDB1xGVfQUHx3shx1uxwgP5400VnkI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIA2VHMpRGYhGqSShSqgm5QXyonOz1cXi8N+uSrEnI39tAiEA8jWScG3qqou2dAxflYB0qUWWBlT8dP8Wrf6oYnUCfMs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1115639},"main":"eddsa-wasm-bundler.js","type":"module","types":"eddsa-wasm-bundler.d.ts","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:37cc16c4-7f73-4da8-b794-e68a5a22c20d"}},"_npmVersion":"11.19.1","description":"This crate exposes Silence Laboratories' threshold signing engines as a WebAssembly bundle. The bindings let JavaScript or TypeScript applications run multi-party key generation, signing, and key maintenance flows entirely in the browser, Node.js, or Deno","directories":{},"sideEffects":["./eddsa-wasm-bundler.js","./snippets/*"],"_nodeVersion":"22.23.2","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/eddsa-wasm-bundler_1.0.0-pre.11_1789661447395_0.4306799367831655","host":"s3://npm-registry-packages-npm-production"}},"1.0.0-pre.12":{"name":"@silencelaboratories/eddsa-wasm-bundler","version":"1.0.0-pre.12","license":"SEE LICENSE IN LICENSE","_id":"@silencelaboratories/eddsa-wasm-bundler@1.0.0-pre.12","maintainers":[{"name":"leontiad","email":"iraklis@silencelaboratories.com"},{"name":"kartikchoubisa1","email":"kartik@silencelaboratories.com"},{"name":"andreisl","email":"reg@silencelaboratories.com"},{"name":"sl-arm","email":"artem@silencelaboratories.com"},{"name":"dakshgarg","email":"daksh@silencelaboratories.com"},{"name":"noahsilencelab","email":"noah@silencelaboratories.com"},{"name":"rhonstin_silencelaboratories","email":"bohdan@silencelaboratories.com"},{"name":"szymon.silence","email":"szymon@silencelaboratories.com"},{"name":"samdan07","email":"samdan@silencelaboratories.com"},{"name":"dushyantsilencelabs","email":"dushyant@silencelaboratories.com"}],"dist":{"shasum":"70fed1d28eb6357949b574f1fc4fda1fbcf7d5e8","tarball":"https://registry.npmjs.org/@silencelaboratories/eddsa-wasm-bundler/-/eddsa-wasm-bundler-1.0.0-pre.12.tgz","fileCount":7,"integrity":"sha512-99fRDY2numOgwVnY1OWOKU5+QWQBKHnuhj0UvlzwZYOF9fcnEnVLAEV44WQMBXnHdvlDhPITeMFUpk3JFo9u4g==","signatures":[{"sig":"MEYCIQDvsScVYwN6gAjaMcQ7eKavmc5WCSc0yHEKhNmzsJI8lQIhAMu+H8fG7wQG/lvoVovlfDZPp+Cjxm0DZuBTtcWOBugX","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQD1UXz+EunngZL+Jnt1+RrzSNQkKEn5kL7i3732+p2b3QIgOEBrVLleSiV7/rIZzXiCcmRK4IGw7NS3vYiZ3WcJBgw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1118563},"main":"eddsa-wasm-bundler.js","type":"module","types":"eddsa-wasm-bundler.d.ts","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:37cc16c4-7f73-4da8-b794-e68a5a22c20d"}},"_npmVersion":"11.19.1","description":"This crate exposes Silence Laboratories' threshold signing engines as a WebAssembly bundle. The bindings let JavaScript or TypeScript applications run multi-party key generation, signing, and key maintenance flows entirely in the browser, Node.js, or Deno","directories":{},"sideEffects":["./eddsa-wasm-bundler.js","./snippets/*"],"_nodeVersion":"22.23.2","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/eddsa-wasm-bundler_1.0.0-pre.12_1790075827317_0.5385422704755032","host":"s3://npm-registry-packages-npm-production"}},"1.0.0-pre.13":{"_id":"@silencelaboratories/eddsa-wasm-bundler@1.0.0-pre.13","dist":{"shasum":"9702cebed1a9991452e1cb4b316c2cf6b946d4aa","tarball":"https://registry.npmjs.org/@silencelaboratories/eddsa-wasm-bundler/-/eddsa-wasm-bundler-1.0.0-pre.13.tgz","fileCount":7,"integrity":"sha512-r/PMBw4h35cExK4nhKONu0dQzWVE37+SuDD0mt/5bKCSFD4+OwQYWjdS3aJ5gXWJjHxFpw88jvrRU7Izq8EZPQ==","signatures":[{"sig":"MEYCIQDQ70UFzNBWbulTbSErscM8SCi5MsAM9zJYKZ4qul/3fAIhAPtKL7/j1G2YpUVaLqqJDSesdqAmNv2cw44q5qqf+eIV","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIEuc2sF/UVyHfZ0vYWdfS4hwchbJx+1sDvvPHG+L6wurAiAvSized1kkddnbDiMY4GV8z+T2eANBo1QVSbMvWdHHiA=="}],"unpackedSize":1118718},"main":"eddsa-wasm-bundler.js","name":"@silencelaboratories/eddsa-wasm-bundler","type":"module","types":"eddsa-wasm-bundler.d.ts","license":"SEE LICENSE IN LICENSE","version":"1.0.0-pre.13","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:37cc16c4-7f73-4da8-b794-e68a5a22c20d"}},"_npmVersion":"11.20.0","description":"This crate exposes Silence Laboratories' threshold signing engines as a WebAssembly bundle. The bindings let JavaScript or TypeScript applications run multi-party key generation, signing, and key maintenance flows entirely in the browser, Node.js, or Deno","directories":{},"maintainers":[{"name":"leontiad","email":"iraklis@silencelaboratories.com"},{"name":"kartikchoubisa1","email":"kartik@silencelaboratories.com"},{"name":"andreisl","email":"reg@silencelaboratories.com"},{"name":"sl-arm","email":"artem@silencelaboratories.com"},{"name":"dakshgarg","email":"daksh@silencelaboratories.com"},{"name":"noahsilencelab","email":"noah@silencelaboratories.com"},{"name":"rhonstin_silencelaboratories","email":"bohdan@silencelaboratories.com"},{"name":"szymon.silence","email":"szymon@silencelaboratories.com"},{"name":"samdan07","email":"samdan@silencelaboratories.com"},{"name":"dushyantsilencelabs","email":"dushyant@silencelaboratories.com"}],"sideEffects":["./eddsa-wasm-bundler.js","./snippets/*"],"_nodeVersion":"22.23.2","_hasShrinkwrap":false,"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/eddsa-wasm-bundler_1.0.0-pre.13_1790597328316_0.27297477787231195"}}},"time":{"created":"2026-05-18T18:10:11.276Z","modified":"2026-09-28T12:08:48.593Z","1.0.0-pre.6":"2026-05-18T18:10:11.509Z","1.0.0-pre.7":"2026-05-19T07:44:06.663Z","0.0.8":"2026-08-06T10:17:27.194Z","0.1.0-rc2":"2026-08-06T11:18:14.587Z","1.0.0-pre.8":"2026-08-31T16:07:30.783Z","1.0.0-pre.9":"2026-08-31T17:08:26.472Z","1.0.0-pre.10":"2026-09-17T10:34:23.912Z","1.0.0-pre.11":"2026-09-17T16:10:47.513Z","1.0.0-pre.12":"2026-09-22T11:17:07.419Z","1.0.0-pre.13":"2026-09-28T12:08:48.404Z"},"license":"SEE LICENSE IN LICENSE","description":"This crate exposes Silence Laboratories' threshold signing engines as a WebAssembly bundle. The bindings let JavaScript or TypeScript applications run multi-party key generation, signing, and key maintenance flows entirely in the browser, Node.js, or Deno","maintainers":[{"name":"leontiad","email":"iraklis@silencelaboratories.com"},{"name":"kartikchoubisa1","email":"kartik@silencelaboratories.com"},{"name":"andreisl","email":"reg@silencelaboratories.com"},{"name":"sl-arm","email":"artem@silencelaboratories.com"},{"name":"dakshgarg","email":"daksh@silencelaboratories.com"},{"name":"noahsilencelab","email":"noah@silencelaboratories.com"},{"name":"rhonstin_silencelaboratories","email":"bohdan@silencelaboratories.com"},{"name":"szymon.silence","email":"szymon@silencelaboratories.com"},{"name":"samdan07","email":"samdan@silencelaboratories.com"},{"name":"dushyantsilencelabs","email":"dushyant@silencelaboratories.com"}],"readme":"# eddsa-wasm-ll\n\nThis crate exposes Silence Laboratories' threshold signing engines as a\nWebAssembly bundle. The bindings let JavaScript or TypeScript applications run\nmulti-party key generation, signing, and key maintenance flows entirely in the\nbrowser, Node.js, or Deno.\n\nThe exported API mirrors the Rust implementation found in `src/` and the Deno\nexamples in `tests/test-eddsa.ts`, `tests/test-redpallas.ts` and `tests/test-hard-derive.ts` This document pulls the core usage patterns from\nthose tests so you can bootstrap an integration quickly.\n\n## Installation\n\nThe repository ships six npm artefacts: three targets for each curve family.\n\n- `@silencelaboratories/eddsa-wasm-web`\n- `@silencelaboratories/eddsa-wasm-node`\n- `@silencelaboratories/eddsa-wasm-bundler`\n- `@silencelaboratories/redpallas-wasm-web`\n- `@silencelaboratories/redpallas-wasm-node`\n- `@silencelaboratories/redpallas-wasm-bundler`\n\nInstall the flavour that matches your environment:\n\n```bash\nnpm install @silencelaboratories/eddsa-wasm-web\n```\n\nThe package exposes an async default export that initialises the WASM module.\nAlways `await` it before touching any other primitive.\n\n```ts\nimport initEddsa, {\n  KeygenSession,\n  Keyshare,\n  SignSession,\n  Message,\n  generateEncryptionKeypair,\n} from \"@silencelaboratories/eddsa-wasm-web\";\n\nawait initEddsa();\n```\n\n## Distributed Key Generation (DKG)\n\nA DKG flow lets `participants` parties derive a shared key where any\n`threshold` subset can sign. The example below mirrors the helpers in\n`tests/test-eddsa.ts` and demonstrates the complete three-round protocol.\n\n```ts\nconst participants = 3;\nconst threshold = 2;\n\n// Generate the per-party key material used by the protocol.\nconst { secrets, publicKeys } = generateEncryptionMaterial(participants);\n\n// Spin up a session per participant.\nconst sessions = secrets.map((secret, party_id) =>\n  createKeygenSession(participants, threshold, party_id, secret, publicKeys),\n);\n\n// `queue` models the message transport between parties.\nconst queue = sessions.map((session) => session.createFirstMessage());\nwhile (queue.length > 0) {\n  const msg = queue.shift()!;\n  const sender = msg.sender();\n  const receiver = msg.receiver();\n\n  if (receiver === undefined) {\n    for (let partyId = 0; partyId < sessions.length; partyId++) {\n      if (partyId === sender) continue;\n      queue.push(...sessions[partyId].receiveMessage(msg.clone()));\n    }\n  } else {\n    queue.push(...sessions[receiver].receiveMessage(msg.clone()));\n  }\n}\n\n// and capture the resulting key shares.\nconst shares = sessions.map((session) => session.keyshare());\n```\n\nSupporting helpers lifted from the test suite:\n\n```ts\ntype DkgMaterial = {\n  secrets: Uint8Array[];\n  publicKeys: Uint8Array;\n};\n\ntype DkgResult = DkgMaterial & { shares: Keyshare[] };\n\nfunction generateEncryptionMaterial(participants: number): DkgMaterial {\n  const secrets: Uint8Array[] = [];\n  const publicKeys: Uint8Array[] = [];\n\n  for (let i = 0; i < participants; i++) {\n    const pair = generateEncryptionKeypair();\n    secrets.push(pair.secretKey);    // random 32 bytes\n    publicKeys.push(pair.publicKey); // ed25519 public key\n    pair.free();\n  }\n\n  return { secrets, publicKeys: concatBytes(publicKeys) };\n}\n\nfunction createKeygenSession(\n  participants: number,\n  threshold: number,\n  partyId: number,\n  secretKey: Uint8Array,\n  aggregatedPublicKeys: Uint8Array,\n): KeygenSession {\n  const flattened = aggregatedPublicKeys.slice();\n  return new KeygenSession(participants, threshold, partyId, secretKey, flattened);\n}\n\nfunction concatBytes(chunks: Uint8Array[]): Uint8Array {\n  const total = chunks.reduce((sum, chunk) => sum + chunk.length, 0);\n  const result = new Uint8Array(total);\n  let offset = 0;\n  for (const chunk of chunks) {\n    result.set(chunk, offset);\n    offset += chunk.length;\n  }\n  return result;\n}\n```\n\nThe resulting `shares` carry metadata such as the party id, threshold, and\npublic key. See `tests/test-eddsa.ts` for assertions that confirm the shape of the\noutput.\n\nFor the RedPallas curve family (`@silencelaboratories/redpallas-wasm-*`), use the\nsame DKG helpers as in `tests/test-redpallas.ts`.\n\n## Zcash Orchard derived keys (RedPallas)\n\nWhen built with the `redpallas` feature (the default for this crate and the\n`redpallas-wasm-*` npm packages), DKG is followed by an additional distributed\nderivation round. Every participant runs the same message loop as in the DKG\nsection above; once `isFinished()` is true, each party holds identical Orchard\nkey material in addition to its threshold signing share.\n\n `derivedKeys()` returns a `DerivedOrchardKeys`\nobject:\n\n| Property | Role |\n| --- | --- |\n| `ask` | Authorizing key component of the Orchard full viewing key (FVK) |\n| `nk` | Nullifier-deriving key component of the FVK |\n| `rivk` | Incoming viewing key component of the FVK |\n| `internalIvk` | Incoming viewing key for the internal (change) address scope |\n| `externalIvk` | Incoming viewing key for the external (payment) address scope |\n\nTogether, `ask`, `nk`, and `rivk` are the serialized components needed to\nreconstruct the Orchard **full viewing key** in a Zcash wallet or indexer. The\n`internalIvk` and `externalIvk` fields are the scope-specific incoming viewing\nkeys derived alongside the FVK; use them when your integration scans or\ndecrypts notes on internal vs external Orchard addresses.\n\n```ts\nimport initRedpallas, {\n  KeygenSession,\n  DerivedOrchardKeys,\n  generateEncryptionKeypair,\n} from \"@silencelaboratories/redpallas-wasm-web\";\n\nawait initRedpallas();\n\n// ... run the same DKG message loop as above on KeygenSession instances ...\n\nif (!sessions.every((s) => s.isFinished())) {\n  throw new Error(\"dkg did not complete\");\n}\n\n// All parties must agree on the derived Orchard material (see server_web_dkg.rs).\nconst keys: DerivedOrchardKeys = sessions[0].derivedKeys()!;\nfor (const session of sessions.slice(1)) {\n  const peer = session.derivedKeys()!;\n  const match =\n    peer.ask.every((b, i) => b === keys.ask[i]) &&\n    peer.nk.every((b, i) => b === keys.nk[i]) &&\n    peer.rivk.every((b, i) => b === keys.rivk[i]);\n  if (!match) {\n    throw new Error(\"derived Orchard keys mismatch across parties\");\n  }\n}\n\nconst fvk = { ask: keys.ask, nk: keys.nk, rivk: keys.rivk };\nconst internalIvk = keys.internalIvk;\nconst externalIvk = keys.externalIvk;\n\nconst shares = sessions.map((s) => s.keyshare());\n```\n\nThe pattern above mirrors `tests/server_web_dkg.rs`, which mixes native\n`zcash` server sessions with WASM `KeygenSession` parties and asserts that\n`ask`, `nk`, and `rivk` match across every participant before extracting\nkey shares. `tests/test-redpallas.ts` exercises the full RedPallas DKG and\nthreshold-signing path end-to-end; wire `derivedKeys()` into your application\nthe same way once the session reports finished.\n\n## Keyshare Rerandomization (RedPallas)\n\nWhen built with `redpallas`, a threshold quorum can rerandomize existing\nkeyshares via `RerandomizeSession`. The protocol runs three rounds (commit →\nopen → tweak). Each party adds the same scalar `alpha = H(∑ randomizer_i)` to\nits share and `G·alpha` to the public key. Use any `threshold` subset of\nshares from DKG; the resulting shares keep the same threshold but advertise a\nnew group public key. Read `session.alpha` (32 bytes) before `keyshare()`,\nwhich consumes the session. Every party returns the same `alpha`.\n\nThe flow mirrors `tests/test-redpallas.ts` (`Rerand 2-of-3 then DSG`):\n\n```ts\nimport initRedpallas, {\n  Keyshare,\n  RerandomizeSession,\n  SignSession,\n  Message,\n} from \"@silencelaboratories/redpallas-wasm-web\";\n\nawait initRedpallas();\n\n// `shares` from a prior RedPallas DKG; pick any threshold-sized subset.\nconst subset: Keyshare[] = shares.slice(0, threshold);\n\nconst sessions = subset.map((share) => new RerandomizeSession(share));\n\nconst msg1: Message[] = sessions.map((s) => s.createFirstMessage());\nconst msg2: Message[] = sessions.flatMap((s) =>\n  s.handleMessages(msg1.map((m) => m.clone())),\n);\n\nsessions.forEach((s) => {\n  const out = s.handleMessages(msg2.map((m) => m.clone()));\n  if (out.length !== 0 || !s.isFinished()) {\n    throw new Error(\"rerandomize did not complete\");\n  }\n});\n\nconst alphas = sessions.map((s) => s.alpha);\nconst newShares = sessions.map((s) => s.keyshare());\n\n// Every party computed the same alpha, and the public key changed.\nif (alphas[0].length !== 32) {\n  throw new Error(\"alpha must be 32 bytes\");\n}\n\n// Sign with the rerandomized shares (same DSG loop as below).\n```\n\nSession state can be checkpointed mid-protocol with `toBytes()` /\n`fromBytes()` (see `Rerand session toBytes/fromBytes roundtrip then DSG` in\n`tests/test-redpallas.ts` and `rerand_session_roundtrip` in\n`tests/keygen.rs`). Treat thrown errors as fatal, the same as other sessions;\ninspect `session.error()` after a failure.\n\n## Threshold Signing (DSG)\n\nSigning reuses the key shares produced during DKG. The snippet below follows\nthe `dsg` helper from the test suite and shows the three interaction rounds\nbetween `threshold` parties.\n\n```ts\nconst message = crypto.getRandomValues(new Uint8Array(32));\nconst sharesToUse = shares.slice(0, threshold);\n\nconst sessions = sharesToUse.map((share) => new SignSession(share, message, \"m\"));\n\nconst msg1 = sessions.map((session) => session.createFirstMessage());\nconst msg2 = sessions.flatMap((session) =>\n  session.handleMessages(msg1.map((m) => m.clone()))\n);\nconst msg3 = sessions.flatMap((session) =>\n  session.handleMessages(msg2.map((m) => m.clone()))\n);\n\nsessions.forEach((session) => {\n  session.handleMessages(msg3.map((m) => m.clone()));\n});\n\nconst signatures = sessions.map((session) => session.signature());\n```\n\nThe final signatures are raw encodings for the active curve (Ed25519 for the\n`eddsa-wasm-*` packages, RedPallas for `redpallas-wasm-*`). Each\n`SignSession` is single-use; discard it after calling `signature()`.\n\n## Key Rotation and Share Recovery\n\nThe library exposes additional helpers that allow rotating key shares or\nrecovering lost participants:\n\n- `KeygenSession.initKeyRotation(share, secretKey,\n  aggregatedPublicKeys)`\n- `KeygenSession.initKeyRecovery(share, lostPartyIds, secretKey,\n  aggregatedPublicKeys)`\n- `KeygenSession.initLostShareRecovery(participants, threshold,\n  partyId, expectedPublicKey, lostPartyIds, secretKey,\n  aggregatedPublicKeys)`\n\nThe Deno test suite demonstrates a full rotation flow (`Key rotation`)\nand a lost-share recovery path (`key share recovery`) that feed into the\nsession-based DKG helper again to reach steady state. Those tests are excellent\nreferences when wiring up similar logic on the application side.\n\n## Error Handling\n\nSession methods throw JavaScript exceptions when progress is\nimpossible. Examples from the test suite include:\n\n- Re-playing a round method, e.g. calling `createFirstMessage()` twice.\n- Passing a party its own outgoing message.\n\nTreat these errors as fatal: the protocol state is no longer usable\nonce a method throws. If you need structured errors, inspect the\noptional `session.error()` accessor on `KeygenSession`, `SignSession`, and\n`RerandomizeSession`.\n\n## Testing Locally\n\nRun these from `wrapper/wasm-ll/`. This crate’s **Cargo defaults** are\n`console_error_panic_hook` + `redpallas` (which pulls the private `zcash`\ncrate). Ed25519 lives behind `eddsa`; VRF types (`VrfKeygenSession`,\n`HardDeriveSession`, …) behind `vrf`. Pass explicit features for each suite:\n\n| Suite | Features |\n| --- | --- |\n| Ed25519 DKG / DSG | `console_error_panic_hook,eddsa` |\n| VRF DKG + hard derive | `console_error_panic_hook,eddsa,vrf` |\n| RedPallas DKG / DSG | `console_error_panic_hook,redpallas` |\n| Orchard server/web interop | `redpallas,zcash-dkg` |\n\nAlways pass `--no-default-features` when building a non-RedPallas flavour locally.\n\n- Deno integration tests (build WASM first, then test):\n\n  ```bash\n  # Ed25519\n  wasm-pack build -t web . -- --no-default-features --features console_error_panic_hook,eddsa\n  deno test -A tests/test-eddsa.ts\n\n  # VRF hard derivation\n  wasm-pack build -t web . -- --no-default-features --features console_error_panic_hook,eddsa,vrf\n  deno test -A tests/test-hard-derive.ts\n\n  # RedPallas (requires a Kellnr registry token for the optional zcash dependency)\n  wasm-pack build -t web . -- --no-default-features --features console_error_panic_hook,redpallas\n  deno test -A tests/test-redpallas.ts\n  ```\n\n- Rust / WASM harnesses:\n\n  ```bash\n  # Ed25519\n  cargo test --no-default-features --features eddsa\n  wasm-pack test --node --no-default-features --features eddsa\n\n  # VRF (integration tests in tests/vrf.rs + wasm_bindgen tests)\n  cargo test --no-default-features --features eddsa,vrf\n  wasm-pack test --node --no-default-features --features eddsa,vrf\n  ```\n\n- Orchard derivation interop between native server sessions and WASM web\n  parties (`tests/server_web_dkg.rs`):\n\n  ```bash\n  cargo test -r --no-default-features --features redpallas,zcash-dkg \\\n    --test server_web_dkg test_server_web_dkg_derivation_interop\n  ```\n\n- VRF DKG + hard-derive interop between native server sessions and WASM web\n  parties (`tests/server_web_vrf.rs`):\n\n  ```bash\n  cargo test -r --no-default-features --features eddsa,vrf --test server_web_vrf\n  ```\n\nFrom the repo root, add `-p eddsa-wasm-ll` to `cargo test` commands.\n\n## Licensing\n\nThis wrapper is released under the Silence Laboratories License Agreement. See\n`LICENSE` for the full text.\n","readmeFilename":"README.md"}