Class IssacDLCONTEXT

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

    public class IssacDLCONTEXT
    extends java.lang.Object
    implements java.io.Closeable
    LDAP을 이용한 PKI 기능을 제공하는 클래스

    LDAP(Lightweight Directory Access Protocol)은 현재 PKI에서 인증서(Certificate) 및 인증서 폐지 목록(CRL)을 배포하기 위하여 가장 널리 사용되는 디렉토리 접근 프로토콜이다.
    CA는 인증서 및 인증서 폐지 목록을 디렉토리에 저장(publish)하고, 이를 필요로 하는 사용자들은 디렉토리에 접근하여 원하는 데이터를 받을 수 있다.
    이러한 기능을 제공하기 위해서 이번 장에서 디렉토리 관련 API들을 제공하게 되었다.

    제공되는 API들은 디렉토리에 대한 정보를 설명하는 함수들, 디렉토리에서 인증서와 인증서 폐지 목록(CRL), 특정 엔트리의 attribute를 읽어오는 함수들이 있다.
    이 API들은 다음과 같은 가정하에서 만들어졌다.
    - "검색하고자 하는 도메인(ObjectClass로 구분)에는 한 엔트리(entry)가 다른 엔트리와는 완전히 구별되는 유일(unique)한 속성(attribute), 값(value) 쌍을 갖는다." - 도메인: 같은 objectClass를 가진 엔트리의 집합

    예를 들어 pkiUser라고 하는 ObjectClass를 갖는 집단 중에서 ReadCERTIFICATE()를 사용하여 원하는 사용자의 인증서를 받아오기 위해서는 그를 구별할 수 있는 유일한 속성, 값의 쌍이 존재해야 한다는 것이다.
    이는 사번이나 주민등록번호 등 유일한 값을 선택할 수 있다.
    만일 검색 결과가 복수 개이고 이를 사용자가 선택하도록 프로그램을 구성하고 싶다면 이는 여기에서 제공되는 API로 구현하는 것 보다는 Netscape나 Microsoft에서 제공되는 API를 사용하여 구현하는 것이 더욱 효율적이다.
    본 API 역시 Netscape의 SDK를 기반으로 하여 만들어진 것이다.

    이들 API들은 다양한 구조 및 함수들을 지원하기 때문에 이를 이용하면 사용할 응용프로그램에 최적화 된 코드를 만들 수 있을 것이다.

    • Constructor Summary

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

      All Methods Static Methods Instance Methods Concrete Methods Deprecated Methods 
      Modifier and Type Method Description
      void close()  
      void Delete()
      Deprecated.
      Resource Leak 의 효율적인 관리를 위해 close() 를 사용할 것을 권장함.
      static void DeleteCERTIFICATEarray​(IssacCERTIFICATE[] cert_array)
      ReadCERTIFICATE()로 가져온 인증서들을 메모리에서 삭제한다.
      byte[] getDlcontext()
      Deprecated.
      참조값은 바이너리 데이터가 아니므로 외부에선 절대 사용하지 않도록 한다!
      static int ReadCDPCERTIFICATEREVLIST​(IssacCRL crl, IssacCERTIFICATE cert, java.lang.String attribute)
      인증서의 CDP 값으로 디렉토리 서버에서 인증서 폐지 목록(CRL)을 읽어온다.
      static int ReadCDPCERTIFICATEREVLIST_Timeout​(IssacCRL crl, IssacCERTIFICATE cert, java.lang.String attribute, int timeoutsec)
      인증서의 CDP 값으로 디렉토리 서버에서 인증서 폐지 목록(CRL)을 읽어온다.
      IssacCERTIFICATE[] ReadCERTIFICATE​(java.lang.String dn, java.lang.String attribute)
      디렉토리 서버로부터 인증서들(전자서명 검증용 인증서와 암호화용 공개키 인증서)을 가져온다.
      int ReadCERTIFICATEREVLIST​(IssacCRL crl, java.lang.String dn, java.lang.String attribute)
      디렉토리 서버에서 인증서 폐지 목록(CRL)을 읽어온다.
      int ReadCERTIFICATEREVLIST_Timeout​(IssacCRL crl, java.lang.String dn, java.lang.String attribute, int timeoutsec)
      디렉토리 서버에서 인증서 폐지 목록(CRL)을 읽어온다.
      int ReadCERTIFICATETRUSTLIST​(IssacCTL ctl, java.lang.String dn, java.lang.String attribute)
      디렉토리 서버에서 인증서 신뢰 목록(CTL)을 읽어온다.
      java.lang.String ReadContext​(java.lang.String dn, java.lang.String attribute)
      디렉토리 서버에서 특정 엔트리를 찾아서 원하는 속성 값을 읽어 온다.
      java.lang.String ReadEntryDn​(java.lang.String filter)
      디렉토리 서버에서 특정 엔트리의 DN을 가져온다.
      void Set​(java.lang.String ip, int port, java.lang.String basedn)
      이 클래스는 사용하기 전에 초기화 한 후 값을 입력해야 한다.
      • Methods inherited from class java.lang.Object

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

      • getDlcontext

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

        public void Set​(java.lang.String ip,
                        int port,
                        java.lang.String basedn)
                 throws IssacSDKException
        이 클래스는 사용하기 전에 초기화 한 후 값을 입력해야 한다. 이 함수를 통해 서버 정보를 설정한다.

        여기에서 입력되는 basedn은 디렉토리 검색의 출발점이 되는 dn이기 때문에 검색 범위를 고려해서 설정해야 한다.

        Parameters:
        ip - [IN] 디렉토리 서버의 IP 주소
        port - [IN] 디렉토리 서버의 포트 번호
        basedn - [IN] 디렉토리 서버의 base DN: 디렉토리 검색의 출발점이 되는 dn이다.
        Throws:
        IssacSDKException - 오류 발생
        See Also:
        IssacDLCONTEXT(), close()
      • close

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

        public IssacCERTIFICATE[] ReadCERTIFICATE​(java.lang.String dn,
                                                  java.lang.String attribute)
                                           throws IssacSDKException
        디렉토리 서버로부터 인증서들(전자서명 검증용 인증서와 암호화용 공개키 인증서)을 가져온다.

        가져온 인증서들을 구별하기 위해서는 IssacCERTIFICATE 클래스의 GetAlgID(),GetKeyUsage(),GetBasicConstraints()를 사용한다.
        DN 정보를 가져오기 위해서는 ReadEntryDn() 함수를 사용한다.

        Parameters:
        dn - [IN] 디렉토리 서버에서 찾고자 하는 엔트리의 DN
        attribute - [IN] 찾은 엔트리의 인증서가 attribute는 "userCertificate;binary"(LDAP_ATTRIBUTE_CERTIFICATE)를 사용할 수 있다.
        Returns:
        디렉토리로 부터 읽어온 인증서들 IssacCERTIFICATE 객체 배열
        Throws:
        IssacSDKException - 오류 발생
        See Also:
        ReadCERTIFICATEREVLIST(IssacCRL, String, String), ReadContext(String, String)
      • ReadCERTIFICATEREVLIST

        public int ReadCERTIFICATEREVLIST​(IssacCRL crl,
                                          java.lang.String dn,
                                          java.lang.String attribute)
                                   throws IssacSDKException
        디렉토리 서버에서 인증서 폐지 목록(CRL)을 읽어온다.

        DN 정보를 가져오기 위해서는 ReadEntryDn() 함수를 사용한다.

        Parameters:
        crl - [OUT] CRL을 가리키는 IssacCRL 객체
        dn - [IN] 디렉토리 서버에서 찾고자 하는 엔트리의 DN
        attribute - [IN] 찾은 엔트리의 인증서 폐지 목록 attribute는 "certificateRevocationList;binary", "deltaRevocationList;binary"을 사용할 수 있다.
        Returns:
        0 : 성공, -1 : 실패
        Throws:
        IssacSDKException - 오류 발생
        See Also:
        ReadCERTIFICATE(String, String), ReadContext(String, String), ReadCERTIFICATETRUSTLIST(IssacCTL, String, String)
      • ReadCERTIFICATEREVLIST_Timeout

        public int ReadCERTIFICATEREVLIST_Timeout​(IssacCRL crl,
                                                  java.lang.String dn,
                                                  java.lang.String attribute,
                                                  int timeoutsec)
                                           throws IssacSDKException
        디렉토리 서버에서 인증서 폐지 목록(CRL)을 읽어온다.

        DN 정보를 가져오기 위해서는 ReadEntryDn() 함수를 사용한다.

        Parameters:
        crl - [OUT] CRL을 가리키는 IssacCRL 객체
        dn - [IN] 디렉토리 서버에서 찾고자 하는 엔트리의 DN
        attribute - [IN] 찾은 엔트리의 인증서 폐지 목록 attribute는 "certificateRevocationList;binary", "deltaRevocationList;binary"을 사용할 수 있다.
        timeoutsec - [IN] 응답을 기다릴 시간 (seconds)
        Returns:
        0 : 성공, 그 외 : 실패
        Throws:
        IssacSDKException - 오류 발생
      • ReadCDPCERTIFICATEREVLIST

        public static int ReadCDPCERTIFICATEREVLIST​(IssacCRL crl,
                                                    IssacCERTIFICATE cert,
                                                    java.lang.String attribute)
                                             throws IssacSDKException
        인증서의 CDP 값으로 디렉토리 서버에서 인증서 폐지 목록(CRL)을 읽어온다.
        Parameters:
        crl - [OUT] CRL을 가리키는 IssacCRL 객체
        cert - [IN] CDP 값을 포함하고 있는 인증서
        attribute - [IN] [Optional] 찾을 엔트리의 인증서 폐지 목록 attribute. 인증서의 CDP 정보와 attribute 가 다를 때 사용한다.
        Returns:
        0 : 성공, 그 외 : 실패
        Throws:
        IssacSDKException - 오류 발생
      • ReadCDPCERTIFICATEREVLIST_Timeout

        public static int ReadCDPCERTIFICATEREVLIST_Timeout​(IssacCRL crl,
                                                            IssacCERTIFICATE cert,
                                                            java.lang.String attribute,
                                                            int timeoutsec)
                                                     throws IssacSDKException
        인증서의 CDP 값으로 디렉토리 서버에서 인증서 폐지 목록(CRL)을 읽어온다.
        Parameters:
        crl - [OUT] CRL을 가리키는 IssacCRL 객체
        cert - [IN] CDP 값을 포함하고 있는 인증서
        attribute - [IN] [Optional] 찾을 엔트리의 인증서 폐지 목록 attribute. 인증서의 CDP 정보와 attribute 가 다를 때 사용한다.
        timeoutsec - [IN] 응답을 기다릴 시간 (seconds)
        Returns:
        0 : 성공, 그 외 : 실패
        Throws:
        IssacSDKException - 오류 발생
      • ReadCERTIFICATETRUSTLIST

        public int ReadCERTIFICATETRUSTLIST​(IssacCTL ctl,
                                            java.lang.String dn,
                                            java.lang.String attribute)
                                     throws IssacSDKException
        디렉토리 서버에서 인증서 신뢰 목록(CTL)을 읽어온다.

        DN 정보를 읽어오기 위해서는 ReadEntryDn() 함수를 사용한다.

        Parameters:
        ctl - [OUT] sCTL을 가리키는 IssacCTL 객체
        dn - [IN] 디렉토리로부터 찾고자 하는 엔트리의 DN
        attribute - [IN] 찾은 엔트리에 인증서가 저장된 attribute는 "certificateTrustList;binary", "deltaTrustList;binary"을 사용할 수 있다.
        Returns:
        0 : 성공, 그 외 : 실패
        Throws:
        IssacSDKException - 오류 발생
        See Also:
        ReadCERTIFICATE(String, String), ReadContext(String, String), ReadCERTIFICATEREVLIST(IssacCRL, String, String)
      • ReadContext

        public java.lang.String ReadContext​(java.lang.String dn,
                                            java.lang.String attribute)
                                     throws IssacSDKException
        디렉토리 서버에서 특정 엔트리를 찾아서 원하는 속성 값을 읽어 온다.

        디렉토리의 특정 엔트리를 찾기 위해 엔트리의 DN, 읽어 올 attribute(속성)과 디렉토리 정보가 필요하다.
        읽어 온 속성값(value of attribute)은 'value'에 저장된다.

        DN 정보를 읽어오기 위해서는 ReadEntryDn() 함수를 사용한다.

        Parameters:
        dn - [IN] 디렉토리로부터 찾고자 하는 엔트리의 DN
        attribute - [IN] 찾고자 하는 엔트리로부터 읽어 올 속성(attribute)
        Returns:
        특정 엔트리의 속성값
        Throws:
        IssacSDKException - 오류 발생
        See Also:
        ReadCERTIFICATE(String, String), ReadCERTIFICATEREVLIST(IssacCRL, String, String)