Package com.penta.sdk.bs
Class IssacPFX
- java.lang.Object
-
- com.penta.sdk.bs.IssacPFX
-
- All Implemented Interfaces:
java.io.Closeable,java.lang.AutoCloseable
public class IssacPFX extends java.lang.Object implements java.io.CloseablePKCS#12 (PFX) 를 처리하는 클래스.IssacCERTIFICATE 클래스의 PKCS#12 함수들은 사용방법도 고정되어 있고, 함수가 있어야 할 위치도 맞지 않다.
그래서 해당 기능을 구현한 클래스를 다시 만들었으니 이 기능을 사용하도록 한다.- See Also:
IssacCERTIFICATE
-
-
Field Summary
Fields Modifier and Type Field Description static intISSACAPI_BAGTYPE_CERT인증서 형식과 인증서 (X.509 Certificate.static intISSACAPI_BAGTYPE_CRL인증서 폐지 목록 (X.509 CRL)static intISSACAPI_BAGTYPE_KEY개인키 (PKCS #8 - PrivateKeyInfo)static intISSACAPI_BAGTYPE_KEY_ENCRYPTED암호화 된 개인키 (PKCS #8 - EncryptedPrivateKeyInfo)static intISSACAPI_BAGTYPE_SAFE_CONTENTS다른 SafeContents 들을 최상위 레벨의 SafeContents.static intISSACAPI_BAGTYPE_SECRETOID 에 의존적인 비밀정보 (지원하지 않음)
-
Constructor Summary
Constructors Constructor Description IssacPFX()기본 생성자
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Deprecated Methods Modifier and Type Method Description voidaddCert(IssacCERTIFICATE cert)PFX 에 인증서만 하나 추가한다.voidaddCertAndEncryptedPrivateKeyInfo(IssacCERTIFICATE cert, byte[] epki)PFX 에 인증서와 암호화 된 개인키를 추가한다.voidaddCertAndKey(IssacCERTIFICATE cert, IssacPRIVATEKEY priKey)PFX 에 인증서와 개인키를 암호화 없이 그대로 추가한다.voidaddCertAndKey(IssacCERTIFICATE cert, IssacPRIVATEKEY priKey, byte[] password, int pbeEncAlg, byte[] salt, int iteration)PFX 에 인증서와 개인키를 입력받은 비밀번호로 암호화(PBE)하여 추가한다.voidaddCertAndKey(IssacCERTIFICATE cert, IssacPRIVATEKEY priKey, java.lang.String password, int pbeEncAlg, byte[] salt, int iteration)PFX 에 인증서와 개인키를 입력받은 비밀번호로 암호화(PBE)하여 추가한다.voidaddCertAndPrivateKeyInfo(IssacCERTIFICATE cert, byte[] pki)PFX 에 인증서와 암호화되지 않은 개인키를 추가한다.voidaddCerts(IssacCERTIFICATES certs)PFX 에 인증서들을 추가한다.voidclose()voiddecode(byte[] pfxData, java.lang.String pfxPassword)PFX 데이터를 디코딩한다.voiddelete()Deprecated.Resource Leak 의 효율적인 관리를 위해 close() 를 사용할 것을 권장함.static voiddeleteOtherCertificatesSet(java.util.Set<IssacCERTIFICATE> otherCerts)Set 에 포함된 각각의 인증서들을 close 한다.byte[]encode(byte[] pfxPassword, int hashAlg, int pbeEncAlg, byte[] salt, int iteration)입력된 PFX 데이터들을 인코딩한다.byte[]encode(java.lang.String pfxPassword, int hashAlg, int pbeEncAlg, byte[] salt, int iteration)입력된 PFX 데이터들을 인코딩한다.IssacCERTIFICATEgetCertificate(byte[] localKeyID)LocalKeyID가 존재하는 (일치하는 개인키가 있는) 인증서를 가져온다.IssacCERTIFICATEgetKmCert()byte[]getKmCertBytes()byte[]getKmEPKI()byte[]getKmPKI()IssacPRIVATEKEYgetKmPriKey()IssacPRIVATEKEYgetKmPriKey(byte[] priKeyPassword)IssacPRIVATEKEYgetKmPriKey(java.lang.String priKeyPassword)java.util.Set<byte[]>getLocalKeyIDs()pfx에서 사용되는 LocalKeyID들을 가져온다.IssacCERTIFICATESgetOtherCertificates()LocalKeyID가 존재하지 않는 인증서들을 가져온다.java.util.Set<IssacCERTIFICATE>getOtherCertificatesSet()LocalKeyID가 존재하지 않는 인증서들을 가져온다.IssacPRIVATEKEYgetPrivateKey(byte[] localKeyID)LocalKeyID가 존재하는 (일치하는 인증서가 있는) 암호화 되지 않은 개인키를 가져온다.IssacPRIVATEKEYgetPrivateKey(byte[] localKeyID, byte[] privateKeyPassword)LocalKeyID가 존재하는 (일치하는 인증서가 있는) 암호화 된 개인키를 가져온다.IssacPRIVATEKEYgetPrivateKey(byte[] localKeyID, java.lang.String privateKeyPassword)LocalKeyID가 존재하는 (일치하는 인증서가 있는) 암호화 된 개인키를 가져온다.IssacCERTIFICATEgetSignCert()byte[]getSignCertBytes()byte[]getSignEPKI()byte[]getSignPKI()IssacPRIVATEKEYgetSignPriKey()IssacPRIVATEKEYgetSignPriKey(byte[] priKeyPassword)IssacPRIVATEKEYgetSignPriKey(java.lang.String priKeyPassword)byte[]getValueWithIndex(int bagIndex)SafeBag 의 데이터를 가져온다.byte[]getValueWithType(int bagType)SafeBag 의 데이터를 가져온다.byte[]getValueWithType(int bagType, byte[] localKeyID)SafeBag 의 데이터를 가져온다.booleanhasBag(int bagType)SafeBag 이 존재하는지 확인한다.booleanhasBag(int bagType, byte[] localKeyID)SafeBag 이 존재하는지 확인한다.
-
-
-
Field Detail
-
ISSACAPI_BAGTYPE_KEY
public static final int ISSACAPI_BAGTYPE_KEY
개인키 (PKCS #8 - PrivateKeyInfo)- See Also:
- Constant Field Values
-
ISSACAPI_BAGTYPE_KEY_ENCRYPTED
public static final int ISSACAPI_BAGTYPE_KEY_ENCRYPTED
암호화 된 개인키 (PKCS #8 - EncryptedPrivateKeyInfo)- See Also:
- Constant Field Values
-
ISSACAPI_BAGTYPE_CERT
public static final int ISSACAPI_BAGTYPE_CERT
인증서 형식과 인증서 (X.509 Certificate. SDSI 는 지원하지 않음)- See Also:
- Constant Field Values
-
ISSACAPI_BAGTYPE_CRL
public static final int ISSACAPI_BAGTYPE_CRL
인증서 폐지 목록 (X.509 CRL)- See Also:
- Constant Field Values
-
ISSACAPI_BAGTYPE_SECRET
public static final int ISSACAPI_BAGTYPE_SECRET
OID 에 의존적인 비밀정보 (지원하지 않음)- See Also:
- Constant Field Values
-
ISSACAPI_BAGTYPE_SAFE_CONTENTS
public static final int ISSACAPI_BAGTYPE_SAFE_CONTENTS
다른 SafeContents 들을 최상위 레벨의 SafeContents.- See Also:
- Constant Field Values
-
-
Constructor Detail
-
IssacPFX
public IssacPFX() throws IssacSDKException기본 생성자Note: 사용이 끝나면 delete()를 호출해야 한다.
- Throws:
IssacSDKException- 오류 발생- See Also:
delete()
-
-
Method Detail
-
encode
public byte[] encode(byte[] pfxPassword, int hashAlg, int pbeEncAlg, byte[] salt, int iteration) throws IssacSDKException입력된 PFX 데이터들을 인코딩한다.- Parameters:
pfxPassword- PFX 비밀번호hashAlg- PFX 암호화에 사용할 해시 알고리즘 [ IssacHash.ISSACAPI_SHA1 ]pbeEncAlg- PFX 암호화에 사용할 알고리즘 [ IssacSECONTEXT.ISSACAPI_SEED ]salt- PFX 암호화에 사용할 salt 값iteration- PFX 암호화에 사용할 iteration 횟수- Returns:
- PFX 데이터
- Throws:
IssacSDKException- 오류 시 JNI에서 발생시키는 예외
-
encode
public byte[] encode(java.lang.String pfxPassword, int hashAlg, int pbeEncAlg, byte[] salt, int iteration) throws IssacSDKException입력된 PFX 데이터들을 인코딩한다.- Parameters:
pfxPassword- PFX 비밀번호hashAlg- PFX 암호화에 사용할 해시 알고리즘 [ IssacHash.ISSACAPI_SHA1 ]pbeEncAlg- PFX 암호화에 사용할 알고리즘 [ IssacSECONTEXT.ISSACAPI_SEED ]salt- PFX 암호화에 사용할 salt 값iteration- PFX 암호화에 사용할 iteration 횟수- Returns:
- PFX 데이터
- Throws:
IssacSDKException- 오류 시 JNI에서 발생시키는 예외
-
decode
public void decode(byte[] pfxData, java.lang.String pfxPassword) throws IssacSDKException, java.lang.IllegalArgumentExceptionPFX 데이터를 디코딩한다.디코딩 이후 다른 메서드들을 이용하여 pfx 데이터들을 컨트롤 할 수 있다.
- Parameters:
pfxData- PFX 바이너리 데이터pfxPassword- PFX의 비밀번호- Throws:
IssacSDKException- 오류 시 JNI에서 발생시키는 예외java.lang.IllegalArgumentException- 필요한 입력값이 없음
-
addCert
public void addCert(IssacCERTIFICATE cert) throws IssacSDKException
PFX 에 인증서만 하나 추가한다.- Parameters:
cert- 인증서 (주로 CA 인증서)- Throws:
IssacSDKException- 오류 시 JNI에서 발생시키는 예외
-
addCerts
public void addCerts(IssacCERTIFICATES certs) throws IssacSDKException
PFX 에 인증서들을 추가한다.- Parameters:
certs- 인증서들 (주로 CA 인증서 체인에 사용)- Throws:
IssacSDKException- 오류 시 JNI에서 발생시키는 예외
-
addCertAndKey
public void addCertAndKey(IssacCERTIFICATE cert, IssacPRIVATEKEY priKey) throws IssacSDKException
PFX 에 인증서와 개인키를 암호화 없이 그대로 추가한다.- Parameters:
cert- 인증서priKey- 개인키- Throws:
IssacSDKException- 오류 시 JNI에서 발생시키는 예외
-
addCertAndKey
public void addCertAndKey(IssacCERTIFICATE cert, IssacPRIVATEKEY priKey, java.lang.String password, int pbeEncAlg, byte[] salt, int iteration) throws IssacSDKException
PFX 에 인증서와 개인키를 입력받은 비밀번호로 암호화(PBE)하여 추가한다.- Parameters:
cert- 인증서priKey- 개인키password- 개인키 암호화(PBE)에 사용할 비밀번호pbeEncAlg- 개인키 암호화(PBE)에 사용할 알고리즘 [IssacSECONTEXT.ISSACAPI_SEED]salt- 개인키 암호화(PBE)에 사용할 salt 값iteration- 개인키 암호화(PBE)에 사용할 iteration 횟수- Throws:
IssacSDKException- 오류 시 JNI에서 발생시키는 예외
-
addCertAndKey
public void addCertAndKey(IssacCERTIFICATE cert, IssacPRIVATEKEY priKey, byte[] password, int pbeEncAlg, byte[] salt, int iteration) throws IssacSDKException
PFX 에 인증서와 개인키를 입력받은 비밀번호로 암호화(PBE)하여 추가한다.- Parameters:
cert- 인증서priKey- 개인키password- 개인키 암호화(PBE)에 사용할 비밀번호pbeEncAlg- 개인키 암호화(PBE)에 사용할 알고리즘 [IssacSECONTEXT.ISSACAPI_SEED]salt- 개인키 암호화(PBE)에 사용할 salt 값iteration- 개인키 암호화(PBE)에 사용할 iteration 횟수- Throws:
IssacSDKException- 오류 시 JNI에서 발생시키는 예외
-
addCertAndPrivateKeyInfo
public void addCertAndPrivateKeyInfo(IssacCERTIFICATE cert, byte[] pki) throws IssacSDKException
PFX 에 인증서와 암호화되지 않은 개인키를 추가한다.- Parameters:
cert- 인증서pki- 암호화되지 않은 개인키- Throws:
IssacSDKException- 오류 시 JNI에서 발생시키는 예외
-
addCertAndEncryptedPrivateKeyInfo
public void addCertAndEncryptedPrivateKeyInfo(IssacCERTIFICATE cert, byte[] epki) throws IssacSDKException
PFX 에 인증서와 암호화 된 개인키를 추가한다.- Parameters:
cert- 인증서epki- 암호화 된 개인키- Throws:
IssacSDKException- 오류 시 JNI에서 발생시키는 예외
-
getLocalKeyIDs
public java.util.Set<byte[]> getLocalKeyIDs() throws IssacSDKExceptionpfx에서 사용되는 LocalKeyID들을 가져온다.이 값들은 키쌍(인증서, 개인키)을 갖는 데이터들을 가져올 때 활용된다.
- Returns:
- LocalKeyID들의 Set Collection
- Throws:
IssacSDKException- 오류 시 JNI에서 발생시키는 예외
-
getValueWithIndex
public byte[] getValueWithIndex(int bagIndex) throws IssacSDKExceptionSafeBag 의 데이터를 가져온다.- Parameters:
bagIndex- SafeBag 인덱스- Returns:
- 해당 데이터
- Throws:
IssacSDKException- 오류 시 JNI에서 발생시키는 예외
-
getValueWithType
public byte[] getValueWithType(int bagType) throws IssacSDKExceptionSafeBag 의 데이터를 가져온다.- Parameters:
bagType- SafeBag 타입. 이 클래스에 정의된 상수(ex. ISSACAPI_BAGTYPE_KEY) 입력- Returns:
- 해당 데이터
- Throws:
IssacSDKException- 오류 시 JNI에서 발생시키는 예외
-
getValueWithType
public byte[] getValueWithType(int bagType, byte[] localKeyID) throws IssacSDKException, java.lang.IllegalArgumentExceptionSafeBag 의 데이터를 가져온다.- Parameters:
bagType- SafeBag 타입. 이 클래스에 정의된 상수(ex. ISSACAPI_BAGTYPE_KEY) 입력localKeyID- 키쌍을 구분하기 위한 LocalKeyID- Returns:
- 해당 데이터
- Throws:
IssacSDKException- 오류 시 JNI에서 발생시키는 예외java.lang.IllegalArgumentException- 필요한 입력값이 없음
-
hasBag
public boolean hasBag(int bagType) throws IssacSDKExceptionSafeBag 이 존재하는지 확인한다.- Parameters:
bagType- SafeBag 타입. 이 클래스에 정의된 상수(ex. ISSACAPI_BAGTYPE_KEY) 입력- Returns:
- 해당 Bag 이 존재하는지 여부
- Throws:
IssacSDKException- 오류 시 JNI에서 발생시키는 예외
-
hasBag
public boolean hasBag(int bagType, byte[] localKeyID) throws IssacSDKException, java.lang.IllegalArgumentExceptionSafeBag 이 존재하는지 확인한다.- Parameters:
bagType- SafeBag 타입. 이 클래스에 정의된 상수(ex. ISSACAPI_BAGTYPE_KEY) 입력localKeyID- 키쌍을 구분하기 위한 LocalKeyID- Returns:
- 해당 Bag 이 존재하는지 여부
- Throws:
IssacSDKException- 오류 시 JNI에서 발생시키는 예외java.lang.IllegalArgumentException- 필요한 입력값이 없음
-
getCertificate
public IssacCERTIFICATE getCertificate(byte[] localKeyID) throws IssacSDKException, java.lang.IllegalArgumentException
LocalKeyID가 존재하는 (일치하는 개인키가 있는) 인증서를 가져온다.- Parameters:
localKeyID- 키쌍을 구분하기 위한 LocalKeyID- Returns:
- 해당 인증서
- Throws:
IssacSDKException- 오류 시 JNI에서 발생시키는 예외java.lang.IllegalArgumentException- 필요한 입력값이 없음
-
getPrivateKey
public IssacPRIVATEKEY getPrivateKey(byte[] localKeyID) throws IssacSDKException, java.lang.IllegalArgumentException
LocalKeyID가 존재하는 (일치하는 인증서가 있는) 암호화 되지 않은 개인키를 가져온다.- Parameters:
localKeyID- 키쌍을 구분하기 위한 LocalKeyID- Returns:
- 해당 개인키
- Throws:
IssacSDKException- 오류 시 JNI에서 발생시키는 예외java.lang.IllegalArgumentException- 필요한 입력값이 없음
-
getPrivateKey
public IssacPRIVATEKEY getPrivateKey(byte[] localKeyID, java.lang.String privateKeyPassword) throws IssacSDKException, java.lang.IllegalArgumentException
LocalKeyID가 존재하는 (일치하는 인증서가 있는) 암호화 된 개인키를 가져온다.- Parameters:
localKeyID- 키쌍을 구분하기 위한 LocalKeyIDprivateKeyPassword- 개인키 비밀번호- Returns:
- 해당 개인키
- Throws:
IssacSDKException- 오류 시 JNI에서 발생시키는 예외java.lang.IllegalArgumentException- 필요한 입력값이 없음
-
getPrivateKey
public IssacPRIVATEKEY getPrivateKey(byte[] localKeyID, byte[] privateKeyPassword) throws IssacSDKException, java.lang.IllegalArgumentException
LocalKeyID가 존재하는 (일치하는 인증서가 있는) 암호화 된 개인키를 가져온다.- Parameters:
localKeyID- 키쌍을 구분하기 위한 LocalKeyIDprivateKeyPassword- 개인키 비밀번호- Returns:
- 해당 개인키
- Throws:
IssacSDKException- 오류 시 JNI에서 발생시키는 예외java.lang.IllegalArgumentException- 필요한 입력값이 없음
-
getOtherCertificates
public IssacCERTIFICATES getOtherCertificates() throws IssacSDKException
LocalKeyID가 존재하지 않는 인증서들을 가져온다. (IssacCERTIFICATES 형식)이런 인증서들은 일반적으로 체인 검증을 위한 CA 인증서들이다.
- Returns:
- IssacCERTIFICATES 형식의 인증서 목록 (사용 후 close() 를 해야한다)
- Throws:
IssacSDKException- 오류 시 JNI에서 발생시키는 예외
-
getOtherCertificatesSet
public java.util.Set<IssacCERTIFICATE> getOtherCertificatesSet() throws IssacSDKException
LocalKeyID가 존재하지 않는 인증서들을 가져온다. (Set 형식)이런 인증서들은 일반적으로 체인 검증을 위한 CA 인증서들이다.
- Returns:
- 인증서들의 Set Collection (사용 후 deleteOtherCertificatesSet() 를 이용하여 각각의 인증서를 close() 해야한다)
- Throws:
IssacSDKException- 오류 시 JNI에서 발생시키는 예외
-
deleteOtherCertificatesSet
public static void deleteOtherCertificatesSet(java.util.Set<IssacCERTIFICATE> otherCerts) throws IssacSDKException
Set 에 포함된 각각의 인증서들을 close 한다. 외부에서 직접 close() 해도 무방하다.- Parameters:
otherCerts- 인증서들의 Set Collection- Throws:
IssacSDKException- 오류 시 JNI에서 발생시키는 예외
-
getSignCert
public IssacCERTIFICATE getSignCert() throws IssacSDKException
- Throws:
IssacSDKException
-
getSignCertBytes
public byte[] getSignCertBytes() throws IssacSDKException- Throws:
IssacSDKException
-
getSignPKI
public byte[] getSignPKI() throws IssacSDKException- Throws:
IssacSDKException
-
getSignEPKI
public byte[] getSignEPKI() throws IssacSDKException- Throws:
IssacSDKException
-
getSignPriKey
public IssacPRIVATEKEY getSignPriKey() throws IssacSDKException
- Throws:
IssacSDKException
-
getSignPriKey
public IssacPRIVATEKEY getSignPriKey(java.lang.String priKeyPassword) throws IssacSDKException, java.lang.IllegalArgumentException
- Throws:
IssacSDKExceptionjava.lang.IllegalArgumentException
-
getSignPriKey
public IssacPRIVATEKEY getSignPriKey(byte[] priKeyPassword) throws IssacSDKException, java.lang.IllegalArgumentException
- Throws:
IssacSDKExceptionjava.lang.IllegalArgumentException
-
getKmCert
public IssacCERTIFICATE getKmCert() throws IssacSDKException
- Throws:
IssacSDKException
-
getKmCertBytes
public byte[] getKmCertBytes() throws IssacSDKException- Throws:
IssacSDKException
-
getKmPKI
public byte[] getKmPKI() throws IssacSDKException- Throws:
IssacSDKException
-
getKmEPKI
public byte[] getKmEPKI() throws IssacSDKException- Throws:
IssacSDKException
-
getKmPriKey
public IssacPRIVATEKEY getKmPriKey() throws IssacSDKException
- Throws:
IssacSDKException
-
getKmPriKey
public IssacPRIVATEKEY getKmPriKey(java.lang.String priKeyPassword) throws IssacSDKException
- Throws:
IssacSDKException
-
getKmPriKey
public IssacPRIVATEKEY getKmPriKey(byte[] priKeyPassword) throws IssacSDKException
- Throws:
IssacSDKException
-
delete
public void delete() throws IssacSDKExceptionDeprecated.Resource Leak 의 효율적인 관리를 위해 close() 를 사용할 것을 권장함.이 pfx를 메모리에서 삭제한다.- Throws:
IssacSDKException
-
close
public void close() throws IssacSDKException- Specified by:
closein interfacejava.lang.AutoCloseable- Specified by:
closein interfacejava.io.Closeable- Throws:
IssacSDKException
-
-