{"_id":"@ancyker/passwdqc","_rev":"1-908d6cb4469bc68dd9add5e0d36af9eb","name":"@ancyker/passwdqc","dist-tags":{"latest":"1.0.2"},"versions":{"1.0.2":{"name":"@ancyker/passwdqc","version":"1.0.2","homepage":"https://github.com/ancyker/passwdqc-js/","description":"JavaScript port of Openwall passwdqc, a password/passphrase strength checking and policy enforcement toolset.","author":{"name":"Joshua Weitzel","email":"joshua@weitzel.io"},"contributors":[{"name":"Evgeny Uspenskiy","email":"burashka-lcme@yandex.ru"}],"repository":{"type":"git","url":"git+https://github.com/ancyker/passwdqc-js.git"},"bugs":{"url":"https://github.com/ancyker/passwdqc-js/issues"},"main":"./src/passwdqc_check.js","licenses":[{"type":"MIT","url":"https://github.com/ancyker/passwdqc-js/blob/master/LICENSE"}],"scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"license":"ISC","gitHead":"de21d146b7bbb40498e8d60d9bce801b20a88dda","_id":"@ancyker/passwdqc@1.0.2","_nodeVersion":"10.15.3","_npmVersion":"6.13.6","dist":{"integrity":"sha512-n3uuebK3OXUpL2Wu1lpqngebGTo5fbj62vg5YplyjA1vqcd7/POR3kc8wQ9JjBjBoILviuR+gyDCbzbtYk7KiQ==","shasum":"1e8ac31f39b34f14847c59d857a1f21ef6b456ce","tarball":"https://registry.npmjs.org/@ancyker/passwdqc/-/passwdqc-1.0.2.tgz","fileCount":6,"unpackedSize":66623,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeHSoBCRA9TVsSAnZWagAA0CQP/3TNLUVQAPq/v/T9/y7b\neNTJ3t5Bqu+I9ooYzLGsfHDZ88nXqPak9e5qxJFTRq9Y0h6hKe+Bsx9jWbN/\ng+TkrZVcyWWGJtrlomlf4jgJzdZEkRxl/qEaqoNFcl3H3h77fmQBhtMpntMA\neKTPyPUDCJRfsNjjaH3bF82WGrW5oLHXTd2T9QD2O7BSQyZAcmxAoEZJGa6w\nOGp7ZUwKkeAqpXxg6bA6hwc1T6U/7wS0ocW92Ucgy1Ev5YBmMeEDiHhGxPQR\n/9uoMyfermLbMli2FWInpZ+WWsH8epBGCu8+DzSAuv/uCCrZPv6c2MJr7sUZ\nN/2z+E4sn6eRaWSDGwqVA0RA+C3myWhZpIZ39Nn2UeGvhGBv1w6fR2tsnYMr\nttt01Lqv0M4W8CXpdpNQR2MUyoDKovAaAx2toO4XEWNY3yHvrrTF0MinVS7b\n/MIq/7n3fe3CLhQOLKI39NTQ2CfhWqpoGozYmQQu6GhXKwVGoT898RKXzdrM\nf9ERvPk3qMghVq+6R+XDWDpNxLed7qW8U4KfcKK3QPYREMnKj6UKZSrmfCS9\nIoh8htD2RPikv+WeHLMu2sgOtdUO3tcPVnZBXsHC77jTE+o8TpjR0zuMhTps\n4jXpIHC6JuWOqXVi9ZS1Lh7wK0ifYBQuaCSa5KfQrREiD7SrTFzuxXgxvAyL\n1lsb\r\n=r2Yt\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD9Q7zmm1LP9ovmrGcDlGHmMjNI6kaDV1aR4E9BmHVCaQIgOSsZ/4HkKVc7fSHIBTuQhzlTVhtC+8o2aOQuaYy2s7E="}]},"maintainers":[{"name":"ancyker","email":"joshua@weitzel.io"}],"_npmUser":{"name":"ancyker","email":"joshua@weitzel.io"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/passwdqc_1.0.2_1578969600607_0.16632762648457522"},"_hasShrinkwrap":false}},"time":{"created":"2020-01-14T02:40:00.580Z","1.0.2":"2020-01-14T02:40:01.036Z","modified":"2022-04-04T13:57:18.274Z"},"maintainers":[{"name":"ancyker","email":"joshua@weitzel.io"}],"description":"JavaScript port of Openwall passwdqc, a password/passphrase strength checking and policy enforcement toolset.","homepage":"https://github.com/ancyker/passwdqc-js/","repository":{"type":"git","url":"git+https://github.com/ancyker/passwdqc-js.git"},"contributors":[{"name":"Evgeny Uspenskiy","email":"burashka-lcme@yandex.ru"}],"author":{"name":"Joshua Weitzel","email":"joshua@weitzel.io"},"bugs":{"url":"https://github.com/ancyker/passwdqc-js/issues"},"license":"ISC","readme":"# Passwdqc-js\n## About\n\nThe [passwdqc](http://openwall.com/passwdqc/) is the brilliant password quality checker library made by [Openwall](http://openwall.com/). **Passwdqc-js** is a JavaScript port of [passwdqc](http://openwall.com/passwdqc/), made by [Parallels](https://www.parallels.com/). **Passwdqc-js** supports AMD and NodeJS/CommonJS module format. So it runs on both client and server.\n\n## Demo page (Limited functionality)\n\nhttp://doc.apsstandard.org/7.2/apsfiddle/?file=7.2/_static/examples/password/calcStrength.html\n\n## Compatibilty with Passwdqc\n\nPasswdqc-js was tested for compatibility with original passwdqc. We used following password databases in order to guarantee that both accept nearly the same subset of passwords:\n\n* 14M unique RockYou passwords from 2009 leak (99.99% match with passwdqc)\n* 10K random 10-character symbolic passwords (100% match with passwdqc)\n* 10K random pass phrases, generated by passwdqc/pwqgen (100% match with passwdqc)\n\n## Usage\nUse `passwdqc.check(newpass, [oldpass], [login], [gecos], [params])` function to check password quality.\n\n**Parameters**\n\n* **newpass**: password to check\n* **oldpass**: old password to check if new password is based on it\n* **login**: user's login name to check that password is not based on it\n* **gecos**: any other personal information to check\n* **params**: custom parameters for passwdqc algorithm, [see](http://www.openwall.com/passwdqc/README.shtml)\n\n**Return value**\n\n* Empty string if password is considered good;\n* The reason why password is considered weak, otherwise.\n\n### Examples\n**NodeJS**\n```js\nvar passwdqc = require('passwdqc');\n\nvar rv = passwdqc.check(password, old_password);\n\nif (!rv) {\n\t// Password is of good quality\n\t// ...\n} else {\n\t// The \"rv\" now contains reason why password considered weak\n}\n```\n\n**Client-Side**\n```js\n// Declare security policy\nvar lowParams\t = { min: [6,  6,  6, 6, 6], max: 40, passphrase_words: 3, match_length: 4, similar_deny: 1, random_bits: 47, flags: 3, retry: 3 },\n\tmediumParams = { min: [8,  8,  8, 7, 6], max: 40, passphrase_words: 3, match_length: 4, similar_deny: 1, random_bits: 47, flags: 3, retry: 3 };\n\n// Checking value\nfunction check(val){\n    if(val.length == 0) return 0;\n    if(!passwdqc_check(val)) return 4;\n    if(!passwdqc_check(val, undefined, undefined, undefined, mediumParams)) return 3;\n    if(!passwdqc_check(val, undefined, undefined, undefined, lowParams)) return 2;\n    return 1;\n}\n```\n[Live full example](http://jsfiddle.net/burashka/mdhs4/2/embedded/result/)\n\n### Distribution\n**NPM**\n```shell\nnpm install passwdqc\n```\n\n**Bower**\nMore info about [Bower](http://bower.io/)\n```shell\nbower install passwdqc\n```\n\n## TODO\n* More examples\n* Random password/passphrase generator\n","readmeFilename":"README.md"}