private PasswordEncryptionService() { services = new HashMap<String, PasswordEncryptionServiceProvider>(); provider = ClassicEngineBoot.getInstance() .getObjectFactory() .get(PasswordEncryptionServiceProvider.class); registerService(provider); logger.debug("Selected " + provider.getClass() + " as default provider."); }
public String decrypt(final RootXmlReadHandler root, final String encryptedPassword) { if (StringUtils.isEmpty(encryptedPassword)) { // empty string vs. null may have significance. return encryptedPassword; } final Object helperObject = root.getHelperObject(ContentRootElementHandler.PRPT_SPEC_VERSION); final boolean legacyFix; if (helperObject instanceof Integer) { final Integer version = (Integer) helperObject; if (version == -1) { logger.warn("Decrypting password skipped, as we are dealing with an older version. "); return encryptedPassword; } legacyFix = (version.intValue() < ClassicEngineBoot.computeVersionId(5, 0, 0)); } else { legacyFix = false; } final int separatorPos = encryptedPassword.indexOf(':'); if (separatorPos == -1) { // assume legacy mode logger.warn("Decrypting password skipped, as the password-text has no service indicator. "); return encryptedPassword; } final String serviceName = encryptedPassword.substring(0, separatorPos); final String payload = encryptedPassword.substring(separatorPos + 1); final PasswordEncryptionServiceProvider provider = services.get(serviceName); if (legacyFix && ObscurificatePasswordEncryptionServiceProvider.SERVICE_TAG.equals(serviceName)) { return new Obscurificate48PasswordEncryptionServiceProvider().decrypt(payload); } if (provider != null) { return provider.decrypt(payload); } logger.debug("Decrypting password skipped, as the service indicator is not recognized. "); return encryptedPassword; }
public String encrypt(final String rawPassword) { if (rawPassword == null) { return null; } return provider.getPrefix() + ":" + provider.encrypt(rawPassword); }
public void registerService(final PasswordEncryptionServiceProvider provider) { if (provider == null) { throw new NullPointerException(); } services.put(provider.getPrefix(), provider); }