bf1135f9ad
- CryptoModuleExtension 인터페이스: BC 프로바이더, AAD, 편의 메서드 오버로드 추가 - AESCryptoModuleExtension: CBC/GCM/ECB/FF1 지원, GCM 랜덤 nonce, AAD 처리 - ARIACryptoModuleExtension: ARIA 알고리즘 지원 - CryptoModuleConfigVO: JPA Entity 분리를 위한 Lombok VO - CryptoModuleManager: VO 패턴 적용, FQCN 기반 전략 동적 로딩(Class.forName) - CryptoModuleService: STATIC/DYNAMIC × AAD 조합 8가지 오버로드 - CryptoModuleConfigMapper: MapStruct Entity→VO 매퍼 - KeyDerivationStrategy 인터페이스 및 DerivedKey - HsmContextXorKeyDerivationStrategy: HSM 마스터키 XOR 컨텍스트값 전략 - ReloadCryptoModuleCommand: 설정 런타임 재로드 커맨드 - build.gradle: BouncyCastle bcprov-jdk15on:1.70 의존성 추가 - 단위 테스트 전체 추가 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
53 lines
2.2 KiB
Java
53 lines
2.2 KiB
Java
package com.eactive.eai.common.security;
|
|
|
|
public interface CryptoModuleExtension {
|
|
|
|
void init(String alg, String mode, String pad, byte[] encKey, byte[] decKey) throws Exception;
|
|
|
|
void init(String alg, String mode, String pad, byte[] iv, byte[] encKey, byte[] decKey) throws Exception;
|
|
|
|
/** 프로바이더를 명시한 초기화. 미지원 구현체는 provider를 무시하고 기본 동작한다. */
|
|
default void init(String alg, String mode, String pad, byte[] encKey, byte[] decKey, String provider) throws Exception {
|
|
init(alg, mode, pad, encKey, decKey);
|
|
}
|
|
|
|
/** 프로바이더를 명시한 초기화 (IV 포함). 미지원 구현체는 provider를 무시하고 기본 동작한다. */
|
|
default void init(String alg, String mode, String pad, byte[] iv, byte[] encKey, byte[] decKey, String provider) throws Exception {
|
|
init(alg, mode, pad, iv, encKey, decKey);
|
|
}
|
|
|
|
int encrypt(byte[] src, int sindex, int slength, byte[] dst, int dindex) throws Exception;
|
|
|
|
byte[] encrypt(byte[] src, int sindex, int slength) throws Exception;
|
|
|
|
/** AAD를 명시한 암호화. null이면 구현체 기본 동작(IV를 AAD로 사용하거나 AAD 없음)을 따른다. */
|
|
default byte[] encrypt(byte[] src, int sindex, int slength, byte[] aad) throws Exception {
|
|
return encrypt(src, sindex, slength);
|
|
}
|
|
|
|
default byte[] encrypt(byte[] src) throws Exception {
|
|
return encrypt(src, 0, src.length);
|
|
}
|
|
|
|
default byte[] encrypt(byte[] src, byte[] aad) throws Exception {
|
|
return encrypt(src, 0, src.length, aad);
|
|
}
|
|
|
|
int decrypt(byte[] src, int sindex, int slength, byte[] dst, int dindex) throws Exception;
|
|
|
|
byte[] decrypt(byte[] src, int sindex, int slength) throws Exception;
|
|
|
|
/** AAD를 명시한 복호화. null이면 구현체 기본 동작을 따른다. */
|
|
default byte[] decrypt(byte[] src, int sindex, int slength, byte[] aad) throws Exception {
|
|
return decrypt(src, sindex, slength);
|
|
}
|
|
|
|
default byte[] decrypt(byte[] src) throws Exception {
|
|
return decrypt(src, 0, src.length);
|
|
}
|
|
|
|
default byte[] decrypt(byte[] src, byte[] aad) throws Exception {
|
|
return decrypt(src, 0, src.length, aad);
|
|
}
|
|
}
|