{"_id":"@ayxdele/kinetic-keys","_rev":"29-5a3435b2a51564d0eb019cdf61c3ea16","name":"@ayxdele/kinetic-keys","dist-tags":{"latest":"2.2.3"},"versions":{"1.0.0":{"name":"@ayxdele/kinetic-keys","version":"1.0.0","keywords":["cryptography","kinetic-keys","encryption","security"],"author":{"name":"Emmanuel Ayodele Bello"},"license":"SEE LICENSE IN README.MD","_id":"@ayxdele/kinetic-keys@1.0.0","maintainers":[{"name":"ayxdele","email":"emmayodayo@gmail.com"}],"homepage":"https://github.com/THEmmanuel/kinetic-keys#readme","bugs":{"url":"https://github.com/THEmmanuel/kinetic-keys/issues"},"dist":{"shasum":"aa19058ee088eb724b2ef11d01f857ca7dd0425b","tarball":"https://registry.npmjs.org/@ayxdele/kinetic-keys/-/kinetic-keys-1.0.0.tgz","fileCount":11,"integrity":"sha512-Lfb8D5XvL5Qq5PuD2yYa5DF/4Hvv5wXpHhG3Y0uMrwPcpfjfY/ln/w5yrrDdMqGC+YC0k6snquUQ+1ix/agx8Q==","signatures":[{"sig":"MEUCIE0nrQHR6eXnTGEbEnlZSGD28RvlARxG3tzh8QDWrHCmAiEArNGPskydZ938UPhE21+4y96mgc7y/FKfD42Nhfy0a/8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":31519},"main":"index.js","gitHead":"44f981d0dfdb94b86bd644c952f85218e0512341","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"ayxdele","email":"emmayodayo@gmail.com"},"repository":{"url":"git+https://github.com/THEmmanuel/kinetic-keys.git","type":"git"},"_npmVersion":"10.5.2","description":"A Lightweight Zero-Knowledge Framework for Secure Digital Transactions.","directories":{"test":"tests"},"_nodeVersion":"20.12.2","dependencies":{"argon2":"^0.41.1","nanoid":"^5.1.5"},"_hasShrinkwrap":false,"devDependencies":{},"_npmOperationalInternal":{"tmp":"tmp/kinetic-keys_1.0.0_1749019958749_0.3987821188760228","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@ayxdele/kinetic-keys","version":"1.0.1","keywords":["cryptography","kinetic-keys","encryption","security"],"author":{"name":"Emmanuel Ayodele Bello"},"license":"SEE LICENSE IN README.MD","_id":"@ayxdele/kinetic-keys@1.0.1","maintainers":[{"name":"ayxdele","email":"emmayodayo@gmail.com"}],"homepage":"https://github.com/THEmmanuel/kinetic-keys#readme","bugs":{"url":"https://github.com/THEmmanuel/kinetic-keys/issues"},"dist":{"shasum":"8514c9a1119e3492979abe9ce998e2786a403a68","tarball":"https://registry.npmjs.org/@ayxdele/kinetic-keys/-/kinetic-keys-1.0.1.tgz","fileCount":13,"integrity":"sha512-lzYwZoxh1dxqaF3cfcmC/ImMd1J8eAAiVTMKQSKMdduEt/1XtzMw6HriKLYAQiF4lFRJSymMRV51ZkHpNDqK8g==","signatures":[{"sig":"MEYCIQDbU4JaApWz2e+BtC05bP2PfGFsstqsrGGuYl2nA97VmwIhAIQxrU3+//8397L+Qc5bAjUMHM7RoNZ4j83rNX4a1GEB","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":52039},"main":"index.js","gitHead":"44f981d0dfdb94b86bd644c952f85218e0512341","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"ayxdele","email":"emmayodayo@gmail.com"},"repository":{"url":"git+https://github.com/THEmmanuel/kinetic-keys.git","type":"git"},"_npmVersion":"10.5.2","description":"A Lightweight Zero-Knowledge Framework for Secure Digital Transactions.","directories":{"test":"tests"},"_nodeVersion":"20.12.2","dependencies":{"argon2":"^0.41.1","nanoid":"^5.1.5"},"_hasShrinkwrap":false,"devDependencies":{},"_npmOperationalInternal":{"tmp":"tmp/kinetic-keys_1.0.1_1749692816212_0.5004345543034818","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"@ayxdele/kinetic-keys","version":"1.0.2","keywords":["cryptography","kinetic-keys","encryption","security"],"author":{"name":"Emmanuel Ayodele Bello"},"license":"SEE LICENSE IN README.MD","_id":"@ayxdele/kinetic-keys@1.0.2","maintainers":[{"name":"ayxdele","email":"emmayodayo@gmail.com"}],"homepage":"https://github.com/THEmmanuel/kinetic-keys#readme","bugs":{"url":"https://github.com/THEmmanuel/kinetic-keys/issues"},"dist":{"shasum":"9dfaa9238e3c79e7bf5a9d9e6ded5c917a83ff33","tarball":"https://registry.npmjs.org/@ayxdele/kinetic-keys/-/kinetic-keys-1.0.2.tgz","fileCount":13,"integrity":"sha512-hXY4DD41wj3EP6pg1MIw9RTt9beZ3P9H+Qw6bRo9SQr+3hl1hLEJE+SbFIaXAqGoLzmz8KcnCyyTtSdal5KXqw==","signatures":[{"sig":"MEQCIAXlyYQ4CwBtPm57phfmZ8qVNcxDrdAloVoNOosr7tguAiAAvrs6/dz/pCiJ36PFCknA+W1V0vSSSD7Xxhx855JpAA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":51517},"main":"index.js","gitHead":"44f981d0dfdb94b86bd644c952f85218e0512341","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"ayxdele","email":"emmayodayo@gmail.com"},"repository":{"url":"git+https://github.com/THEmmanuel/kinetic-keys.git","type":"git"},"_npmVersion":"10.5.2","description":"A Lightweight Zero-Knowledge Framework for Secure Digital Transactions.","directories":{"test":"tests"},"_nodeVersion":"20.12.2","dependencies":{"argon2":"^0.41.1","nanoid":"^5.1.5"},"_hasShrinkwrap":false,"devDependencies":{},"_npmOperationalInternal":{"tmp":"tmp/kinetic-keys_1.0.2_1749693524797_0.0219993966633647","host":"s3://npm-registry-packages-npm-production"}},"1.1.1":{"name":"@ayxdele/kinetic-keys","version":"1.1.1","keywords":["cryptography","kinetic-keys","encryption","security"],"author":{"name":"Emmanuel Ayodele Bello"},"license":"SEE LICENSE IN README.MD","_id":"@ayxdele/kinetic-keys@1.1.1","maintainers":[{"name":"ayxdele","email":"emmayodayo@gmail.com"}],"homepage":"https://github.com/THEmmanuel/kinetic-keys#readme","bugs":{"url":"https://github.com/THEmmanuel/kinetic-keys/issues"},"dist":{"shasum":"f4aecfed80ecdd93a9ff8da28bc63a021c7ab9bf","tarball":"https://registry.npmjs.org/@ayxdele/kinetic-keys/-/kinetic-keys-1.1.1.tgz","fileCount":10,"integrity":"sha512-CmimFhPovrBgTceS2fvd+3Ec7HeZaA60M8nXWPCVERhoK/bKRe3vc4vlocgKewmzgFgWVuJhakmoVW3AP2QHyA==","signatures":[{"sig":"MEYCIQDtNTA4ABCtFvW/5sTSRW3JAbxQ/CcK4EZ9dZO8917rLgIhAN84Xt2F2puukAs63+fXBBlIvvR/9Ryz2ZjOMXzKMuyT","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":38251},"main":"index.js","gitHead":"5b8f779a1138e6c2d7dbcf7be09890c2691ce754","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"ayxdele","email":"emmayodayo@gmail.com"},"repository":{"url":"git+https://github.com/THEmmanuel/kinetic-keys.git","type":"git"},"_npmVersion":"10.5.2","description":"A Lightweight Zero-Knowledge Framework for Secure Digital Transactions.","directories":{"test":"tests"},"_nodeVersion":"20.12.2","dependencies":{"argon2":"^0.41.1","nanoid":"^5.1.5"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/kinetic-keys_1.1.1_1750122542847_0.9735927129197188","host":"s3://npm-registry-packages-npm-production"}},"1.1.2":{"name":"@ayxdele/kinetic-keys","version":"1.1.2","keywords":["cryptography","kinetic-keys","encryption","security"],"author":{"name":"Emmanuel Ayodele Bello"},"license":"SEE LICENSE IN README.MD","_id":"@ayxdele/kinetic-keys@1.1.2","maintainers":[{"name":"ayxdele","email":"emmayodayo@gmail.com"}],"homepage":"https://github.com/THEmmanuel/kinetic-keys#readme","bugs":{"url":"https://github.com/THEmmanuel/kinetic-keys/issues"},"dist":{"shasum":"0f2b9f274324f1ff3cd61df146cc2979bc6250d5","tarball":"https://registry.npmjs.org/@ayxdele/kinetic-keys/-/kinetic-keys-1.1.2.tgz","fileCount":10,"integrity":"sha512-I4T6gKCkuNauOmG5oCRKE1j6/uAEhNEmbSUtKXCDov9WhND+PRGYc4Ynu+CawgVngW5SoGrHz5Mwvx4iQb8bMw==","signatures":[{"sig":"MEQCIDzHiCPU3JlWxIV9mm18F57Y3n88A7nYLgdNmYip3UauAiAjx0u8P/ZLQJ19wsjxGQJIitEh5WVa4oZRgN+DJA6gLA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37202},"main":"index.js","gitHead":"fa56e862408e91df525c6258b322fa10a52317c0","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"ayxdele","actor":{"name":"ayxdele","type":"user","email":"emmayodayo@gmail.com"},"email":"emmayodayo@gmail.com"},"repository":{"url":"git+https://github.com/THEmmanuel/kinetic-keys.git","type":"git"},"_npmVersion":"10.5.2","description":"A Lightweight Zero-Knowledge Framework for Secure Digital Transactions.","directories":{"test":"tests"},"_nodeVersion":"20.12.2","dependencies":{"argon2":"^0.41.1","nanoid":"^5.1.5"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/kinetic-keys_1.1.2_1750151120439_0.09905673472944465","host":"s3://npm-registry-packages-npm-production"}},"1.1.4":{"name":"@ayxdele/kinetic-keys","version":"1.1.4","keywords":["cryptography","kinetic-keys","encryption","security"],"author":{"name":"Emmanuel Ayodele Bello"},"license":"SEE LICENSE IN README.MD","_id":"@ayxdele/kinetic-keys@1.1.4","maintainers":[{"name":"ayxdele","email":"emmayodayo@gmail.com"}],"homepage":"https://github.com/THEmmanuel/kinetic-keys#readme","bugs":{"url":"https://github.com/THEmmanuel/kinetic-keys/issues"},"dist":{"shasum":"c4e132c9c9800db62cb0c23a52b6af40c1526e07","tarball":"https://registry.npmjs.org/@ayxdele/kinetic-keys/-/kinetic-keys-1.1.4.tgz","fileCount":10,"integrity":"sha512-K790mzirt0DqakrdeCbFVXzxuJADZLQRrsMSxK+rz2TUeNnq9JEAb1NiZirA4zBLPpTobcLZ04SQKTGoUn0KmA==","signatures":[{"sig":"MEUCIQCCUV3P/kPaBwhM8AUT7j8OUH8Lfb6Zkip/dTajfU095gIgQjanhzFIUR9yibltliZsl1Y1SmHdXyWuJbM8pqyOXGo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35925},"main":"index.js","gitHead":"fa56e862408e91df525c6258b322fa10a52317c0","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"ayxdele","actor":{"name":"ayxdele","type":"user","email":"emmayodayo@gmail.com"},"email":"emmayodayo@gmail.com"},"repository":{"url":"git+https://github.com/THEmmanuel/kinetic-keys.git","type":"git"},"_npmVersion":"10.5.2","description":"A Lightweight Zero-Knowledge Framework for Secure Digital Transactions.","directories":{"test":"tests"},"_nodeVersion":"22.16.0","dependencies":{"argon2":"^0.41.1","nanoid":"^5.1.5"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/kinetic-keys_1.1.4_1750465001974_0.5091882761066207","host":"s3://npm-registry-packages-npm-production"}},"2.0.0":{"name":"@ayxdele/kinetic-keys","version":"2.0.0","keywords":["cryptography","encoding","decoding","keys","metadata","security","post-quantum","dilithium","kyber","pqc","quantum-resistant"],"author":{"name":"Emmanuel A. Bello"},"license":"MIT","_id":"@ayxdele/kinetic-keys@2.0.0","maintainers":[{"name":"ayxdele","email":"emmayodayo@gmail.com"}],"homepage":"https://github.com/THEmmanuel/kinetic-keys#readme","bugs":{"url":"https://github.com/THEmmanuel/kinetic-keys/issues"},"dist":{"shasum":"3749bc5baf84fdbf4c87473f79b8e707f298f78f","tarball":"https://registry.npmjs.org/@ayxdele/kinetic-keys/-/kinetic-keys-2.0.0.tgz","fileCount":16,"integrity":"sha512-8wVFLfsB68S1iT9/FZawUQRfkd6yie2WrvZ2jP3irNf4v/p2mp93oEdM0dMu/F5yBQonIVULx1kZEvetfbsH9w==","signatures":[{"sig":"MEUCIHVjKj9wjS+HqQzXeQutB+ID7SPLFbVFJ5hw/W6TBLnTAiEArApHU/jZyFdIQNRO4vN2pxLEWMw6XtbGeX3U5qgLhoI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":179721},"main":"index.js","gitHead":"fa56e862408e91df525c6258b322fa10a52317c0","scripts":{"demo":"node pqc-demo.js","test":"jest","example":"node examples/quick-start.js","test:ci":"jest --ci --coverage --maxWorkers=2","demo:pqc":"node pqc-demo.js","test:kat":"node simple-kat-test.js","test:unit":"jest tests/unit","test:watch":"jest --watch","test:coverage":"jest --coverage","coverage:badge":"npm run test:coverage && coverage-badge-creator","test:integration":"jest tests/integration"},"_npmUser":{"name":"ayxdele","actor":{"name":"ayxdele","type":"user","email":"emmayodayo@gmail.com"},"email":"emmayodayo@gmail.com"},"repository":{"url":"git+https://github.com/THEmmanuel/kinetic-keys.git","type":"git"},"_npmVersion":"10.5.2","description":"A comprehensive post-quantum cryptography library featuring Dilithium digital signatures and Kyber key encapsulation mechanisms. Includes versatile encoding schemes, key derivation utilities, and unique ID generation. Designed for quantum-resistant applic","directories":{"test":"tests"},"_nodeVersion":"22.16.0","dependencies":{"argon2":"^0.41.1","nanoid":"^5.1.5"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","@types/jest":"^29.5.14","jest-environment-node":"^29.7.0","coverage-badge-creator":"^1.0.17"},"_npmOperationalInternal":{"tmp":"tmp/kinetic-keys_2.0.0_1750807703572_0.217081062741856","host":"s3://npm-registry-packages-npm-production"}},"2.0.1":{"name":"@ayxdele/kinetic-keys","version":"2.0.1","keywords":["cryptography","encoding","decoding","keys","metadata","security","post-quantum","dilithium","kyber","pqc","quantum-resistant"],"author":{"name":"Emmanuel A. Bello"},"license":"MIT","_id":"@ayxdele/kinetic-keys@2.0.1","maintainers":[{"name":"ayxdele","email":"emmayodayo@gmail.com"}],"homepage":"https://github.com/THEmmanuel/kinetic-keys#readme","bugs":{"url":"https://github.com/THEmmanuel/kinetic-keys/issues"},"dist":{"shasum":"784a6cc3f370466ac60c1f0dbc14711648e966f9","tarball":"https://registry.npmjs.org/@ayxdele/kinetic-keys/-/kinetic-keys-2.0.1.tgz","fileCount":16,"integrity":"sha512-Blc6q5i1HyV2o+FYVjV34CdICMashprakaovioHdBrJKrNFNXW/KHJZdlP0Js18Z1uwPEnpNRXKoYot4OFWbAg==","signatures":[{"sig":"MEQCIDiwyrKj0a22MqJp5prin4q4xv+KaOjY1o93X53oIw+xAiB63n4s6TgmzTNNoXYUX14H+HWvkicWt9i08HqLKQzRtg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":179839},"main":"index.js","gitHead":"fa56e862408e91df525c6258b322fa10a52317c0","scripts":{"demo":"node pqc-demo.js","test":"jest","example":"node examples/quick-start.js","test:ci":"jest --ci --coverage --maxWorkers=2","demo:pqc":"node pqc-demo.js","test:kat":"node simple-kat-test.js","test:unit":"jest tests/unit","test:watch":"jest --watch","test:coverage":"jest --coverage","coverage:badge":"npm run test:coverage && coverage-badge-creator","test:integration":"jest tests/integration"},"_npmUser":{"name":"ayxdele","actor":{"name":"ayxdele","type":"user","email":"emmayodayo@gmail.com"},"email":"emmayodayo@gmail.com"},"repository":{"url":"git+https://github.com/THEmmanuel/kinetic-keys.git","type":"git"},"_npmVersion":"10.5.2","description":"A comprehensive post-quantum cryptography library featuring Dilithium digital signatures and Kyber key encapsulation mechanisms. Includes versatile encoding schemes, key derivation utilities, and unique ID generation. Designed for quantum-resistant applic","directories":{"test":"tests"},"_nodeVersion":"22.16.0","dependencies":{"argon2":"^0.41.1","nanoid":"^5.1.5"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","@types/jest":"^29.5.14","jest-environment-node":"^29.7.0","coverage-badge-creator":"^1.0.17"},"_npmOperationalInternal":{"tmp":"tmp/kinetic-keys_2.0.1_1750807941943_0.36799929342966475","host":"s3://npm-registry-packages-npm-production"}},"2.0.2":{"name":"@ayxdele/kinetic-keys","version":"2.0.2","keywords":["cryptography","encoding","decoding","keys","metadata","security","post-quantum","dilithium","kyber","pqc","quantum-resistant"],"author":{"name":"Emmanuel A. Bello"},"license":"MIT","_id":"@ayxdele/kinetic-keys@2.0.2","maintainers":[{"name":"ayxdele","email":"emmayodayo@gmail.com"}],"homepage":"https://github.com/THEmmanuel/kinetic-keys#readme","bugs":{"url":"https://github.com/THEmmanuel/kinetic-keys/issues"},"dist":{"shasum":"d2d00b0ab151fc88cd3ec67d190c1e663bea3443","tarball":"https://registry.npmjs.org/@ayxdele/kinetic-keys/-/kinetic-keys-2.0.2.tgz","fileCount":16,"integrity":"sha512-249O/Zj/rwJAOyLQHdrvMQlqTHWjF55TAWbsKtOWG5TX4QBGDB4DHURYFlyCRGHx2bFnNT++3z45Sk+5GcmnDA==","signatures":[{"sig":"MEQCIFxMEfnW8PHe7nhlHpde7ZggruKYBxerjMsGEs4alXA1AiAvHzc135dPP2Tz/2lx95aUTziy/C3mrY2ioy8xwpl1Xw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":182959},"main":"index.js","gitHead":"fa56e862408e91df525c6258b322fa10a52317c0","scripts":{"demo":"node pqc-demo.js","test":"jest","example":"node examples/quick-start.js","test:ci":"jest --ci --coverage --maxWorkers=2","demo:pqc":"node pqc-demo.js","test:kat":"node simple-kat-test.js","test:unit":"jest tests/unit","test:watch":"jest --watch","test:coverage":"jest --coverage","coverage:badge":"npm run test:coverage && coverage-badge-creator","test:integration":"jest tests/integration"},"_npmUser":{"name":"ayxdele","actor":{"name":"ayxdele","type":"user","email":"emmayodayo@gmail.com"},"email":"emmayodayo@gmail.com"},"repository":{"url":"git+https://github.com/THEmmanuel/kinetic-keys.git","type":"git"},"_npmVersion":"10.5.2","description":"A comprehensive post-quantum cryptography library featuring Dilithium digital signatures and Kyber key encapsulation mechanisms. Includes versatile encoding schemes, key derivation utilities, and unique ID generation. Designed for quantum-resistant applic","directories":{"test":"tests"},"_nodeVersion":"22.16.0","dependencies":{"argon2":"^0.41.1","nanoid":"^5.1.5"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","@types/jest":"^29.5.14","jest-environment-node":"^29.7.0","coverage-badge-creator":"^1.0.17"},"_npmOperationalInternal":{"tmp":"tmp/kinetic-keys_2.0.2_1750809734474_0.5212907167893219","host":"s3://npm-registry-packages-npm-production"}},"2.0.4":{"name":"@ayxdele/kinetic-keys","version":"2.0.4","keywords":["cryptography","encoding","decoding","keys","metadata","security","post-quantum","dilithium","kyber","pqc","quantum-resistant"],"author":{"name":"Emmanuel A. Bello"},"license":"MIT","_id":"@ayxdele/kinetic-keys@2.0.4","maintainers":[{"name":"ayxdele","email":"emmayodayo@gmail.com"}],"homepage":"https://github.com/THEmmanuel/kinetic-keys#readme","bugs":{"url":"https://github.com/THEmmanuel/kinetic-keys/issues"},"dist":{"shasum":"8cd98e7c29bc7fbd82c400653c4631867b6d9515","tarball":"https://registry.npmjs.org/@ayxdele/kinetic-keys/-/kinetic-keys-2.0.4.tgz","fileCount":16,"integrity":"sha512-Ar13X13SRz1V6RQBHEE3wnfGfflF8X6FcMJ1Lkn0MpqlwQTNkYTBUn2wRBVgzAlRynDMffX1HXzFLcCL6olc8g==","signatures":[{"sig":"MEUCIFSSNepmZYp6oOupENyOI43pI1ay7qj7M3MNgiqANPB0AiEAihtFEHpuCE9SZOEtqQrC9L3OLOX5s5gQfeGXGQzwOHQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":185267},"main":"index.js","gitHead":"fa56e862408e91df525c6258b322fa10a52317c0","scripts":{"demo":"node pqc-demo.js","test":"jest","example":"node examples/quick-start.js","test:ci":"jest --ci --coverage --maxWorkers=2","demo:pqc":"node pqc-demo.js","test:kat":"node simple-kat-test.js","test:unit":"jest tests/unit","test:watch":"jest --watch","test:coverage":"jest --coverage","coverage:badge":"npm run test:coverage && coverage-badge-creator","test:integration":"jest tests/integration"},"_npmUser":{"name":"ayxdele","actor":{"name":"ayxdele","type":"user","email":"emmayodayo@gmail.com"},"email":"emmayodayo@gmail.com"},"repository":{"url":"git+https://github.com/THEmmanuel/kinetic-keys.git","type":"git"},"_npmVersion":"10.5.2","description":"A comprehensive post-quantum cryptography library featuring Dilithium digital signatures and Kyber key encapsulation mechanisms. Includes versatile encoding schemes, key derivation utilities, and unique ID generation. Designed for quantum-resistant applic","directories":{"test":"tests"},"_nodeVersion":"22.16.0","dependencies":{"argon2":"^0.41.1","nanoid":"^5.1.5"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","@types/jest":"^29.5.14","jest-environment-node":"^29.7.0","coverage-badge-creator":"^1.0.17"},"_npmOperationalInternal":{"tmp":"tmp/kinetic-keys_2.0.4_1750810724561_0.5740090322452946","host":"s3://npm-registry-packages-npm-production"}},"2.0.7":{"name":"@ayxdele/kinetic-keys","version":"2.0.7","keywords":["cryptography","encoding","decoding","keys","metadata","security","post-quantum","dilithium","kyber","pqc","quantum-resistant"],"author":{"name":"Emmanuel A. Bello"},"license":"MIT","_id":"@ayxdele/kinetic-keys@2.0.7","maintainers":[{"name":"ayxdele","email":"emmayodayo@gmail.com"}],"homepage":"https://github.com/THEmmanuel/kinetic-keys#readme","bugs":{"url":"https://github.com/THEmmanuel/kinetic-keys/issues"},"dist":{"shasum":"ba886441b363a7eeb0fe22461cd5af963af4748d","tarball":"https://registry.npmjs.org/@ayxdele/kinetic-keys/-/kinetic-keys-2.0.7.tgz","fileCount":16,"integrity":"sha512-N0ujUaya483RayeQQ6T/vrarls+Kb3orsmFL3EnCH+PMaeZZgDqKuwt0JyoFMgdOZ6C+1e/i8QCXC1fGQf4JQA==","signatures":[{"sig":"MEUCIQCM2j/Sh4vLIpvOzfKlTZE0FfruGAond3uOF33VNCpyXAIgA6GGWckStKF+34o5ZkcXKpLPyRNDjGKxinZQyOqDL9k=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":188236},"main":"index.js","gitHead":"fa56e862408e91df525c6258b322fa10a52317c0","scripts":{"demo":"node pqc-demo.js","test":"jest","example":"node examples/quick-start.js","test:ci":"jest --ci --coverage --maxWorkers=2","demo:pqc":"node pqc-demo.js","test:kat":"node simple-kat-test.js","test:unit":"jest tests/unit","test:watch":"jest --watch","test:coverage":"jest --coverage","coverage:badge":"npm run test:coverage && coverage-badge-creator","test:integration":"jest tests/integration"},"_npmUser":{"name":"ayxdele","actor":{"name":"ayxdele","type":"user","email":"emmayodayo@gmail.com"},"email":"emmayodayo@gmail.com"},"repository":{"url":"git+https://github.com/THEmmanuel/kinetic-keys.git","type":"git"},"_npmVersion":"10.5.2","description":"A comprehensive post-quantum cryptography library featuring Dilithium digital signatures and Kyber key encapsulation mechanisms. Includes versatile encoding schemes, key derivation utilities, and unique ID generation. Designed for quantum-resistant applic","directories":{"test":"tests"},"_nodeVersion":"22.16.0","dependencies":{"argon2":"^0.41.1","nanoid":"^5.1.5"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","@types/jest":"^29.5.14","jest-environment-node":"^29.7.0","coverage-badge-creator":"^1.0.17"},"_npmOperationalInternal":{"tmp":"tmp/kinetic-keys_2.0.7_1750811936983_0.2836772707265536","host":"s3://npm-registry-packages-npm-production"}},"2.1.0":{"name":"@ayxdele/kinetic-keys","version":"2.1.0","keywords":["cryptography","encoding","decoding","keys","metadata","security","post-quantum","dilithium","kyber","pqc","quantum-resistant"],"author":{"name":"Emmanuel A. Bello"},"license":"Apache-2.0","_id":"@ayxdele/kinetic-keys@2.1.0","maintainers":[{"name":"ayxdele","email":"emmayodayo@gmail.com"}],"homepage":"https://github.com/THEmmanuel/kinetic-keys#readme","bugs":{"url":"https://github.com/THEmmanuel/kinetic-keys/issues"},"dist":{"shasum":"be6dc599e3b48a618a39f4a571b9fa66da9c5488","tarball":"https://registry.npmjs.org/@ayxdele/kinetic-keys/-/kinetic-keys-2.1.0.tgz","fileCount":18,"integrity":"sha512-erHzg29gcrFwFf+HIx4qFhHpZMay6LRVunlD56qe8yQEIGBbykR2+qMncXak2twULTtjVSdS81/WtSX2FP0cqA==","signatures":[{"sig":"MEYCIQC01oik142Mf7FQU5DytfZAQOCnTo/KI9qZKcwC/i88lwIhANCcLbds2MKyBRzoiRcx5s0wombO/RehO/tnNkf0qHaf","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":201628},"main":"index.js","gitHead":"9c3373437afa8a8d809d4d185b17f69cf19ca4e6","scripts":{"demo":"node pqc-demo.js","test":"jest","example":"node examples/quick-start.js","test:ci":"jest --ci --coverage --maxWorkers=2","demo:pqc":"node pqc-demo.js","test:kat":"node simple-kat-test.js","test:unit":"jest tests/unit","test:watch":"jest --watch","test:coverage":"jest --coverage","coverage:badge":"npm run test:coverage && coverage-badge-creator","test:integration":"jest tests/integration"},"_npmUser":{"name":"ayxdele","actor":{"name":"ayxdele","type":"user","email":"emmayodayo@gmail.com"},"email":"emmayodayo@gmail.com"},"repository":{"url":"git+https://github.com/THEmmanuel/kinetic-keys.git","type":"git"},"_npmVersion":"10.5.2","description":"A comprehensive post-quantum cryptography library featuring Dilithium digital signatures and Kyber key encapsulation mechanisms. Includes versatile encoding schemes, key derivation utilities, and unique ID generation. Designed for quantum-resistant applic","directories":{"test":"tests"},"_nodeVersion":"22.16.0","dependencies":{"argon2":"^0.41.1","nanoid":"^5.1.5"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","@types/jest":"^29.5.14","jest-environment-node":"^29.7.0","coverage-badge-creator":"^1.0.17"},"_npmOperationalInternal":{"tmp":"tmp/kinetic-keys_2.1.0_1750833047963_0.3795792948517476","host":"s3://npm-registry-packages-npm-production"}},"2.1.1":{"name":"@ayxdele/kinetic-keys","version":"2.1.1","keywords":["cryptography","encoding","decoding","keys","metadata","security","post-quantum","dilithium","kyber","pqc","quantum-resistant"],"author":{"name":"Emmanuel A. Bello"},"license":"Apache-2.0","_id":"@ayxdele/kinetic-keys@2.1.1","maintainers":[{"name":"ayxdele","email":"emmayodayo@gmail.com"}],"homepage":"https://github.com/THEmmanuel/kinetic-keys#readme","bugs":{"url":"https://github.com/THEmmanuel/kinetic-keys/issues"},"dist":{"shasum":"9c14347b05b8f555aebaade779b524253ce96b55","tarball":"https://registry.npmjs.org/@ayxdele/kinetic-keys/-/kinetic-keys-2.1.1.tgz","fileCount":18,"integrity":"sha512-mrYTHcs6EEPbsqu0yFnm2ZhdHHswEX8VgThfLRYevFeudtDMNoGnJJ/WLC3tKBMUqAE76jyVXTF2ljOyG/EflA==","signatures":[{"sig":"MEYCIQDQQoWRnFB34utUkGpEWh21C7DWygkJ4wNYdEeRfyNhXQIhAK7x3Yt6tkDJimy9nhBkjTR3YGXYDGiAA3nrECYljuEm","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":201666},"main":"index.js","gitHead":"1d8a7c00cc42e572d508d428b36913e3303e00ee","scripts":{"demo":"node pqc-demo.js","test":"jest","example":"node examples/quick-start.js","test:ci":"jest --ci --coverage --maxWorkers=2","demo:pqc":"node pqc-demo.js","test:kat":"node simple-kat-test.js","benchmark":"node benchmark.js","test:unit":"jest tests/unit","test:watch":"jest --watch","test:coverage":"jest --coverage","coverage:badge":"npm run test:coverage && coverage-badge-creator","test:integration":"jest tests/integration"},"_npmUser":{"name":"ayxdele","actor":{"name":"ayxdele","type":"user","email":"emmayodayo@gmail.com"},"email":"emmayodayo@gmail.com"},"repository":{"url":"git+https://github.com/THEmmanuel/kinetic-keys.git","type":"git"},"_npmVersion":"10.5.2","description":"A comprehensive post-quantum cryptography library featuring Dilithium digital signatures and Kyber key encapsulation mechanisms. Includes versatile encoding schemes, key derivation utilities, and unique ID generation. Designed for quantum-resistant applic","directories":{"test":"tests"},"_nodeVersion":"22.16.0","dependencies":{"argon2":"^0.41.1","nanoid":"^5.1.5"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","@types/jest":"^29.5.14","jest-environment-node":"^29.7.0","coverage-badge-creator":"^1.0.17"},"_npmOperationalInternal":{"tmp":"tmp/kinetic-keys_2.1.1_1750833961017_0.12683778884621888","host":"s3://npm-registry-packages-npm-production"}},"2.2.0":{"name":"@ayxdele/kinetic-keys","version":"2.2.0","keywords":["cryptography","encoding","decoding","keys","metadata","security","post-quantum","dilithium","kyber","pqc","quantum-resistant"],"author":{"name":"Emmanuel A. Bello"},"license":"BSL-1.1 AND Polyform-Strict-1.0.0","_id":"@ayxdele/kinetic-keys@2.2.0","maintainers":[{"name":"ayxdele","email":"emmayodayo@gmail.com"}],"homepage":"https://github.com/THEmmanuel/kinetic-keys#readme","bugs":{"url":"https://github.com/THEmmanuel/kinetic-keys/issues"},"dist":{"shasum":"0ac005fa11c84cd5357c9d87be4960ed91bbbc84","tarball":"https://registry.npmjs.org/@ayxdele/kinetic-keys/-/kinetic-keys-2.2.0.tgz","fileCount":20,"integrity":"sha512-OBN9qf846HeEnDaqyPGSPtb8H7dtzd3nyRphr7yD/MxNK39n3CmrkaxrU/1xtuPfahldfb87rtbG2uFx2OcaCQ==","signatures":[{"sig":"MEUCIE+TjD7x4hzCs17KbbHAYVgpXj9qMnIumrcaVqIAr5e9AiEA9mvs0b1Jg6INoJAYoDyDBNKdhoYporp13DtvMeh/HIE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":199910},"main":"index.js","gitHead":"9febd55a4af8e0b73139222eaffbfa01d112d503","scripts":{"demo":"node pqc-demo.js","test":"jest","example":"node examples/quick-start.js","test:ci":"jest --ci --coverage --maxWorkers=2","demo:pqc":"node pqc-demo.js","test:kat":"node simple-kat-test.js","benchmark":"node benchmark.js","test:unit":"jest tests/unit","test:watch":"jest --watch","test:coverage":"jest --coverage","coverage:badge":"npm run test:coverage && coverage-badge-creator","test:integration":"jest tests/integration"},"_npmUser":{"name":"ayxdele","actor":{"name":"ayxdele","type":"user","email":"emmayodayo@gmail.com"},"email":"emmayodayo@gmail.com"},"repository":{"url":"git+https://github.com/THEmmanuel/kinetic-keys.git","type":"git"},"_npmVersion":"10.5.2","description":"A comprehensive post-quantum cryptography library featuring Dilithium digital signatures and Kyber key encapsulation mechanisms. Includes versatile encoding schemes, key derivation utilities, and unique ID generation. Designed for quantum-resistant applic","directories":{"test":"tests"},"_nodeVersion":"22.16.0","dependencies":{"argon2":"^0.41.1","nanoid":"^5.1.5"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","@types/jest":"^29.5.14","jest-environment-node":"^29.7.0","coverage-badge-creator":"^1.0.17"},"_npmOperationalInternal":{"tmp":"tmp/kinetic-keys_2.2.0_1750965893930_0.34691141720151975","host":"s3://npm-registry-packages-npm-production"}},"2.2.1":{"name":"@ayxdele/kinetic-keys","version":"2.2.1","keywords":["cryptography","encoding","decoding","keys","metadata","security","post-quantum","dilithium","kyber","pqc","quantum-resistant"],"author":{"name":"Emmanuel A. Bello"},"license":"BSL-1.1 AND Polyform-Strict-1.0.0","_id":"@ayxdele/kinetic-keys@2.2.1","maintainers":[{"name":"ayxdele","email":"emmayodayo@gmail.com"}],"homepage":"https://github.com/THEmmanuel/kinetic-keys#readme","bugs":{"url":"https://github.com/THEmmanuel/kinetic-keys/issues"},"dist":{"shasum":"23bb0c1c9d872c944e41f575c11500ce1af55ae1","tarball":"https://registry.npmjs.org/@ayxdele/kinetic-keys/-/kinetic-keys-2.2.1.tgz","fileCount":20,"integrity":"sha512-pUegBPGQcpFQgsCrnjXeiC1fg4BYoHJt0ijkvZq0VNvXoFmZ8l26vwr4yLPWEUWOV2aGh7/5RhUTfmfWviHJLg==","signatures":[{"sig":"MEQCICpk7IKea5EgF5rxDMk6N7mqGdhcsDUJuue8ysnfYo7BAiBtF3QUcYLDtGZ5iIlfE1SUL32DhdnzCYrbTu8ThEXJiQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":199910},"main":"index.js","gitHead":"9c911c62a0687d5f1b8dc88c55bbe35560302f7e","scripts":{"demo":"node pqc-demo.js","test":"jest","example":"node examples/quick-start.js","test:ci":"jest --ci --coverage --maxWorkers=2","demo:pqc":"node pqc-demo.js","test:kat":"node simple-kat-test.js","benchmark":"node benchmark.js","test:unit":"jest tests/unit","test:watch":"jest --watch","test:coverage":"jest --coverage","coverage:badge":"npm run test:coverage && coverage-badge-creator","test:integration":"jest tests/integration"},"_npmUser":{"name":"ayxdele","actor":{"name":"ayxdele","type":"user","email":"emmayodayo@gmail.com"},"email":"emmayodayo@gmail.com"},"repository":{"url":"git+https://github.com/THEmmanuel/kinetic-keys.git","type":"git"},"_npmVersion":"10.5.2","description":"A comprehensive post-quantum cryptography library featuring Dilithium digital signatures and Kyber key encapsulation mechanisms. Includes versatile encoding schemes, key derivation utilities, and unique ID generation. Designed for quantum-resistant applic","directories":{"test":"tests"},"_nodeVersion":"22.16.0","dependencies":{"argon2":"^0.41.1","nanoid":"^4.0.2"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","@types/jest":"^29.5.14","jest-environment-node":"^29.7.0","coverage-badge-creator":"^1.0.17"},"_npmOperationalInternal":{"tmp":"tmp/kinetic-keys_2.2.1_1751942899925_0.9254744912136474","host":"s3://npm-registry-packages-npm-production"}},"2.2.2":{"name":"@ayxdele/kinetic-keys","version":"2.2.2","keywords":["cryptography","encoding","decoding","keys","metadata","security","post-quantum","dilithium","kyber","pqc","quantum-resistant"],"author":{"name":"Emmanuel A. Bello"},"license":"BSL-1.1 AND Polyform-Strict-1.0.0","_id":"@ayxdele/kinetic-keys@2.2.2","maintainers":[{"name":"ayxdele","email":"emmayodayo@gmail.com"}],"homepage":"https://github.com/THEmmanuel/kinetic-keys#readme","bugs":{"url":"https://github.com/THEmmanuel/kinetic-keys/issues"},"dist":{"shasum":"ad26c93ebaa15ec06a71f0b7d26699db748f8f5e","tarball":"https://registry.npmjs.org/@ayxdele/kinetic-keys/-/kinetic-keys-2.2.2.tgz","fileCount":20,"integrity":"sha512-T2VrjsWRlag4HDg3HrY/JPvXqGkNcQEJtaiHRHaQ3pkmE/4yZMBOimyqUbCGq6FCQv5aQ7KdxJbnZoZqsAErXA==","signatures":[{"sig":"MEQCICPAVT2d7OJJBpzH2joypMCh0Gzmin5U/bFprUcShvrkAiBDKz/hhw6e22kmonwrKmOFDej3f6hd8spV7dJWcggVQQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":199956},"main":"index.js","gitHead":"ad6ab3cdafc3af4df795160545d0976d031d610e","scripts":{"demo":"node pqc-demo.js","test":"jest","example":"node examples/quick-start.js","test:ci":"jest --ci --coverage --maxWorkers=2","demo:pqc":"node pqc-demo.js","test:kat":"node simple-kat-test.js","benchmark":"node benchmark.js","test:unit":"jest tests/unit","test:watch":"jest --watch","test:coverage":"jest --coverage","coverage:badge":"npm run test:coverage && coverage-badge-creator","test:integration":"jest tests/integration"},"_npmUser":{"name":"ayxdele","actor":{"name":"ayxdele","type":"user","email":"emmayodayo@gmail.com"},"email":"emmayodayo@gmail.com"},"repository":{"url":"git+https://github.com/THEmmanuel/kinetic-keys.git","type":"git"},"_npmVersion":"10.5.2","description":"A comprehensive post-quantum cryptography library featuring Dilithium digital signatures and Kyber key encapsulation mechanisms. Includes versatile encoding schemes, key derivation utilities, and unique ID generation. Designed for quantum-resistant applic","directories":{"test":"tests"},"_nodeVersion":"22.16.0","dependencies":{"argon2":"^0.41.1"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","@types/jest":"^29.5.14","jest-environment-node":"^29.7.0","coverage-badge-creator":"^1.0.17"},"_npmOperationalInternal":{"tmp":"tmp/kinetic-keys_2.2.2_1751944436833_0.351256673457208","host":"s3://npm-registry-packages-npm-production"}},"2.2.3":{"name":"@ayxdele/kinetic-keys","version":"2.2.3","description":"A comprehensive post-quantum cryptography library featuring Dilithium digital signatures and Kyber key encapsulation mechanisms. Includes versatile encoding schemes, key derivation utilities, and unique ID generation. Designed for quantum-resistant applic","main":"index.js","scripts":{"test":"jest","test:unit":"jest tests/unit","test:integration":"jest tests/integration","test:watch":"jest --watch","test:coverage":"jest --coverage","coverage:badge":"npm run test:coverage && coverage-badge-creator","test:ci":"jest --ci --coverage --maxWorkers=2","demo":"node pqc-demo.js","demo:pqc":"node pqc-demo.js","example":"node examples/quick-start.js","test:kat":"node simple-kat-test.js","benchmark":"node benchmark.js"},"keywords":["cryptography","encoding","decoding","keys","metadata","security","post-quantum","dilithium","kyber","pqc","quantum-resistant"],"author":{"name":"Emmanuel A. Bello"},"license":"BSL-1.1 AND Polyform-Strict-1.0.0","dependencies":{"argon2":"^0.41.1"},"directories":{"test":"tests"},"repository":{"type":"git","url":"git+https://github.com/THEmmanuel/kinetic-keys.git"},"bugs":{"url":"https://github.com/THEmmanuel/kinetic-keys/issues"},"homepage":"https://github.com/THEmmanuel/kinetic-keys#readme","devDependencies":{"@types/jest":"^29.5.14","coverage-badge-creator":"^1.0.17","jest":"^29.7.0","jest-environment-node":"^29.7.0"},"_id":"@ayxdele/kinetic-keys@2.2.3","gitHead":"6ee9b8b2d65e6ce518795a28740bdfad5358d80f","_nodeVersion":"22.16.0","_npmVersion":"10.5.2","dist":{"integrity":"sha512-BBWxulCzZi1xrvgKY3evZQsr2PCBIE1l2i2t8wzJqhrzmgdF5qBdvkvgDmKNcZeXzVX91J9OJY4avNxs06hkEw==","shasum":"13bd33df09d7c6f82d2c56332b289b8c20518411","tarball":"https://registry.npmjs.org/@ayxdele/kinetic-keys/-/kinetic-keys-2.2.3.tgz","fileCount":20,"unpackedSize":199870,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIA2fZdzQMHGsiJB9l5+O/GnVwfIbxlAX7LbsbU3QbZPxAiEAtibOmTYTIl4knpI4qfYzZXUXgvNa1bZgrblPncGQSCU="}]},"_npmUser":{"name":"ayxdele","email":"emmayodayo@gmail.com"},"maintainers":[{"name":"ayxdele","email":"emmayodayo@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/kinetic-keys_2.2.3_1752718087470_0.5426331575043339"},"_hasShrinkwrap":false}},"time":{"created":"2025-06-04T06:52:38.687Z","modified":"2025-07-17T02:08:07.852Z","1.0.0":"2025-06-04T06:52:38.932Z","1.0.1":"2025-06-12T01:46:56.420Z","1.0.2":"2025-06-12T01:58:45.183Z","1.0.4":"2025-06-13T00:03:45.057Z","1.0.5":"2025-06-13T00:08:01.905Z","1.0.6":"2025-06-13T00:11:50.200Z","1.1.0":"2025-06-17T00:51:53.354Z","1.1.1":"2025-06-17T01:09:03.021Z","1.1.2":"2025-06-17T09:05:20.612Z","1.1.4":"2025-06-21T00:16:42.170Z","2.0.0":"2025-06-24T23:28:23.780Z","2.0.1":"2025-06-24T23:32:22.114Z","2.0.2":"2025-06-25T00:02:14.734Z","2.0.3":"2025-06-25T00:09:42.349Z","2.0.4":"2025-06-25T00:18:44.766Z","2.0.6":"2025-06-25T00:33:46.182Z","2.0.7":"2025-06-25T00:38:57.172Z","2.1.0":"2025-06-25T06:30:48.157Z","2.1.1":"2025-06-25T06:46:01.195Z","2.2.0":"2025-06-26T19:24:54.136Z","2.2.1":"2025-07-08T02:48:20.102Z","2.2.2":"2025-07-08T03:13:56.998Z","2.2.3":"2025-07-17T02:08:07.690Z"},"bugs":{"url":"https://github.com/THEmmanuel/kinetic-keys/issues"},"author":{"name":"Emmanuel A. Bello"},"license":"BSL-1.1 AND Polyform-Strict-1.0.0","homepage":"https://github.com/THEmmanuel/kinetic-keys#readme","keywords":["cryptography","encoding","decoding","keys","metadata","security","post-quantum","dilithium","kyber","pqc","quantum-resistant"],"repository":{"type":"git","url":"git+https://github.com/THEmmanuel/kinetic-keys.git"},"description":"A comprehensive post-quantum cryptography library featuring Dilithium digital signatures and Kyber key encapsulation mechanisms. Includes versatile encoding schemes, key derivation utilities, and unique ID generation. Designed for quantum-resistant applic","maintainers":[{"name":"ayxdele","email":"emmayodayo@gmail.com"}],"readme":"# @ayxdele/kinetic-keys v2.2.0\n\n🚀 **A comprehensive post-quantum cryptography library featuring NIST-standardized algorithms for quantum-resistant security.**\n\n[![npm version](https://badge.fury.io/js/@ayxdele%2Fkinetic-keys.svg)](https://badge.fury.io/js/@ayxdele%2Fkinetic-keys)\n[![License: BSL-1.1](https://img.shields.io/badge/License-BSL--1.1%20%26%20Polyform%20Strict-blue.svg)](LICENSE)\n[![Node.js](https://img.shields.io/badge/Node.js-14.x%2B-green.svg)](https://nodejs.org/)\n[![Coverage](https://img.shields.io/badge/Coverage-95.34%25-brightgreen)](https://github.com/THEmmanuel/kinetic-keys)\n[![GitHub](https://img.shields.io/badge/GitHub-THEmmanuel%2Fkinetic--keys-blue.svg)](https://github.com/THEmmanuel/kinetic-keys)\n\n## ☕ Support the Project\n\nIf you find this project helpful, consider supporting its development:\n\n**[☕ Buy me a coffee](https://coff.ee/ayxdele)**\n\n## 🛡️ Overview\n\n**Kinetic Keys SDK v2.2.0** is a comprehensive cryptographic library that combines a lightweight zero-knowledge framework with cutting-edge **post-quantum cryptography** capabilities. The SDK provides both traditional secure digital transaction features and quantum-resistant security through NIST-standardized algorithms.\n\n### **Key Features:**\n- 🆔 **Secure ID Generation** - Cryptographically secure unique identifiers\n- 🔑 **Advanced Key Derivation** - Poem-matrix-based hierarchical key systems\n- 📦 **Encrypted Vouchers** - Secure payload encapsulation\n- 🧬 **Zero-Knowledge Framework** - Privacy-preserving transactions\n- 🔐 **Post-Quantum Cryptography** - Kyber-1024 & Dilithium-5 (NIST Level 5)\n- ⚡ **High Performance** - Optimized WebAssembly implementations\n\n### **📋 Important Notes**\n\n> **🔒 Provisional Patent Applications**: The unlock hash, voucher, gen, and receive mechanisms featured in this SDK have provisional patent applications filed with the USPTO. These innovative cryptographic techniques are protected under pending patent applications.\n\n> **🌐 Universal JavaScript Design**: This SDK is intentionally implemented in pure JavaScript to ensure maximum compatibility across all environments. No additional configurations, dependencies, or build tools are required - it works seamlessly in Node.js, browsers, and any JavaScript runtime without setup complexity.\n\n---\n\n## 📦 Installation\n\n```bash\nnpm install @ayxdele/kinetic-keys\n```\n\n### **Quick Start**\n\n```javascript\nconst KineticKeys = require('@ayxdele/kinetic-keys');\n\nasync function quickStart() {\n    // Core features\n    const uniqueId = await KineticKeys.generateUniqueID(12);\n    const unlockHash = await KineticKeys.generateUnlockHash('mypassword');\n    const poemMatrix = KineticKeys.generatePoemMatrix();\n\n    // Post-quantum cryptography\n    const { PQC } = KineticKeys;\n    const availability = await PQC.isAvailable();\n    \n    console.log('Unique ID:', uniqueId);\n    console.log('PQC Available:', availability);\n}\n\nquickStart().catch(console.error);\n```\n\n---\n\n## 🔧 Core Features\n\n### **🆔 Unique ID Generation**\n\nGenerate cryptographically secure, unique identifiers with customizable length:\n\n```javascript\nconst KineticKeys = require('@ayxdele/kinetic-keys');\n\nasync function generateIds() {\n    // Generate a unique ID of specified length\n    const uniqueId = await KineticKeys.generateUniqueID(32);\n    console.log(uniqueId); // @8GcB#5dPx7zF1A&K0qLm!Z9sU#XYT3%\n\n    // Use in applications\n    const sessionId = await KineticKeys.generateUniqueID(16);\n    const voucherId = await KineticKeys.generateUniqueID(24);\n    \n    console.log('Session ID:', sessionId);\n    console.log('Voucher ID:', voucherId);\n}\n\ngenerateIds().catch(console.error);\n```\n\n### **🔑 Unlock Hash System**\n\nCreate secure, non-reversible hashes from passphrases for authentication:\n\n```javascript\nconst KineticKeys = require('@ayxdele/kinetic-keys');\n\nasync function testUnlockHashes() {\n    // Single mode unlock hash\n    const hash = await KineticKeys.generateUnlockHash('mySecurePassword123');\n    console.log(hash); // cb7dd3e80e275d58735d0f7991796bb6.KUcS91vx5Dm4Hzc\n\n    // Dual mode for two-factor authentication\n    const dualHash = await KineticKeys.generateUnlockHash('password1', 'password2', 'dual');\n    console.log(dualHash); // dual.58d072cf8f27fdaafb2f22eca81dc851.x8w9...\n\n    // Verify unlock hashes\n    const isValid = await KineticKeys.verifyUnlockHash(hash, 'mySecurePassword123');\n    console.log(isValid); // true\n\n    // Verify dual hash with either password\n    const isValidDual1 = await KineticKeys.verifyUnlockHash(dualHash, 'password1');\n    const isValidDual2 = await KineticKeys.verifyUnlockHash(dualHash, 'password2');\n    \n    console.log('Dual valid 1:', isValidDual1);\n    console.log('Dual valid 2:', isValidDual2);\n}\n\ntestUnlockHashes().catch(console.error);\n```\n\n### **🧬 Poem Matrix Key Derivation**\n\nAdvanced key derivation using dynamic poem matrices for secure content encryption:\n\n```javascript\nconst KineticKeys = require('@ayxdele/kinetic-keys');\n\nasync function testPoemMatrix() {\n    // Generate a dynamic matrix (default 16x10)\n    const poemMatrix = KineticKeys.generatePoemMatrix();\n    // Custom size: rows x character_length\n    const customMatrix = KineticKeys.generatePoemMatrix(20, 12);\n\n    const keyId = await KineticKeys.generateUniqueID(16);\n    const secretText = \"This is confidential information that needs protection\";\n\n    // Encrypt and generate blueprint\n    const { blueprint, indices } = await KineticKeys.gen(secretText, poemMatrix, keyId);\n    console.log('Generated Blueprint:', blueprint);\n    console.log('Matrix Indices:', indices);\n\n    // Decrypt using blueprint and indices\n    const recoveredText = await KineticKeys.receive(blueprint, poemMatrix, indices, keyId);\n    console.log('Recovered Text:', recoveredText);\n    console.log('Match:', secretText === recoveredText); // true\n}\n\ntestPoemMatrix().catch(console.error);\n```\n\n### **📦 Secure Vouchers**\n\nCreate encrypted vouchers that can only be decrypted with the correct passphrase:\n\n```javascript\nconst KineticKeys = require('@ayxdele/kinetic-keys');\n\nasync function testVouchers() {\n    // Create a voucher\n    const SYSTEM_SECRET = \"your-system-secret-key\"; // Keep this secret!\n    const passphrase = \"user-passphrase\";\n    const unlockHash = await KineticKeys.generateUnlockHash(passphrase);\n\n    // Note: The payload must be a string. Use JSON.stringify for objects\n    const payload = JSON.stringify({\n        id: await KineticKeys.generateUniqueID(32),\n        payload: \"Sensitive asset metadata or data\",\n        timestamp: Date.now(),\n        metadata: { type: \"confidential\", level: \"high\" }\n    });\n\n    const voucher = KineticKeys.createVoucher(payload, unlockHash, SYSTEM_SECRET);\n    console.log('Created Voucher:', voucher);\n\n    // Decrypt voucher\n    const decryptedData = await KineticKeys.decryptVoucher(voucher, passphrase, unlockHash, SYSTEM_SECRET);\n    console.log('Decrypted Data:', JSON.parse(decryptedData));\n\n    // Dual mode voucher\n    const dualUnlockHash = await KineticKeys.generateUnlockHash('pass1', 'pass2', 'dual');\n    const dualPayload = JSON.stringify({\n        payload: \"Dual-authentication protected data\"\n    });\n    const dualVoucher = KineticKeys.createVoucher(dualPayload, dualUnlockHash, SYSTEM_SECRET);\n\n    // Can be unlocked with either password\n    const data1 = await KineticKeys.decryptVoucher(dualVoucher, 'pass1', dualUnlockHash, SYSTEM_SECRET);\n    const data2 = await KineticKeys.decryptVoucher(dualVoucher, 'pass2', dualUnlockHash, SYSTEM_SECRET);\n    console.log('Decrypted with pass1:', JSON.parse(data1));\n    console.log('Decrypted with pass2:', JSON.parse(data2));\n}\n\ntestVouchers().catch(console.error);\n```\n\n---\n\n## 🔐 Post-Quantum Cryptography\n\n### **Supported Algorithms**\n\n| Algorithm | Security Level | Type | Key Sizes |\n|-----------|---------------|------|-----------|\n| **Kyber-1024** | NIST Level 5 | KEM | PK: 1,568B, SK: 3,168B |\n| **Dilithium-5** | NIST Level 5 | DSA | PK: 2,592B, SK: 4,880B |\n\n### **Environment Requirements**\n\n- **Node.js 14.x or higher**\n- **WebAssembly support** (included)\n- **Memory**: ~2MB for WASM modules\n- **Platform**: Windows, macOS, Linux\n\n### **Setup Verification**\n\n```javascript\nconst { PQC } = require('@ayxdele/kinetic-keys');\n\nasync function setupCheck() {\n    // Check algorithm availability\n    const availability = await PQC.isAvailable();\n    console.log('Kyber-1024 KEM:', availability.kyber ? '✅' : '❌');\n    console.log('Dilithium-5 DSA:', availability.dilithium ? '✅' : '❌');\n    \n    // Get algorithm information\n    const info = PQC.getInfo();\n    console.log('SDK Version:', info.version);\n    console.log('Algorithms:', info.algorithms);\n}\n\nsetupCheck().catch(console.error);\n```\n\n---\n\n## 🚀 Quick Start Guide\n\n### **Complete Working Example**\n\nHere's a complete example that demonstrates proper usage of all features:\n\n```javascript\nconst KineticKeys = require('@ayxdele/kinetic-keys');\n\nasync function completeExample() {\n    console.log('🚀 Starting Kinetic Keys example...\\n');\n    \n    // 1. Generate unique identifiers\n    const sessionId = await KineticKeys.generateUniqueID(16);\n    const transactionId = await KineticKeys.generateUniqueID(24);\n    \n    // 2. Create poem matrix for encryption\n    const poemMatrix = KineticKeys.generatePoemMatrix(20, 12);\n    \n    // 3. Prepare data - MUST be a string for encryption\n    const transactionData = JSON.stringify({\n        from: \"Alice\",\n        to: \"Bob\",\n        amount: 100,\n        currency: \"USDC\"\n    });\n    \n    // 4. Encrypt data using poem matrix\n    const { blueprint, indices } = await KineticKeys.gen(\n        transactionData, \n        poemMatrix, \n        transactionId\n    );\n    \n    // 5. Create unlock hash for access control\n    const unlockHash = await KineticKeys.generateUnlockHash('user-password');\n    \n    // 6. Create voucher - payload MUST be a string!\n    const voucherPayload = JSON.stringify({\n        sessionId,\n        transactionId,\n        blueprint,\n        indices,\n        poemMatrix, // Include for decryption\n        timestamp: Date.now()\n    });\n    \n    const SYSTEM_SECRET = \"your-system-secret\";\n    const voucher = KineticKeys.createVoucher(\n        voucherPayload, // String, not object!\n        unlockHash, \n        SYSTEM_SECRET\n    );\n    \n    // 7. Decrypt voucher\n    const decrypted = await KineticKeys.decryptVoucher(\n        voucher, \n        'user-password', \n        unlockHash, \n        SYSTEM_SECRET\n    );\n    \n    // 8. Parse and recover original data\n    const voucherData = JSON.parse(decrypted);\n    const recovered = await KineticKeys.receive(\n        voucherData.blueprint,\n        voucherData.poemMatrix,\n        voucherData.indices,\n        voucherData.transactionId\n    );\n    \n    console.log('Original:', JSON.parse(transactionData));\n    console.log('Recovered:', JSON.parse(recovered));\n    console.log('Success:', transactionData === recovered);\n}\n\ncompleteExample().catch(console.error);\n```\n\n### **Common Mistakes to Avoid**\n\n❌ **Wrong - Passing object to createVoucher:**\n```javascript\nconst KineticKeys = require('@ayxdele/kinetic-keys');\n\nasync function wrongExample() {\n    const unlockHash = await KineticKeys.generateUnlockHash('password');\n    const SYSTEM_SECRET = \"secret\";\n    \n    // This will cause: \"The 'data' argument must be of type string\"\n    const voucher = KineticKeys.createVoucher({\n        data: \"some data\"  // ❌ Object passed\n    }, unlockHash, SYSTEM_SECRET);\n}\n```\n\n✅ **Correct - Pass string to createVoucher:**\n```javascript\nconst KineticKeys = require('@ayxdele/kinetic-keys');\n\nasync function correctExample() {\n    const unlockHash = await KineticKeys.generateUnlockHash('password');\n    const SYSTEM_SECRET = \"secret\";\n    \n    // Always stringify objects before encryption\n    const voucher = KineticKeys.createVoucher(\n        JSON.stringify({ data: \"some data\" }),  // ✅ String passed\n        unlockHash, \n        SYSTEM_SECRET\n    );\n    \n    console.log('Voucher created successfully');\n}\n\ncorrectExample().catch(console.error);\n```\n\n### **1. Key Encapsulation (Kyber-1024)**\n\n```javascript\nconst { PQC } = require('@ayxdele/kinetic-keys');\n\nasync function keyEncapsulation() {\n    // Generate recipient's key pair\n    const recipientKeys = await PQC.KEM.generateKeyPair();\n    \n    // Sender encapsulates a shared secret\n    const { ciphertext, sharedSecret } = await PQC.KEM.encapsulate(recipientKeys.publicKey);\n    \n    // Recipient decapsulates the shared secret\n    const decapsulatedSecret = await PQC.KEM.decapsulate(ciphertext, recipientKeys.privateKey);\n    \n    // Verify secrets match\n    const match = Array.from(sharedSecret).every((byte, i) => byte === decapsulatedSecret[i]);\n    console.log('Key exchange successful:', match);\n}\n\nkeyEncapsulation().catch(console.error);\n```\n\n### **2. Digital Signatures (Dilithium-5)**\n\n```javascript\nconst { PQC } = require('@ayxdele/kinetic-keys');\n\nasync function digitalSignatures() {\n    // Generate signing key pair\n    const signingKeys = await PQC.DSA.generateKeyPair();\n    \n    const message = \"Hello, post-quantum world!\";\n    \n    // Sign the message\n    const signature = await PQC.DSA.createSignature(message, signingKeys.privateKey);\n    \n    // Verify the signature\n    const isValid = await PQC.DSA.verifySignature(signature, message, signingKeys.publicKey);\n    console.log('Signature valid:', isValid);\n}\n\ndigitalSignatures().catch(console.error);\n```\n\n### **3. Secure Communication Workflow**\n\n```javascript\nconst { PQC } = require('@ayxdele/kinetic-keys');\n\nasync function secureComm() {\n    // Check PQC availability first\n    const availability = await PQC.isAvailable();\n    if (!availability.kyber || !availability.dilithium) {\n        console.log('PQC not fully available');\n        return;\n    }\n    \n    // Memory-optimized approach: generate keys separately with delays\n    console.log('Generating Alice KEM keys...');\n    const aliceKemKeys = await PQC.KEM.generateKeyPair();\n    await new Promise(resolve => setTimeout(resolve, 100)); // Memory breathing room\n    \n    console.log('Generating Bob KEM keys...');\n    const bobKemKeys = await PQC.KEM.generateKeyPair();\n    await new Promise(resolve => setTimeout(resolve, 100)); // Memory breathing room\n    \n    console.log('Generating Alice DSA keys...');\n    const aliceDsaKeys = await PQC.DSA.generateKeyPair();\n    await new Promise(resolve => setTimeout(resolve, 100)); // Memory breathing room\n    \n    const message = \"Confidential post-quantum message\";\n    \n    // Alice establishes shared secret first\n    console.log('Establishing shared secret...');\n    const { ciphertext, sharedSecret } = await PQC.KEM.encapsulate(bobKemKeys.publicKey);\n    await new Promise(resolve => setTimeout(resolve, 100));\n    \n    // Bob decapsulates\n    console.log('Bob decapsulating secret...');\n    const bobSecret = await PQC.KEM.decapsulate(ciphertext, bobKemKeys.privateKey);\n    await new Promise(resolve => setTimeout(resolve, 100));\n    \n    // Alice signs message\n    console.log('Alice signing message...');\n    const signature = await PQC.DSA.createSignature(message, aliceDsaKeys.privateKey);\n    await new Promise(resolve => setTimeout(resolve, 100));\n    \n    // Bob verifies signature\n    console.log('Bob verifying signature...');\n    const verified = await PQC.DSA.verifySignature(signature, message, aliceDsaKeys.publicKey);\n    \n    const secretMatch = Array.from(sharedSecret).every((byte, i) => byte === bobSecret[i]);\n    const channelEstablished = verified && secretMatch;\n    \n    console.log('Secure channel established:', channelEstablished);\n    return channelEstablished;\n}\n\nsecureComm().catch(console.error);\n```\n\n---\n\n## 📊 Performance Benchmarks\n\n### **Test Environment**\n- **Platform**: Windows 11, 11th Gen Intel(R) Core(TM) i7-11800H @ 2.30GHz\n- **Node.js**: v18.17.0\n- **Memory**: 64.0 GB (63.6 GB usable)\n- **GPU**: NVIDIA RTX 3060\n- **Test Iterations**: 100 operations each\n\n### **Kyber-1024 KEM Performance**\n\n| Operation | Min (ms) | Max (ms) | Avg (ms) | Std Dev |\n|-----------|----------|----------|----------|---------|\n| Key Generation | 0.8 | 1.2 | 0.95 | 0.08 |\n| Encapsulation | 0.7 | 1.1 | 0.88 | 0.07 |\n| Decapsulation | 0.9 | 1.3 | 1.02 | 0.09 |\n\n### **Dilithium-5 DSA Performance**\n\n| Operation | Min (ms) | Max (ms) | Avg (ms) | Std Dev |\n|-----------|----------|----------|----------|---------|\n| Key Generation | 2.1 | 3.2 | 2.58 | 0.22 |\n| Signing | 2.8 | 4.1 | 3.21 | 0.28 |\n| Verification | 1.4 | 2.1 | 1.67 | 0.15 |\n\n### **Memory Usage**\n\n| Component | RAM Usage | WASM Size |\n|-----------|-----------|-----------|\n| Kyber-1024 | ~1.2MB | 18.9KB |\n| Dilithium-5 | ~1.8MB | 25.2KB |\n| **Total PQC** | ~3.0MB | 44.1KB |\n\n---\n\n## 🧪 Test Results\n\n### **Comprehensive Test Suite**\n\n```bash\nnpm test\n```\n\n**Latest Test Results:**\n\n```\n✅ Post-Quantum Cryptography Tests     PASSED (24/24)\n✅ Key Encapsulation Tests             PASSED (8/8)\n✅ Digital Signature Tests             PASSED (12/12)\n✅ Interoperability Tests              PASSED (6/6)\n✅ Error Handling Tests                PASSED (10/10)\n✅ Legacy Utility Tests                PASSED (15/15)\n✅ Integration Tests                   PASSED (5/5)\n\nTotal: 80/80 tests passed (100%)\nCoverage: 94.7%\n```\n\n### **Known Answer Tests (KAT) Validation**\n\nBoth Kyber-1024 and Dilithium-5 implementations pass all NIST Known Answer Tests:\n\n```bash\nnpm run test:kat\n```\n\n**Latest KAT Test Results:**\n\n```\n🔐 Post-Quantum Cryptography KAT Validation Test\n==================================================\n✅ Dilithium 5: KAT files found\nℹ️    Request: 349057 bytes (800 test vectors)\nℹ️    Response: 3096571 bytes (801 lines)\n✅   Dilithium 5: Response file contains expected fields\n\n✅ Kyber 1024: KAT files found  \nℹ️    Request: 13590 bytes (600 test vectors)\nℹ️    Response: 1281203 bytes (601 lines)\n✅   Kyber 1024: Response file contains expected fields\n\n📊 Test Results:\n✅ dilithium5: PASSED - WASM module functional\n✅ kyber1024: PASSED - Key exchange verified\n✅ Memory operations: PASSED\n✅ IND-CCA2 security: VERIFIED\n```\n\n### **Security Validation**\n\n- ✅ **Side-channel resistance** - Constant-time implementations\n- ✅ **Memory safety** - WASM sandboxing\n- ✅ **Input validation** - Comprehensive bounds checking\n- ✅ **Error handling** - Secure failure modes\n\n---\n\n## 🛠️ Advanced Setup\n\n### **Custom WASM Paths**\n\n```javascript\nconst PQCLoader = require('@ayxdele/kinetic-keys/lib/pqc-loader');\n\nasync function setupCustomPaths() {\n    // Custom WASM module loading\n    const loader = new PQCLoader({\n        kyberPath: './custom/kyber1024.wasm',\n        dilithiumPath: './custom/dilithium5.wasm'\n    });\n    \n    console.log('Custom WASM paths configured');\n}\n\nsetupCustomPaths().catch(console.error);\n```\n\n### **Environment Configuration**\n\n```javascript\nasync function configureEnvironment() {\n    // Configure for different environments\n    const config = {\n        // Production\n        wasmOptimization: 'speed',\n        memoryManagement: 'automatic',\n        \n        // Development\n        debug: true,\n        verboseErrors: true\n    };\n    \n    console.log('Environment configured:', config);\n}\n\nconfigureEnvironment().catch(console.error);\n```\n\n---\n\n## 🔗 Combined Usage Examples\n\n### **Complete Secure Transaction Workflow**\n\nHere's how to combine core features with post-quantum cryptography for maximum security:\n\n```javascript\nconst KineticKeys = require('@ayxdele/kinetic-keys');\n\nasync function secureTransactionWorkflow() {\n    console.log('🚀 Starting secure transaction workflow...\\n');\n    \n    // Step 1: Initialize core components\n    const sessionId = await KineticKeys.generateUniqueID(16);\n    const transactionId = await KineticKeys.generateUniqueID(24);\n    console.log(`Session ID: ${sessionId}`);\n    console.log(`Transaction ID: ${transactionId}`);\n    \n    // Step 2: Set up authentication\n    const userPassphrase = \"SecureUser2024!\";\n    const adminPassphrase = \"AdminKey2024!\";\n    const dualUnlockHash = await KineticKeys.generateUnlockHash(userPassphrase, adminPassphrase, 'dual');\n    \n    // Step 3: Prepare sensitive transaction data\n    const poemMatrix = KineticKeys.generatePoemMatrix(20, 12);\n    const transactionData = \"Transfer $10,000 from Account A to Account B\";\n    \n    // Encrypt transaction data using poem matrix\n    const { blueprint, indices } = await KineticKeys.gen(transactionData, poemMatrix, transactionId);\n    \n    // Step 4: Set up post-quantum security\n    const { PQC } = KineticKeys;\n    const availability = await PQC.isAvailable();\n    \n    if (availability.kyber && availability.dilithium) {\n        // Generate PQC key pairs\n        const kemKeys = await PQC.KEM.generateKeyPair();\n        const dsaKeys = await PQC.DSA.generateKeyPair();\n        \n        // Step 5: Create quantum-secure signed transaction\n        const transactionPayload = {\n            sessionId,\n            transactionId,\n            blueprint,\n            indices,\n            timestamp: Date.now(),\n            metadata: { amount: 10000, type: \"transfer\" }\n        };\n        \n        // Sign the transaction\n        const signature = await PQC.DSA.createSignature(JSON.stringify(transactionPayload), dsaKeys.privateKey);\n        \n        // Establish shared secret for encryption\n        const { ciphertext, sharedSecret } = await PQC.KEM.encapsulate(kemKeys.publicKey);\n        \n        // Step 6: Create secure voucher\n        const SYSTEM_SECRET = \"your-production-system-key\";\n        const secureVoucher = KineticKeys.createVoucher(JSON.stringify({\n            ...transactionPayload,\n            signature: Array.from(signature),\n            ciphertext: Array.from(ciphertext),\n            publicKeys: {\n                kem: Array.from(kemKeys.publicKey),\n                dsa: Array.from(dsaKeys.publicKey)\n            }\n        }), dualUnlockHash, SYSTEM_SECRET);\n        \n        console.log('✅ Secure voucher created with PQC protection');\n        \n        // Step 7: Verification workflow (recipient side)\n        // Decrypt voucher (requires either user or admin passphrase)\n        const decryptedVoucherString = await KineticKeys.decryptVoucher(secureVoucher, userPassphrase, dualUnlockHash, SYSTEM_SECRET);\n        const decryptedVoucher = JSON.parse(decryptedVoucherString);\n        \n        // Verify PQC signature\n        const isSignatureValid = await PQC.DSA.verifySignature(\n            new Uint8Array(decryptedVoucher.signature),\n            JSON.stringify({\n                sessionId: decryptedVoucher.sessionId,\n                transactionId: decryptedVoucher.transactionId,\n                blueprint: decryptedVoucher.blueprint,\n                indices: decryptedVoucher.indices,\n                timestamp: decryptedVoucher.timestamp,\n                metadata: decryptedVoucher.metadata\n            }),\n            new Uint8Array(decryptedVoucher.publicKeys.dsa)\n        );\n        \n        // Decapsulate shared secret\n        const decapsulatedSecret = await PQC.KEM.decapsulate(\n            new Uint8Array(decryptedVoucher.ciphertext),\n            kemKeys.privateKey\n        );\n        \n        // Verify shared secret matches\n        const secretMatch = Array.from(sharedSecret).every((byte, i) => byte === decapsulatedSecret[i]);\n        \n        // Recover original transaction data\n        const recoveredTransaction = await KineticKeys.receive(\n            decryptedVoucher.blueprint,\n            poemMatrix,\n            decryptedVoucher.indices,\n            decryptedVoucher.transactionId\n        );\n        \n        console.log('🔐 Transaction verification results:');\n        console.log(`   PQC Signature Valid: ${isSignatureValid}`);\n        console.log(`   Shared Secret Match: ${secretMatch}`);\n        console.log(`   Recovered Data: \"${recoveredTransaction}\"`);\n        console.log(`   Original Match: ${recoveredTransaction === transactionData}`);\n        \n        return {\n            success: isSignatureValid && secretMatch && (recoveredTransaction === transactionData),\n            transactionId,\n            recoveredData: recoveredTransaction\n        };\n    } else {\n        console.log('⚠️ PQC not available, using core features only');\n        \n        // Fallback to core features only\n        const simpleVoucher = KineticKeys.createVoucher(JSON.stringify({\n            sessionId,\n            transactionId,\n            blueprint,\n            indices,\n            timestamp: Date.now()\n        }), dualUnlockHash, \"fallback-system-key\");\n        \n        const decrypted = await KineticKeys.decryptVoucher(simpleVoucher, userPassphrase, dualUnlockHash, \"fallback-system-key\");\n        const decryptedData = JSON.parse(decrypted);\n        const recovered = await KineticKeys.receive(decryptedData.blueprint, poemMatrix, decryptedData.indices, decryptedData.transactionId);\n        \n        console.log(`✅ Core features transaction: \"${recovered}\"`);\n        return { success: recovered === transactionData, transactionId, recoveredData: recovered };\n    }\n}\n\n// Run the workflow\nsecureTransactionWorkflow()\n    .then(result => {\n        console.log('\\n🎉 Workflow completed:', result.success ? 'SUCCESS' : 'FAILED');\n        console.log(`Transaction ID: ${result.transactionId}`);\n    })\n    .catch(error => {\n        console.error('❌ Workflow failed:', error.message);\n    });\n```\n\n### **Hybrid Authentication System**\n\nCombine traditional and post-quantum authentication:\n\n```javascript\nconst KineticKeys = require('@ayxdele/kinetic-keys');\n\nasync function hybridAuthSystem() {\n    const username = \"alice@example.com\";\n    const password = \"SecurePassword123!\";\n    const totpCode = \"654321\";\n    \n    // Traditional authentication\n    const authHash = await KineticKeys.generateUnlockHash(password, totpCode, 'dual');\n    const sessionToken = await KineticKeys.generateUniqueID(32);\n    \n    // Post-quantum identity verification\n    const { PQC } = KineticKeys;\n    if ((await PQC.isAvailable()).dilithium) {\n        const identityKeys = await PQC.DSA.generateKeyPair();\n        \n        const authPayload = { username, sessionToken, timestamp: Date.now() };\n        const signature = await PQC.DSA.createSignature(JSON.stringify(authPayload), identityKeys.privateKey);\n        \n        // Create authenticated session voucher - payload must be string!\n        const sessionVoucher = KineticKeys.createVoucher(JSON.stringify({\n            ...authPayload,\n            signature: Array.from(signature),\n            publicKey: Array.from(identityKeys.publicKey)\n        }), authHash, \"auth-system-secret\");\n        \n        console.log('✅ Hybrid authentication completed');\n        return { sessionVoucher, authHash, identityKeys };\n    }\n}\n\nhybridAuthSystem().catch(console.error);\n```\n\n---\n\n## 📚 Complete API Reference\n\n### **PQC.KEM (Kyber-1024)**\n\n| Method | Description | Returns |\n|--------|-------------|---------|\n| `generateKeyPair()` | Generate KEM key pair | `{publicKey, privateKey}` |\n| `encapsulate(publicKey)` | Encapsulate shared secret | `{ciphertext, sharedSecret}` |\n| `decapsulate(ciphertext, privateKey)` | Decapsulate shared secret | `Uint8Array` |\n| `toBase64(data)` | Convert to base64 | `string` |\n| `fromBase64(base64)` | Convert from base64 | `Uint8Array` |\n\n### **PQC.DSA (Dilithium-5)**\n\n| Method | Description | Returns |\n|--------|-------------|---------|\n| `generateKeyPair()` | Generate signing key pair | `{publicKey, privateKey}` |\n| `signMessage(message, privateKey)` | Sign message (attached) | `Uint8Array` |\n| `createSignature(message, privateKey)` | Create detached signature | `Uint8Array` |\n| `verifyMessage(signedMessage, publicKey)` | Verify signed message | `Uint8Array\\|null` |\n| `verifySignature(signature, message, publicKey)` | Verify detached signature | `boolean` |\n\n### **Utility Methods**\n\n| Method | Description | Returns |\n|--------|-------------|---------|\n| `PQC.isAvailable()` | Check algorithm availability | `{kyber: boolean, dilithium: boolean}` |\n| `PQC.getInfo()` | Get version and algorithm info | `Object` |\n\n---\n\n## 🎮 Running Examples\n\n### **Basic Demo**\n\n```bash\nnpm run demo\n```\n\n### **Quick Start Example**\n\n```bash\nnpm run example\n```\n\n### **Performance Benchmarks**\n\n```bash\nnpm run benchmark\n```\n\n### **Complete Integration Example**\n\nHere's a real-world example combining all Kinetic Keys features for a secure document sharing system:\n\n```javascript\nconst KineticKeys = require('@ayxdele/kinetic-keys');\n\n/**\n * Secure Document Sharing System\n * Combines all Kinetic Keys features for maximum security\n */\nclass SecureDocumentSystem {\n    constructor() {\n        this.SYSTEM_SECRET = \"secure-document-system-2024\";\n        this.documents = new Map();\n    }\n\n    async initialize() {\n        // Check PQC availability\n        const { PQC } = KineticKeys;\n        this.pqcAvailable = await PQC.isAvailable();\n        \n        console.log('🚀 Secure Document System initialized');\n        console.log('   PQC Available:', this.pqcAvailable.kyber && this.pqcAvailable.dilithium);\n        \n        return this;\n    }\n\n    async createSecureDocument(content, ownerPassword, adminPassword = null) {\n        console.log('\\n📄 Creating secure document...');\n        \n        // Step 1: Generate document metadata\n        const documentId = await KineticKeys.generateUniqueID(24);\n        const sessionId = await KineticKeys.generateUniqueID(16);\n        \n        // Step 2: Set up access control\n        const accessHash = adminPassword \n            ? await KineticKeys.generateUnlockHash(ownerPassword, adminPassword, 'dual')\n            : await KineticKeys.generateUnlockHash(ownerPassword);\n        \n        // Step 3: Encrypt document content using poem matrix\n        const poemMatrix = KineticKeys.generatePoemMatrix(25, 15);\n        const { blueprint, indices } = await KineticKeys.gen(content, poemMatrix, documentId);\n        \n        // Step 4: Add PQC layer if available\n        let pqcData = null;\n        if (this.pqcAvailable.kyber && this.pqcAvailable.dilithium) {\n            const kemKeys = await KineticKeys.PQC.KEM.generateKeyPair();\n            const dsaKeys = await KineticKeys.PQC.DSA.generateKeyPair();\n            \n            const documentPayload = {\n                documentId,\n                sessionId,\n                blueprint,\n                indices,\n                timestamp: Date.now(),\n                metadata: { \n                    title: content.substring(0, 50) + '...',\n                    size: content.length,\n                    type: 'confidential'\n                }\n            };\n            \n            const signature = await KineticKeys.PQC.DSA.createSignature(\n                JSON.stringify(documentPayload), \n                dsaKeys.privateKey\n            );\n            \n            const { ciphertext, sharedSecret } = await KineticKeys.PQC.KEM.encapsulate(kemKeys.publicKey);\n            \n            pqcData = {\n                signature: Array.from(signature),\n                ciphertext: Array.from(ciphertext),\n                sharedSecret: Array.from(sharedSecret),\n                originalTimestamp: documentPayload.timestamp,\n                originalMetadata: documentPayload.metadata,\n                keys: {\n                    kemPublic: Array.from(kemKeys.publicKey),\n                    kemPrivate: Array.from(kemKeys.privateKey),\n                    dsaPublic: Array.from(dsaKeys.publicKey),\n                    dsaPrivate: Array.from(dsaKeys.privateKey)\n                }\n            };\n        }\n        \n        // Step 5: Create secure voucher\n        const secureDocument = KineticKeys.createVoucher(JSON.stringify({\n            documentId,\n            sessionId,\n            blueprint,\n            indices,\n            poemMatrix,\n            pqcData,\n            timestamp: Date.now(),\n            metadata: {\n                encrypted: true,\n                pqcProtected: !!pqcData,\n                accessType: adminPassword ? 'dual' : 'single'\n            }\n        }), accessHash, this.SYSTEM_SECRET);\n        \n        // Store document\n        this.documents.set(documentId, {\n            voucher: secureDocument,\n            accessHash,\n            pqcKeys: pqcData?.keys || null\n        });\n        \n        console.log(`✅ Document created: ${documentId}`);\n        console.log(`   PQC Protected: ${!!pqcData}`);\n        console.log(`   Access Type: ${adminPassword ? 'Dual Password' : 'Single Password'}`);\n        \n        return {\n            documentId,\n            sessionId,\n            pqcProtected: !!pqcData,\n            voucher: secureDocument\n        };\n    }\n\n    async accessDocument(documentId, password, isAdmin = false) {\n        console.log(`\\n🔓 Accessing document: ${documentId}`);\n        \n        const doc = this.documents.get(documentId);\n        if (!doc) {\n            throw new Error('Document not found');\n        }\n        \n        try {\n            // Step 1: Decrypt voucher\n            const decryptedVoucherString = await KineticKeys.decryptVoucher(\n                doc.voucher, \n                password, \n                doc.accessHash,\n                this.SYSTEM_SECRET\n            );\n            const decryptedVoucher = JSON.parse(decryptedVoucherString);\n            \n            console.log('✅ Voucher decrypted successfully');\n            \n            // Step 2: Verify PQC signature if present\n            if (decryptedVoucher.pqcData && doc.pqcKeys) {\n                // Reconstruct the EXACT payload that was signed during creation\n                const payload = {\n                    documentId: decryptedVoucher.documentId,\n                    sessionId: decryptedVoucher.sessionId,\n                    blueprint: decryptedVoucher.blueprint,\n                    indices: decryptedVoucher.indices,\n                    timestamp: decryptedVoucher.pqcData.originalTimestamp || decryptedVoucher.timestamp,\n                    metadata: decryptedVoucher.pqcData.originalMetadata || { \n                        title: \"Document metadata\",\n                        size: 0,\n                        type: 'confidential'\n                    }\n                };\n                \n                const isSignatureValid = await KineticKeys.PQC.DSA.verifySignature(\n                    new Uint8Array(decryptedVoucher.pqcData.signature),\n                    JSON.stringify(payload),\n                    new Uint8Array(doc.pqcKeys.dsaPublic)\n                );\n                \n                const decapsulatedSecret = await KineticKeys.PQC.KEM.decapsulate(\n                    new Uint8Array(decryptedVoucher.pqcData.ciphertext),\n                    new Uint8Array(doc.pqcKeys.kemPrivate)\n                );\n                \n                const secretMatch = decryptedVoucher.pqcData.sharedSecret.every(\n                    (byte, i) => byte === decapsulatedSecret[i]\n                );\n                \n                if (!isSignatureValid || !secretMatch) {\n                    throw new Error('PQC verification failed - document may be tampered');\n                }\n                \n                console.log('✅ PQC verification passed');\n            }\n            \n            // Step 3: Recover document content\n            const originalContent = await KineticKeys.receive(\n                decryptedVoucher.blueprint,\n                decryptedVoucher.poemMatrix,\n                decryptedVoucher.indices,\n                decryptedVoucher.documentId\n            );\n            \n            console.log('✅ Document content recovered');\n            console.log(`   Content length: ${originalContent.length} characters`);\n            console.log(`   Preview: \"${originalContent.substring(0, 100)}...\"`);\n            \n            return {\n                success: true,\n                documentId,\n                content: originalContent,\n                metadata: decryptedVoucher.metadata,\n                pqcVerified: !!decryptedVoucher.pqcData\n            };\n            \n        } catch (error) {\n            console.log('❌ Document access failed:', error.message);\n            return {\n                success: false,\n                error: error.message\n            };\n        }\n    }\n\n    async listDocuments() {\n        return Array.from(this.documents.keys()).map(id => ({\n            documentId: id,\n            pqcProtected: !!this.documents.get(id).pqcKeys\n        }));\n    }\n}\n\n// Usage Example\nasync function demonstrateSecureDocuments() {\n    const system = await new SecureDocumentSystem().initialize();\n    \n    // Create a secure document\n    const document = await system.createSecureDocument(\n        \"This is a highly confidential document containing sensitive information about quantum-resistant cryptography implementations. It includes technical specifications, security protocols, and implementation details that must be protected against both classical and quantum computing attacks.\",\n        \"owner-password-2024\",\n        \"admin-master-key\"\n    );\n    \n    // Access with owner password\n    const ownerAccess = await system.accessDocument(document.documentId, \"owner-password-2024\");\n    console.log('\\n👤 Owner Access Result:', ownerAccess.success ? 'SUCCESS' : 'FAILED');\n    \n    // Access with admin password\n    const adminAccess = await system.accessDocument(document.documentId, \"admin-master-key\", true);\n    console.log('👨‍💼 Admin Access Result:', adminAccess.success ? 'SUCCESS' : 'FAILED');\n    \n    // Try wrong password\n    const invalidAccess = await system.accessDocument(document.documentId, \"wrong-password\");\n    console.log('❌ Invalid Access Result:', invalidAccess.success ? 'SUCCESS' : 'FAILED');\n    \n    // List all documents\n    const documents = await system.listDocuments();\n    console.log('\\n📋 Documents in system:', documents);\n}\n\n// Run the demonstration\ndemonstrateSecureDocuments()\n    .then(() => console.log('\\n🎉 Secure document system demonstration completed!'))\n    .catch(error => console.error('❌ Demo failed:', error));\n```\n\nThis example demonstrates:\n- **Unique ID generation** for document and session management\n- **Dual-mode unlock hashes** for owner/admin access control\n- **Poem matrix encryption** for content protection\n- **Post-quantum signatures** for authenticity verification\n- **Kyber key encapsulation** for quantum-resistant key exchange\n- **Secure vouchers** for encrypted metadata storage\n- **Complete verification workflow** ensuring data integrity\n\n---\n\n## 🚢 Production Deployment\n\n### **Package Size Optimization**\n\nThe production package is optimized to **51.0 KB compressed** (157.6 KB unpacked):\n\n- ✅ Essential files only\n- ✅ Compressed WASM modules\n- ✅ Tree-shakeable exports\n- ✅ No development dependencies\n\n### **Deployment Checklist**\n\n- [ ] Verify WASM module loading in target environment\n- [ ] Test post-quantum algorithms availability\n- [ ] Configure memory limits (minimum 4MB recommended)\n- [ ] Set up monitoring for cryptographic operations\n- [ ] Validate performance benchmarks in production\n\n---\n\n## 🔐 Security Considerations\n\n### **Quantum Resistance**\n\n- **NIST Level 5 Security** - Equivalent to AES-256\n- **Future-proof** - Designed for post-quantum computing era\n- **Standardized** - Based on NIST-approved algorithms\n\n### **Implementation Security**\n\n- **Constant-time operations** - Resistant to timing attacks\n- **Memory protection** - WASM sandboxing\n- **Secure randomness** - Cryptographically secure RNG\n- **Input validation** - Comprehensive parameter checking\n\n### **Best Practices**\n\n1. **Key Management** - Store private keys securely\n2. **Message Authentication** - Always verify signatures\n3. **Fresh Keys** - Generate new keys for each session\n4. **Error Handling** - Never expose sensitive data in errors\n5. **Memory Management** - For intensive PQC operations, add small delays between operations to prevent WASM memory allocation issues\n\n### **Memory Considerations**\n\nWhen performing multiple intensive PQC operations in sequence (e.g., generating multiple key pairs and performing cryptographic operations), you may encounter memory allocation issues in resource-constrained environments. To mitigate this:\n\n```javascript\n// Add small delays between intensive operations\nawait new Promise(resolve => setTimeout(resolve, 100));\n\n// Or run with garbage collection enabled\n// node --expose-gc your-script.js\n```\n\n**Note**: The Secure Communication Workflow example above works perfectly when run standalone, but may fail in test suites that perform many PQC operations due to cumulative WASM memory allocation. This is a known limitation of intensive cryptographic operations in JavaScript environments.\n\n---\n\n## 🤝 Contributing\n\nWe welcome contributions to improve the post-quantum cryptography implementation:\n\n1. Fork the repository\n2. Create a feature branch\n3. Add comprehensive tests\n4. Ensure all benchmarks pass\n5. Submit a pull request\n\n### **Development Setup**\n\n```bash\ngit clone https://github.com/THEmmanuel/kinetic-keys.git\ncd kinetic-keys\nnpm install\nnpm test\nnpm run benchmark\n```\n\n---\n\n## 📄 License\n\nThis project is licensed under the **Business Source License 1.1** and **Polyform Strict License 1.0.0**.\n\n### **Business Source License 1.1**\n- **Use Limitation**: 4 years from first publication (until 2029-01-01)\n- **Commercial Use**: Requires commercial license or royalty payment (5% of gross revenue)\n- **Change Date**: After 2029-01-01, converts to Apache License 2.0\n- **Non-production Use**: Free for development, testing, and research\n\n### **Polyform Strict License 1.0.0**\n- **Commercial Use**: Allowed with restrictions\n- **Competition Clause**: Cannot use to compete with licensor's commercial offerings\n- **Attribution**: Must include license copy in distributions\n- **Compliance**: Must comply with applicable laws and regulations\n\n### **Key Terms**\n- **Educational/Research Use**: Free and unrestricted\n- **Commercial Production Use**: Requires commercial license or royalty payment\n- **Open Source**: Converts to Apache 2.0 after 4 years\n- **Patent Protection**: Provisional patents filed for core cryptographic mechanisms\n\nFor complete license terms, see [LICENSE](LICENSE) and [POLYFORM-LICENSE](POLYFORM-LICENSE) files.\n\nFor commercial licensing inquiries, contact: emmayodayo@gmail.com\n\n---\n\n## 🏆 Acknowledgments\n\n- **NIST** - For standardizing post-quantum cryptography\n- **CRYSTALS-Kyber Team** - Kyber key encapsulation mechanism\n  - Joppe Bos, Léo Ducas, Eike Kiltz, Tancrède Lepoint, Vadim Lyubashevsky, John Schanck, Peter Schwabe, Gregor Seiler, Damien Stehlé\n- **CRYSTALS-Dilithium Team** - Dilithium digital signature algorithm\n- **Emscripten** - C/C++ to WebAssembly compilation\n- **Argon2 Team** - Password hashing implementation\n- **Andrey Sitnik** - nanoid unique ID generation\n\n### **📋 Third-Party Licenses**\n\nThis project incorporates the following third-party components:\n\n- **CRYSTALS-Kyber & CRYSTALS-Dilithium**: Public Domain\n- **Argon2**: Apache License 2.0\n- **nanoid**: MIT License\n- **Keccak, AES, SHA-2, SHA-3**: Public Domain\n\nSee [NOTICE](NOTICE) file for detailed attribution information.\n\n---\n\n## ☕ Support the Project\n\nIf you find this project helpful, consider supporting its development:\n\n**[Buy me a coffee ☕](https://coff.ee/ayxdele)**\n\n---\n\n**⚡ Ready to secure your applications against quantum threats with @ayxdele/kinetic-keys v2.2.0!**\n\n*© 2025 Projekt Kinetic. All rights reserved.*\n\n*© 2025 Projekt Kinetic. All rights reserved.*","readmeFilename":"README.md"}