{"_id":"@silencelaboratories/eddsa-wasm-web","_rev":"20-3832c9778f7665b2285b73540176fa80","name":"@silencelaboratories/eddsa-wasm-web","dist-tags":{"next":"1.0.0-pre.10","latest":"1.0.0-pre.13"},"versions":{"1.0.0-pre.6":{"name":"@silencelaboratories/eddsa-wasm-web","version":"1.0.0-pre.6","license":"SEE LICENSE IN LICENSE","_id":"@silencelaboratories/eddsa-wasm-web@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":"a3067162233747621d2b3eb560c29349c4b259b9","tarball":"https://registry.npmjs.org/@silencelaboratories/eddsa-wasm-web/-/eddsa-wasm-web-1.0.0-pre.6.tgz","fileCount":6,"integrity":"sha512-RL2ySSN+fgCz3zSam52htdXHVx2E4nr5adjvWj3xBO72TlIyb8K/nMnJVPUOh1x6vem8G6RFgDMqp6fpwEF+4Q==","signatures":[{"sig":"MEUCIQC45Xj+8vhmuD32Ok10npa6zA9XCcx8On9Bf7SF2kPecwIgCxgwhnzS6JCR4p5+4d76VE3qzpD+PSIWqRdSpeCQE/A=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":760752},"main":"eddsa-wasm-web.js","type":"module","types":"eddsa-wasm-web.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":["./snippets/*"],"_nodeVersion":"22.22.3","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/eddsa-wasm-web_1.0.0-pre.6_1779127837065_0.9560512558944056","host":"s3://npm-registry-packages-npm-production"}},"1.0.0-pre.7":{"name":"@silencelaboratories/eddsa-wasm-web","version":"1.0.0-pre.7","license":"SEE LICENSE IN LICENSE","_id":"@silencelaboratories/eddsa-wasm-web@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":"d95fd47dbba6bf0e9906d22f727514b079ba3d34","tarball":"https://registry.npmjs.org/@silencelaboratories/eddsa-wasm-web/-/eddsa-wasm-web-1.0.0-pre.7.tgz","fileCount":6,"integrity":"sha512-/8WFMqtUTz8Y4nxTY+PKnhFRgNXV3lw5umSPBMKXn1Sl9jIXHBv/VTrvCN11swT3Fa0SKQwxdmhajvIxzimyZg==","signatures":[{"sig":"MEQCIAG1YOeqLZVmUjEZNZ+RBPP3UfOX2DTq8xo+qGpGIz+2AiBOFUzJZpCUOpgcOavsSnMxzsiik1kJg3OFkXAJG6aZfQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":760752},"main":"eddsa-wasm-web.js","type":"module","types":"eddsa-wasm-web.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":["./snippets/*"],"_nodeVersion":"22.22.3","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/eddsa-wasm-web_1.0.0-pre.7_1779176667901_0.8240836486086611","host":"s3://npm-registry-packages-npm-production"}},"0.0.0":{"name":"@silencelaboratories/eddsa-wasm-web","version":"0.0.0","license":"SEE LICENSE IN LICENSE","_id":"@silencelaboratories/eddsa-wasm-web@0.0.0","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":"7af6b32b60011428a8d36cbad9f2c1a4a8c3704a","tarball":"https://registry.npmjs.org/@silencelaboratories/eddsa-wasm-web/-/eddsa-wasm-web-0.0.0.tgz","fileCount":6,"integrity":"sha512-m68HTrWPBQacLcLOLY5NT4Oxb0wdmupGX7LUzYIL8hfRz0kV5fROyTfMw1cZlGCOHQHEMb6bNX10TxJyHvNWvQ==","signatures":[{"sig":"MEQCICy5ffDha5KcaZwfQ5zEsbR6nRwhUZ/k6FYe9B0ybrWYAiA3x9TFuSzA03ZhmbCabcB34AGOl7npDNfBlVRYO0wv8g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1122291},"main":"eddsa-wasm-web.js","type":"module","types":"eddsa-wasm-web.d.ts","_npmUser":{"name":"rhonstin_silencelaboratories","email":"bohdan@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":["./snippets/*"],"_nodeVersion":"22.23.1","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/eddsa-wasm-web_0.0.0_1785940747884_0.08383742006852657","host":"s3://npm-registry-packages-npm-production"}},"0.0.2":{"name":"@silencelaboratories/eddsa-wasm-web","version":"0.0.2","license":"SEE LICENSE IN LICENSE","_id":"@silencelaboratories/eddsa-wasm-web@0.0.2","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":"9c65366ddac13fa8e58c5879fb3aaf513c00b884","tarball":"https://registry.npmjs.org/@silencelaboratories/eddsa-wasm-web/-/eddsa-wasm-web-0.0.2.tgz","fileCount":6,"integrity":"sha512-l4xZUOA83yU23acDcTiHzyH/JKnNufDw55LPuydcVsMtu7vd4DnfLtctow4zQlHXARc3HIQYsg5SRAjsxb+kCg==","signatures":[{"sig":"MEUCIQDk7VkOvXnK7+U7OtM76AcqdB7i6QKZh2KNCuGYYUirqQIgSX/ecbznSSsqN1W5r7B0rQn5li3TZFP1DjxkeGGlTb0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1122292},"main":"eddsa-wasm-web.js","type":"module","types":"eddsa-wasm-web.d.ts","gitHead":"799e20dc8bc628ade1ec51cc822cbc52ba1bf5df","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:79b6b16f-d1f2-4bd5-bdd8-b634d7a1d10a"}},"_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":["./snippets/*"],"_nodeVersion":"22.23.1","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/eddsa-wasm-web_0.0.2_1785943884720_0.8441514873277309","host":"s3://npm-registry-packages-npm-production"}},"0.0.3":{"name":"@silencelaboratories/eddsa-wasm-web","version":"0.0.3","license":"SEE LICENSE IN LICENSE","_id":"@silencelaboratories/eddsa-wasm-web@0.0.3","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":"dfa07573b88267b578335698b8593a23c32f43c3","tarball":"https://registry.npmjs.org/@silencelaboratories/eddsa-wasm-web/-/eddsa-wasm-web-0.0.3.tgz","fileCount":6,"integrity":"sha512-feebf1Yi9DHgFxlJKNDfW8tUShk6kYg5i+n3h8cBddf4yTzheHoxfUrnIJDIUNk9GuPJJMc9Y5uJTF5uJl/KOA==","signatures":[{"sig":"MEYCIQD0yNVUGEJqbJdABbERal2/HnGkqKAMKQ4WwDQQnhzY/gIhAIhTlQseMnjcRiI284W9BqX/SJ2uqi66cN+tA1YNHB1h","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1122292},"main":"eddsa-wasm-web.js","type":"module","types":"eddsa-wasm-web.d.ts","gitHead":"cbd882d2776cb29a31ef103d9cd9ea120bca6675","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:79b6b16f-d1f2-4bd5-bdd8-b634d7a1d10a"}},"_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":["./snippets/*"],"_nodeVersion":"22.23.1","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/eddsa-wasm-web_0.0.3_1785945023266_0.8135030154767242","host":"s3://npm-registry-packages-npm-production"}},"0.0.4":{"name":"@silencelaboratories/eddsa-wasm-web","version":"0.0.4","license":"SEE LICENSE IN LICENSE","_id":"@silencelaboratories/eddsa-wasm-web@0.0.4","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":"8268160ef7fc3220802ea5c54352875233dd1520","tarball":"https://registry.npmjs.org/@silencelaboratories/eddsa-wasm-web/-/eddsa-wasm-web-0.0.4.tgz","fileCount":6,"integrity":"sha512-aCojYWyzR/UbU2+8/0Akpyu3iZhNzNbR6/1zx+uX1fZNyaaYmtSHikXqwzR0SMabxii7pd2XVX7RH0yu7ic8Ig==","signatures":[{"sig":"MEUCIGX9WosW9li22F0VYzUuNdsPaL5eqWKN5cPxHJd9d9AwAiEAj568WICdO3+e3wEXW6I6Xzwq+tuomGCpQcv3Rc+VMTc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1122292},"main":"eddsa-wasm-web.js","type":"module","types":"eddsa-wasm-web.d.ts","gitHead":"3d0633922d64c0ab1908c923e5cf0f6945ea7e9d","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:79b6b16f-d1f2-4bd5-bdd8-b634d7a1d10a"}},"_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":["./snippets/*"],"_nodeVersion":"22.23.1","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/eddsa-wasm-web_0.0.4_1785946202064_0.3874446397621949","host":"s3://npm-registry-packages-npm-production"}},"0.0.8":{"name":"@silencelaboratories/eddsa-wasm-web","version":"0.0.8","license":"SEE LICENSE IN LICENSE","_id":"@silencelaboratories/eddsa-wasm-web@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":"fcf1ee2e93b03eca00e0c7272b5cb305f2ce26de","tarball":"https://registry.npmjs.org/@silencelaboratories/eddsa-wasm-web/-/eddsa-wasm-web-0.0.8.tgz","fileCount":6,"integrity":"sha512-NCiCP3+xH/EBzMqm2vTUShX45Lnsa31OOUEmhrCP9Y79+4s1kliSWr48YMnGMP3Ci5vRPi2/zqxbj+kLY3WdKQ==","signatures":[{"sig":"MEUCIHv+b2O4or1oi9AoSUdehw/cDx4xt/8Er3ovyi1hd0OkAiEAgab9O683356ywVJ1zmeD2hyd7CYqfU3EStZMlpX8uOo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1122292},"main":"eddsa-wasm-web.js","type":"module","types":"eddsa-wasm-web.d.ts","gitHead":"88be529c436f2634668a411ce4fd0cf716008e71","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:79b6b16f-d1f2-4bd5-bdd8-b634d7a1d10a"}},"_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":["./snippets/*"],"_nodeVersion":"22.23.1","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/eddsa-wasm-web_0.0.8_1786011438890_0.11802278983373737","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-rc2":{"name":"@silencelaboratories/eddsa-wasm-web","version":"0.1.0-rc2","license":"SEE LICENSE IN LICENSE","_id":"@silencelaboratories/eddsa-wasm-web@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":"11a3019a6aead285c443425c6f4889d076ad63f8","tarball":"https://registry.npmjs.org/@silencelaboratories/eddsa-wasm-web/-/eddsa-wasm-web-0.1.0-rc2.tgz","fileCount":6,"integrity":"sha512-G9EXoBDVA3Chg/K6hn7YCtdhazPPUexMdCuD2Ed4qdlyVNTE/7DYomFCK+WJPSRX7hO+eFHy2UiA5oJ2AhKJkQ==","signatures":[{"sig":"MEUCIQCJjor0x7PohIZ6Oivmgxr7Zndk3zKbOFjWMtdqnadK/AIgBaerWub0NHVQURvIlu6nTTytEc35W6axVjv4eVy/9jY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1122443},"main":"eddsa-wasm-web.js","type":"module","types":"eddsa-wasm-web.d.ts","gitHead":"0543fbcef3901d147484a9c5780f66db10fdc85e","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:79b6b16f-d1f2-4bd5-bdd8-b634d7a1d10a"}},"_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":["./snippets/*"],"_nodeVersion":"22.23.1","_hasShrinkwrap":false,"readmeFilename":"README.md","_npmOperationalInternal":{"tmp":"tmp/eddsa-wasm-web_0.1.0-rc2_1786015086383_0.0019567312925963254","host":"s3://npm-registry-packages-npm-production"}},"1.0.0-pre.8":{"name":"@silencelaboratories/eddsa-wasm-web","version":"1.0.0-pre.8","license":"SEE LICENSE IN LICENSE","_id":"@silencelaboratories/eddsa-wasm-web@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":"a91bada1774cff387d95fe0e6a179b9668e51936","tarball":"https://registry.npmjs.org/@silencelaboratories/eddsa-wasm-web/-/eddsa-wasm-web-1.0.0-pre.8.tgz","fileCount":6,"integrity":"sha512-SdMls+TEhz3S3lXV3RZJgpghA8oEeCr7JeMURoel4ungH20UYDOt7FmfYR/MnIu0tke/K4X7lK76O2jN9a8yIg==","signatures":[{"sig":"MEQCIHgjG+qb4TGoGsMJh1PZx97LLP1SCVKqGJNkSu4oJXVkAiAibdsk7NAy3mwY3PsI8X5/eeXJ4P4AVC/u4Be8r1acjA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1127768},"main":"eddsa-wasm-web.js","type":"module","types":"eddsa-wasm-web.d.ts","gitHead":"6292fc1a80a86f3b4e0a38843cab635a05a150db","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:79b6b16f-d1f2-4bd5-bdd8-b634d7a1d10a"}},"_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":["./snippets/*"],"_nodeVersion":"22.23.1","_hasShrinkwrap":false,"readmeFilename":"README.md","_npmOperationalInternal":{"tmp":"tmp/eddsa-wasm-web_1.0.0-pre.8_1788192440982_0.8969855191875875","host":"s3://npm-registry-packages-npm-production"}},"1.0.0-pre.9":{"name":"@silencelaboratories/eddsa-wasm-web","version":"1.0.0-pre.9","license":"SEE LICENSE IN LICENSE","_id":"@silencelaboratories/eddsa-wasm-web@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":"cb7fda8350b106da3e9e754055c88d00246ff228","tarball":"https://registry.npmjs.org/@silencelaboratories/eddsa-wasm-web/-/eddsa-wasm-web-1.0.0-pre.9.tgz","fileCount":6,"integrity":"sha512-OSkQDsPSvQt+Wlg8dI38yE5WxTxb3wdK0zhoOCg/KYKCysNBjA2sJhUNm6+ICPRaAv/dsx3PGxt3aVUaV48Eog==","signatures":[{"sig":"MEUCIAy2p3ecAGSbtjwMRSY18qdkHqzwRcHTmccaZv3m6weOAiEAiiuSCh+ZtVOX+VZBWfCTNH91nNENgLPVKg4IgufSjV8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1127768},"main":"eddsa-wasm-web.js","type":"module","types":"eddsa-wasm-web.d.ts","gitHead":"c19d67ac4cb05f25fca6cdc587524e6193c0979a","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:79b6b16f-d1f2-4bd5-bdd8-b634d7a1d10a"}},"_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":["./snippets/*"],"_nodeVersion":"22.23.1","_hasShrinkwrap":false,"readmeFilename":"README.md","_npmOperationalInternal":{"tmp":"tmp/eddsa-wasm-web_1.0.0-pre.9_1788196096327_0.18056116489220986","host":"s3://npm-registry-packages-npm-production"}},"1.0.0-pre.10":{"name":"@silencelaboratories/eddsa-wasm-web","version":"1.0.0-pre.10","license":"SEE LICENSE IN LICENSE","_id":"@silencelaboratories/eddsa-wasm-web@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":"09c032949a6691a45f93560cca6c3f9838e45e37","tarball":"https://registry.npmjs.org/@silencelaboratories/eddsa-wasm-web/-/eddsa-wasm-web-1.0.0-pre.10.tgz","fileCount":6,"integrity":"sha512-RzT+NIx7cWnLO4DgHjfq0z80KIB7I9AaSafBav8l1Z9sRjUl+zknLFn2O8jwug8XNTT78+ietJcgawXBKwG3pw==","signatures":[{"sig":"MEUCIQCinaN04gQI4FMF73d5sHT7+iU0ha+AVNYpKFC42eV99wIgZPdujR6LY0bTi+hL61vD95o7c8337i4lHL7gTvKsmZc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIAv703CMsy+5+1spWzw7QlRzOm/44A4alda25r6rwd6QAiEAyY41XCTwbcAxGQhOM5cRGbkKuTF1Yhe08Z2xQPehqfI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1126337},"main":"eddsa-wasm-web.js","type":"module","types":"eddsa-wasm-web.d.ts","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:79b6b16f-d1f2-4bd5-bdd8-b634d7a1d10a"}},"_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":["./snippets/*"],"_nodeVersion":"22.23.2","_hasShrinkwrap":false,"readmeFilename":"README.md","_npmOperationalInternal":{"tmp":"tmp/eddsa-wasm-web_1.0.0-pre.10_1789641172650_0.5634202819458209","host":"s3://npm-registry-packages-npm-production"}},"1.0.0-pre.11":{"name":"@silencelaboratories/eddsa-wasm-web","version":"1.0.0-pre.11","license":"SEE LICENSE IN LICENSE","_id":"@silencelaboratories/eddsa-wasm-web@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":"a006b9f202e7c26dd7c396569ef7efea9b138d14","tarball":"https://registry.npmjs.org/@silencelaboratories/eddsa-wasm-web/-/eddsa-wasm-web-1.0.0-pre.11.tgz","fileCount":6,"integrity":"sha512-+B752zvbrRMNjDB8yY6+szbJJ3+g44QYZkxi0196L3zR7fubD/q11B3TEwxJ4Js94HeGZa3VwfZZWk1PFxvv8Q==","signatures":[{"sig":"MEUCIG8uyrpea81bmJ5KTc3EbXU8Pi5/kRvXLoLLhTqWWKXbAiEAko/CmdNG3A3blfBJXihZKELYSSK63WYiqkZrFrWgV0w=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIBNpsR3YdMnJxgqIvlxvPKPN7SdrTVtVkp4cg7haqElKAiBxcx0sS5VDYxQRakG6s/Qg+nxzdTRKdeLXUFCKhdpiKg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1126337},"main":"eddsa-wasm-web.js","type":"module","types":"eddsa-wasm-web.d.ts","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:79b6b16f-d1f2-4bd5-bdd8-b634d7a1d10a"}},"_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":["./snippets/*"],"_nodeVersion":"22.23.2","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/eddsa-wasm-web_1.0.0-pre.11_1789661395594_0.9340284177693845","host":"s3://npm-registry-packages-npm-production"}},"1.0.0-pre.12":{"name":"@silencelaboratories/eddsa-wasm-web","version":"1.0.0-pre.12","license":"SEE LICENSE IN LICENSE","_id":"@silencelaboratories/eddsa-wasm-web@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":"d2e56944228893a967facb6ff837400aa2cde4d4","tarball":"https://registry.npmjs.org/@silencelaboratories/eddsa-wasm-web/-/eddsa-wasm-web-1.0.0-pre.12.tgz","fileCount":6,"integrity":"sha512-rmjiwXgiD4QNip/weu6C4sxGz4MRqMWezDjkAPqoLKWhPcqx9oxOkmTfUrHIBhKhn2ANRdDj/R2IsaPAM74n/A==","signatures":[{"sig":"MEUCIEyLMpsCeyr2zEqq+sGxtlkPxNSbCLNBHf7a8+z1yI6tAiEA6lgDS53K39OZnrIQz9iegW7vwCNmcQGalHxrUSpn33k=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIAwmu8FbGxfm4uYhSSHj5FXwU+PicNOo7vhxTw6p6vX8AiEAiERx6wEQr2WJX/XzoLQYDVcq335caANDauIA9dHPBt4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1129261},"main":"eddsa-wasm-web.js","type":"module","types":"eddsa-wasm-web.d.ts","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:79b6b16f-d1f2-4bd5-bdd8-b634d7a1d10a"}},"_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":["./snippets/*"],"_nodeVersion":"22.23.2","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/eddsa-wasm-web_1.0.0-pre.12_1790075848283_0.8689144864418628","host":"s3://npm-registry-packages-npm-production"}},"1.0.0-pre.13":{"_id":"@silencelaboratories/eddsa-wasm-web@1.0.0-pre.13","dist":{"shasum":"491dcf0a2457437ae540081c0e28fa561c59f92e","tarball":"https://registry.npmjs.org/@silencelaboratories/eddsa-wasm-web/-/eddsa-wasm-web-1.0.0-pre.13.tgz","fileCount":6,"integrity":"sha512-fPT2Q+ERu+l+S5N+85DRGcqGT2RNXeAGQ0IBPuKP7YmQ6u7zEpJUc3b1qUHyd9r1x6pQrXs+eBgUMn0XtaA6FQ==","signatures":[{"sig":"MEYCIQCVQdMsHAHb5ma73bq+jAi0rlAB+Rd4n5kNTlq3u5vfVgIhAMcuXYZxkHdOXsj29xzIvZbdnpmmCkfMZVrhfdw7nXJr","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIESH2ZAFTH6WADDiG+WXID8ONYZ/nsSzEuT3Yb85UhgaAiB860Btbb4X2lFlR9cM//9dRwvyc7IuXglQkP8UtgUBuQ=="}],"unpackedSize":1129416},"main":"eddsa-wasm-web.js","name":"@silencelaboratories/eddsa-wasm-web","type":"module","types":"eddsa-wasm-web.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:79b6b16f-d1f2-4bd5-bdd8-b634d7a1d10a"}},"_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":["./snippets/*"],"_nodeVersion":"22.23.2","_hasShrinkwrap":false,"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/eddsa-wasm-web_1.0.0-pre.13_1790597246259_0.6428789696407147"}}},"time":{"created":"2026-05-18T18:10:37.064Z","modified":"2026-09-28T12:07:26.578Z","1.0.0-pre.6":"2026-05-18T18:10:37.326Z","1.0.0-pre.7":"2026-05-19T07:44:28.092Z","0.0.0":"2026-08-05T14:39:08.065Z","0.0.2":"2026-08-05T15:31:24.905Z","0.0.3":"2026-08-05T15:50:23.503Z","0.0.4":"2026-08-05T16:10:02.278Z","0.0.8":"2026-08-06T10:17:19.034Z","0.1.0-rc2":"2026-08-06T11:18:06.554Z","1.0.0-pre.8":"2026-08-31T16:07:21.154Z","1.0.0-pre.9":"2026-08-31T17:08:16.507Z","1.0.0-pre.10":"2026-09-17T10:32:52.761Z","1.0.0-pre.11":"2026-09-17T16:09:55.697Z","1.0.0-pre.12":"2026-09-22T11:17:28.412Z","1.0.0-pre.13":"2026-09-28T12:07:26.379Z"},"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"}