package com.airlock.iam.saml2.infrastructure.plugin;

import com.airlock.iam.elog.api.ELogger;
import com.airlock.iam.elog.api.ELoggerFactory;
import com.airlock.iam.plugin.api.exception.InitializeException;
import com.airlock.iam.plugin.impl.PropertyExternalFileUtils;
import com.airlock.iam.saml2.domain.model.logging.Saml2LogTypes;
import com.sun.identity.saml.xmlsig.PasswordDecoder;

public class Saml2PasswordDecoder implements PasswordDecoder {
   private static final ELogger LOG = ELoggerFactory.getLogger(Saml2PasswordDecoder.class);

   @Override
   public String getDecodedPassword(String encodedPwd) {
      if (PropertyExternalFileUtils.isScrambledString(encodedPwd)) {
         try {
            return PropertyExternalFileUtils.unscrambleString(encodedPwd);
         } catch (InitializeException e) {
            LOG.warn(Saml2LogTypes.FEDERATION_LIBRARY_MESSAGE, "getDecodedPassword() - could not unscramble xml signature related password");
            return encodedPwd;
         }
      } else {
         return encodedPwd;
      }
   }
}
