{"_id":"mlkem","_rev":"11-4a378e798be5fa3d8e4a66ca23dd1281","name":"mlkem","dist-tags":{"latest":"2.7.0"},"versions":{"1.1.2":{"name":"mlkem","version":"1.1.2","keywords":["crystals-kyber","kyber","kem","security","encryption","pqc","post-quantum"],"author":{"name":"Ajitomi Daisuke"},"license":"MIT","_id":"mlkem@1.1.2","maintainers":[{"name":"dajiaji","email":"ajitomi@gmail.com"}],"homepage":"https://github.com/dajiaji/crystals-kyber-js#readme","bugs":{"url":"https://github.com/dajiaji/crystals-kyber-js/issues"},"dist":{"shasum":"907f6849f2ec79729191d588223cd4ebb3a59970","tarball":"https://registry.npmjs.org/mlkem/-/mlkem-1.1.2.tgz","fileCount":141,"integrity":"sha512-cQVHgsybPm/nYy15dgojmWR2TK7ZDAMH6oGlB+7hNpTK99oWMC3rohUUKt74GQT8Uf5hkSls5XHTEXXdvKuDyg==","signatures":[{"sig":"MEUCIC2EgV8UGSEwfVQbRdy7mLTBtEHSOhpLG6/8l5c6MBOPAiEA5q7LHt+sSO5x4bXQeaO56YWDfrQQyytiQRPW3zLFPyI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":231074},"main":"./script/mod.js","types":"./esm/mod.d.ts","module":"./esm/mod.js","engines":{"node":">=16.0.0"},"exports":{".":{"import":"./esm/mod.js","require":"./script/mod.js"},"./package.json":"./package.json"},"gitHead":"c4cdff8f31710f4ce7e32e7ec27913521df19f36","scripts":{"test":"node test_runner.js"},"_npmUser":{"name":"dajiaji","email":"ajitomi@gmail.com"},"repository":{"url":"git+https://github.com/dajiaji/crystals-kyber-js.git","type":"git"},"_npmVersion":"10.8.2","description":"A CRYSTALS-KYBER implementation written in TypeScript for various JavaScript runtimes","directories":{},"sideEffects":false,"_nodeVersion":"20.5.1","dependencies":{"@noble/hashes":"^1.5.0"},"_hasShrinkwrap":false,"devDependencies":{"picocolors":"^1.0.0","@types/node":"^20.9.0","@deno/shim-deno":"~0.18.0"},"_npmOperationalInternal":{"tmp":"tmp/mlkem_1.1.2_1726383955316_0.4183631660156859","host":"s3://npm-registry-packages"}},"2.0.0":{"name":"mlkem","version":"2.0.0","keywords":["crystals-kyber","ml-kem","mlkem","fips203","kyber","kem","security","encryption","pqc","post-quantum"],"author":{"name":"Ajitomi Daisuke"},"license":"MIT","_id":"mlkem@2.0.0","maintainers":[{"name":"dajiaji","email":"ajitomi@gmail.com"}],"homepage":"https://github.com/dajiaji/crystals-kyber-js#readme","bugs":{"url":"https://github.com/dajiaji/crystals-kyber-js/issues"},"dist":{"shasum":"3d2ce9fff9cf8eb76d5e431d05ce0c75e780afc8","tarball":"https://registry.npmjs.org/mlkem/-/mlkem-2.0.0.tgz","fileCount":141,"integrity":"sha512-Wd4GtLSP8RRFrRmvr74L8YNpUqUHFZC2sRanW0sS25KMkNc538GMcKMbIBzg35Q5nETn1GrblzXKpvrVpHNovA==","signatures":[{"sig":"MEYCIQCq4D6xgEJ4iLDrtEh7ZD4CySRFI0FOBaSd/FjfcqAZVwIhAKLD5VN/ohTLMZsRC9rK6FoogDSBHGWudeoSvsSwXjVE","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":234001},"main":"./script/mod.js","types":"./esm/mod.d.ts","module":"./esm/mod.js","engines":{"node":">=16.0.0"},"exports":{".":{"import":"./esm/mod.js","require":"./script/mod.js"},"./package.json":"./package.json"},"gitHead":"fcdafbd9506999cc6ca3613786ec02a957a9c988","scripts":{"test":"node test_runner.js"},"_npmUser":{"name":"dajiaji","email":"ajitomi@gmail.com"},"repository":{"url":"git+https://github.com/dajiaji/crystals-kyber-js.git","type":"git"},"_npmVersion":"10.8.2","description":"An ML-KEM/CRYSTALS-KYBER implementation written in TypeScript for various JavaScript runtimes","directories":{},"sideEffects":false,"_nodeVersion":"20.17.0","dependencies":{"@noble/hashes":"^1.5.0"},"_hasShrinkwrap":false,"devDependencies":{"picocolors":"^1.0.0","@types/node":"^20.9.0","@deno/shim-deno":"~0.18.0"},"_npmOperationalInternal":{"tmp":"tmp/mlkem_2.0.0_1726404498120_0.39911348349696896","host":"s3://npm-registry-packages"}},"2.0.1":{"name":"mlkem","version":"2.0.1","keywords":["crystals-kyber","ml-kem","mlkem","fips203","kyber","kem","security","encryption","pqc","post-quantum"],"author":{"name":"Ajitomi Daisuke"},"license":"MIT","_id":"mlkem@2.0.1","maintainers":[{"name":"dajiaji","email":"ajitomi@gmail.com"}],"homepage":"https://github.com/dajiaji/crystals-kyber-js#readme","bugs":{"url":"https://github.com/dajiaji/crystals-kyber-js/issues"},"dist":{"shasum":"eb6770e87d184384f2bf113b6954b3b2b8e9e01f","tarball":"https://registry.npmjs.org/mlkem/-/mlkem-2.0.1.tgz","fileCount":141,"integrity":"sha512-zOZe9U+ZGFacg0Y+QtnkJksnaVoyETqZwbG2GcUZ4V1Rb9m/W/DlBXVGc5mNzCXDQoRsPMt5jC6ClNathxVupg==","signatures":[{"sig":"MEYCIQClKK/HtlnehIKQ9Hi+s/PZyu+GiNJtF5Ia/WHK5x6HXwIhAPZ3RsfETQ0ciTKAtwRWF4r5i8c79mVVhKhbcwgpwcO6","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":234932},"main":"./script/mod.js","types":"./esm/mod.d.ts","module":"./esm/mod.js","engines":{"node":">=16.0.0"},"exports":{".":{"import":"./esm/mod.js","require":"./script/mod.js"},"./package.json":"./package.json"},"gitHead":"270fc45100138f585f33b8889024395ae7981901","scripts":{"test":"node test_runner.js"},"_npmUser":{"name":"dajiaji","email":"ajitomi@gmail.com"},"repository":{"url":"git+https://github.com/dajiaji/crystals-kyber-js.git","type":"git"},"_npmVersion":"10.8.2","description":"An ML-KEM/CRYSTALS-KYBER implementation written in TypeScript for various JavaScript runtimes","directories":{},"sideEffects":false,"_nodeVersion":"20.17.0","dependencies":{"@noble/hashes":"^1.5.0"},"_hasShrinkwrap":false,"devDependencies":{"picocolors":"^1.0.0","@types/node":"^20.9.0","@deno/shim-deno":"~0.18.0"},"_npmOperationalInternal":{"tmp":"tmp/mlkem_2.0.1_1726436761419_0.42795532381653545","host":"s3://npm-registry-packages"}},"2.1.0":{"name":"mlkem","version":"2.1.0","keywords":["crystals-kyber","ml-kem","mlkem","fips203","kyber","kem","security","encryption","pqc","post-quantum"],"author":{"name":"Ajitomi Daisuke"},"license":"MIT","_id":"mlkem@2.1.0","maintainers":[{"name":"dajiaji","email":"ajitomi@gmail.com"}],"homepage":"https://github.com/dajiaji/crystals-kyber-js#readme","bugs":{"url":"https://github.com/dajiaji/crystals-kyber-js/issues"},"dist":{"shasum":"07659df422a1386f11a663ab6e285c9efec126cc","tarball":"https://registry.npmjs.org/mlkem/-/mlkem-2.1.0.tgz","fileCount":141,"integrity":"sha512-2hjSTC5lf2fL40agWroq8kXeUug8N9ALhH+vLWc3wTdCBESJZIM5mUm03tZ5ybeq2awbk5GlG92E8jH/WzzFCg==","signatures":[{"sig":"MEUCIHP77+o7yTKO3BGJMyNn5GoJXU7bxHYoJe6Ca8KMJ1oKAiEAug7rkfnM8zQgJn6aVZ6DgBJoXJKE2+MYN7E1S46GXXI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":235472},"main":"./script/mod.js","types":"./esm/mod.d.ts","module":"./esm/mod.js","engines":{"node":">=16.0.0"},"exports":{".":{"import":"./esm/mod.js","require":"./script/mod.js"},"./package.json":"./package.json"},"gitHead":"919b25eb520dd75e9a3cb91c4765a937926231ab","scripts":{"test":"node test_runner.js"},"_npmUser":{"name":"dajiaji","email":"ajitomi@gmail.com"},"repository":{"url":"git+https://github.com/dajiaji/crystals-kyber-js.git","type":"git"},"_npmVersion":"10.8.2","description":"An ML-KEM/CRYSTALS-KYBER implementation written in TypeScript for various JavaScript runtimes","directories":{},"sideEffects":false,"_nodeVersion":"20.17.0","dependencies":{"@noble/hashes":"^1.5.0"},"_hasShrinkwrap":false,"devDependencies":{"picocolors":"^1.0.0","@types/node":"^20.9.0","@deno/shim-deno":"~0.18.0"},"_npmOperationalInternal":{"tmp":"tmp/mlkem_2.1.0_1726579218337_0.8457845064332012","host":"s3://npm-registry-packages"}},"2.2.0":{"name":"mlkem","version":"2.2.0","keywords":["crystals-kyber","ml-kem","mlkem","fips203","kyber","kem","security","encryption","pqc","post-quantum"],"author":{"name":"Ajitomi Daisuke"},"license":"MIT","_id":"mlkem@2.2.0","maintainers":[{"name":"dajiaji","email":"ajitomi@gmail.com"}],"homepage":"https://github.com/dajiaji/crystals-kyber-js#readme","bugs":{"url":"https://github.com/dajiaji/crystals-kyber-js/issues"},"dist":{"shasum":"ea7244924a1510645d655399fed23157c753c969","tarball":"https://registry.npmjs.org/mlkem/-/mlkem-2.2.0.tgz","fileCount":145,"integrity":"sha512-TRMY06ZsZctqsG2wVa5A28Vin8Lc0HoG35anFQOFmwxXtvCDK44mNDjFIC2oz1IQwirTrWRgGFiyKdhPOL28TA==","signatures":[{"sig":"MEUCIQCHIsIUtu1JFzkR+aSsPG+EeAkFrhZ1jwFmwb9CFv761QIgAqWdCkman19hfA+nAg5NKPIrLTtPYfUiVM+IrFwLwpE=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":236907},"main":"./script/mod.js","types":"./esm/mod.d.ts","module":"./esm/mod.js","engines":{"node":">=16.0.0"},"exports":{".":{"import":"./esm/mod.js","require":"./script/mod.js"},"./package.json":"./package.json"},"gitHead":"61d4a4ca37d48e2d86241c5fd5f6c48058c027af","scripts":{"test":"node test_runner.js"},"_npmUser":{"name":"dajiaji","email":"ajitomi@gmail.com"},"repository":{"url":"git+https://github.com/dajiaji/crystals-kyber-js.git","type":"git"},"_npmVersion":"10.8.2","description":"An ML-KEM/CRYSTALS-KYBER implementation written in TypeScript for various JavaScript runtimes","directories":{},"sideEffects":false,"_nodeVersion":"20.18.0","dependencies":{"@noble/hashes":"^1.5.0"},"_hasShrinkwrap":false,"devDependencies":{"picocolors":"^1.0.0","@types/node":"^20.9.0","@deno/shim-deno":"~0.18.0"},"_npmOperationalInternal":{"tmp":"tmp/mlkem_2.2.0_1730635133108_0.017577275077073296","host":"s3://npm-registry-packages"}},"2.3.0":{"name":"mlkem","version":"2.3.0","keywords":["crystals-kyber","ml-kem","mlkem","fips203","kyber","kem","security","encryption","pqc","post-quantum"],"author":{"name":"Ajitomi Daisuke"},"license":"MIT","_id":"mlkem@2.3.0","maintainers":[{"name":"dajiaji","email":"ajitomi@gmail.com"}],"homepage":"https://github.com/dajiaji/crystals-kyber-js#readme","bugs":{"url":"https://github.com/dajiaji/crystals-kyber-js/issues"},"dist":{"shasum":"ec2b9314e031ff62ce74a9292570693da0526679","tarball":"https://registry.npmjs.org/mlkem/-/mlkem-2.3.0.tgz","fileCount":145,"integrity":"sha512-iDY5QTG/O/ouhC79dIlVzyiaieOopwhPZmxvevLoeJ4hkADnyCLa5ZSID1PKbReF4IebidrJrRf5YM3TFp02cQ==","signatures":[{"sig":"MEYCIQDOqViDBqh1YLviazr9PUay3QXnU2HCcvWL/EMrmazd8wIhAOgGOfuUUo6uFzANYr5/rkdowCfPuwPH+T4UudeeGHvP","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":236961},"main":"./script/mod.js","types":"./esm/mod.d.ts","module":"./esm/mod.js","engines":{"node":">=16.0.0"},"exports":{".":{"import":"./esm/mod.js","require":"./script/mod.js"},"./package.json":"./package.json"},"gitHead":"0e3179a6870c0a1336ef24011ffafe4ee7ceef5f","scripts":{"test":"node test_runner.js"},"_npmUser":{"name":"dajiaji","email":"ajitomi@gmail.com"},"repository":{"url":"git+https://github.com/dajiaji/crystals-kyber-js.git","type":"git"},"_npmVersion":"10.8.2","description":"An ML-KEM/CRYSTALS-KYBER implementation written in TypeScript for various JavaScript runtimes","directories":{},"sideEffects":false,"_nodeVersion":"20.18.0","dependencies":{"@noble/hashes":"^1.5.0"},"_hasShrinkwrap":false,"devDependencies":{"picocolors":"^1.0.0","@types/node":"^20.9.0","@deno/shim-deno":"~0.18.0"},"_npmOperationalInternal":{"tmp":"tmp/mlkem_2.3.0_1730792935190_0.1615056158242314","host":"s3://npm-registry-packages"}},"2.3.1":{"name":"mlkem","version":"2.3.1","keywords":["crystals-kyber","ml-kem","mlkem","fips203","kyber","kem","security","encryption","pqc","post-quantum"],"author":{"name":"Ajitomi Daisuke"},"license":"MIT","_id":"mlkem@2.3.1","maintainers":[{"name":"dajiaji","email":"ajitomi@gmail.com"}],"homepage":"https://github.com/dajiaji/crystals-kyber-js#readme","bugs":{"url":"https://github.com/dajiaji/crystals-kyber-js/issues"},"dist":{"shasum":"4b48a3ec67068b6b8f0a99e81a3d7ed1e47403a3","tarball":"https://registry.npmjs.org/mlkem/-/mlkem-2.3.1.tgz","fileCount":151,"integrity":"sha512-ZlhI0U1ZXpXd1U3DRyk1xafXNm7rU4lm2sSPIX5lidoLHJ7gyKQ4dafNd7W/MgIejadVfKTTa3uL1PDSbesL3g==","signatures":[{"sig":"MEQCIE4yCHJdE0+3uVfP8aPWgIsHeNkQCswngz+wJILwY2VhAiBBRSS61Gb4FwOjEuGMGkvl7XlNqTQNG5TVdNZ6rXl3Dg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":238912},"main":"./script/mod.js","types":"./esm/mod.d.ts","module":"./esm/mod.js","engines":{"node":">=16.0.0"},"exports":{".":{"import":"./esm/mod.js","require":"./script/mod.js"},"./package.json":"./package.json"},"gitHead":"3183be69bd4b28e77bdf87f10616ac7ff473e10d","scripts":{"test":"node test_runner.js"},"_npmUser":{"name":"dajiaji","email":"ajitomi@gmail.com"},"repository":{"url":"git+https://github.com/dajiaji/crystals-kyber-js.git","type":"git"},"_npmVersion":"10.8.2","description":"An ML-KEM/CRYSTALS-KYBER implementation written in TypeScript for various JavaScript runtimes","directories":{},"sideEffects":false,"_nodeVersion":"20.18.3","dependencies":{"@noble/hashes":"^1.7.1"},"_hasShrinkwrap":false,"devDependencies":{"picocolors":"^1.0.0","@types/node":"^20.9.0","@deno/shim-deno":"~0.18.0"},"_npmOperationalInternal":{"tmp":"tmp/mlkem_2.3.1_1741481897929_0.031071005300392196","host":"s3://npm-registry-packages-npm-production"}},"2.4.0":{"name":"mlkem","version":"2.4.0","keywords":["crystals-kyber","ml-kem","mlkem","fips203","kyber","kem","security","encryption","pqc","post-quantum"],"author":{"name":"Ajitomi Daisuke"},"license":"MIT","_id":"mlkem@2.4.0","maintainers":[{"name":"dajiaji","email":"ajitomi@gmail.com"}],"homepage":"https://github.com/dajiaji/crystals-kyber-js#readme","bugs":{"url":"https://github.com/dajiaji/crystals-kyber-js/issues"},"dist":{"shasum":"462a0eaaa23e1cc2d82890d7cfe9b81f0142db0b","tarball":"https://registry.npmjs.org/mlkem/-/mlkem-2.4.0.tgz","fileCount":177,"integrity":"sha512-dxDnWX36hG6OE/RM3CSJEJIqDdalbc03mmyHas1tpsPTC7X2ZTuTmrv/Ac3i5cB4s2g19atYu+JmFawzkiZthg==","signatures":[{"sig":"MEQCIGHcs6PHUsWC7c2JderOhIxxsRsruZpsitxZ/vuejqN2AiA+Z/v4KV618MzQA5gGphfYltvWoRihYVKC9ER3CPMYqg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":341253},"main":"./script/mod.js","types":"./esm/mod.d.ts","module":"./esm/mod.js","engines":{"node":">=16.0.0"},"exports":{".":{"import":"./esm/mod.js","require":"./script/mod.js"},"./package.json":"./package.json"},"gitHead":"935624d5f8a2374235a238349e157a60ade4d6e2","scripts":{"test":"node test_runner.js"},"_npmUser":{"name":"dajiaji","email":"ajitomi@gmail.com"},"repository":{"url":"git+https://github.com/dajiaji/crystals-kyber-js.git","type":"git"},"_npmVersion":"10.9.3","description":"An ML-KEM/CRYSTALS-KYBER implementation written in TypeScript for various JavaScript runtimes","directories":{},"sideEffects":false,"_nodeVersion":"22.18.0","_hasShrinkwrap":false,"devDependencies":{"picocolors":"^1.0.0","@types/node":"^20.9.0","@deno/shim-deno":"~0.18.0"},"_npmOperationalInternal":{"tmp":"tmp/mlkem_2.4.0_1754830514415_0.8581886819260314","host":"s3://npm-registry-packages-npm-production"}},"2.5.0":{"name":"mlkem","version":"2.5.0","keywords":["crystals-kyber","ml-kem","mlkem","fips203","kyber","kem","security","encryption","pqc","post-quantum"],"author":{"name":"Ajitomi Daisuke"},"license":"MIT","_id":"mlkem@2.5.0","maintainers":[{"name":"dajiaji","email":"ajitomi@gmail.com"}],"homepage":"https://github.com/dajiaji/crystals-kyber-js#readme","bugs":{"url":"https://github.com/dajiaji/crystals-kyber-js/issues"},"dist":{"shasum":"85a4ff58ec72fbd437f6d9205bf055937ff700ba","tarball":"https://registry.npmjs.org/mlkem/-/mlkem-2.5.0.tgz","fileCount":177,"integrity":"sha512-TnSvGBs0EVPukQcdPF0882ZoYXYuD2rb+VgO0kUDbFi/XM1rJOwnQoFW3wGGuc3nG3AT/zp3oWJ86W7ewwKYyA==","signatures":[{"sig":"MEQCIBatKhjOcQxL0C65rY4AggPbnF6Aeis7MHWHZM7Xt2pvAiACz3a3PrsFKdNZc6meb40NtauMV036EISfouO7ni2Pwg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":328641},"main":"./script/mod.js","types":"./esm/mod.d.ts","module":"./esm/mod.js","engines":{"node":">=16.0.0"},"exports":{".":{"import":"./esm/mod.js","require":"./script/mod.js"},"./package.json":"./package.json"},"gitHead":"e74f30468b73e60cc3731902f378813a75b0b8bc","scripts":{"test":"node test_runner.js"},"_npmUser":{"name":"dajiaji","email":"ajitomi@gmail.com"},"repository":{"url":"git+https://github.com/dajiaji/crystals-kyber-js.git","type":"git"},"_npmVersion":"10.9.3","description":"An ML-KEM/CRYSTALS-KYBER implementation written in TypeScript for various JavaScript runtimes","directories":{},"sideEffects":false,"_nodeVersion":"22.18.0","_hasShrinkwrap":false,"devDependencies":{"picocolors":"^1.0.0","@types/node":"^20.9.0","@deno/shim-deno":"~0.18.0"},"_npmOperationalInternal":{"tmp":"tmp/mlkem_2.5.0_1754842003022_0.9763288609428131","host":"s3://npm-registry-packages-npm-production"}},"2.6.0":{"name":"mlkem","version":"2.6.0","keywords":["crystals-kyber","ml-kem","mlkem","fips203","kyber","kem","security","encryption","pqc","post-quantum"],"author":{"name":"Ajitomi Daisuke"},"license":"MIT","_id":"mlkem@2.6.0","maintainers":[{"name":"dajiaji","email":"ajitomi@gmail.com"}],"homepage":"https://github.com/dajiaji/crystals-kyber-js#readme","bugs":{"url":"https://github.com/dajiaji/crystals-kyber-js/issues"},"dist":{"shasum":"ce2731ed57c9d24e118f5e22c418f2e46cb46f57","tarball":"https://registry.npmjs.org/mlkem/-/mlkem-2.6.0.tgz","fileCount":179,"integrity":"sha512-RTnCTHtvKX2CIIhph13UF5f7wx9S4fwoGHSEHFEuuAvqqdvsEemHW9trmNK/BJ4SP8zVhU2l7vo7zac6drD+GA==","signatures":[{"sig":"MEYCIQDQiaKMxVgRNC0ZvBOg0EeoE6MWN60yq31LvBHoPV/p4QIhAP5ITOMWN5MTyyRVCRHWZ4NK/Otw18U0xDpGFv1xvMuS","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mlkem@2.6.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":328452},"main":"./script/mod.js","types":"./esm/mod.d.ts","module":"./esm/mod.js","engines":{"node":">=16.0.0"},"exports":{".":{"import":"./esm/mod.js","require":"./script/mod.js"},"./package.json":"./package.json"},"gitHead":"243ad16f86cb78f32b05e432a5cd26e2c0dd6dc0","scripts":{"test":"node test_runner.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:7d18e1bb-74cc-4fb6-a697-ba9138ba6e82"}},"repository":{"url":"git+https://github.com/dajiaji/crystals-kyber-js.git","type":"git"},"_npmVersion":"11.9.0","description":"An ML-KEM/CRYSTALS-KYBER implementation written in TypeScript for various JavaScript runtimes","directories":{},"sideEffects":false,"_nodeVersion":"24.14.0","_hasShrinkwrap":false,"devDependencies":{"picocolors":"^1.0.0","@types/node":"^20.9.0","@deno/shim-deno":"~0.18.0"},"_npmOperationalInternal":{"tmp":"tmp/mlkem_2.6.0_1772893743411_0.26877721327038673","host":"s3://npm-registry-packages-npm-production"}},"2.7.0":{"name":"mlkem","version":"2.7.0","description":"An ML-KEM/CRYSTALS-KYBER implementation written in TypeScript for various JavaScript runtimes","keywords":["crystals-kyber","ml-kem","mlkem","fips203","kyber","kem","security","encryption","pqc","post-quantum"],"author":{"name":"Ajitomi Daisuke"},"homepage":"https://github.com/dajiaji/crystals-kyber-js#readme","repository":{"type":"git","url":"git+https://github.com/dajiaji/crystals-kyber-js.git"},"license":"MIT","bugs":{"url":"https://github.com/dajiaji/crystals-kyber-js/issues"},"main":"./script/mod.js","module":"./esm/mod.js","types":"./esm/mod.d.ts","exports":{".":{"import":"./esm/mod.js","require":"./script/mod.js"},"./package.json":"./package.json"},"scripts":{"test":"node test_runner.js"},"sideEffects":false,"engines":{"node":">=16.0.0"},"devDependencies":{"@types/node":"^20.9.0","picocolors":"^1.0.0","@deno/shim-deno":"~0.18.0"},"gitHead":"33a76fcdc3734b613557f17d3a0cdb59bdb25b02","_id":"mlkem@2.7.0","_nodeVersion":"24.14.0","_npmVersion":"11.9.0","dist":{"integrity":"sha512-I2bcB5d6jtkdan6MLGOxObpUbidqv0ej+PhbCGnXUqmcGYZ6X8F0qBpU6HE4mvYc81NSznBrVDp+Uc808Ba2RA==","shasum":"0c2221dcd61d491be1a62c07f33540687ed63ff2","tarball":"https://registry.npmjs.org/mlkem/-/mlkem-2.7.0.tgz","fileCount":119,"unpackedSize":362361,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mlkem@2.7.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIGafgCJKotZ0HcwlP3/O8DPsQSTJGEPp92G5BgNqkssGAiEAqTzIsyJ6UVuH4xSvXZA+yfrxnjwJwmWzuTaQqnqmvZE="}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:7d18e1bb-74cc-4fb6-a697-ba9138ba6e82"}},"directories":{},"maintainers":[{"name":"dajiaji","email":"ajitomi@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/mlkem_2.7.0_1772949233816_0.11181327538138452"},"_hasShrinkwrap":false}},"time":{"created":"2024-09-15T07:05:55.315Z","modified":"2026-03-08T05:53:54.288Z","1.1.2":"2024-09-15T07:05:55.606Z","2.0.0":"2024-09-15T12:48:18.361Z","2.0.1":"2024-09-15T21:46:01.604Z","2.1.0":"2024-09-17T13:20:18.563Z","2.2.0":"2024-11-03T11:58:53.330Z","2.3.0":"2024-11-05T07:48:55.381Z","2.3.1":"2025-03-09T00:58:18.157Z","2.4.0":"2025-08-10T12:55:14.611Z","2.5.0":"2025-08-10T16:06:43.266Z","2.6.0":"2026-03-07T14:29:03.572Z","2.7.0":"2026-03-08T05:53:54.022Z"},"bugs":{"url":"https://github.com/dajiaji/crystals-kyber-js/issues"},"author":{"name":"Ajitomi Daisuke"},"license":"MIT","homepage":"https://github.com/dajiaji/crystals-kyber-js#readme","keywords":["crystals-kyber","ml-kem","mlkem","fips203","kyber","kem","security","encryption","pqc","post-quantum"],"repository":{"type":"git","url":"git+https://github.com/dajiaji/crystals-kyber-js.git"},"description":"An ML-KEM/CRYSTALS-KYBER implementation written in TypeScript for various JavaScript runtimes","maintainers":[{"name":"dajiaji","email":"ajitomi@gmail.com"}],"readme":"<h1 align=\"center\">mlkem / crystals-kyber-js</h1>\n\n<div align=\"center\">\n<a href=\"https://jsr.io/@dajiaji/mlkem\"><img src=\"https://jsr.io/badges/@dajiaji/mlkem\" alt=\"JSR\"/></a>\n<a href=\"https://www.npmjs.com/package/mlkem\"><img src=\"https://img.shields.io/npm/v/mlkem?color=%23EE3214\" alt=\"NPM\"/></a>\n<img src=\"https://github.com/dajiaji/crystals-kyber-js/actions/workflows/ci_browsers.yml/badge.svg\" alt=\"Browser CI\" />\n<img src=\"https://github.com/dajiaji/crystals-kyber-js/actions/workflows/ci_node.yml/badge.svg\" alt=\"Node.js CI\" />\n<img src=\"https://github.com/dajiaji/crystals-kyber-js/actions/workflows/ci_deno.yml/badge.svg\" alt=\"Deno CI\" />\n<img src=\"https://github.com/dajiaji/crystals-kyber-js/actions/workflows/ci_cloudflare.yml/badge.svg\" alt=\"Cloudflare Workers CI\" />\n<img src=\"https://github.com/dajiaji/crystals-kyber-js/actions/workflows/ci_bun.yml/badge.svg\" alt=\"bun CI\" />\n<a href=\"https://codecov.io/gh/dajiaji/crystals-kyber-js\">\n  <img src=\"https://codecov.io/gh/dajiaji/crystals-kyber-js/branch/main/graph/badge.svg?token=7I7JGKDDJ2\" alt=\"codecov\" />\n</a>\n</div>\n\n<div align=\"center\">\nAn ML-KEM (NIST FIPS 203) and CRYSTALS-KYBER implementation written in TypeScript.<br>\n</div>\n<p></p>\n\n<div align=\"center\">\n\n[Documentation for main](https://dajiaji.github.io/crystals-kyber-js/docs/main/)\n\n</div>\n\nThis module is based on\n[ntontutoveanu/crystals-kyber-javascript](https://github.com/antontutoveanu/crystals-kyber-javascript),\nbut includes the following improvements:\n\n- ✅ Written in TypeScript.\n- ✅ Available on various JavaScript runtimes: Browsers, Node.js, Deno,\n  Cloudflare Workers, etc.\n- ✅ Deterministic key generation support.\n- ✅ Constant-time validation for ciphertext.\n- ✅ Better performance: The fastest pure TypeScript/JavaScript ML-KEM\n  implementation available — approximately 3.5x faster than the original\n  implementation. Run `deno bench` to see the benchmark results.\n- ✅ No dependencies on other libraries.\n- ✅ Tree-shaking friendly.\n- ✅ Fix [KyberSlash](https://kyberslash.cr.yp.to/index.html) vulnerability.\n- ✅ ML-KEM ([NIST FIPS 203](https://csrc.nist.gov/pubs/fips/203/final))\n  support.\n- ✅ Passed all the tests published by:\n  - [post-quantum-cryptography/KAT/MLKEM](https://github.com/post-quantum-cryptography/KAT/tree/main/MLKEM)\n  - [C2SP/CCTV/ML-KEM](https://github.com/C2SP/CCTV/tree/main/ML-KEM)\n  - [pq-crystals/kyber](https://github.com/C2SP/CCTV/tree/main/ML-KEM) (10000\n    consecutive tests)\n\nThis repository has the following packages:\n\n| package           | registry                                                                                                                  | description                                                                                                                                                                                                                          |\n| ----------------- | ------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n| crystals-kyber-js | [![npm](https://img.shields.io/npm/v/crystals-kyber-js?color=%23EE3214)](https://www.npmjs.com/package/crystals-kyber-js) | `v1.x` implements CRYSTALS-KYBER, and `v2.x-` implements ML-KEM (NIST FIPS 203). `crystals-kyber-js` may become deprecated in the near future. Instead, we recommend switching to the following `mlkem` or `@dajiaji/mlkem`.         |\n| mlkem             | [![npm](https://img.shields.io/npm/v/mlkem?color=%23EE3214)](https://www.npmjs.com/package/mlkem)                         | Implements only ML-KEM (NIST FIPS 203). It is an alias for the above `crystals-kyber-js` starting from `v2` onwards. We recommend using this package going forward.                                                                  |\n| @dajiaji/mlkem    | [![JSR](https://jsr.io/badges/@dajiaji/mlkem)](https://jsr.io/@dajiaji/mlkem)                                             | Implements only ML-KEM (NIST FIPS 203). It is an ML-KEM package for [jsr.io](https://jsr.io/). The above `mlkem` is an npm package of `@dajiaji/mlkem`, which has been converted using [@deno/dnt](https://github.com/denoland/dnt). |\n\nFor Node.js, you can install `mlkem` or `crystals-kyber-js` via npm, yarn or\npnpm:\n\n```sh\n# RECOMMENTED using `mlkem`\nnpm install mlkem\n# `crystals-kyber-js` is still available for use, but it may become deprecated in the near future.\nnpm install crystals-kyber-js\n```\n\nThen, you can use it as follows:\n\n```ts\nimport { createMlKem768 } from \"mlkem\"; // or from \"crystals-kyber-js\"\n\nasync function doMlKem() {\n  // Create a pre-initialized instance (async, only needed once).\n  // createMlKem512 and createMlKem1024 are also available.\n  const recipient = await createMlKem768();\n\n  // A recipient generates a key pair.\n  const [pkR, skR] = recipient.generateKeyPair();\n  //// Deterministic key generation is also supported\n  // const seed = new Uint8Array(64);\n  // globalThis.crypto.getRandomValues(seed); // node >= 19\n  // const [pkR, skR] = recipient.deriveKeyPair(seed);\n\n  // A sender generates a ciphertext and a shared secret with pkR.\n  const sender = await createMlKem768();\n  const [ct, ssS] = sender.encap(pkR);\n\n  // The recipient decapsulates the ciphertext and generates the same shared secret with skR.\n  const ssR = recipient.decap(ct, skR);\n\n  // ssS === ssR\n  return;\n}\n\ntry {\n  doMlKem();\n} catch (err: unknown) {\n  console.log(\"failed:\", (err as Error).message);\n}\n```\n\n## Index\n\n- [Installation](#installation)\n  - [Node.js](#nodejs)\n  - [Deno](#deno)\n  - [Cloudflare Workers](#cloudflare-workers)\n  - [Bun](#bun)\n  - [Web Browsers](#web-browsers)\n- [Usage](#usage)\n- [Contributing](#contributing)\n\n## Installation\n\n### Node.js\n\n```sh\n# Using npm:\nnpm install mlkem  # or crystals-kyber-js\nyarn add mlkem  # or crystals-kyber-js\npnpm install mlkem  # or crystals-kyber-js\n# Using jsr:\nnpx jsr add @dajiaji/mlkem\nyarn dlx jsr add @dajiaji/mlkem\npnpm dlx jsr add @dajiaji/mlkem\n```\n\n### Deno\n\nStarting from version 2.0.0, `@dajiaji/mlkem` is available from the\n[jsr.io](https://jsr.io). From this version onwards, please use JSR import\ninstead of HTTPS import in Deno.\n\n**JSR import (`>=2.0.0`):**\n\nAdd `@dajiaji/mlkem` package using the commands below:\n\n```sh\ndeno add @dajiaji/mlkem\n```\n\nThen, you can use the module from code like this:\n\n```ts\nimport {\n  createMlKem1024,\n  createMlKem512,\n  createMlKem768,\n} from \"@dajiaji/mlkem\";\n```\n\n**HTTPS import (deprecated):**\n\n```ts\nimport {\n  Kyber1024,\n  Kyber512,\n  Kyber768,\n} from \"https://deno.land/x/crystals_kyber@<SEMVER>/mod.ts\";\n```\n\n### Cloudflare Workers\n\n```sh\n# Using npm:\nnpm install mlkem  # or crystals-kyber-js\nyarn add mlkem  # or crystals-kyber-js\npnpm install mlkem  # or crystals-kyber-js\n# Using jsr:\nnpx jsr add @dajiaji/mlkem\nyarn dlx jsr add @dajiaji/mlkem\npnpm dlx jsr add @dajiaji/mlkem\n```\n\n```ts\nimport {\n  createMlKem1024,\n  createMlKem512,\n  createMlKem768,\n} from \"@dajiaji/mlkem\";\n```\n\n### Bun\n\n```sh\n# Using npm:\nnpm install mlkem  # or crystals-kyber-js\nyarn add mlkem  # or crystals-kyber-js\npnpm install mlkem  # or crystals-kyber-js\n# Using jsr:\nbunx jsr add @dajiaji/bhttp\n```\n\n```ts\nimport {\n  createMlKem1024,\n  createMlKem512,\n  createMlKem768,\n} from \"@dajiaji/mlkem\";\n```\n\n### Web Browsers\n\nFollowings are how to use this module with typical CDNs. Other CDNs can be used\nas well.\n\n```html\n<!-- use a specific version -->\n<script type=\"module\">\n  // Using esm.sh:\n  import {\n    createMlKem1024,\n    createMlKem512,\n    createMlKem768,\n  } from \"https://esm.sh/mlkem@<SEMVER>\";\n  // Using unpkg.com:\n  // import { createMlKem768 } from \"https://unpkg.com/mlkem@SEMVER\";\n  // ...\n</script>\n```\n\n## Usage\n\nThis section shows some typical usage examples.\n\n### Node.js\n\n```js\nimport { createMlKem768 } from \"mlkem\";\n// const { createMlKem768 } = require(\"mlkem\");\n\nasync function doMlKem() {\n  const recipient = await createMlKem768();\n  const [pkR, skR] = recipient.generateKeyPair();\n\n  const sender = await createMlKem768();\n  const [ct, ssS] = sender.encap(pkR);\n\n  const ssR = recipient.decap(ct, skR);\n\n  // ssS === ssR\n  return;\n}\n\ntry {\n  doMlKem();\n} catch (err) {\n  console.log(\"failed: \", err.message);\n}\n```\n\n### Deno, Cloudflare Workers and Bun\n\n```ts\nimport { createMlKem512 } from \"@dajiaji/mlkem\";\n\nasync function doMlKem() {\n  const recipient = await createMlKem512();\n  const [pkR, skR] = recipient.generateKeyPair();\n\n  const sender = await createMlKem512();\n  const [ct, ssS] = sender.encap(pkR);\n\n  const ssR = recipient.decap(ct, skR);\n\n  // ssS === ssR\n  return;\n}\n\ntry {\n  doMlKem();\n} catch (err: unknown) {\n  console.log(\"failed:\", (err as Error).message);\n}\n```\n\n### Browsers\n\n```html\n<html>\n  <head></head>\n  <body>\n    <script type=\"module\">\n      import { createMlKem1024 } from \"https://esm.sh/mlkem\";\n\n      globalThis.doMlKem = async () => {\n        try {\n          const recipient = await createMlKem1024();\n          const [pkR, skR] = recipient.generateKeyPair();\n\n          const sender = await createMlKem1024();\n          const [ct, ssS] = sender.encap(pkR);\n\n          const ssR = recipient.decap(ct, skR);\n\n          // ssS === ssR\n          return;\n        } catch (err) {\n          alert(\"failed: \", err.message);\n        }\n      };\n    </script>\n    <button type=\"button\" onclick=\"doMlKem()\">do ML-KEM</button>\n  </body>\n</html>\n```\n\n### Deprecated: Async API (`MlKem512`, `MlKem768`, `MlKem1024`)\n\nThe class-based async API (`new MlKem768()`) is deprecated and will be removed\nin a future release. Please migrate to the `createMlKem*` functions shown above.\n\n```ts\n// DEPRECATED - avoid using this pattern\nimport { MlKem768 } from \"mlkem\";\nconst recipient = new MlKem768();\nconst [pkR, skR] = await recipient.generateKeyPair();\nconst [ct, ssS] = await recipient.encap(pkR);\nconst ssR = await recipient.decap(ct, skR);\n\n// RECOMMENDED - use createMlKem* instead\nimport { createMlKem768 } from \"mlkem\";\nconst recipient = await createMlKem768();\nconst [pkR, skR] = recipient.generateKeyPair(); // sync\nconst [ct, ssS] = recipient.encap(pkR); // sync\nconst ssR = recipient.decap(ct, skR); // sync\n```\n\n## Contributing\n\nWe welcome all kind of contributions, filing issues, suggesting new features or\nsending PRs.\n","readmeFilename":"README.md"}