Class IssacCMS

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

    public class IssacCMS
    extends java.lang.Object
    implements java.io.Closeable
    PKCS#7 (CMS)
    • Field Summary

      Fields 
      Modifier and Type Field Description
      static int HAS160  
      static int MD5  
      static int SHA1  
      static int SHA256  
      static int SHA384  
      static int SHA512  
      static int SID_ISSUER_AND_SERIAL
      메시지 생성 시 사용된 서명자를 특정하기 위한 방법 - IssuerName and Serial : 유일 인증서
      static int SID_SKID
      메시지 생성 시 사용된 서명자를 특정하기 위한 방법 - Subject Key IDentifier : 공개키가 동일한 인증서
    • Constructor Summary

      Constructors 
      Constructor Description
      IssacCMS()
      생성자
    • Method Summary

      All Methods Static Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void close()
      이 CMS를 메모리에서 삭제한다.
      byte[] GetOriginalMessage()
      서명 원문 메시지를 가져온다.
      IssacCERTIFICATE GetSignerCert​(int signerIndex)
      서명자의 인증서를 가져온다.
      int GetSignerCount()
      전체 서명자 수를 가져온다.
      int GetSignerIdentifierType​(int signerIndex)
      서명자 구분에 사용되는 방식을 가져온다.
      java.lang.String GetSignerInfoIssuer​(int signerIndex)
      서명자의 인증서 발급자 DN을 가져온다.
      byte[] GetSignerInfoSerial​(int signerIndex)
      서명자의 인증서 일련번호(Serial Number)를 가져온다.
      byte[] GetSignerInfoSKID​(int signerIndex)
      서명자의 공개키 해시값(Subject Key IDentifier)을 가져온다.
      java.util.Date GetSignTime​(int signerIndex)
      서명한 시간을 가져온다.
      static byte[] MakeSignedData​(byte[] message, IssacPRIVATEKEY signerPriKey, IssacCERTIFICATE signerCert, java.util.Date signTime, int hashNid)
      PKCS#7 서명 메시지를 생성한다.
      void Read_Memory​(byte[] buffer)
      바이트 배열로부터 CMS를 읽어들인다. buffer에는 DER인코딩 되어 있는 바이너리정보가 들어 있다.
      boolean SignedBetween​(int signerIndex, java.util.Date from, java.util.Date to)
      서명한 시간이 지정한 범위에 포함되는 지를 확인한다.
      void VerifySign​(int signerIndex)
      서명값을 검증한다.
      void VerifySign​(IssacCERTIFICATE signerCert)
      서명값을 검증한다.
      static int VerifySignedData​(byte[] cms)
      PKCS#7 서명 메시지를 검증한다.
      byte[] Write_Memory()
      CMS를 바이트 배열로 옮긴다.
      • Methods inherited from class java.lang.Object

        equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Method Detail

      • Read_Memory

        public void Read_Memory​(byte[] buffer)
                         throws IssacSDKException
        바이트 배열로부터 CMS를 읽어들인다. buffer에는 DER인코딩 되어 있는 바이너리정보가 들어 있다.
        Parameters:
        buffer - [IN] CMS 가 포함된 바이트 배열
        Throws:
        IssacSDKException - 오류 발생
        See Also:
        Write_Memory()
      • Write_Memory

        public byte[] Write_Memory()
                            throws IssacSDKException
        CMS를 바이트 배열로 옮긴다. 메모리에 저장되는 CMS는 DER인코딩된 바이너리 정보이다.
        Returns:
        CMS가 저장된 바이트 배열
        Throws:
        IssacSDKException - 오류 발생
        See Also:
        Read_Memory(byte[])
      • GetSignTime

        public java.util.Date GetSignTime​(int signerIndex)
                                   throws IssacSDKException
        서명한 시간을 가져온다.
        Parameters:
        signerIndex - [IN] 서명자 정보의 인덱스
        Returns:
        서명한 시간
        Throws:
        IssacSDKException - 오류 발생
      • SignedBetween

        public boolean SignedBetween​(int signerIndex,
                                     java.util.Date from,
                                     java.util.Date to)
                              throws IssacSDKException
        서명한 시간이 지정한 범위에 포함되는 지를 확인한다.
        Parameters:
        signerIndex - [IN] 서명자 정보의 인덱스
        from - [IN] 지정 범위 시작시점 (초단위 절삭, 같거나 이후)
        to - [IN] 지정 범위 종료시점 (초단위 절삭, 같거나 이전)
        Returns:
        지정한 범위에 포함되는 지 여부
        Throws:
        IssacSDKException - 오류 발생
      • GetOriginalMessage

        public byte[] GetOriginalMessage()
                                  throws IssacSDKException
        서명 원문 메시지를 가져온다.
        Returns:
        서명 원문 메시지
        Throws:
        IssacSDKException - 오류 발생
      • GetSignerCount

        public int GetSignerCount()
                           throws IssacSDKException
        전체 서명자 수를 가져온다.
        Returns:
        전체 서명자 수
        Throws:
        IssacSDKException - 오류 발생
      • GetSignerIdentifierType

        public int GetSignerIdentifierType​(int signerIndex)
                                    throws IssacSDKException
        서명자 구분에 사용되는 방식을 가져온다.
        Parameters:
        signerIndex - [IN] 서명자 정보의 인덱스
        Returns:
        서명자 구분에 사용되는 방식 [ SID_ISSUER_AND_SERIAL (1), SID_SKID (2) ]
        Throws:
        IssacSDKException - 오류 발생
      • GetSignerInfoIssuer

        public java.lang.String GetSignerInfoIssuer​(int signerIndex)
                                             throws IssacSDKException
        서명자의 인증서 발급자 DN을 가져온다.
        Parameters:
        signerIndex - [IN] 서명자 정보의 인덱스
        Returns:
        서명자의 인증서 발급자 DN
        Throws:
        IssacSDKException - 오류 발생
      • GetSignerInfoSerial

        public byte[] GetSignerInfoSerial​(int signerIndex)
                                   throws IssacSDKException
        서명자의 인증서 일련번호(Serial Number)를 가져온다.
        Parameters:
        signerIndex - [IN] 서명자 정보의 인덱스
        Returns:
        서명자의 인증서 일련번호(Serial Number)
        Throws:
        IssacSDKException - 오류 발생
      • GetSignerInfoSKID

        public byte[] GetSignerInfoSKID​(int signerIndex)
                                 throws IssacSDKException
        서명자의 공개키 해시값(Subject Key IDentifier)을 가져온다.
        Parameters:
        signerIndex - [IN] 서명자 정보의 인덱스
        Returns:
        서명자의 공개키 해시값(Subject Key IDentifier)
        Throws:
        IssacSDKException - 오류 발생
      • GetSignerCert

        public IssacCERTIFICATE GetSignerCert​(int signerIndex)
                                       throws IssacSDKException
        서명자의 인증서를 가져온다. (포함되어 있을 경우에만)
        Parameters:
        signerIndex - [IN] 서명자 정보의 인덱스
        Returns:
        서명자의 인증서
        Throws:
        IssacSDKException - 오류 발생
      • VerifySign

        public void VerifySign​(int signerIndex)
                        throws IssacSDKException
        서명값을 검증한다.
        Parameters:
        signerIndex - [IN] 서명자 정보의 인덱스
        Throws:
        IssacSDKException - 오류 발생
      • close

        public void close()
                   throws IssacSDKException
        이 CMS를 메모리에서 삭제한다.
        Specified by:
        close in interface java.lang.AutoCloseable
        Specified by:
        close in interface java.io.Closeable
        Throws:
        IssacSDKException - 오류 발생
        See Also:
        IssacCMS()
      • MakeSignedData

        public static byte[] MakeSignedData​(byte[] message,
                                            IssacPRIVATEKEY signerPriKey,
                                            IssacCERTIFICATE signerCert,
                                            java.util.Date signTime,
                                            int hashNid)
        PKCS#7 서명 메시지를 생성한다.
        Parameters:
        message - [IN] PKCS#7 서명 메시지
        signerPriKey - [IN] 서명용 개인키
        signerCert - [IN] 서명용 인증서
        signTime - [IN] 서명 시각 (초 단위 절삭)
        hashNid - [IN] 서명에 사용할 해시 알고리즘 [ IssacSG.SHA1 (134), IssacSG.SHA256 (385)]
        Returns:
        PKCS#7 서명 메시지
        Throws:
        IssacSDKException - 오류 발생
      • VerifySignedData

        public static int VerifySignedData​(byte[] cms)
        PKCS#7 서명 메시지를 검증한다.
        Parameters:
        cms - [IN] PKCS#7 서명 메시지
        Returns:
        0 : 성공
        Throws:
        IssacSDKException - 오류 발생