package itn.let.utl.fcc.service;

import javax.annotation.Resource;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;

import egovframework.rte.fdl.cryptography.EgovEnvCryptoService;
import egovframework.rte.fdl.cryptography.EgovPasswordEncoder;

/**
 *
 * egov crypto 에 대한 Util 클래스
 * @author 사업기술본부 조용준(ITN)
 * @since 2021.07.16
 * @version 1.0
 * @see
 *
 * <pre>
 * << 개정이력(Modification Information) >>
 *
 *   수정일      수정자           수정내용
 *  -------    --------    ---------------------------
 *   2021.07.16  조용준          최초 생성 *   
 *
 * </pre>
 */
@Component("egovCryptoUtil")
public class EgovCryptoUtil {

	private static final Logger LOGGER = LoggerFactory.getLogger(EgovCryptoUtil.class);

	/** 암호화서비스 */
	@Resource(name = "egovEnvCryptoService")	
	EgovEnvCryptoService cryptoService;
	
	@Resource(name = "egovEnvPasswordEncoderService")
	EgovPasswordEncoder egovPasswordEncoder;
	
	
    /**
     * 암호화
     *
     * @param encrypt
     */
    public String encrypt(String encrypt) {

    	try {
    		LOGGER.debug("enc1-cryptoService.getCyptoAlgorithmKey()");
    		//LOGGER.debug(cryptoService.getCyptoAlgorithmKey());
    		//LOGGER.debug(cryptoService.getCyptoAlgorithmKey());
    		//System.out.println("enc1-cryptoService.getCyptoAlgorithmKey()");
    		//System.out.println(cryptoService.getCyptoAlgorithmKey());
    		//System.out.println(cryptoService.getCyptoAlgorithmKey());
    		//return cryptoService.encrypt(encrypt); // Handles URLEncoding.
			return cryptoService.encryptNone(encrypt); // Does not handle URLEncoding.
        } catch(IllegalArgumentException e) {
    		LOGGER.error("[IllegalArgumentException] Try/Catch...usingParameters Runing : "+ e.getMessage());
        } catch (Exception e) {
        	LOGGER.error("[" + e.getClass() +"] :" + e.getMessage());
        }
		return encrypt;
    }    
    
    /**
     * 복호화
     *
     * @param decrypt
     */
    public String decrypt(String decrypt){

    	try {
    		
    		LOGGER.debug("decry1-cryptoService.getCyptoAlgorithmKey()");
    		//LOGGER.debug(cryptoService.getCyptoAlgorithmKey());
    		//LOGGER.debug(cryptoService.getCyptoAlgorithmKey());
    		//System.out.println("decry2-cryptoService.getCyptoAlgorithmKey()");
    		//System.out.println(cryptoService.getCyptoAlgorithmKey());
    		
    		
    		//return cryptoService.decrypt(decrypt); // Handles URLDecoding.
			return cryptoService.decryptNone(decrypt); // Does not handle URLDecoding.
        } catch(IllegalArgumentException e) {
    		LOGGER.error("[IllegalArgumentException] Try/Catch...usingParameters Runing : "+ e.getMessage());
        } catch (Exception e) {
        	LOGGER.error("[" + e.getClass() +"] :" + e.getMessage());
        }
		return decrypt;
    }

}