{"_id":"@bernierllc/validators-crypto-parameters","_rev":"8-767c9b64fde6884be257e94ec928f68f","name":"@bernierllc/validators-crypto-parameters","dist-tags":{"latest":"1.6.0"},"versions":{"1.0.1":{"name":"@bernierllc/validators-crypto-parameters","version":"1.0.1","keywords":["validator","security","cryptography","jwt","algorithms","key-size","kdf","pbkdf2","bcrypt","scrypt","hash","cipher","primitive"],"author":{"name":"Bernier LLC"},"license":"UNLICENSED","_id":"@bernierllc/validators-crypto-parameters@1.0.1","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"dist":{"shasum":"65269333241c025923cab310529c20e69bb43e6e","tarball":"https://registry.npmjs.org/@bernierllc/validators-crypto-parameters/-/validators-crypto-parameters-1.0.1.tgz","fileCount":23,"integrity":"sha512-DaODywnSMFwq7tCcshIyc3FAdVRoz9FiaWtIWuENrAz5AhenUlJZPbcbEj9M1LHs1Y29OY5IEjdGXmlb2MhSPg==","signatures":[{"sig":"MEQCIHSfo273UdmeKqnVbJcIM3kTs9CaDrIG4FkORsvZv6WBAiAnUU5qp8VXnxwy20XpZgA2o4I5p0RHkPB3hQh8uYlsgA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":74059},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","gitHead":"f184001df6da605bb9584b5f5bc17a1b93ee29f4","scripts":{"lint":"eslint src --ext .ts","test":"jest","build":"tsc","clean":"rm -rf dist","test:watch":"jest --watch","test:coverage":"jest --coverage","prepublishOnly":"npm run clean && npm run build && rm -rf dist/__tests__"},"_npmUser":{"name":"mkbernier","email":"mkbernier@gmail.com"},"_npmVersion":"11.4.2","description":"Primitive validator for cryptographic parameter validation (JWT algorithms, key sizes, KDF parameters)","directories":{},"_nodeVersion":"24.4.1","dependencies":{"@bernierllc/validators-core":"^0.1.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.5.0","eslint":"^8.0.0","ts-jest":"^29.1.0","typescript":"^5.0.0","@types/jest":"^29.5.0","@types/node":"^20.0.0","@typescript-eslint/parser":"^6.0.0","@typescript-eslint/eslint-plugin":"^6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/validators-crypto-parameters_1.0.1_1760037483667_0.3700685827596304","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"@bernierllc/validators-crypto-parameters","version":"1.0.2","keywords":["validator","security","cryptography","jwt","algorithms","key-size","kdf","pbkdf2","bcrypt","scrypt","hash","cipher","primitive"],"author":{"name":"Bernier LLC"},"license":"UNLICENSED","_id":"@bernierllc/validators-crypto-parameters@1.0.2","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"dist":{"shasum":"fe2a12a0201fea05a60fe43405cfd3d09d1745f1","tarball":"https://registry.npmjs.org/@bernierllc/validators-crypto-parameters/-/validators-crypto-parameters-1.0.2.tgz","fileCount":23,"integrity":"sha512-+ag7bagsZle6bGxR4MdWLtpaVgd9ldkm7dSI2FJv3R+xxGPz80B7z/WQD1Jfj9Hn5hICf7r4r8JwQCeD7heHfw==","signatures":[{"sig":"MEQCIEWpTiq9m7u6Li7UtttHAOHFbg54F4WZvWw/eqrn3vMqAiATJHpUfdgXPYPWQT4qOSiIZ+PsVnNAPOET0JTUQU5C/g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":74059},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","gitHead":"31f3a945702aebca1527571a5dddddde19c4aad5","scripts":{"lint":"eslint src --ext .ts","test":"jest","build":"tsc","clean":"rm -rf dist","test:watch":"jest --watch","test:coverage":"jest --coverage","prepublishOnly":"npm run clean && npm run build && rm -rf dist/__tests__"},"_npmUser":{"name":"mkbernier","email":"mkbernier@gmail.com"},"_npmVersion":"11.4.2","description":"Primitive validator for cryptographic parameter validation (JWT algorithms, key sizes, KDF parameters)","directories":{},"_nodeVersion":"24.4.1","dependencies":{"@bernierllc/validators-core":"^0.1.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.5.0","eslint":"^8.0.0","ts-jest":"^29.1.0","typescript":"^5.0.0","@types/jest":"^29.5.0","@types/node":"^20.0.0","@typescript-eslint/parser":"^6.0.0","@typescript-eslint/eslint-plugin":"^6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/validators-crypto-parameters_1.0.2_1760037612643_0.6561176514987088","host":"s3://npm-registry-packages-npm-production"}},"1.2.0":{"name":"@bernierllc/validators-crypto-parameters","version":"1.2.0","keywords":["validator","security","cryptography","jwt","algorithms","key-size","kdf","pbkdf2","bcrypt","scrypt","hash","cipher","primitive"],"author":{"name":"Bernier LLC"},"license":"UNLICENSED","_id":"@bernierllc/validators-crypto-parameters@1.2.0","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"dist":{"shasum":"67a46a881ec00149701bbbd7865e6905e46ae11e","tarball":"https://registry.npmjs.org/@bernierllc/validators-crypto-parameters/-/validators-crypto-parameters-1.2.0.tgz","fileCount":23,"integrity":"sha512-NAXl9+YjVjTb0Ka33eGE7gJMdVc5g6sDKBKDxI3BylSyCeN+qQdfEp5D39h2Fo8LqMWefshhkfPfyHSajdr0ZA==","signatures":[{"sig":"MEUCIBeyRDCRjpuZqV3a/vzrRTejQkzgDCV5PeIauQaqVa+IAiEA4sLJkhS+VqeaaVYZltjlWSero/3vljb6885yDPqZLk4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":74162},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","gitHead":"af7e74b3715d56d3a193e1bb6743b337c2b0df6d","scripts":{"lint":"eslint src --ext .ts","test":"jest","build":"tsc","clean":"rm -rf dist","test:watch":"jest --watch","test:coverage":"jest --coverage","prepublishOnly":"npm run clean && npm run build && rm -rf dist/__tests__"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:4b566efa-7069-48a3-80b7-2e34cd1c8205"}},"_npmVersion":"lerna/9.0.3/node@v20.19.6+x64 (linux)","description":"Primitive validator for cryptographic parameter validation (JWT algorithms, key sizes, KDF parameters)","directories":{},"_nodeVersion":"20.19.6","dependencies":{"@bernierllc/validators-core":"0.1.2"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.5.0","eslint":"^8.0.0","ts-jest":"^29.1.0","typescript":"^5.0.0","@types/jest":"^29.5.0","@types/node":"^20.0.0","@typescript-eslint/parser":"^6.0.0","@typescript-eslint/eslint-plugin":"^6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/validators-crypto-parameters_1.2.0_1767642362390_0.2839921973666535","host":"s3://npm-registry-packages-npm-production"}},"1.2.1":{"name":"@bernierllc/validators-crypto-parameters","version":"1.2.1","keywords":["validator","security","cryptography","jwt","algorithms","key-size","kdf","pbkdf2","bcrypt","scrypt","hash","cipher","primitive"],"author":{"name":"Bernier LLC"},"license":"UNLICENSED","_id":"@bernierllc/validators-crypto-parameters@1.2.1","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"dist":{"shasum":"74929dd160b8837d4586158f77a90da933168f5b","tarball":"https://registry.npmjs.org/@bernierllc/validators-crypto-parameters/-/validators-crypto-parameters-1.2.1.tgz","fileCount":23,"integrity":"sha512-fHeRpCu4WntdC9zPSYi2qaox/Mplsg/pppfES03e7+tqb5mZc1717HxjdA1rU4xxBPliP59APK0DkMi8jAInTg==","signatures":[{"sig":"MEQCIET6sv8j8Kzdt2HVhceRlVxi6IOsurgHeWa0fsrxHTo0AiAKiKeGIthOtWnXDFrvIWsGmhvPRsoayx5cDHZkmqXwEg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":74023},"main":"dist/index.js","type":"module","_from":"file:bernierllc-validators-crypto-parameters-1.2.1.tgz","types":"dist/index.d.ts","scripts":{"lint":"eslint src --ext .ts","test":"jest","build":"tsc","clean":"rm -rf dist","test:watch":"jest --watch","test:coverage":"jest --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:4b566efa-7069-48a3-80b7-2e34cd1c8205"}},"_resolved":"/tmp/ea5d75184fac1c8ec5b010d8eb35b686/bernierllc-validators-crypto-parameters-1.2.1.tgz","_integrity":"sha512-fHeRpCu4WntdC9zPSYi2qaox/Mplsg/pppfES03e7+tqb5mZc1717HxjdA1rU4xxBPliP59APK0DkMi8jAInTg==","_npmVersion":"11.11.0","description":"Primitive validator for cryptographic parameter validation (JWT algorithms, key sizes, KDF parameters)","directories":{},"_nodeVersion":"20.20.0","dependencies":{"@bernierllc/validators-core":"0.1.3"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.5.0","eslint":"^8.0.0","ts-jest":"^29.1.0","typescript":"^5.0.0","@types/jest":"^29.5.0","@types/node":"^20.0.0","@typescript-eslint/parser":"^6.0.0","@typescript-eslint/eslint-plugin":"^6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/validators-crypto-parameters_1.2.1_1773078275451_0.4761166414691953","host":"s3://npm-registry-packages-npm-production"}},"1.2.2":{"name":"@bernierllc/validators-crypto-parameters","version":"1.2.2","keywords":["validator","security","cryptography","jwt","algorithms","key-size","kdf","pbkdf2","bcrypt","scrypt","hash","cipher","primitive"],"author":{"name":"Bernier LLC"},"license":"UNLICENSED","_id":"@bernierllc/validators-crypto-parameters@1.2.2","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"dist":{"shasum":"3b69365420a7f22a018ddd78c1ca12f1c72bd671","tarball":"https://registry.npmjs.org/@bernierllc/validators-crypto-parameters/-/validators-crypto-parameters-1.2.2.tgz","fileCount":23,"integrity":"sha512-MptV/idt8p/6dMlQ6qLY6gFIQmpH2HaDDZ8JlGWygH6qYdL2f2NFdaEjGpCxPmK3kYW7anRMHrZgkY/4ciuKug==","signatures":[{"sig":"MEQCICQgAQkltwr+mOoPuzSeMhaK13S2ZD82WbA3ZXjfSqw+AiAaFt0Rq92JhCNYJ+M0Vwn6845UohciyR+PutOb1JLvdw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":74023},"main":"dist/index.js","type":"module","_from":"file:bernierllc-validators-crypto-parameters-1.2.2.tgz","types":"dist/index.d.ts","scripts":{"lint":"eslint src --ext .ts","test":"jest","build":"tsc","clean":"rm -rf dist","test:watch":"jest --watch","test:coverage":"jest --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:4b566efa-7069-48a3-80b7-2e34cd1c8205"}},"_resolved":"/home/runner/work/tools/tools/packages/validators/validators-crypto-parameters/bernierllc-validators-crypto-parameters-1.2.2.tgz","_integrity":"sha512-MptV/idt8p/6dMlQ6qLY6gFIQmpH2HaDDZ8JlGWygH6qYdL2f2NFdaEjGpCxPmK3kYW7anRMHrZgkY/4ciuKug==","_npmVersion":"11.11.0","description":"Primitive validator for cryptographic parameter validation (JWT algorithms, key sizes, KDF parameters)","directories":{},"_nodeVersion":"20.20.0","dependencies":{"@bernierllc/validators-core":"0.1.4"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.5.0","eslint":"^8.0.0","ts-jest":"^29.1.0","typescript":"^5.0.0","@types/jest":"^29.5.0","@types/node":"^20.0.0","@typescript-eslint/parser":"^6.0.0","@typescript-eslint/eslint-plugin":"^6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/validators-crypto-parameters_1.2.2_1773163908462_0.30108933550027417","host":"s3://npm-registry-packages-npm-production"}},"1.3.0":{"name":"@bernierllc/validators-crypto-parameters","version":"1.3.0","keywords":["validator","security","cryptography","jwt","algorithms","key-size","kdf","pbkdf2","bcrypt","scrypt","hash","cipher","primitive"],"author":{"name":"Bernier LLC"},"license":"UNLICENSED","_id":"@bernierllc/validators-crypto-parameters@1.3.0","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"dist":{"shasum":"92d53691391ccad3af5d017aadbe70c4a788e0ce","tarball":"https://registry.npmjs.org/@bernierllc/validators-crypto-parameters/-/validators-crypto-parameters-1.3.0.tgz","fileCount":23,"integrity":"sha512-R9SiJ0lX2FDQlOMFGSCjyHzkTxr0qw8Fpn/Q7Y0pD9Hlku2ev7pue5fi2XaqUjZtD1uGAzoZdLcsTzrSko+Tow==","signatures":[{"sig":"MEUCIQDNXIYaAITm+iyry45kcOeYP78zmVsFf5n0K7cAJkcXQAIgMzoADAqHK8kTwCAuM+Bq+kzv/HSiiFfJmZ4cS7e+JJo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":74023},"main":"dist/index.js","type":"module","_from":"file:bernierllc-validators-crypto-parameters-1.3.0.tgz","types":"dist/index.d.ts","scripts":{"lint":"eslint src --ext .ts","test":"jest","build":"tsc","clean":"rm -rf dist","test:watch":"jest --watch","test:coverage":"jest --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:4b566efa-7069-48a3-80b7-2e34cd1c8205"}},"_resolved":"/home/runner/work/tools/tools/packages/validators/validators-crypto-parameters/bernierllc-validators-crypto-parameters-1.3.0.tgz","_integrity":"sha512-R9SiJ0lX2FDQlOMFGSCjyHzkTxr0qw8Fpn/Q7Y0pD9Hlku2ev7pue5fi2XaqUjZtD1uGAzoZdLcsTzrSko+Tow==","_npmVersion":"11.14.1","description":"Primitive validator for cryptographic parameter validation (JWT algorithms, key sizes, KDF parameters)","directories":{},"_nodeVersion":"20.20.2","dependencies":{"@bernierllc/validators-core":"0.2.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.5.0","eslint":"^8.0.0","ts-jest":"^29.1.0","typescript":"^5.0.0","@types/jest":"^29.5.0","@types/node":"^20.0.0","@typescript-eslint/parser":"^6.0.0","@typescript-eslint/eslint-plugin":"^6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/validators-crypto-parameters_1.3.0_1779242138693_0.0848018031569513","host":"s3://npm-registry-packages-npm-production"}},"1.4.0":{"name":"@bernierllc/validators-crypto-parameters","version":"1.4.0","keywords":["validator","security","cryptography","jwt","algorithms","key-size","kdf","pbkdf2","bcrypt","scrypt","hash","cipher","primitive"],"author":{"name":"Bernier LLC"},"license":"UNLICENSED","_id":"@bernierllc/validators-crypto-parameters@1.4.0","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"dist":{"shasum":"8672a952d672674037c4fb019831cb610f0b4047","tarball":"https://registry.npmjs.org/@bernierllc/validators-crypto-parameters/-/validators-crypto-parameters-1.4.0.tgz","fileCount":23,"integrity":"sha512-KKlNDZqRwOWv3TUDxkA+f2sA85abRvEhh8jvO+9OATHiCw6+OGTZu9imBzJbeJux1dYHzbhaVreGiSxkI4nigw==","signatures":[{"sig":"MEUCIGpJM2men3PGYzowWwcE8xzAE6qBAgPVSm23tkqAdmJwAiEAhmbA/KmNRtQoHKYXaVNAUR1y4YRscsdNA9vJgHh3xgU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":74023},"main":"dist/index.js","type":"module","_from":"file:bernierllc-validators-crypto-parameters-1.4.0.tgz","types":"dist/index.d.ts","scripts":{"lint":"eslint src --ext .ts","test":"jest","build":"tsc","clean":"rm -rf dist","test:watch":"jest --watch","test:coverage":"jest --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:4b566efa-7069-48a3-80b7-2e34cd1c8205"}},"_resolved":"/home/runner/work/tools/tools/packages/validators/validators-crypto-parameters/bernierllc-validators-crypto-parameters-1.4.0.tgz","_integrity":"sha512-KKlNDZqRwOWv3TUDxkA+f2sA85abRvEhh8jvO+9OATHiCw6+OGTZu9imBzJbeJux1dYHzbhaVreGiSxkI4nigw==","_npmVersion":"11.14.1","description":"Primitive validator for cryptographic parameter validation (JWT algorithms, key sizes, KDF parameters)","directories":{},"_nodeVersion":"20.20.2","dependencies":{"@bernierllc/validators-core":"0.3.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.5.0","eslint":"^8.0.0","ts-jest":"^29.1.0","typescript":"^5.0.0","@types/jest":"^29.5.0","@types/node":"^20.0.0","@typescript-eslint/parser":"^6.0.0","@typescript-eslint/eslint-plugin":"^6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/validators-crypto-parameters_1.4.0_1779250895717_0.04750216694764342","host":"s3://npm-registry-packages-npm-production"}},"1.6.0":{"name":"@bernierllc/validators-crypto-parameters","version":"1.6.0","description":"Primitive validator for cryptographic parameter validation (JWT algorithms, key sizes, KDF parameters)","main":"dist/index.js","types":"dist/index.d.ts","type":"module","keywords":["validator","security","cryptography","jwt","algorithms","key-size","kdf","pbkdf2","bcrypt","scrypt","hash","cipher","primitive"],"author":{"name":"Bernier LLC"},"license":"UNLICENSED","dependencies":{"@bernierllc/validators-core":"0.4.0"},"devDependencies":{"@types/jest":"^29.5.0","@types/node":"^20.0.0","@typescript-eslint/eslint-plugin":"^6.0.0","@typescript-eslint/parser":"^6.0.0","eslint":"^8.0.0","jest":"^29.5.0","ts-jest":"^29.1.0","typescript":"^5.0.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"scripts":{"build":"tsc","clean":"rm -rf dist","test":"jest","test:watch":"jest --watch","test:coverage":"jest --coverage","lint":"eslint src --ext .ts"},"_id":"@bernierllc/validators-crypto-parameters@1.6.0","_integrity":"sha512-yO5urdzP8Rr1QgFFqK/Xkoq4kSkwO6okxwDcF4Rw7iAqyWHqoY/offmn1apFpXOaH1ctSjgpU/uEw+Yj5bNi/Q==","_resolved":"/home/runner/work/tools/tools/packages/validators/validators-crypto-parameters/bernierllc-validators-crypto-parameters-1.6.0.tgz","_from":"file:bernierllc-validators-crypto-parameters-1.6.0.tgz","_nodeVersion":"20.20.2","_npmVersion":"11.14.1","dist":{"integrity":"sha512-yO5urdzP8Rr1QgFFqK/Xkoq4kSkwO6okxwDcF4Rw7iAqyWHqoY/offmn1apFpXOaH1ctSjgpU/uEw+Yj5bNi/Q==","shasum":"30ac53426238fe9ac6e1efbf586bc75bce1054ac","tarball":"https://registry.npmjs.org/@bernierllc/validators-crypto-parameters/-/validators-crypto-parameters-1.6.0.tgz","fileCount":26,"unpackedSize":76242,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIGKsSzOwDVKsT2W5/um6kl+tAZsLHas/+SYJVwCqY7shAiB1FJtrq0PRqqD5Byzvz1DOUeNAZGJJvJ+UTtPkDOc5WA=="}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:4b566efa-7069-48a3-80b7-2e34cd1c8205"}},"directories":{},"maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/validators-crypto-parameters_1.6.0_1779252184781_0.6283281202127871"},"_hasShrinkwrap":false}},"time":{"created":"2025-10-09T19:18:03.569Z","modified":"2026-05-20T04:43:05.054Z","1.0.1":"2025-10-09T19:18:03.859Z","1.0.2":"2025-10-09T19:20:12.824Z","1.2.0":"2026-01-05T19:46:02.579Z","1.2.1":"2026-03-09T17:44:35.594Z","1.2.2":"2026-03-10T17:31:48.643Z","1.3.0":"2026-05-20T01:55:38.829Z","1.4.0":"2026-05-20T04:21:35.890Z","1.6.0":"2026-05-20T04:43:04.933Z"},"author":{"name":"Bernier LLC"},"license":"UNLICENSED","keywords":["validator","security","cryptography","jwt","algorithms","key-size","kdf","pbkdf2","bcrypt","scrypt","hash","cipher","primitive"],"description":"Primitive validator for cryptographic parameter validation (JWT algorithms, key sizes, KDF parameters)","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"readme":"# @bernierllc/validators-crypto-parameters\n\nPrimitive validator for cryptographic parameter validation, ensuring secure configurations for JWT algorithms, key sizes, KDF parameters, hash algorithms, and cipher suites.\n\n## Installation\n\n```bash\nnpm install @bernierllc/validators-crypto-parameters\n```\n\n## Features\n\n- **JWT Algorithm Validation** - Detects weak or insecure JWT algorithms (especially `none`, `HS256`)\n- **Key Size Validation** - Ensures minimum key sizes for RSA (2048-bit), ECC (256-bit), and AES (128-bit)\n- **KDF Parameters Validation** - Validates PBKDF2 iterations, bcrypt cost factors, and scrypt N parameters\n- **Hash Algorithm Validation** - Detects weak hash algorithms (MD5, SHA-1)\n- **Cipher Suite Validation** - Identifies weak or deprecated TLS/SSL cipher suites and protocol versions\n\n## Usage\n\n### Basic Validation\n\n```typescript\nimport { validateCryptoParameters } from '@bernierllc/validators-crypto-parameters';\n\nconst code = `\n  const token = jwt.sign(payload, secret, { alg: 'none' });\n  const hash = crypto.createHash('md5');\n  const key = crypto.generateKeyPair('rsa', { modulusLength: 1024 });\n`;\n\nconst problems = await validateCryptoParameters(code);\n\nconsole.log(`Found ${problems.length} crypto issues`);\nproblems.forEach((problem) => {\n  console.log(`${problem.severity}: ${problem.message}`);\n  console.log(`  Location: Line ${problem.location?.line}`);\n  console.log(`  Suggestion: ${problem.suggestion}`);\n});\n```\n\n### Quick Checks\n\n```typescript\nimport { hasCryptoIssues, getCryptoIssueCounts, getCryptoIssueSummary } from '@bernierllc/validators-crypto-parameters';\n\n// Quick boolean check\nif (await hasCryptoIssues(code)) {\n  console.log('Crypto issues detected!');\n}\n\n// Get counts by type\nconst counts = await getCryptoIssueCounts(code);\nconsole.log(`JWT: ${counts.jwtAlgorithms}, Hash: ${counts.hashAlgorithms}`);\n\n// Get detailed summary\nconst summary = await getCryptoIssueSummary(code);\nconsole.log(`${summary.errors} errors, ${summary.warnings} warnings`);\n```\n\n### Custom Options\n\n```typescript\nimport { validateCryptoParameters } from '@bernierllc/validators-crypto-parameters';\n\nconst problems = await validateCryptoParameters(code, {\n  // Enable/disable specific checks\n  checkJwtAlgorithms: true,\n  checkKeySizes: true,\n  checkKdfParameters: true,\n  checkHashAlgorithms: true,\n  checkCipherSuites: true,\n\n  // Custom minimum values\n  minRsaKeySize: 4096,        // Default: 2048\n  minEccKeySize: 384,          // Default: 256\n  minAesKeySize: 256,          // Default: 128\n  minPbkdf2Iterations: 200000, // Default: 100000\n  minBcryptCost: 12,           // Default: 10\n  minScryptN: 32768,           // Default: 16384\n\n  // Allow specific algorithms\n  allowedJwtAlgorithms: ['RS256', 'ES256'],\n  allowedHashAlgorithms: ['SHA256', 'SHA384', 'SHA512'],\n\n  // Permissive options (not recommended for production)\n  allowJwtNoneAlgorithm: false, // Default: false\n  allowWeakHashes: false,        // Default: false\n  allowExportCiphers: false,     // Default: false\n});\n```\n\n## API Reference\n\n### `validateCryptoParameters(content, options?, utils?)`\n\nMain validation function that checks all cryptographic parameters.\n\n**Parameters:**\n- `content` (string) - Source code or configuration to validate\n- `options` (CryptoParameterOptions) - Optional validation options\n- `utils` (SharedUtils) - Optional shared utilities\n\n**Returns:** `Promise<Problem[]>` - Array of validation problems\n\n### `hasCryptoIssues(content, options?)`\n\nQuick check for any cryptographic issues.\n\n**Returns:** `Promise<boolean>` - True if issues detected\n\n### `getCryptoIssueCounts(content, options?)`\n\nGet count of issues by type.\n\n**Returns:** `Promise<IssueCounts>` - Object with counts:\n- `jwtAlgorithms` - JWT algorithm issues\n- `keySizes` - Key size issues\n- `kdfParameters` - KDF parameter issues\n- `hashAlgorithms` - Hash algorithm issues\n- `cipherSuites` - Cipher suite issues\n- `total` - Total issue count\n\n### `getCryptoIssueSummary(content, options?)`\n\nGet detailed summary with severity breakdown.\n\n**Returns:** `Promise<Summary>` - Object with:\n- `total` - Total issues\n- `errors` - Error count\n- `warnings` - Warning count\n- `byType` - Breakdown by type\n\n## Options Reference\n\n### CryptoParameterOptions\n\n```typescript\ninterface CryptoParameterOptions {\n  // Check toggles\n  checkJwtAlgorithms?: boolean;      // Default: true\n  checkKeySizes?: boolean;           // Default: true\n  checkKdfParameters?: boolean;      // Default: true\n  checkHashAlgorithms?: boolean;     // Default: true\n  checkCipherSuites?: boolean;       // Default: true\n\n  // Minimum key sizes (bits)\n  minRsaKeySize?: number;            // Default: 2048\n  minEccKeySize?: number;            // Default: 256\n  minAesKeySize?: number;            // Default: 128\n\n  // Minimum KDF parameters\n  minPbkdf2Iterations?: number;      // Default: 100000\n  minBcryptCost?: number;            // Default: 10\n  minScryptN?: number;               // Default: 16384\n\n  // Allow weak options\n  allowJwtNoneAlgorithm?: boolean;   // Default: false\n  allowWeakHashes?: boolean;         // Default: false\n  allowExportCiphers?: boolean;      // Default: false\n\n  // Custom allowed lists\n  allowedJwtAlgorithms?: string[];\n  allowedHashAlgorithms?: string[];\n}\n```\n\n## Validation Rules\n\n### JWT Algorithms\n\n**Weak Algorithms (Warnings/Errors):**\n- `none` - **ERROR**: No signature verification\n- `HS256`, `HS384`, `HS512` - **WARNING**: Symmetric, shared secret required\n\n**Recommended Algorithms:**\n- `RS256`, `RS384`, `RS512` - RSA with SHA-2\n- `ES256`, `ES384`, `ES512` - ECDSA with SHA-2\n- `PS256`, `PS384`, `PS512` - RSA-PSS with SHA-2\n\n### Key Sizes\n\n**Minimum Sizes:**\n- RSA: 2048 bits (recommend 4096 for long-term)\n- ECC: 256 bits (P-256, secp256r1)\n- AES: 128 bits (recommend 256 for sensitive data)\n- DSA: 2048 bits\n\n### KDF Parameters\n\n**PBKDF2:**\n- Minimum iterations: 100,000\n- OWASP recommendation: 210,000+ for PBKDF2-HMAC-SHA256\n\n**bcrypt:**\n- Minimum cost factor: 10\n- Recommended: 12 or higher\n- Maximum: 31\n\n**scrypt:**\n- Minimum N parameter: 16,384 (2^14)\n- Recommended: 32,768 or higher\n- Maximum: 1,048,576 (2^20)\n\n### Hash Algorithms\n\n**Weak (Not Allowed):**\n- MD5 - Cryptographically broken\n- SHA-1 - Vulnerable to collision attacks\n\n**Acceptable:**\n- SHA-224, SHA-256, SHA-384, SHA-512\n- SHA3-256, SHA3-384, SHA3-512\n\n### Cipher Suites\n\n**Weak Patterns:**\n- NULL - No encryption\n- EXPORT/EXP - Intentionally weakened\n- DES/3DES - Weak encryption\n- RC4/ARCFOUR - Broken stream cipher\n- ADH/AECDH/aNULL - No authentication\n- MD5 - Weak hash\n\n**Deprecated Protocols:**\n- SSLv2, SSLv3\n- TLS 1.0, TLS 1.1\n\n**Recommended:**\n- TLS 1.2 or TLS 1.3 only\n- Modern ciphers: AES-GCM, ChaCha20-Poly1305\n- Perfect forward secrecy: ECDHE\n\n## Examples\n\n### Validating Node.js Crypto Code\n\n```typescript\nconst code = `\n  const crypto = require('crypto');\n\n  // Good: Strong hash\n  const hash = crypto.createHash('sha256').update(data).digest('hex');\n\n  // Bad: Weak hash\n  const md5 = crypto.createHash('md5').update(data).digest('hex');\n\n  // Good: Strong PBKDF2\n  crypto.pbkdf2(password, salt, 200000, 64, 'sha512', callback);\n\n  // Bad: Weak PBKDF2\n  crypto.pbkdf2(password, salt, 1000, 64, 'sha512', callback);\n`;\n\nconst problems = await validateCryptoParameters(code);\n// Returns problems for MD5 and low PBKDF2 iterations\n```\n\n### Validating JWT Configuration\n\n```typescript\nconst jwtConfig = `\n  const jwtOptions = {\n    algorithm: 'RS256',  // Good: Asymmetric\n    expiresIn: '1h'\n  };\n\n  const weakJwt = jwt.sign(payload, secret, { alg: 'none' });  // Bad: No signature\n`;\n\nconst problems = await validateCryptoParameters(jwtConfig);\n// Returns error for 'none' algorithm\n```\n\n### Validating TLS Configuration\n\n```typescript\nconst tlsConfig = `\n  const tlsOptions = {\n    minVersion: 'TLSv1.2',\n    ciphers: [\n      'TLS_AES_128_GCM_SHA256',\n      'TLS_AES_256_GCM_SHA384',\n      'ECDHE-RSA-AES128-GCM-SHA256'\n    ].join(':')\n  };\n\n  // Bad configuration\n  const weakTls = {\n    minVersion: 'TLSv1.0',\n    ciphers: 'RC4-SHA:DES-CBC3-SHA'\n  };\n`;\n\nconst problems = await validateCryptoParameters(tlsConfig);\n// Returns errors for TLS 1.0, RC4, and 3DES\n```\n\n## Integration Status\n\n### Logger Integration\n**Status**: Not applicable - Pure validation, no runtime logging\n\nThis is a primitive validator package that performs static code analysis. It does not require @bernierllc/logger integration as it has no runtime logging needs. All output is returned as structured Problem objects.\n\n### Docs-Suite Integration\n**Status**: Ready - Full TypeDoc documentation\n\nComplete API documentation is available via TypeDoc comments throughout the codebase. Documentation can be exported and integrated into the docs-suite.\n\n### NeverHub Integration\n**Status**: Not applicable - Primitive validator, no service dependencies\n\nThis is a primitive validator following the validators architecture principles. It has no external service dependencies and does not require @bernierllc/neverhub-adapter integration. The validator operates independently and can be used in any environment.\n\n## Best Practices\n\n1. **Never use `none` algorithm for JWT** - Always require signature verification\n2. **Prefer asymmetric JWT algorithms** (RS256, ES256) over symmetric (HS256)\n3. **Use minimum 2048-bit RSA keys**, preferably 4096-bit for long-term security\n4. **Use SHA-256 or higher** for hashing - never MD5 or SHA-1\n5. **Use PBKDF2 with 100,000+ iterations** or bcrypt with cost 10+\n6. **Use TLS 1.2 or 1.3** with modern cipher suites (AES-GCM, ChaCha20)\n7. **Enable perfect forward secrecy** (ECDHE ciphers)\n\n## Security References\n\n- [OWASP Cryptographic Storage Cheat Sheet](https://cheatsheetseries.owasp.org/cheatsheets/Cryptographic_Storage_Cheat_Sheet.html)\n- [NIST Key Management Guidelines](https://csrc.nist.gov/publications/detail/sp/800-57-part-1/rev-5/final)\n- [Mozilla TLS Configuration Guide](https://wiki.mozilla.org/Security/Server_Side_TLS)\n- [JWT Best Current Practices](https://datatracker.ietf.org/doc/html/rfc8725)\n\n## License\n\nCopyright (c) 2025 Bernier LLC. All rights reserved.\n","readmeFilename":"README.md"}