org.owasp.passfault.RepeatingPatternFinder Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of passfault-core Show documentation
Show all versions of passfault-core Show documentation
OWASP Passfault evaluates password strength and enforces password policy
/* ©Copyright 2011 Cameron Morris
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
* http://www.apache.org/licenses/LICENSE-2.0
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.owasp.passfault;
import java.util.List;
/**
* This Finder is a post processing finder. It will analyze an already analyzed
* password to find if any identified patterns are repeated.
* @author cam
*/
public class RepeatingPatternFinder {
public static final String DUPLICATE_PATTERN = "DUPLICATE";
PathCost process(PathCost cost, PasswordResults password) {
PathCost newPath = new PathCost(password);
List path = cost.getPath();
for (int len = path.size() - 1, i = len; i >= 0; i--) {
PasswordPattern pass = path.get(i);
boolean foundDuplicate = false;
for (int j = i - 1; j >= 0; j--) {
PasswordPattern toCompare = path.get(j);
if (!toCompare.getName().equals(RandomPattern.RANDOM_PATTERN)
&& toCompare.getName().equals(pass.getName())
&& toCompare.getMatchString().equals(pass.getMatchString())) {
//repeated-duplicate pattern instance
foundDuplicate = true;
break;
}
}
if (foundDuplicate) {
PasswordPattern dupp = new PasswordPattern(pass.getStartIndex(), pass.getLength(), pass.getMatchString(), 1,
"Duplication of an earlier pattern: " + pass.getName(), DUPLICATE_PATTERN, null);
newPath.addPattern(dupp);
} else {
newPath.addPattern(pass);
}
}
return newPath;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy