// package cokr.xit.ens.modules.kkotalk; // // import java.nio.charset.StandardCharsets; // import java.security.InvalidAlgorithmParameterException; // import java.security.InvalidKeyException; // import java.security.KeyFactory; // import java.security.MessageDigest; // import java.security.NoSuchAlgorithmException; // import java.security.spec.InvalidKeySpecException; // import java.security.spec.X509EncodedKeySpec; // import java.util.ArrayList; // import java.util.Base64; // import java.util.List; // import java.util.Locale; // import java.util.Random; // import java.util.Set; // import java.util.UUID; // // import javax.crypto.BadPaddingException; // import javax.crypto.Cipher; // import javax.crypto.IllegalBlockSizeException; // import javax.crypto.Mac; // import javax.crypto.NoSuchPaddingException; // import javax.crypto.SecretKey; // import javax.crypto.spec.IvParameterSpec; // import javax.crypto.spec.SecretKeySpec; // import javax.validation.ConstraintViolation; // import javax.validation.Validation; // import javax.validation.Validator; // // import org.apache.commons.lang3.ObjectUtils; // import org.apache.commons.lang3.StringUtils; // import org.springframework.util.Base64Utils; // // import com.sun.org.apache.xalan.internal.xsltc.compiler.util.ErrorMsg; // // import cokr.xit.ens.core.exception.BizRuntimeException; // import cokr.xit.ens.core.utils.CoreSpringUtils; // import cokr.xit.ens.core.utils.MessageUtil; // import cokr.xit.ens.modules.kkotalk.model.CmmEnsRequestDTO; // import cokr.xit.ens.modules.kkotalk.model.CmmEnsRlaybsnmDTO; // import lombok.AccessLevel; // import lombok.NoArgsConstructor; // // /** // *
// * description : ENS 공통 method // * // * packageName : kr.xit.ens.cmm // * fileName : CmmNiceCiUtils // * author : limju // * date : 2023-09-19 // * ====================================================================== // * 변경일 변경자 변경 내용 // * ---------------------------------------------------------------------- // * 2023-09-19 limju 최초 생성 // * // *// */ // // @NoArgsConstructor(access = AccessLevel.PRIVATE) // public class CmmEnsUtils { // private static final MessageUtil messageUtil = CoreSpringUtils.getMessageUtil(); // private static final ICmmEnsCacheService cacheService = ApiSpringUtils.getCmmEnsCacheService(); // private static final IBizKtBcService bizKtService = ApiSpringUtils.getBizKtMmsService(); // // /** // * 문서 중개자 인증 정보 조회 // * @param signguCode string // * @param ffnlgCode String // * @param seCode SndngSeCode 문서중개자 구분 코드 // * @return CmmEnsRlaybsnmDTO 문서중개자 정보 // */ // public static CmmEnsRlaybsnmDTO getRlaybsnmInfo(final String signguCode, final String ffnlgCode, final // SndngSeCode seCode) { // CmmEnsRequestDTO ensDTO = CmmEnsRequestDTO.builder() // .signguCode(signguCode) // .ffnlgCode(ffnlgCode) // .profile(ApiConstants.IS_PROFILE_LOCAL? "local" : "prod") // .build(); // // final CmmEnsRlaybsnmDTO dto = cacheService.getRlaybsnmInfoCache(ensDTO); // if(ObjectUtils.isEmpty(dto)) throw BizRuntimeException.create(messageUtil.getMessage("fail.api.rlaybsnm.info")); // // // KT인 경우 토큰유효기간 check // if(SndngSeCode.KT_BC.equals(seCode)){ // // if(StringUtils.isNotEmpty(dto.getKtTokenExpiresIn()) // && DateUtils.getTodayAndNowTime(ApiConstants.FMT_DT_STD).compareTo(dto.getKtTokenExpiresIn()) < 0 // && ObjectUtils.isNotEmpty(dto.getKtAccessToken()) // ) return dto; // // // 유효기간이 경과된 경우 재발급 // bizKtService.requestToken( // KtMnsRequest.builder() // .signguCode(signguCode) // .ffnlgCode(ffnlgCode) // .profile(ApiConstants.IS_PROFILE_LOCAL? "local" : "prod") // .build() // ); // return cacheService.getRlaybsnmInfoCache(ensDTO); // } // return dto; // } // // /** // *
// * parameter validation check // * invalid parameter message -> String으로 BizRuntimeException throw // * @param t T // *// */ // public static
// * AES 암호화 -> Base64 encoding return // * -> Nice ci 데이타 암호화 // * // * @param key String // * @param iv String // * @param planText String // * @return String Base64 encoding data // *// */ // public static String encodeAesData(final String key, final String iv, final String planText) { // final SecretKey secureKey = new SecretKeySpec(key.getBytes(), "AES"); // try { // final Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding"); // cipher.init(Cipher.ENCRYPT_MODE, secureKey, new IvParameterSpec(iv.getBytes())); // // final byte[] encData = cipher.doFinal(planText.trim().getBytes(StandardCharsets.UTF_8)); // return Base64.getEncoder().encodeToString(encData); // // }catch (NoSuchPaddingException | NoSuchAlgorithmException | // InvalidAlgorithmParameterException | InvalidKeyException | // IllegalBlockSizeException | BadPaddingException e){ // throw BizRuntimeException.create(e.getMessage()); // } // } // // /** // *
// * Hmac 무결성체크값(integrity_value) 생성 // * @param hmacKey String // * @param message String // * @return String // *// */ // public static String encodeHmacSha256(final String hmacKey, final String message) { // try { // final Mac mac = Mac.getInstance("HmacSHA256"); // final SecretKeySpec sks = new SecretKeySpec(hmacKey.getBytes(), "HmacSHA256"); // mac.init(sks); // final byte[] hmac256 = mac.doFinal(message.getBytes()); // return Base64.getEncoder().encodeToString(hmac256); // // }catch (NoSuchAlgorithmException|InvalidKeyException e){ // throw BizRuntimeException.create(e.getMessage()); // } // } // // /** // * AES 복호화 // * @param encData String // * @param key String // * @param iv String // * @return String // */ // public static String decodeAesData(String encData, String key, String iv) { // // final byte[] respDataEnc = Base64.getDecoder().decode(encData.getBytes()); // final SecretKey secureKey = new SecretKeySpec(key.getBytes(), "AES"); // // try { // final Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding"); // cipher.init(Cipher.DECRYPT_MODE, secureKey, new IvParameterSpec(iv.getBytes())); // final byte[] decrypted = cipher.doFinal(respDataEnc); // return new String(decrypted); // // }catch (NoSuchPaddingException | NoSuchAlgorithmException | // InvalidAlgorithmParameterException | InvalidKeyException | // IllegalBlockSizeException | BadPaddingException e){ // throw BizRuntimeException.create(e.getMessage()); // } // } // }