protected CharArrayPasswordEncoder getCharEncoder() { if (charEncoder == null) { synchronized (this) { if (charEncoder == null) { charEncoder = createCharEncoder(); } } } return charEncoder; }
protected PasswordEncoder getStringEncoder() { if (stringEncoder == null) { synchronized (this) { if (stringEncoder == null) { stringEncoder = createStringEncoder(); } } } return stringEncoder; }
String stripPrefix(String encPass) { return getPrefix() != null ? removePrefix(encPass) : encPass; }
@Override public boolean isPasswordValid(String encPass, String rawPass, Object salt) throws DataAccessException { if (encPass == null) return false; return getStringEncoder().matches(rawPass, stripPrefix(encPass)); }
@Override public boolean isPasswordValid(String encPass, char[] rawPass, Object salt) { if (encPass == null) return false; return getCharEncoder().isPasswordValid(stripPrefix(encPass), rawPass, salt); }
@Override public String encodePassword(char[] rawPass, Object salt) throws DataAccessException { return doEncodePassword(getCharEncoder().encodePassword(rawPass, salt)); }
@Override public String encodePassword(String rawPass, Object salt) throws DataAccessException { return doEncodePassword(getStringEncoder().encode(rawPass)); }
/** * @param encPass * @return true if this encoder has encoded encPass */ public boolean isResponsibleForEncoding(String encPass) { if (encPass == null) return false; return encPass.startsWith(getPrefix() + GeoServerPasswordEncoder.PREFIX_DELIMTER); }
public AbstractGeoserverPasswordEncoder() { setAvailableWithoutStrongCryptogaphy(true); }
@Override public boolean matches(CharSequence rawPassword, String encodedPassword) { return this.isPasswordValid(encodedPassword, rawPassword.toString(), null); }
String doEncodePassword(String encPass) { if (encPass == null) { return encPass; } StringBuffer buff = initPasswordBuffer(); buff.append(encPass); return buff.toString(); }
protected String removePrefix(String encPass) { return encPass.replaceFirst(getPrefix() + GeoServerPasswordEncoder.PREFIX_DELIMTER, ""); }