Class IssacSECONTEXT

  • All Implemented Interfaces:
    java.io.Closeable, java.lang.AutoCloseable

    public class IssacSECONTEXT
    extends java.lang.Object
    implements java.io.Closeable
    비밀키 암호화를 위한 함수들을 설명하는 클래스

    비밀키 암호화를 위한 정보를 담고 있는 secontext를 생성하고, 생성된 secontext를 이용하여 메시지를 암호화/복호화하는 함수들을 제공한다.
    메시지와 암호문 입출력으로 메모리 형태와 파일 형태를 지원한다.

    • Method Detail

      • PBKDF_PKCS12_GetKey

        public static byte[] PBKDF_PKCS12_GetKey​(int keyLen,
                                                 byte[] pin)
                                          throws IssacSDKException
        입력된 PIN을 기반으로 암복호화용 키를 생성(유도)한다. (PKCS#12 v1.0 Appendix. B)
        Parameters:
        keyLen - [IN] 생성할 암복호화용 키의 길이 (bytes)
        pin - [IN] 암복호화용 키 생성에 사용할 PIN
        Returns:
        생성된 암복호화용 키
        Throws:
        IssacSDKException - 오류 발생
      • PBKDF_PKCS12_GetKey_Advanced

        public static byte[] PBKDF_PKCS12_GetKey_Advanced​(int keyLen,
                                                          byte[] pin,
                                                          int keyType,
                                                          byte[] salt,
                                                          int iterations,
                                                          int hashType)
                                                   throws IssacSDKException
        입력된 값들을 기반으로 키를 생성(유도)한다. (PKCS#12 v1.0 Appendix. B)
        Parameters:
        keyLen - [IN] 생성할 키의 길이 (bytes)
        pin - [IN] 키 생성에 사용할 PIN
        keyType - [IN] 키의 용도 [1: 암복호화, 2: IV, 3: MAC]
        salt - [IN] salt (표준 참고)
        iterations - [IN] iterations (표준 참고)
        hashType - [IN] 키 유도 과정에 사용되는 해시 알고리즘 [ SHA1(0), SHA256(1), HAS160(2) ]
        Returns:
        생성된 키
        Throws:
        IssacSDKException - 오류 발생
      • PBKDF2_GetKey

        public static byte[] PBKDF2_GetKey​(int keyLen,
                                           byte[] pin,
                                           byte[] salt,
                                           int iterations,
                                           int hashType)
                                    throws IssacSDKException
        입력된 값들을 기반으로 키를 생성(유도)한다. (PKCS#5 - PBKDF2)
        Parameters:
        keyLen - [IN] 생성할 키의 길이 (bytes)
        pin - [IN] 키 생성에 사용할 PIN
        salt - [IN] salt (표준 참고)
        iterations - [IN] iterations (표준 참고)
        hashType - [IN] 키 유도 과정에 사용되는 해시 알고리즘 [ SHA1(0), SHA256(1), HAS160(2) ]
        Returns:
        생성된 키
        Throws:
        IssacSDKException - 오류 발생
      • Encrypt_CMS

        public byte[] Encrypt_CMS​(byte[] plaintext)
                           throws IssacSDKException
        입력받은 원문을 암호화하여 PKCS#7 EncryptedData 를 생성한다.
        Parameters:
        plaintext - [IN] 암호화 대상 원문
        Returns:
        PKCS#7 EncryptedData
        Throws:
        IssacSDKException - 오류 발생
      • Decrypt_CMS

        public byte[] Decrypt_CMS​(byte[] ciphertext)
                           throws IssacSDKException
        입력받은 PKCS#7 EncryptedData 를 복호화하여 원문을 가져온다.
        Parameters:
        ciphertext - [IN] PKCS#7 EncryptedData
        Returns:
        복호화 된 원문
        Throws:
        IssacSDKException - 오류 발생
      • getSecontext

        public byte[] getSecontext()
        Deprecated.
        참조값은 바이너리 데이터가 아니므로 외부에선 절대 사용하지 않도록 한다!
        IssacSECONTEXT 객체의 참조값을 가져온다.
        Returns:
        IssacSECONTEXT 객체의 참조값
      • Set

        public void Set​(char[] key,
                        char[] iv,
                        int mode,
                        int cipher_id)
                 throws IssacSDKException
        비밀키 암복호화에 필요한 값들을 설정한다.
        Parameters:
        key - [IN] 비밀키
        iv - [IN] CBC, CFB 등에 필요한 초기값. 입력하지 않으면 0x00,... 으로 처리된다.
        mode - [IN] 블록 암호 알고리즘의 운영 모드 선택 입력. [1: ECB, 2: CBC, 3: CFB, ...]
        cipher_id - [IN] 블록 암호 알고리즘. [1: PACA, 2: SEED, 6: AES128, 9: ARIA128]
        Throws:
        IssacSDKException - 오류 발생
        See Also:
        Copy(IssacSECONTEXT)
      • Set

        @Deprecated
        public void Set​(char[] key,
                        int cipher_id)
                 throws IssacSDKException
        Deprecated.
        비밀키 암복호화에 필요한 값들을 설정한다. (동작 확인 필요 - 자체 IV 길이 문제 있을 것으로 보임)
        Parameters:
        key - [IN] 비밀키
        cipher_id - [IN] 블록 암호 알고리즘. [1: PACA, 2: SEED, 6: AES128, 9: ARIA128]
        Throws:
        IssacSDKException - 오류 발생
        See Also:
        Copy(IssacSECONTEXT)
      • Set

        public void Set​(byte[] key,
                        byte[] iv,
                        int mode,
                        int cipher_id)
                 throws IssacSDKException
        비밀키 암복호화에 필요한 값들을 설정한다.
        Parameters:
        key - [IN] 비밀키
        iv - [IN] CBC, CFB 등에 필요한 초기값. 입력하지 않으면 0x00,... 으로 처리된다.
        mode - [IN] 블록 암호 알고리즘의 운영 모드 선택 입력. [1: ECB, 2: CBC, 3: CFB, ...]
        cipher_id - [IN] 블록 암호 알고리즘. [1: PACA, 2: SEED, 6: AES128, 9: ARIA128]
        Throws:
        IssacSDKException - 오류 발생
        See Also:
        Copy(IssacSECONTEXT)
      • Set

        public void Set​(byte[] key,
                        int mode,
                        int cipher_id)
                 throws IssacSDKException
        비밀키 암복호화에 필요한 값들을 설정한다. (IV: 0000...00)
        Parameters:
        key - [IN] 비밀키
        mode - [IN] 블록 암호 알고리즘의 운영 모드 선택 입력. [1: ECB, 2: CBC, 3: CFB, ...]
        cipher_id - [IN] 블록 암호 알고리즘. [1: PACA, 2: SEED, 6: AES128, 9: ARIA128]
        Throws:
        IssacSDKException - 오류 발생
        See Also:
        Copy(IssacSECONTEXT)
      • Set

        public void Set​(byte[] key,
                        int cipher_id)
                 throws IssacSDKException
        비밀키 암복호화에 필요한 값들을 설정한다. (동작 확인 필요 - 자체 IV 길이 문제 있을 것으로 보임)
        Parameters:
        key - [IN] 비밀키
        cipher_id - [IN] 블록 암호 알고리즘. [1: PACA, 2: SEED, 6: AES128, 9: ARIA128]
        Throws:
        IssacSDKException - 오류 발생
        See Also:
        Copy(IssacSECONTEXT)
      • Encrypt_File

        public void Encrypt_File​(java.lang.String ciphertext_file,
                                 java.lang.String plaintext_file)
                          throws IssacSDKException
        입력된 파일을 암호화한다.
        Parameters:
        ciphertext_file - [IN] 생성될 암호문 파일의 경로
        plaintext_file - [IN] 암호화 될 원문 파일의 경로
        Throws:
        IssacSDKException - 오류 발생
        See Also:
        Decrypt_File(String, String), Encrypt(byte[])
      • Decrypt_File

        public void Decrypt_File​(java.lang.String plaintext_file,
                                 java.lang.String ciphertext_file)
                          throws IssacSDKException
        입력된 파일을 복호화한다.
        Parameters:
        plaintext_file - [IN] 생성될 복호문 파일의 경로
        ciphertext_file - [IN] 암호화 된 파일의 경로
        Throws:
        IssacSDKException - 오류 발생
        See Also:
        Decrypt(byte[]), Encrypt_File(String, String)
      • Encrypt_File

        public void Encrypt_File​(java.lang.String ciphertext_file,
                                 java.lang.String plaintext_file,
                                 int buffer_size)
                          throws IssacSDKException
        입력된 파일을 암호화한다.
        Parameters:
        ciphertext_file - [IN] 생성될 암호문 파일의 경로
        plaintext_file - [IN] 암호화 될 원문 파일의 경로
        buffer_size - [IN] 내부에서 사용할 버퍼의 크기
        Throws:
        IssacSDKException - 오류 발생
        See Also:
        Decrypt_File(String, String, int), Encrypt(byte[])
      • Decrypt_File

        public void Decrypt_File​(java.lang.String plaintext_file,
                                 java.lang.String ciphertext_file,
                                 int buffer_size)
                          throws IssacSDKException
        입력된 파일을 복호화한다.
        Parameters:
        plaintext_file - [IN] 생성될 복호문 파일의 경로
        ciphertext_file - [IN] 암호화 된 파일의 경로
        buffer_size - [IN] 내부에서 사용할 버퍼의 크기
        Throws:
        IssacSDKException - 오류 발생
        See Also:
        Decrypt(byte[]), Encrypt_File(String, String, int)
      • Encrypt_Auth

        public byte[] Encrypt_Auth​(byte[] plaintext,
                                   byte[] authdata,
                                   byte[] iv,
                                   int tagLen)
                            throws IssacSDKException
        입력한 원문을 CCM/GCM 방식으로 암호화한다.
        Parameters:
        plaintext - [IN] 암호화 대상 원문
        authdata - [IN] CCM/GCM의 추가 데이터
        iv - [IN] GCM의 iv, CCM의 nonce [CCM : 7 ≤ nonceLen ≤ 13, GCM : 12 ≤ ivLen]
        tagLen - [IN] 메시지 인증 태그의 길이 [CCM : 4 ≤ tagLen ≤ 16, GCM : tagLen ≤ 16]
        Returns:
        암호문
        Throws:
        IssacSDKException - 오류 발생
        See Also:
        Decrypt_Auth(byte[], byte[], byte[], int)
      • Decrypt_Auth

        public byte[] Decrypt_Auth​(byte[] ciphertext,
                                   byte[] authdata,
                                   byte[] iv,
                                   int tagLen)
                            throws IssacSDKException
        입력한 암호문을 CCM/GCM 방식으로 복호화한다.
        Parameters:
        ciphertext - [IN] 암호문
        authdata - [IN] CCM/GCM의 추가 데이터
        iv - [IN] GCM의 iv, CCM의 nonce [CCM : 7 ≤ ivLen ≤ 13, GCM : 12 ≤ ivLen]
        tagLen - [IN] 메시지 인증 태그의 길이 [CCM : 4 ≤ tagLen ≤ 16, GCM : tagLen ≤ 16]
        Returns:
        복호화 된 원문
        Throws:
        IssacSDKException - 오류 발생
        See Also:
        Encrypt_Auth(byte[], byte[], byte[], int)
      • PBKDF_PKCS12_GetKey

        public static byte[] PBKDF_PKCS12_GetKey​(int keyLen,
                                                 java.lang.String pin)
                                          throws IssacSDKException
        입력된 PIN을 기반으로 암복호화용 키를 생성(유도)한다. (PKCS#12 v1.0 Appendix. B)
        Parameters:
        keyLen - [IN] 생성할 암복호화용 키의 길이 (bytes)
        pin - [IN] 암복호화용 키 생성에 사용할 PIN
        Returns:
        생성된 암복호화용 키
        Throws:
        IssacSDKException - 오류 발생
      • PBKDF_PKCS12_GetKey_Advanced

        public static byte[] PBKDF_PKCS12_GetKey_Advanced​(int keyLen,
                                                          java.lang.String pin,
                                                          int keyType,
                                                          byte[] salt,
                                                          int iterations,
                                                          int hashType)
                                                   throws IssacSDKException
        입력된 값들을 기반으로 키를 생성(유도)한다. (PKCS#12 v1.0 Appendix. B)
        Parameters:
        keyLen - [IN] 생성할 키의 길이 (bytes)
        pin - [IN] 키 생성에 사용할 PIN
        keyType - [IN] 키의 용도 [1: 암복호화, 2: IV, 3: MAC]
        salt - [IN] salt (표준 참고)
        iterations - [IN] iterations (표준 참고)
        hashType - [IN] 키 유도 과정에 사용되는 해시 알고리즘 [ SHA1(0), SHA256(1), HAS160(2) ]
        Returns:
        생성된 키
        Throws:
        IssacSDKException - 오류 발생
      • PBKDF2_GetKey

        public static byte[] PBKDF2_GetKey​(int keyLen,
                                           java.lang.String pin,
                                           byte[] salt,
                                           int iterations,
                                           int hashType)
                                    throws IssacSDKException
        입력된 값들을 기반으로 키를 생성(유도)한다. (PKCS#5 - PBKDF2)
        Parameters:
        keyLen - [IN] 생성할 키의 길이 (bytes)
        pin - [IN] 키 생성에 사용할 PIN
        salt - [IN] salt (표준 참고)
        iterations - [IN] iterations (표준 참고)
        hashType - [IN] 키 유도 과정에 사용되는 해시 알고리즘 [ SHA1(0), SHA256(1), HAS160(2) ]
        Returns:
        생성된 키
        Throws:
        IssacSDKException - 오류 발생
      • Delete

        public void Delete()
                    throws IssacSDKException
        Deprecated.
        Resource Leak 의 효율적인 관리를 위해 close() 를 사용할 것을 권장함.
        비밀키 정보를 메모리에서 삭제한다.
        Throws:
        IssacSDKException - 오류 발생
        See Also:
        IssacSECONTEXT()
      • close

        public void close()
                   throws IssacSDKException
        Specified by:
        close in interface java.lang.AutoCloseable
        Specified by:
        close in interface java.io.Closeable
        Throws:
        IssacSDKException