{"_id":"@alessiofrittoli/crypto-key","_rev":"8-14f5c6df4b33cb6f1c84bdebc67ecfdf","name":"@alessiofrittoli/crypto-key","dist-tags":{"latest":"3.3.0"},"versions":{"1.0.0":{"name":"@alessiofrittoli/crypto-key","version":"1.0.0","keywords":["nodejs","crypto","keys","crypto-keys"],"author":{"url":"https://alessiofrittoli.it","name":"Alessio Frittoli","email":"info@alessiofrittoli.it"},"license":"MIT","_id":"@alessiofrittoli/crypto-key@1.0.0","maintainers":[{"name":"alessiofrittoli","email":"info@alessiofrittoli.it"}],"homepage":"https://github.com/alessiofrittoli/crypto-key#readme","bugs":{"url":"https://github.com/alessiofrittoli/crypto-key/issues","email":"info@alessiofrittoli.it"},"dist":{"shasum":"bc199cc989c160303e176a7db09068a739a773a0","tarball":"https://registry.npmjs.org/@alessiofrittoli/crypto-key/-/crypto-key-1.0.0.tgz","fileCount":27,"integrity":"sha512-82N4Ksby0BAXCWod2uXDiunQ9OVgSzGXXCBc9NgrzX386g+DSKIcFekHf6JPgXJv5TbrvpbPXmolWJFobY0AjQ==","signatures":[{"sig":"MEQCIEbfmfQLK3nEtDzsLc9KgQE3M75mgysHbXoHQ7PrpKD5AiAOA4q/eyXFxiGXXnygAh8HdvWwcD36jnscwnlwSqhxAw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":38892},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"import":"./dist/index.mjs","require":"./dist/index.js"},"./Hash":{"types":"./dist/Hash.d.ts","import":"./dist/Hash.mjs","require":"./dist/Hash.js"},"./Hmac":{"types":"./dist/Hmac.d.ts","import":"./dist/Hmac.mjs","require":"./dist/Hmac.js"},"./utils":{"types":"./dist/utils.d.ts","import":"./dist/utils.mjs","require":"./dist/utils.js"},"./Cipher":{"types":"./dist/Cipher.d.ts","import":"./dist/Cipher.mjs","require":"./dist/Cipher.js"},"./Scrypt":{"types":"./dist/Scrypt.d.ts","import":"./dist/Scrypt.mjs","require":"./dist/Scrypt.js"}},"gitHead":"aba32b2ed1ba48bcb25a36a7d20d6bd94c38b1c3","scripts":{"lint":"eslint","test":"jest --watchAll --verbose","build":"eslint && pnpm test:ci && tsup","test:ci":"jest --ci --verbose","test:hash":"pnpm test hash.test.ts","test:hmac":"pnpm test hmac.test.ts","test:jest":"pnpm test jest.test.ts","test:cipher":"pnpm test cipher.test.ts","test:scrypt":"pnpm test scrypt.test.ts","test:jest:jsdom":"JSDOM=true pnpm test:jest"},"_npmUser":{"name":"alessiofrittoli","email":"info@alessiofrittoli.it"},"repository":{"url":"git+https://github.com/alessiofrittoli/crypto-key.git","type":"git"},"_npmVersion":"10.9.0","description":"Lightweight TypeScript library for Node.js Cryptographic keys","directories":{},"sideEffects":false,"_nodeVersion":"20.18.0","dependencies":{"@alessiofrittoli/crypto-buffer":"^2.0.1","@alessiofrittoli/crypto-algorithm":"^1.2.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","tsup":"^8.3.5","dotenv":"^16.4.7","eslint":"^9.16.0","globals":"^15.13.0","ts-jest":"^29.2.5","ts-node":"^10.9.2","@eslint/js":"^9.16.0","typescript":"^5.7.2","@types/jest":"^29.5.14","@types/node":"^22.10.2","@jest/globals":"^29.7.0","typescript-eslint":"^8.18.0","jest-environment-jsdom":"^29.7.0"},"_npmOperationalInternal":{"tmp":"tmp/crypto-key_1.0.0_1734025825230_0.28734308127546204","host":"s3://npm-registry-packages-npm-production"}},"2.0.0":{"name":"@alessiofrittoli/crypto-key","version":"2.0.0","keywords":["nodejs","crypto","keys","crypto-keys"],"author":{"url":"https://alessiofrittoli.it","name":"Alessio Frittoli","email":"info@alessiofrittoli.it"},"license":"MIT","_id":"@alessiofrittoli/crypto-key@2.0.0","maintainers":[{"name":"alessiofrittoli","email":"info@alessiofrittoli.it"}],"homepage":"https://github.com/alessiofrittoli/crypto-key#readme","bugs":{"url":"https://github.com/alessiofrittoli/crypto-key/issues","email":"info@alessiofrittoli.it"},"dist":{"shasum":"ffc2a0acbf2e6df5211091df34fad8ea4b544616","tarball":"https://registry.npmjs.org/@alessiofrittoli/crypto-key/-/crypto-key-2.0.0.tgz","fileCount":27,"integrity":"sha512-Sx2GQi4Ajssl8P7UwxF84yKy1wbsr+qhumhuLKI0TUZYl2iAtmW5ELDKxOz/IgSlerAnIssvdhxMPy2EUm93nA==","signatures":[{"sig":"MEYCIQC3HLT1tE/mxObAbYhlH8RJVLWiI48dbCJ79QsMMTSCbAIhAJ0M5KXvYS8hQd/2wXR6Ey04nn9FmzPNZQ1IZbJdGBex","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":53598},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./Hash":{"types":"./dist/Hash.d.ts","import":"./dist/Hash.mjs","require":"./dist/Hash.js"},"./Hmac":{"types":"./dist/Hmac.d.ts","import":"./dist/Hmac.mjs","require":"./dist/Hmac.js"},"./utils":{"types":"./dist/utils.d.ts","import":"./dist/utils.mjs","require":"./dist/utils.js"},"./Cipher":{"types":"./dist/Cipher.d.ts","import":"./dist/Cipher.mjs","require":"./dist/Cipher.js"},"./Scrypt":{"types":"./dist/Scrypt.d.ts","import":"./dist/Scrypt.mjs","require":"./dist/Scrypt.js"}},"gitHead":"e8af911c06f1f20e1753c269704e7c070f798b37","scripts":{"lint":"eslint","test":"pnpm test:watch","build":"pnpm lint && pnpm test:ci && tsup","release":"node scripts/publish.js --verbose --npm","test:ci":"jest --ci --verbose","test:hash":"pnpm test hash.test.ts","test:hmac":"pnpm test hmac.test.ts","test:jest":"pnpm test:watch jest.test.ts","test:jsdom":"JSDOM=true pnpm test:watch","test:watch":"jest --watchAll --verbose","build:watch":"tsup --watch","test:cipher":"pnpm test cipher.test.ts","test:scrypt":"pnpm test scrypt.test.ts","test:ci:jsdom":"JSDOM=true pnpm test:ci","test:coverage":"pnpm test:watch --coverage","test:jest:jsdom":"JSDOM=true pnpm test:jest","test:ci:coverage":"pnpm test:ci --coverage","test:coverage:jsdom":"JSDOM=true pnpm test:coverage","test:coverage:serve":"concurrently --prefix none --kill-others \"pnpm test:coverage\" \"pnpm test:serve-coverage\"","test:serve-coverage":"http-server ./coverage/lcov-report --gzip true -p 0 -o --silent","test:coverage:jsdom:serve":"JSDOM=true pnpm test:coverage:serve"},"_npmUser":{"name":"alessiofrittoli","email":"info@alessiofrittoli.it"},"repository":{"url":"git+https://github.com/alessiofrittoli/crypto-key.git","type":"git"},"_npmVersion":"10.9.0","description":"Lightweight TypeScript library for Node.js Cryptographic keys","directories":{},"sideEffects":false,"_nodeVersion":"20.18.0","dependencies":{"@alessiofrittoli/crypto-buffer":"^3.1.0","@alessiofrittoli/crypto-algorithm":"^2.0.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","tsup":"^8.3.5","dotenv":"^16.4.7","eslint":"^9.17.0","globals":"^15.14.0","ts-jest":"^29.2.5","ts-node":"^10.9.2","@eslint/js":"^9.17.0","typescript":"^5.7.2","@types/jest":"^29.5.14","@types/node":"^22.10.2","http-server":"^14.1.1","concurrently":"^9.1.1","@jest/globals":"^29.7.0","typescript-eslint":"^8.19.0","jest-environment-jsdom":"^29.7.0","@alessiofrittoli/node-scripts":"^2.2.1"},"_npmOperationalInternal":{"tmp":"tmp/crypto-key_2.0.0_1735591403940_0.3861785551763892","host":"s3://npm-registry-packages-npm-production"}},"2.1.0":{"name":"@alessiofrittoli/crypto-key","version":"2.1.0","keywords":["nodejs","crypto","keys","crypto-keys"],"author":{"url":"https://alessiofrittoli.it","name":"Alessio Frittoli","email":"info@alessiofrittoli.it"},"license":"MIT","_id":"@alessiofrittoli/crypto-key@2.1.0","maintainers":[{"name":"alessiofrittoli","email":"info@alessiofrittoli.it"}],"homepage":"https://github.com/alessiofrittoli/crypto-key#readme","bugs":{"url":"https://github.com/alessiofrittoli/crypto-key/issues","email":"info@alessiofrittoli.it"},"dist":{"shasum":"2001ce65009db2dec4af9089f41127cca3c2266e","tarball":"https://registry.npmjs.org/@alessiofrittoli/crypto-key/-/crypto-key-2.1.0.tgz","fileCount":27,"integrity":"sha512-0nO0ZMR7UNqcGg3Zi4U9FNZfHuO6w3/i9PSI+sEKHnz7xcrU4/os6tVXsCg53Nagv/yAlFhleOdbWamNiLjwtQ==","signatures":[{"sig":"MEQCICg8DYGwgOtxGgIaRDxRo98rE9vwX/p6gAdLBfbDcwmiAiArOvtjy7qUCI3J6mpM2QNZPcl9ANQxwAUW9/ZZQqHWMw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":56507},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./Hash":{"types":"./dist/Hash.d.ts","import":"./dist/Hash.mjs","require":"./dist/Hash.js"},"./Hmac":{"types":"./dist/Hmac.d.ts","import":"./dist/Hmac.mjs","require":"./dist/Hmac.js"},"./utils":{"types":"./dist/utils.d.ts","import":"./dist/utils.mjs","require":"./dist/utils.js"},"./Cipher":{"types":"./dist/Cipher.d.ts","import":"./dist/Cipher.mjs","require":"./dist/Cipher.js"},"./Scrypt":{"types":"./dist/Scrypt.d.ts","import":"./dist/Scrypt.mjs","require":"./dist/Scrypt.js"}},"gitHead":"a55deff3c5ff87a15051c258b930662d0eb13794","scripts":{"lint":"eslint","test":"jest","build":"pnpm lint && pnpm test:ci && tsup","release":"node scripts/publish.js --verbose --npm","test:ci":"jest --ci --verbose","test:hash":"pnpm test hash.test.ts","test:hmac":"pnpm test hmac.test.ts","test:jest":"pnpm test:watch jest.test.ts","test:jsdom":"JSDOM=true pnpm test:watch","test:watch":"jest --watchAll --verbose","build:watch":"tsup --watch","test:cipher":"pnpm test cipher.test.ts","test:scrypt":"pnpm test scrypt.test.ts","test:ci:jsdom":"JSDOM=true pnpm test:ci","test:coverage":"pnpm test:watch --coverage","test:jest:jsdom":"JSDOM=true pnpm test:jest","test:ci:coverage":"pnpm test:ci --coverage","test:coverage:jsdom":"JSDOM=true pnpm test:coverage","test:coverage:serve":"concurrently --prefix none --kill-others \"pnpm test:coverage\" \"pnpm test:serve-coverage\"","test:serve-coverage":"http-server ./coverage/lcov-report --gzip true -p 0 -o --silent","test:coverage:jsdom:serve":"JSDOM=true pnpm test:coverage:serve"},"_npmUser":{"name":"alessiofrittoli","email":"info@alessiofrittoli.it"},"repository":{"url":"git+https://github.com/alessiofrittoli/crypto-key.git","type":"git"},"_npmVersion":"10.9.0","description":"Lightweight TypeScript library for Node.js Cryptographic keys","directories":{},"sideEffects":false,"_nodeVersion":"22.12.0","dependencies":{"@alessiofrittoli/crypto-buffer":"^3.1.0","@alessiofrittoli/crypto-algorithm":"^2.0.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","tsup":"^8.3.5","dotenv":"^16.4.7","eslint":"^9.17.0","globals":"^15.14.0","ts-jest":"^29.2.5","ts-node":"^10.9.2","@eslint/js":"^9.17.0","typescript":"^5.7.2","@types/jest":"^29.5.14","@types/node":"^22.10.2","http-server":"^14.1.1","concurrently":"^9.1.1","@jest/globals":"^29.7.0","typescript-eslint":"^8.19.0","jest-environment-jsdom":"^29.7.0","@alessiofrittoli/node-scripts":"^2.2.1"},"_npmOperationalInternal":{"tmp":"tmp/crypto-key_2.1.0_1737057838257_0.3342997162793977","host":"s3://npm-registry-packages-npm-production"}},"2.2.0":{"name":"@alessiofrittoli/crypto-key","version":"2.2.0","keywords":["nodejs","crypto","keys","crypto-keys"],"author":{"url":"https://alessiofrittoli.it","name":"Alessio Frittoli","email":"info@alessiofrittoli.it"},"license":"MIT","_id":"@alessiofrittoli/crypto-key@2.2.0","maintainers":[{"name":"alessiofrittoli","email":"info@alessiofrittoli.it"}],"homepage":"https://github.com/alessiofrittoli/crypto-key#readme","bugs":{"url":"https://github.com/alessiofrittoli/crypto-key/issues","email":"info@alessiofrittoli.it"},"dist":{"shasum":"df5241e6eeaf1ba96009ed903fe8534449142a29","tarball":"https://registry.npmjs.org/@alessiofrittoli/crypto-key/-/crypto-key-2.2.0.tgz","fileCount":27,"integrity":"sha512-1llbzi7Y8UBdsgOgW8dQpKda58JVkfDz7rLqDHTa0y17XYc20N2ZOMNqhdbqCyTQJcibfaQPbrmKEsToXOhrjA==","signatures":[{"sig":"MEUCIQDt3inCHCUqzLAbNtUQX/NZu9W1aDUPPMOmsX7SqSlGyAIgfNvbaDs3sebtgw+afe3gEu+iGq9jLzhUDqIhvJr6Efs=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":58441},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./Hash":{"types":"./dist/Hash.d.ts","import":"./dist/Hash.mjs","require":"./dist/Hash.js"},"./Hmac":{"types":"./dist/Hmac.d.ts","import":"./dist/Hmac.mjs","require":"./dist/Hmac.js"},"./utils":{"types":"./dist/utils.d.ts","import":"./dist/utils.mjs","require":"./dist/utils.js"},"./Cipher":{"types":"./dist/Cipher.d.ts","import":"./dist/Cipher.mjs","require":"./dist/Cipher.js"},"./Scrypt":{"types":"./dist/Scrypt.d.ts","import":"./dist/Scrypt.mjs","require":"./dist/Scrypt.js"}},"gitHead":"3ae789960b9e50af41c92310033da532678e653f","scripts":{"lint":"eslint","test":"jest","build":"pnpm lint && pnpm test:ci && tsup","release":"node scripts/publish.js --verbose --npm","test:ci":"jest --ci --verbose","test:hash":"pnpm test:watch hash.test.ts","test:hmac":"pnpm test:watch hmac.test.ts","test:jest":"pnpm test:watch jest.test.ts","test:jsdom":"JSDOM=true pnpm test:watch","test:watch":"jest --watchAll --verbose","build:watch":"tsup --watch","test:cipher":"pnpm test:watch cipher.test.ts","test:scrypt":"pnpm test:watch scrypt.test.ts","test:ci:jsdom":"JSDOM=true pnpm test:ci","test:coverage":"pnpm test:watch --coverage","test:jest:jsdom":"JSDOM=true pnpm test:jest","test:ci:coverage":"pnpm test:ci --coverage","test:coverage:jsdom":"JSDOM=true pnpm test:coverage","test:coverage:serve":"concurrently --prefix none --kill-others \"pnpm test:coverage\" \"pnpm test:serve-coverage\"","test:serve-coverage":"http-server ./coverage/lcov-report --gzip true -p 0 -o --silent","test:coverage:jsdom:serve":"JSDOM=true pnpm test:coverage:serve"},"_npmUser":{"name":"alessiofrittoli","email":"info@alessiofrittoli.it"},"repository":{"url":"git+https://github.com/alessiofrittoli/crypto-key.git","type":"git"},"_npmVersion":"10.9.0","description":"Lightweight TypeScript library for Node.js Cryptographic keys","directories":{},"sideEffects":false,"_nodeVersion":"22.12.0","dependencies":{"@alessiofrittoli/crypto-buffer":"^3.2.0","@alessiofrittoli/crypto-algorithm":"^2.0.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","tsup":"^8.3.5","dotenv":"^16.4.7","eslint":"^9.18.0","globals":"^15.14.0","ts-jest":"^29.2.5","ts-node":"^10.9.2","@eslint/js":"^9.18.0","typescript":"^5.7.3","@types/jest":"^29.5.14","@types/node":"^22.10.7","http-server":"^14.1.1","concurrently":"^9.1.2","@jest/globals":"^29.7.0","typescript-eslint":"^8.20.0","jest-environment-jsdom":"^29.7.0","@alessiofrittoli/node-scripts":"^2.2.1"},"_npmOperationalInternal":{"tmp":"tmp/crypto-key_2.2.0_1737058639955_0.31156928459669864","host":"s3://npm-registry-packages-npm-production"}},"3.0.0":{"name":"@alessiofrittoli/crypto-key","version":"3.0.0","keywords":["nodejs","crypto","keys","crypto-keys"],"author":{"url":"https://alessiofrittoli.it","name":"Alessio Frittoli","email":"info@alessiofrittoli.it"},"license":"MIT","_id":"@alessiofrittoli/crypto-key@3.0.0","maintainers":[{"name":"alessiofrittoli","email":"info@alessiofrittoli.it"}],"homepage":"https://github.com/alessiofrittoli/crypto-key#readme","bugs":{"url":"https://github.com/alessiofrittoli/crypto-key/issues","email":"info@alessiofrittoli.it"},"dist":{"shasum":"1d25adb93eb0855b4132ecbb647847ac56271599","tarball":"https://registry.npmjs.org/@alessiofrittoli/crypto-key/-/crypto-key-3.0.0.tgz","fileCount":33,"integrity":"sha512-oBsZrHdXVqLDr/m883dxSsxTb+XSGXEDO039yZyB+DHSLIKioa+lHPxAY8O13doMN9sFAMz0TTsRDP0P6hR7Ag==","signatures":[{"sig":"MEQCIFy3pYVM2M2OatlPTSveJ5/WvCQJQsXkbJClM96Bdh8DAiBifMHEaQRhz1I15EzTUzjrgvJFchNXs/sZnyCUqicJHw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":102997},"main":"./dist/index.js","pnpm":{"onlyBuiltDependencies":["esbuild"]},"types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./Hash":{"types":"./dist/Hash.d.ts","import":"./dist/Hash.mjs","require":"./dist/Hash.js"},"./Hmac":{"types":"./dist/Hmac.d.ts","import":"./dist/Hmac.mjs","require":"./dist/Hmac.js"},"./utils":{"types":"./dist/utils.d.ts","import":"./dist/utils.mjs","require":"./dist/utils.js"},"./Scrypt":{"types":"./dist/Scrypt.d.ts","import":"./dist/Scrypt.mjs","require":"./dist/Scrypt.js"}},"funding":[{"url":"https://github.com/sponsors/alessiofrittoli","type":"github"}],"gitHead":"d28e6378b75039313fada494ce2abd68349396fc","scripts":{"//1a":"*********************************************************************","//1b":"*********************** BUILD - LINT - RELEASE **********************","//1c":"*********************************************************************","//2a":"*********************************************************************","//2b":"***************************** UNIT TESTS ****************************","//2c":"*********************************************************************","//3a":"*********************************************************************","//3b":"************************ UNIT TESTS COVERAGE ************************","//3c":"*********************************************************************","//4a":"*********************************************************************","//4b":"************************ TARGETED UNIT TESTS ************************","//4c":"*********************************************************************","lint":"eslint","test":"jest --verbose","build":"pnpm lint && pnpm test:ci && tsup","release":"node scripts/publish.js --verbose --npm","test:ci":"jest --ci --verbose","test:hash":"pnpm test:watch hash.test.ts","test:hmac":"pnpm test:watch hmac.test.ts","test:jest":"pnpm test:watch jest.test.ts","test:jsdom":"JSDOM=true pnpm test:watch","test:watch":"jest --watchAll --verbose","build:watch":"tsup --watch","test:scrypt":"pnpm test:watch scrypt.test.ts","test:ci:jsdom":"JSDOM=true pnpm test:ci","test:coverage":"pnpm test:watch --coverage","test:jest:jsdom":"JSDOM=true pnpm test:jest","test:ci:coverage":"pnpm test:ci --coverage","test:coverage:jsdom":"JSDOM=true pnpm test:coverage","test:coverage:serve":"concurrently --prefix none --kill-others \"pnpm test:coverage\" \"pnpm test:serve-coverage\"","test:serve-coverage":"http-server ./coverage/lcov-report --gzip true -p 0 -o --silent","test:coverage:jsdom:serve":"JSDOM=true pnpm test:coverage:serve"},"_npmUser":{"name":"alessiofrittoli","email":"info@alessiofrittoli.it"},"repository":{"url":"git+https://github.com/alessiofrittoli/crypto-key.git","type":"git"},"_npmVersion":"10.9.0","description":"Lightweight TypeScript library for Node.js Cryptographic keys","directories":{},"sideEffects":false,"_nodeVersion":"22.12.0","dependencies":{"@alessiofrittoli/crypto-buffer":"^3.4.0","@alessiofrittoli/crypto-algorithm":"^2.1.1"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","tsup":"^8.4.0","dotenv":"^16.4.7","eslint":"^9.22.0","globals":"^16.0.0","ts-jest":"^29.2.6","ts-node":"^10.9.2","@eslint/js":"^9.22.0","typescript":"^5.8.2","@types/jest":"^29.5.14","@types/node":"^22.13.10","http-server":"^14.1.1","concurrently":"^9.1.2","@jest/globals":"^29.7.0","typescript-eslint":"^8.26.1","jest-environment-jsdom":"^29.7.0","@alessiofrittoli/node-scripts":"^2.3.1"},"_npmOperationalInternal":{"tmp":"tmp/crypto-key_3.0.0_1742415348824_0.5251840820098121","host":"s3://npm-registry-packages-npm-production"}},"3.1.0":{"name":"@alessiofrittoli/crypto-key","version":"3.1.0","keywords":["nodejs","crypto","keys","crypto-keys"],"author":{"url":"https://alessiofrittoli.it","name":"Alessio Frittoli","email":"info@alessiofrittoli.it"},"license":"MIT","_id":"@alessiofrittoli/crypto-key@3.1.0","maintainers":[{"name":"alessiofrittoli","email":"info@alessiofrittoli.it"}],"homepage":"https://github.com/alessiofrittoli/crypto-key#readme","bugs":{"url":"https://github.com/alessiofrittoli/crypto-key/issues","email":"info@alessiofrittoli.it"},"dist":{"shasum":"8310d38ccf47a5ca5010abb34cc5230a5e480ff5","tarball":"https://registry.npmjs.org/@alessiofrittoli/crypto-key/-/crypto-key-3.1.0.tgz","fileCount":33,"integrity":"sha512-TBmiE2TIWYrfeOLZm18oFFVGTFaBzh/rKHyHMOIb4tbPj0Ob1nlQHVOvlcdYSflCypaqsYB6DlAcRJfZOSnWwA==","signatures":[{"sig":"MEQCIEYKtIupvHFIvhAsIO9yaLEe9RcYrGSw4V0USoRy9TvWAiBs+kp/X+EHYocwjotUB/pXREC5rEkKG81QFBOLfAVTpw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":102382},"main":"./dist/index.js","pnpm":{"onlyBuiltDependencies":["esbuild"]},"types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./Hash":{"types":"./dist/Hash.d.ts","import":"./dist/Hash.mjs","require":"./dist/Hash.js"},"./Hmac":{"types":"./dist/Hmac.d.ts","import":"./dist/Hmac.mjs","require":"./dist/Hmac.js"},"./utils":{"types":"./dist/utils.d.ts","import":"./dist/utils.mjs","require":"./dist/utils.js"},"./Scrypt":{"types":"./dist/Scrypt.d.ts","import":"./dist/Scrypt.mjs","require":"./dist/Scrypt.js"}},"funding":[{"url":"https://github.com/sponsors/alessiofrittoli","type":"github"}],"gitHead":"d0d223746e5b4fd45a15dbdc39e8a441b42f606e","scripts":{"//1a":"*********************************************************************","//1b":"*********************** BUILD - LINT - RELEASE **********************","//1c":"*********************************************************************","//2a":"*********************************************************************","//2b":"***************************** UNIT TESTS ****************************","//2c":"*********************************************************************","//3a":"*********************************************************************","//3b":"************************ UNIT TESTS COVERAGE ************************","//3c":"*********************************************************************","//4a":"*********************************************************************","//4b":"************************ TARGETED UNIT TESTS ************************","//4c":"*********************************************************************","lint":"eslint","test":"jest --verbose","build":"pnpm lint && pnpm test:ci && tsup","release":"node scripts/publish.js --verbose --npm","test:ci":"jest --ci --verbose","test:hash":"pnpm test:watch hash.test.ts","test:hmac":"pnpm test:watch hmac.test.ts","test:watch":"jest --watchAll --verbose","build:watch":"tsup --watch","test:scrypt":"pnpm test:watch scrypt.test.ts","test:coverage":"pnpm test:watch --coverage","test:ci:coverage":"pnpm test:ci --coverage","test:coverage:serve":"concurrently --prefix none --kill-others \"pnpm test:coverage\" \"pnpm test:serve-coverage\"","test:serve-coverage":"http-server ./coverage/lcov-report --gzip true -p 0 -o --silent"},"_npmUser":{"name":"alessiofrittoli","email":"info@alessiofrittoli.it"},"repository":{"url":"git+https://github.com/alessiofrittoli/crypto-key.git","type":"git"},"_npmVersion":"10.9.0","description":"Lightweight TypeScript library for Node.js Cryptographic keys","directories":{},"sideEffects":false,"_nodeVersion":"22.12.0","dependencies":{"@alessiofrittoli/crypto-buffer":"^3.4.0","@alessiofrittoli/crypto-algorithm":"^2.1.1"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","tsup":"^8.4.0","dotenv":"^16.4.7","eslint":"^9.22.0","globals":"^16.0.0","ts-jest":"^29.2.6","ts-node":"^10.9.2","@eslint/js":"^9.22.0","typescript":"^5.8.2","@types/jest":"^29.5.14","@types/node":"^22.13.10","http-server":"^14.1.1","concurrently":"^9.1.2","@jest/globals":"^29.7.0","typescript-eslint":"^8.26.1","@alessiofrittoli/node-scripts":"^2.3.1"},"_npmOperationalInternal":{"tmp":"tmp/crypto-key_3.1.0_1742644339103_0.8804683776526427","host":"s3://npm-registry-packages-npm-production"}},"3.2.0":{"name":"@alessiofrittoli/crypto-key","version":"3.2.0","keywords":["nodejs","crypto","keys","crypto-keys"],"author":{"url":"https://alessiofrittoli.it","name":"Alessio Frittoli","email":"info@alessiofrittoli.it"},"license":"MIT","_id":"@alessiofrittoli/crypto-key@3.2.0","maintainers":[{"name":"alessiofrittoli","email":"info@alessiofrittoli.it"}],"homepage":"https://github.com/alessiofrittoli/crypto-key#readme","bugs":{"url":"https://github.com/alessiofrittoli/crypto-key/issues","email":"info@alessiofrittoli.it"},"dist":{"shasum":"d45b07c8be112ed46d5d013f31c5595ef5f17020","tarball":"https://registry.npmjs.org/@alessiofrittoli/crypto-key/-/crypto-key-3.2.0.tgz","fileCount":31,"integrity":"sha512-8VVrpv/gCH+3VynzTau/z3M3h1hNHiptUtZJHs+qyNiLrIOEPO03VsXuqPmYoDjBDARFnJoSLuNL8u4Z1S/6Xg==","signatures":[{"sig":"MEQCIGQmcaUfLUB2iGqUNMdvwqrUIHmiDtAjRP6ouC7ukEeJAiB4hl+0khQ6sPzctwpVFpOARTAiopnxZLcl8C5v69ZhFg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":42796},"main":"./dist/index.js","pnpm":{"onlyBuiltDependencies":["esbuild"]},"types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./Hash":{"types":"./dist/Hash.d.ts","import":"./dist/Hash.mjs","require":"./dist/Hash.js"},"./Hmac":{"types":"./dist/Hmac.d.ts","import":"./dist/Hmac.mjs","require":"./dist/Hmac.js"},"./utils":{"types":"./dist/utils.d.ts","import":"./dist/utils.mjs","require":"./dist/utils.js"},"./Scrypt":{"types":"./dist/Scrypt.d.ts","import":"./dist/Scrypt.mjs","require":"./dist/Scrypt.js"}},"funding":[{"url":"https://github.com/sponsors/alessiofrittoli","type":"github"}],"gitHead":"82373726d632841de55c0d6388f65708b0efe144","scripts":{"dev":"NODE_ENV=development tsup --watch","//1a":"*********************************************************************","//1b":"******************** DEV - BUILD - LINT - RELEASE *******************","//1c":"*********************************************************************","//2a":"*********************************************************************","//2b":"***************************** UNIT TESTS ****************************","//2c":"*********************************************************************","//3a":"*********************************************************************","//3b":"************************ UNIT TESTS COVERAGE ************************","//3c":"*********************************************************************","//4a":"*********************************************************************","//4b":"************************ TARGETED UNIT TESTS ************************","//4c":"*********************************************************************","lint":"eslint","test":"jest --verbose","build":"pnpm lint && pnpm test:ci && pnpm build:prod","release":"node scripts/publish.js --verbose --npm","test:ci":"jest --ci --verbose","test:hash":"pnpm test:watch hash.test.ts","test:hmac":"pnpm test:watch hmac.test.ts","build:prod":"NODE_ENV=production tsup","test:watch":"jest --watchAll --verbose","test:scrypt":"pnpm test:watch scrypt.test.ts","test:coverage":"pnpm test:watch --coverage","test:coverage:ci":"pnpm test:ci --coverage","test:coverage:serve":"concurrently --prefix none --kill-others \"pnpm test:coverage\" \"pnpm test:serve-coverage\"","test:serve-coverage":"http-server ./coverage/lcov-report --gzip true -p 0 -o --silent"},"_npmUser":{"name":"alessiofrittoli","email":"info@alessiofrittoli.it"},"repository":{"url":"git+https://github.com/alessiofrittoli/crypto-key.git","type":"git"},"_npmVersion":"11.0.0","description":"Lightweight TypeScript library for Node.js Cryptographic keys","directories":{},"sideEffects":false,"_nodeVersion":"22.12.0","dependencies":{"@alessiofrittoli/crypto-buffer":"^3.6.0","@alessiofrittoli/crypto-algorithm":"^2.3.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","tsup":"^8.4.0","dotenv":"^16.5.0","eslint":"^9.26.0","globals":"^16.0.0","ts-jest":"^29.3.2","ts-node":"^10.9.2","@eslint/js":"^9.26.0","typescript":"^5.8.3","@types/jest":"^29.5.14","@types/node":"^22.15.3","http-server":"^14.1.1","concurrently":"^9.1.2","@jest/globals":"^29.7.0","typescript-eslint":"^8.31.1","@alessiofrittoli/node-scripts":"^2.5.0"},"_npmOperationalInternal":{"tmp":"tmp/crypto-key_3.2.0_1746273881081_0.4300536127340788","host":"s3://npm-registry-packages-npm-production"}},"3.3.0":{"name":"@alessiofrittoli/crypto-key","version":"3.3.0","description":"Lightweight TypeScript library for Node.js Cryptographic keys","author":{"name":"Alessio Frittoli","email":"info@alessiofrittoli.it","url":"https://alessiofrittoli.it"},"license":"MIT","funding":[{"type":"github","url":"https://github.com/sponsors/alessiofrittoli"}],"keywords":["nodejs","crypto","keys","crypto-keys"],"homepage":"https://github.com/alessiofrittoli/crypto-key#readme","bugs":{"url":"https://github.com/alessiofrittoli/crypto-key/issues","email":"info@alessiofrittoli.it"},"repository":{"type":"git","url":"git+https://github.com/alessiofrittoli/crypto-key.git"},"main":"./dist/index.js","module":"./dist/index.mjs","types":"./dist/index.d.ts","exports":{".":{"import":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"},"require":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"./Hash":{"import":{"types":"./dist/Hash.d.mts","default":"./dist/Hash.mjs"},"require":{"types":"./dist/Hash.d.ts","default":"./dist/Hash.js"}},"./Hmac":{"import":{"types":"./dist/Hmac.d.mts","default":"./dist/Hmac.mjs"},"require":{"types":"./dist/Hmac.d.ts","default":"./dist/Hmac.js"}},"./Scrypt":{"import":{"types":"./dist/Scrypt.d.mts","default":"./dist/Scrypt.mjs"},"require":{"types":"./dist/Scrypt.d.ts","default":"./dist/Scrypt.js"}},"./utils":{"import":{"types":"./dist/utils.d.mts","default":"./dist/utils.mjs"},"require":{"types":"./dist/utils.d.ts","default":"./dist/utils.js"}}},"sideEffects":false,"scripts":{"//1a":"*********************************************************************","//1b":"******************** DEV - BUILD - LINT - RELEASE *******************","//1c":"*********************************************************************","dev":"cross-env NODE_ENV=development tsup --watch","build:prod":"cross-env NODE_ENV=production tsup","build":"pnpm lint && pnpm test:ci && pnpm build:prod","lint":"eslint","release":"node scripts/release.js --verbose --npm","//2a":"*********************************************************************","//2b":"***************************** UNIT TESTS ****************************","//2c":"*********************************************************************","test":"jest --verbose","test:watch":"jest --watchAll --verbose","test:ci":"jest --ci --verbose","//3a":"*********************************************************************","//3b":"************************ UNIT TESTS COVERAGE ************************","//3c":"*********************************************************************","test:coverage":"pnpm test:watch --coverage","test:coverage:ci":"pnpm test:ci --coverage","test:serve-coverage":"http-server ./coverage/lcov-report --gzip true -p 0 -o --silent","test:coverage:serve":"concurrently --prefix none --kill-others \"pnpm test:coverage\" \"pnpm test:serve-coverage\"","//4a":"*********************************************************************","//4b":"************************ TARGETED UNIT TESTS ************************","//4c":"*********************************************************************","test:hash":"pnpm test:watch hash.test.ts","test:hmac":"pnpm test:watch hmac.test.ts","test:scrypt":"pnpm test:watch scrypt.test.ts"},"devDependencies":{"@alessiofrittoli/node-scripts":"^3.2.0","@eslint/js":"^9.39.1","@jest/globals":"^30.2.0","@types/jest":"^30.0.0","@types/node":"^24.10.1","concurrently":"^9.2.1","cross-env":"^10.1.0","dotenv":"^17.2.3","eslint":"^9.39.1","globals":"^16.5.0","http-server":"^14.1.1","jest":"^30.2.0","ts-jest":"^29.4.6","ts-node":"^10.9.2","tsup":"^8.5.1","typescript":"^5.9.3","typescript-eslint":"^8.48.1"},"dependencies":{"@alessiofrittoli/crypto-algorithm":"^2.4.0","@alessiofrittoli/crypto-buffer":"^3.8.0"},"_id":"@alessiofrittoli/crypto-key@3.3.0","gitHead":"033cc4061a530e9ffac613cae745703ffdbdccf9","_nodeVersion":"22.15.0","_npmVersion":"11.5.2","dist":{"integrity":"sha512-J9m1KuYuXlNb1ygoVgX/668INTFRCyb5T8QOi/yBunlyHMCAoiLeZEgU/SCpwY3ER8tKSBQpYt05HhqHcvWfhg==","shasum":"c94ea5d89680b1b231194059152cd8682104cdec","tarball":"https://registry.npmjs.org/@alessiofrittoli/crypto-key/-/crypto-key-3.3.0.tgz","fileCount":31,"unpackedSize":43179,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDVCmSNdv1wEhmYANYmlcugRxNxD+yW2I7u6Qx+KknjJAIhAObyWKkiaKdkWaMx64VF0GXXF6kdJnOCN2ciVse5nmBE"}]},"_npmUser":{"name":"alessiofrittoli","email":"info@alessiofrittoli.it"},"directories":{},"maintainers":[{"name":"alessiofrittoli","email":"info@alessiofrittoli.it"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/crypto-key_3.3.0_1764868872650_0.4731132879052702"},"_hasShrinkwrap":false}},"time":{"created":"2024-12-12T17:50:25.146Z","modified":"2025-12-04T17:21:12.994Z","1.0.0":"2024-12-12T17:50:25.393Z","2.0.0":"2024-12-30T20:43:24.137Z","2.1.0":"2025-01-16T20:03:58.409Z","2.2.0":"2025-01-16T20:17:20.174Z","3.0.0":"2025-03-19T20:15:49.046Z","3.1.0":"2025-03-22T11:52:19.324Z","3.2.0":"2025-05-03T12:04:41.298Z","3.3.0":"2025-12-04T17:21:12.806Z"},"bugs":{"url":"https://github.com/alessiofrittoli/crypto-key/issues","email":"info@alessiofrittoli.it"},"author":{"name":"Alessio Frittoli","email":"info@alessiofrittoli.it","url":"https://alessiofrittoli.it"},"license":"MIT","homepage":"https://github.com/alessiofrittoli/crypto-key#readme","keywords":["nodejs","crypto","keys","crypto-keys"],"repository":{"type":"git","url":"git+https://github.com/alessiofrittoli/crypto-key.git"},"description":"Lightweight TypeScript library for Node.js Cryptographic keys","maintainers":[{"name":"alessiofrittoli","email":"info@alessiofrittoli.it"}],"readme":"# Crypto Key 🔑\n\n[![NPM Latest Version][version-badge]][npm-url] [![Coverage Status][coverage-badge]][coverage-url] [![Socket Status][socket-badge]][socket-url] [![NPM Monthly Downloads][downloads-badge]][npm-url] [![Dependencies][deps-badge]][deps-url]\n\n[![GitHub Sponsor][sponsor-badge]][sponsor-url]\n\n[version-badge]: https://img.shields.io/npm/v/%40alessiofrittoli%2Fcrypto-key\n[npm-url]: https://npmjs.org/package/%40alessiofrittoli%2Fcrypto-key\n[coverage-badge]: https://coveralls.io/repos/github/alessiofrittoli/crypto-key/badge.svg\n[coverage-url]: https://coveralls.io/github/alessiofrittoli/crypto-key\n[socket-badge]: https://socket.dev/api/badge/npm/package/@alessiofrittoli/crypto-key\n[socket-url]: https://socket.dev/npm/package/@alessiofrittoli/crypto-key/overview\n[downloads-badge]: https://img.shields.io/npm/dm/%40alessiofrittoli%2Fcrypto-key.svg\n[deps-badge]: https://img.shields.io/librariesio/release/npm/%40alessiofrittoli%2Fcrypto-key\n[deps-url]: https://libraries.io/npm/%40alessiofrittoli%2Fcrypto-key\n\n[sponsor-badge]: https://img.shields.io/static/v1?label=Fund%20this%20package&message=%E2%9D%A4&logo=GitHub&color=%23DB61A2\n[sponsor-url]: https://github.com/sponsors/alessiofrittoli\n\n## Lightweight TypeScript library for Node.js Cryptographic keys\n\n### Table of Contents\n\n- [Getting started](#getting-started)\n- [API Reference](#api-reference)\n  - [`Hash` Class](#hash-class)\n    - [Methods](#methods)\n      - [`Hash.digest()`](#hashdigest)\n      - [`Hash.isValid()`](#hashisvalid)\n    - [Example Usage](#example-usage)\n  - [`Hmac` Class](#hmac-class)\n    - [Methods](#methods-1)\n      - [`Hmac.digest()`](#hmacdigest)\n      - [`Hmac.isValid()`](#hmacisvalid)\n    - [Example Usage](#example-usage-1)\n  - [`Scrypt` Class](#scrypt-class)\n    - [Scrypt Type Interfaces](#scrypt-type-interfaces)\n      - [ScryptOptions](#scryptoptions)\n      - [ScryptHashOptions](#scrypthashoptions)\n    - [Methods](#methods-2)\n      - [`Scrypt.hash()`](#scrypthash)\n      - [`Scrypt.isValid()`](#scryptisvalid)\n    - [Example Usage](#example-usage-2)\n- [Development](#development)\n  - [Install depenendencies](#install-depenendencies)\n  - [Build the source code](#build-the-source-code)\n  - [ESLint](#eslint)\n  - [Jest](#jest)\n- [Contributing](#contributing)\n- [Security](#security)\n- [Credits](#made-with-)\n\n---\n\n### Getting started\n\nThe `crypto-key` library it's part of the [`crypto`](https://npmjs.com/search?q=%40alessiofrittoli%2Fcrypto) utility libraries and can be installed by running the following command:\n\n```bash\nnpm i @alessiofrittoli/crypto-key\n```\n\nor using `pnpm`\n\n```bash\npnpm i @alessiofrittoli/crypto-key\n```\n\n---\n\n### API Reference\n\nThis module supports different input data types and it uses the [`coerceToUint8Array`](https://npmjs.com/package/@alessiofrittoli/crypto-buffer#coercetouint8array) utility function from [`@alessiofrittoli/crypto-buffer`](https://npmjs.com/package/@alessiofrittoli/crypto-buffer) to convert it to a `Uint8Array`.\n\n- See [`coerceToUint8Array`](https://npmjs.com/package/@alessiofrittoli/crypto-buffer#coercetouint8array) for more informations about the supported input types.\n\n#### `Hash` Class\n\nThe `Hash` class provides utility methods for hashing strings and validating hashed values using cryptographic algorithms.\\\nIt supports a variety of algorithms based on the OpenSSL version available on the platform.\n\n##### Methods\n\n###### `Hash.digest()`\n\nGenerates a hash of a given string using a specified cryptographic algorithm.\n\n<details>\n<summary>Parameters</summary>\n\n| Parameter   | Type                          | Default   | Description                                  |\n|-------------|-------------------------------|-----------|----------------------------------------------|\n| `input`     | `crypto.BinaryLike`           | -         | The data to be hashed.                       |\n| `algorithm` | `Algo.Hash \\| Algo.OtherHash` | 'SHA-256' | (Optional) The cryptographic hash algorithm. |\n\n</details>\n\n**Returns**\n\nType: `Buffer`\n\nThe resulting hash digest Buffer.\n\n---\n\n###### `Hash.isValid()`\n\nCompares input data with a hashed value to verify if they match.\n\n<details>\n<summary>Parameters</summary>\n\n| Parameter   | Type                          | Default   | Description                               |\n|-------------|-------------------------------|-----------|-------------------------------------------|\n| `input`     | `crypto.BinaryLike`           | -         | The raw input data.                       |\n| `digest`    | `CoerceToUint8ArrayInput`     | -         | The hash digest value to compare against. |\n| `algorithm` | `Algo.Hash \\| Algo.OtherHash` | 'SHA-256' | (Optional) The hash algorithm previously used while generating the `hashed` data. |\n\n</details>\n\n**Returns**\n\nType: `boolean`\n\n`true` if the input matches the hashed `digest` value, `false` otherwise.\n\n---\n\n##### Example Usage\n\n###### Generating a Hash\n\n```ts\nimport { Hash } from '@alessiofrittoli/crypto-key'\n// or\nimport { Hash } from '@alessiofrittoli/crypto-key/Hash'\n\nconsole.log(\n  Hash.digest( 'raw string value' )\n    .toString( 'hex' )\n)\n```\n\n###### Validating a Hash\n\n```ts\nimport { Hash } from '@alessiofrittoli/crypto-key'\n// or\nimport { Hash } from '@alessiofrittoli/crypto-key/Hash'\n\nconst rawInput\t= 'raw string value'\nconst hash\t\t= Hash.digest( rawInput )\nconst isValid\t= Hash.isValid( rawInput, hash )\n\nconsole.log( isValid ) // Outputs: `true`\n```\n\n---\n\n#### `Hmac` Class\n\nThe `Hmac` class provides utility methods for generating and validating HMAC (Hash-based Message Authentication Code) values using cryptographic algorithms.\n\n##### Methods\n\n###### `Hmac.digest()`\n\nGenerates a Hash-based Message Authentication Code (HMAC) for a given message using a secret key.\n\n<details>\n<summary>Parameters</summary>\n\n| Parameter   | Type                | Default   | Description                                     |\n|-------------|---------------------|-----------|-------------------------------------------------|\n| `message`   | `crypto.BinaryLike` | -         | The data to be hashed.                          |\n| `secret`    | `crypto.BinaryLike \\| crypto.KeyObject` | - | The secret key to use for generating the HMAC. |\n| `algorithm` | `Algo.Hash`         | 'SHA-256' | (Optional) The cryptographic hash algorithm.    |\n| `encoding`  | `BufferEncoding`    | -         | (Optional) The encoding for the output string.  |\n| `options`   | `stream.TransformOptions` | -   | (Optional) Additional stream transform options. |\n\n</details>\n\n**Returns**\n\nType: `HmacReturnType<T>`\n\nThe resulting HMAC value. If `encoding` is specified, the output is a string in the specified encoding; otherwise, a `Buffer`.\n\n---\n\n###### `Hmac.isValid()`\n\nValidates a given HMAC value against a message and secret key.\n\n<details>\n<summary>Parameters</summary>\n\n| Parameter   | Type                | Default   | Description                                     |\n|-------------|---------------------|-----------|-------------------------------------------------|\n| `digest`    | `CoerceToUint8ArrayInput` | -   | The HMAC digest to validate.                    |\n| `message`   | `crypto.BinaryLike` | -         | The original message used to generate the HMAC. |\n| `secret`    | `crypto.BinaryLike \\| crypto.KeyObject` | - | The secret key used for generating the HMAC. |\n| `algorithm` | `Algo.Hash`         | 'SHA-256' | (Optional) The hash algorithm used for generating the HMAC. |\n| `encoding`  | `BufferEncoding`    | -         | (Optional) The encoding used to generate the hash output. |\n| `options`   | `stream.TransformOptions` | -   | (Optional) Additional stream transform options used for generating the HMAC. |\n\n</details>\n\n**Returns**\n\nType: `boolean`\n\n`true` if the provided HMAC matches the generated one. `false` otherwise.\n\n---\n\n##### Example Usage\n\n###### Generating an HMAC\n\n```ts\nimport { Hmac } from '@alessiofrittoli/crypto-key'\n// or\nimport { Hmac } from '@alessiofrittoli/crypto-key/Hmac'\n\nconsole.log(\n  Hmac.digest( 'raw string value', 'mysecretkey', 'SHA-256', 'hex' )\n) // Outputs the HMAC value in HEX format.\n```\n\n###### Validating an HMAC\n\n```ts\nimport { Hmac } from '@alessiofrittoli/crypto-key'\n// or\nimport { Hmac } from '@alessiofrittoli/crypto-key/Hmac'\n\nconst message\t= 'raw string value'\nconst secret\t= 'mysecretkey'\nconst hmac\t\t= Hmac.digest( message, secret )\n\nconsole.log(\n  Hmac.isValid( hmac, message, secret )\n) // Outputs: `true`\n```\n\n---\n\n#### `Scrypt` Class\n\nThe `Scrypt` class provides methods for hashing and securely comparing keys using the `scrypt` key derivation algorithm.\\\nIt supports customizable options for computational cost, memory usage, and parallelization to balance security and performance.\n\n##### Scrypt Type Interfaces\n\n###### `ScryptOptions`\n\nDefines customization options for the `scrypt` algorithm.\n\n<details>\n<summary>Properties</summary>\n\n| Property          | Type     | Default   | Description |\n|-------------------|----------|-----------|-------------|\n| `cost`            | `number` | `16384`   | Computational cost factor. Must be a power of 2. Higher values increase security but are slower. |\n| `blockSize`       | `number` | `8`       | Memory cost factor. Higher values increase memory usage, improving security against GPU attacks. |\n| `parallelization` | `number` | `1`       | Parallelization factor. Determines how many threads can be used. |\n| `maxmem`          | `number` | `32 * 1024 * 1024` (32MB) | Maximum memory (in bytes) to be used during key derivation. |\n| `N`               | `number` | `16384`   | Alias for `cost`. |\n| `r`               | `number` | `8`       | Alias for `blockSize`. |\n| `p`               | `number` | `1`       | Alias for `parallelization`. |\n\n</details>\n\n<details>\n<summary>Suggested options</summary>\n\n| Scope                       | `cost` (N) | `blockSize` (r) | `parallelization` (p) | `maxmem` |\n|-----------------------------|------------|-----------------|-----------------------|----------|\n| Standard security (default) | `16384`    | `8`             | `1`                   | 32 MB    |\n| High security               | `65536`    | `16`            | `1`                   | 64 MB    |\n| Limited resources           | `8192`     | `4`             | `1`                   | 16 MB    |\n\n</details>\n\n---\n\n###### `ScryptHashOptions`\n\nDefines options for the `hash` and `isValid` methods.\n\n<details>\n<summary>Properties</summary>\n\n| Property     | Type            | Default   | Description |\n|--------------|-----------------|-----------|-------------|\n| `length`     | `number`        | `64`      | The hash length. Must be between `16` and `256`. |\n| `saltLength` | `number`        | `32`      | The salt length. Must be between `16` and `64`. |\n| `options`    | `ScryptOptions` | See above | Custom options for the `scrypt` algorithm. |\n\n</details>\n\n---\n\n##### Methods\n\n###### `Scrypt.hash()`\n\nGenerates a hash for a given key using the `scrypt` key derivation algorithm.\n\n<details>\n<summary>Parameters</summary>\n\n| Parameter | Type                | Default | Description |\n|-----------|---------------------|---------|-------------|\n| `key`     | `crypto.BinaryLike` | -       | The key to hash. |\n| `options` | `ScryptHashOptions` | -       | (Optional) Configuration options for hashing. |\n\n</details>\n\n**Returns**\n\nType: `Buffer`\n\nA Buffer containing the salt (first saltLength bytes) followed by the derived hash.\n\n---\n\n###### `Scrypt.isValid()`\n\nValidates the given `key` with the given `hash`.\n\n<details>\n<summary>Parameters</summary>\n\n| Parameter | Type                | Default | Description |\n|-----------|---------------------|---------|-------------|\n| `key`     | `crypto.BinaryLike` | -       | The key to validate. |\n| `hash`    | `CoerceToUint8ArrayInput` | - | The hash to compare against. |\n| `options` | `ScryptHashOptions` | -       | (Optional) Configuration options. Must match those used for hashing. |\n\n</details>\n\n**Returns**\n\nType: `boolean`\n\n`true` if the key is valid, `false` otherwise.\n\n---\n\n##### Example Usage\n\n###### Hashing a Key\n\n```ts\nimport { Scrypt } from '@alessiofrittoli/crypto-key'\n// or\nimport { Scrypt } from '@alessiofrittoli/crypto-key/Scrypt'\n\nconsole.log(\n  Scrypt.hash( 'user-provided-password' )\n    .toString( 'hex' )\n) // Outputs the hash in HEX format.\n```\n\n###### Validating a Key\n\n```ts\nimport { Scrypt } from '@alessiofrittoli/crypto-key'\n// or\nimport { Scrypt } from '@alessiofrittoli/crypto-key/Scrypt'\n\nimport { Scrypt } from './Scrypt';\n\nconst password\t= 'user-provided-password';\nconst hash\t\t= Scrypt.hash( password, { length: 32, saltLength: 16 } )\n\nconsole.log(\n  Scrypt.isValid( password, hash, { length: 32, saltLength: 16 } )\n) // Outputs: true\n```\n\n---\n\n### Development\n\n#### Install depenendencies\n\n```bash\nnpm install\n```\n\nor using `pnpm`\n\n```bash\npnpm i\n```\n\n#### Build the source code\n\nRun the following command to test and build code for distribution.\n\n```bash\npnpm build\n```\n\n#### [ESLint](https://www.npmjs.com/package/eslint)\n\nwarnings / errors check.\n\n```bash\npnpm lint\n```\n\n#### [Jest](https://npmjs.com/package/jest)\n\nRun all the defined test suites by running the following:\n\n```bash\n# Run tests and watch file changes.\npnpm test:watch\n\n# Run tests in a CI environment.\npnpm test:ci\n```\n\n- See [`package.json`](./package.json) file scripts for more info.\n\nRun tests with coverage.\n\nAn HTTP server is then started to serve coverage files from `./coverage` folder.\n\n⚠️ You may see a blank page the first time you run this command. Simply refresh the browser to see the updates.\n\n```bash\ntest:coverage:serve\n```\n\n---\n\n### Contributing\n\nContributions are truly welcome!\n\nPlease refer to the [Contributing Doc](./CONTRIBUTING.md) for more information on how to start contributing to this project.\n\nHelp keep this project up to date with [GitHub Sponsor][sponsor-url].\n\n[![GitHub Sponsor][sponsor-badge]][sponsor-url]\n\n---\n\n### Security\n\nIf you believe you have found a security vulnerability, we encourage you to **_responsibly disclose this and NOT open a public issue_**. We will investigate all legitimate reports. Email `security@alessiofrittoli.it` to disclose any security vulnerabilities.\n\n### Made with ☕\n\n<table style='display:flex;gap:20px;'>\n  <tbody>\n    <tr>\n      <td>\n        <img alt=\"avatar\" src='https://avatars.githubusercontent.com/u/35973186' style='width:60px;border-radius:50%;object-fit:contain;'>\n      </td>\n      <td>\n        <table style='display:flex;gap:2px;flex-direction:column;'>\n          <tbody>\n              <tr>\n                <td>\n                  <a href='https://github.com/alessiofrittoli' target='_blank' rel='noopener'>Alessio Frittoli</a>\n                </td>\n              </tr>\n              <tr>\n                <td>\n                  <small>\n                    <a href='https://alessiofrittoli.it' target='_blank' rel='noopener'>https://alessiofrittoli.it</a> |\n                    <a href='mailto:info@alessiofrittoli.it' target='_blank' rel='noopener'>info@alessiofrittoli.it</a>\n                  </small>\n                </td>\n              </tr>\n          </tbody>\n        </table>\n      </td>\n    </tr>\n  </tbody>\n</table>\n","readmeFilename":"README.md"}