mirror of
https://github.com/gosticks/DefinitelyTyped.git
synced 2026-10-04 06:47:03 +00:00
Merge pull request #22460 from stephtr/master
Add definition for owasp-password-strength-test
This commit is contained in:
+73
@@ -0,0 +1,73 @@
|
||||
// Type definitions for owasp-password-strength-test 1.3
|
||||
// Project: https://github.com/nowsecure/owasp-password-strength-test
|
||||
// Definitions by: Stephan Troyer <https://github.com/stephtr>
|
||||
// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
|
||||
// TypeScript Version: 2.1
|
||||
|
||||
export as namespace owaspPasswordStrengthTest;
|
||||
|
||||
export interface TestResult {
|
||||
/** error messages associated with the failed tests */
|
||||
errors: string[];
|
||||
/** enumerates which tests have failed, beginning from 0 with the first required test */
|
||||
failedTests: number[];
|
||||
/** enumerates which tests have succeeded, beginning from 0 with the first required test */
|
||||
passedTests: number[];
|
||||
/** error messages of required tests that have failed */
|
||||
requiredTestErrors: string[];
|
||||
/** error messages of optional tests that have failed */
|
||||
optionalTestErrors: string[];
|
||||
/** indicates whether or not the password was considered to be a passphrase */
|
||||
isPassphrase: boolean;
|
||||
/** indicates whether or not the user's password satisfied the strength requirements */
|
||||
strong: boolean;
|
||||
/**
|
||||
* indicates how many of the optional tests were passed;
|
||||
* In order for the password to be considered "strong", it (by default) must either be a passphrase,
|
||||
* or must pass a number of optional tests that is equal to or greater than configs.minOptionalTestsToPass
|
||||
*/
|
||||
optionalTestsPassed: number;
|
||||
}
|
||||
export interface TestConfig {
|
||||
/**
|
||||
* toggles the "passphrase" mechanism on and off;
|
||||
* If set to false, the strength-checker will abandon the notion of "passphrases",
|
||||
* and will subject all passwords to the same complexity requirements.
|
||||
*/
|
||||
allowPassphrases: boolean;
|
||||
/** constraint on a password's maximum length */
|
||||
maxLength: number;
|
||||
/** constraint on a password's minimum length */
|
||||
minLength: number;
|
||||
/**
|
||||
* minimum length a password needs to achieve in order to be considered a "passphrase"
|
||||
* (and thus exempted from the optional complexity tests by default)
|
||||
*/
|
||||
minPhraseLength: number;
|
||||
/**
|
||||
* minimum number of optional tests that a password must pass in order to be considered "strong";
|
||||
* By default (per the OWASP guidelines), four optional complexity tests are made,
|
||||
* and a password must pass at least three of them in order to be considered "strong"
|
||||
*/
|
||||
minOptionalTestsToPass: number;
|
||||
|
||||
// // to add support for https://github.com/nowsecure/owasp-password-strength-test/pull/5
|
||||
// /**
|
||||
// * toggles the i18n error keys in place of english error messages.
|
||||
// * This can be useful when translating the errors using a 3rd party i18n library.
|
||||
// * When true the following keys can be returned:
|
||||
// * `failedMinLength`, `failedMaxLength`, `failedThreeRepeatedChars`, `optionalLowercaseRequired`, `optionalUppercaseRequired`, `optionalNumberRequired` and `optionalSpecialCharRequired`.
|
||||
// */
|
||||
// i18nErrorKeys?: boolean;
|
||||
}
|
||||
|
||||
export type PasswordTest = (password: string) => string | undefined;
|
||||
|
||||
export function test(password: string): TestResult;
|
||||
export function config(configuration: Partial<TestConfig>): void;
|
||||
|
||||
export let tests: {
|
||||
required: PasswordTest[];
|
||||
optional: PasswordTest[];
|
||||
};
|
||||
export const configs: Readonly<TestConfig>;
|
||||
@@ -0,0 +1,18 @@
|
||||
import * as owasp from 'owasp-password-strength-test';
|
||||
|
||||
owasp.config({
|
||||
allowPassphrases: true,
|
||||
maxLength: 128,
|
||||
minLength: 10,
|
||||
minPhraseLength: 20,
|
||||
minOptionalTestsToPass: 4,
|
||||
});
|
||||
|
||||
owasp.tests.required.push(password => {
|
||||
if (password === 'one two three four five') {
|
||||
return "That's the kind of thing an idiot would have on his luggage!";
|
||||
}
|
||||
});
|
||||
|
||||
const result = owasp.test('correct horse battery staple');
|
||||
result.errors.length;
|
||||
@@ -0,0 +1,23 @@
|
||||
{
|
||||
"compilerOptions": {
|
||||
"module": "commonjs",
|
||||
"lib": [
|
||||
"es6"
|
||||
],
|
||||
"noImplicitAny": true,
|
||||
"noImplicitThis": true,
|
||||
"strictNullChecks": true,
|
||||
"strictFunctionTypes": true,
|
||||
"baseUrl": "../",
|
||||
"typeRoots": [
|
||||
"../"
|
||||
],
|
||||
"types": [],
|
||||
"noEmit": true,
|
||||
"forceConsistentCasingInFileNames": true
|
||||
},
|
||||
"files": [
|
||||
"index.d.ts",
|
||||
"owasp-password-strength-test-tests.ts"
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
{ "extends": "dtslint/dt.json" }
|
||||
Reference in New Issue
Block a user