Class Ldap


  • public final class Ldap
    extends Object
    This class contains various static utility methods encoding and decoding LDAP protocol elements.
    See Also:
    LdapReader, LdapWriter
    • Field Detail

      • OID_GSSAPI_KERBEROS_V

        public static final String OID_GSSAPI_KERBEROS_V
        The OID for the Kerberos V GSSAPI mechanism.
        See Also:
        Constant Field Values
      • OID_NOTICE_OF_DISCONNECTION

        public static final String OID_NOTICE_OF_DISCONNECTION
        The OID for the LDAP notice of disconnection extended operation.
        See Also:
        Constant Field Values
      • OP_TYPE_ABANDON_REQUEST

        public static final byte OP_TYPE_ABANDON_REQUEST
        The protocol op type for abandon requests.
        See Also:
        Constant Field Values
      • OP_TYPE_ADD_REQUEST

        public static final byte OP_TYPE_ADD_REQUEST
        The protocol op type for add requests.
        See Also:
        Constant Field Values
      • OP_TYPE_ADD_RESPONSE

        public static final byte OP_TYPE_ADD_RESPONSE
        The protocol op type for add responses.
        See Also:
        Constant Field Values
      • OP_TYPE_BIND_REQUEST

        public static final byte OP_TYPE_BIND_REQUEST
        The protocol op type for bind requests.
        See Also:
        Constant Field Values
      • OP_TYPE_BIND_RESPONSE

        public static final byte OP_TYPE_BIND_RESPONSE
        The protocol op type for bind responses.
        See Also:
        Constant Field Values
      • OP_TYPE_COMPARE_REQUEST

        public static final byte OP_TYPE_COMPARE_REQUEST
        The protocol op type for compare requests.
        See Also:
        Constant Field Values
      • OP_TYPE_COMPARE_RESPONSE

        public static final byte OP_TYPE_COMPARE_RESPONSE
        The protocol op type for compare responses.
        See Also:
        Constant Field Values
      • OP_TYPE_DELETE_REQUEST

        public static final byte OP_TYPE_DELETE_REQUEST
        The protocol op type for delete requests.
        See Also:
        Constant Field Values
      • OP_TYPE_DELETE_RESPONSE

        public static final byte OP_TYPE_DELETE_RESPONSE
        The protocol op type for delete responses.
        See Also:
        Constant Field Values
      • OP_TYPE_EXTENDED_REQUEST

        public static final byte OP_TYPE_EXTENDED_REQUEST
        The protocol op type for extended requests.
        See Also:
        Constant Field Values
      • OP_TYPE_EXTENDED_RESPONSE

        public static final byte OP_TYPE_EXTENDED_RESPONSE
        The protocol op type for extended responses.
        See Also:
        Constant Field Values
      • OP_TYPE_INTERMEDIATE_RESPONSE

        public static final byte OP_TYPE_INTERMEDIATE_RESPONSE
        The protocol op type for intermediate responses.
        See Also:
        Constant Field Values
      • OP_TYPE_MODIFY_DN_REQUEST

        public static final byte OP_TYPE_MODIFY_DN_REQUEST
        The protocol op type for modify DN requests.
        See Also:
        Constant Field Values
      • OP_TYPE_MODIFY_DN_RESPONSE

        public static final byte OP_TYPE_MODIFY_DN_RESPONSE
        The protocol op type for modify DN responses.
        See Also:
        Constant Field Values
      • OP_TYPE_MODIFY_REQUEST

        public static final byte OP_TYPE_MODIFY_REQUEST
        The protocol op type for modify requests.
        See Also:
        Constant Field Values
      • OP_TYPE_MODIFY_RESPONSE

        public static final byte OP_TYPE_MODIFY_RESPONSE
        The protocol op type for modify responses.
        See Also:
        Constant Field Values
      • OP_TYPE_SEARCH_REQUEST

        public static final byte OP_TYPE_SEARCH_REQUEST
        The protocol op type for search requests.
        See Also:
        Constant Field Values
      • OP_TYPE_SEARCH_RESULT_DONE

        public static final byte OP_TYPE_SEARCH_RESULT_DONE
        The protocol op type for search result done elements.
        See Also:
        Constant Field Values
      • OP_TYPE_SEARCH_RESULT_ENTRY

        public static final byte OP_TYPE_SEARCH_RESULT_ENTRY
        The protocol op type for search result entries.
        See Also:
        Constant Field Values
      • OP_TYPE_SEARCH_RESULT_REFERENCE

        public static final byte OP_TYPE_SEARCH_RESULT_REFERENCE
        The protocol op type for search result references.
        See Also:
        Constant Field Values
      • OP_TYPE_UNBIND_REQUEST

        public static final byte OP_TYPE_UNBIND_REQUEST
        The protocol op type for unbind requests.
        See Also:
        Constant Field Values
      • TYPE_AUTHENTICATION_SASL

        public static final byte TYPE_AUTHENTICATION_SASL
        The BER type to use for the AuthenticationChoice element in a bind request when SASL authentication is to be used.
        See Also:
        Constant Field Values
      • TYPE_AUTHENTICATION_SIMPLE

        public static final byte TYPE_AUTHENTICATION_SIMPLE
        The BER type to use for the AuthenticationChoice element in a bind request when simple authentication is to be used.
        See Also:
        Constant Field Values
      • TYPE_CONTROL_SEQUENCE

        public static final byte TYPE_CONTROL_SEQUENCE
        The BER type to use for encoding the sequence of controls in an LDAP message.
        See Also:
        Constant Field Values
      • TYPE_EXTENDED_REQUEST_OID

        public static final byte TYPE_EXTENDED_REQUEST_OID
        The BER type to use for the OID of an extended request.
        See Also:
        Constant Field Values
      • TYPE_EXTENDED_REQUEST_VALUE

        public static final byte TYPE_EXTENDED_REQUEST_VALUE
        The BER type to use for the value of an extended request.
        See Also:
        Constant Field Values
      • TYPE_EXTENDED_RESPONSE_OID

        public static final byte TYPE_EXTENDED_RESPONSE_OID
        The BER type to use for the OID of an extended response.
        See Also:
        Constant Field Values
      • TYPE_EXTENDED_RESPONSE_VALUE

        public static final byte TYPE_EXTENDED_RESPONSE_VALUE
        The BER type to use for the value of an extended response.
        See Also:
        Constant Field Values
      • TYPE_FILTER_AND

        public static final byte TYPE_FILTER_AND
        The BER type to use for AND filter components.
        See Also:
        Constant Field Values
      • TYPE_FILTER_APPROXIMATE

        public static final byte TYPE_FILTER_APPROXIMATE
        The BER type to use for approximate filter components.
        See Also:
        Constant Field Values
      • TYPE_FILTER_EQUALITY

        public static final byte TYPE_FILTER_EQUALITY
        The BER type to use for equality filter components.
        See Also:
        Constant Field Values
      • TYPE_FILTER_EXTENSIBLE_MATCH

        public static final byte TYPE_FILTER_EXTENSIBLE_MATCH
        The BER type to use for extensible matching filter components.
        See Also:
        Constant Field Values
      • TYPE_FILTER_GREATER_OR_EQUAL

        public static final byte TYPE_FILTER_GREATER_OR_EQUAL
        The BER type to use for greater than or equal to filter components.
        See Also:
        Constant Field Values
      • TYPE_FILTER_LESS_OR_EQUAL

        public static final byte TYPE_FILTER_LESS_OR_EQUAL
        The BER type to use for less than or equal to filter components.
        See Also:
        Constant Field Values
      • TYPE_FILTER_NOT

        public static final byte TYPE_FILTER_NOT
        The BER type to use for NOT filter components.
        See Also:
        Constant Field Values
      • TYPE_FILTER_OR

        public static final byte TYPE_FILTER_OR
        The BER type to use for OR filter components.
        See Also:
        Constant Field Values
      • TYPE_FILTER_PRESENCE

        public static final byte TYPE_FILTER_PRESENCE
        The BER type to use for presence filter components.
        See Also:
        Constant Field Values
      • TYPE_FILTER_SUBSTRING

        public static final byte TYPE_FILTER_SUBSTRING
        The BER type to use for substring filter components.
        See Also:
        Constant Field Values
      • TYPE_INTERMEDIATE_RESPONSE_OID

        public static final byte TYPE_INTERMEDIATE_RESPONSE_OID
        The BER type to use for the OID of an intermediate response message.
        See Also:
        Constant Field Values
      • TYPE_INTERMEDIATE_RESPONSE_VALUE

        public static final byte TYPE_INTERMEDIATE_RESPONSE_VALUE
        The BER type to use for the value of an intermediate response message.
        See Also:
        Constant Field Values
      • TYPE_MATCHING_RULE_DN_ATTRIBUTES

        public static final byte TYPE_MATCHING_RULE_DN_ATTRIBUTES
        The BER type to use for the DN attributes flag in a matching rule assertion.
        See Also:
        Constant Field Values
      • TYPE_MATCHING_RULE_ID

        public static final byte TYPE_MATCHING_RULE_ID
        The BER type to use for the matching rule OID in a matching rule assertion.
        See Also:
        Constant Field Values
      • TYPE_MATCHING_RULE_TYPE

        public static final byte TYPE_MATCHING_RULE_TYPE
        The BER type to use for the attribute type in a matching rule assertion.
        See Also:
        Constant Field Values
      • TYPE_MATCHING_RULE_VALUE

        public static final byte TYPE_MATCHING_RULE_VALUE
        The BER type to use for the assertion value in a matching rule assertion.
        See Also:
        Constant Field Values
      • TYPE_MODIFY_DN_NEW_SUPERIOR

        public static final byte TYPE_MODIFY_DN_NEW_SUPERIOR
        The BER type to use for the newSuperior component of a modify DN request.
        See Also:
        Constant Field Values
      • TYPE_REFERRAL_SEQUENCE

        public static final byte TYPE_REFERRAL_SEQUENCE
        The BER type to use for encoding the sequence of referral URLs in an LDAPResult element.
        See Also:
        Constant Field Values
      • TYPE_SERVER_SASL_CREDENTIALS

        public static final byte TYPE_SERVER_SASL_CREDENTIALS
        The BER type to use for the server SASL credentials in a bind response.
        See Also:
        Constant Field Values
      • TYPE_SUBANY

        public static final byte TYPE_SUBANY
        The BER type to use for the subAny component(s) of a substring filter.
        See Also:
        Constant Field Values
      • TYPE_SUBFINAL

        public static final byte TYPE_SUBFINAL
        The BER type to use for the subFinal components of a substring filter.
        See Also:
        Constant Field Values
      • TYPE_SUBINITIAL

        public static final byte TYPE_SUBINITIAL
        The BER type to use for the subInitial component of a substring filter.
        See Also:
        Constant Field Values
    • Method Detail

      • requestToResponseProtocolOpType

        public static byte requestToResponseProtocolOpType​(byte requestProtocolOpType)
        Returns the response protocol operation type associated to the given request protocol op.
        Parameters:
        requestProtocolOpType - The request's protocol-op type
        Returns:
        The protocol-op type of the response associated to the given request.
        Throws:
        IllegalArgumentException - if requestProtocolOpType does not identify a request producing response.
      • getReader

        public static LdapReader getReader​(Asn1Reader asn1Reader,
                                           DecodeOptions options)
        Creates a new LDAP reader which will read LDAP messages from an ASN.1 reader using the provided decoding options.
        Parameters:
        asn1Reader - The ASN.1 reader from which LDAP messages will be read.
        options - LDAP message decoding options.
        Returns:
        A new LDAP reader which will read LDAP messages from an ASN.1 reader using the provided decoding options.
      • getWriter

        public static LdapWriter getWriter​(Asn1Writer asn1Writer,
                                           int ldapVersion)
        Creates a new LDAP writer which will write LDAP messages to the provided ASN.1 writer.
        Parameters:
        asn1Writer - The ASN.1 writer to which LDAP messages will be written.
        ldapVersion - Version of the protocol to use to encode the messages.
        Returns:
        A new LDAP writer which will write LDAP messages to the provided ASN.1 writer.
      • readControl

        public static Control readControl​(Asn1Reader reader)
                                   throws IOException
        Reads the next ASN.1 element from the provided ASN1Reader as a Control.
        Parameters:
        reader - The ASN1Reader from which the ASN.1 encoded Control should be read.
        Returns:
        The decoded Control.
        Throws:
        IOException - If an error occurs while reading from reader.
      • readFilter

        public static Filter readFilter​(Asn1Reader reader)
                                 throws IOException
        Reads the next ASN.1 element from the provided ASN1Reader as a Filter using a maximum filter depth of 100. The maximum filter depth can prevent stack overflow errors from filters that look like (&(&(&(&(&(&(&(&(&.....
        Parameters:
        reader - The ASN1Reader from which the ASN.1 encoded Filter should be read.
        Returns:
        The decoded Filter.
        Throws:
        IOException - If an error occurs while reading from reader.
        LocalizedIllegalArgumentException - If an attribute description contains invalid character, exceeds the maximum filter depth, or if the search filter has an unrecognized type.
      • readFilter

        public static Filter readFilter​(Asn1Reader reader,
                                        int maxFilterDepth)
                                 throws IOException
        Reads the next ASN.1 element from the provided ASN1Reader as a Filter using the provided maximum filter depth. The maximum filter depth can prevent stack overflow errors from filters that look like (&(&(&(&(&(&(&(&(&.....
        Parameters:
        reader - The ASN1Reader from which the ASN.1 encoded Filter should be read.
        maxFilterDepth - The maximum depth to which nested search filters will be processed. This can prevent stack overflow errors from filters that look like (&(&(&(&(&(&(&(&(&.....
        Returns:
        The decoded Filter.
        Throws:
        IOException - If an error occurs while reading from reader.
        LocalizedIllegalArgumentException - If an attribute description contains invalid character, exceeds the maximum filter depth, or if the search filter has an unrecognized type.
      • readEntry

        public static Entry readEntry​(Asn1Reader reader,
                                      DecodeOptions options)
                               throws IOException
        Reads the next ASN.1 element from the provided ASN1Reader as an Entry.
        Parameters:
        reader - The ASN1Reader from which the ASN.1 encoded Entry should be read.
        options - The decode options to use when decoding the entry.
        Returns:
        The decoded Entry.
        Throws:
        IOException - If an error occurs while reading from reader.
      • writeFilter

        public static void writeFilter​(Asn1Writer writer,
                                       Filter filter)
                                throws IOException
        Writes a Filter to the provided Asn1Writer.
        Parameters:
        writer - The Asn1Writer to which the ASN.1 encoded Filter should be written.
        filter - The filter.
        Throws:
        IOException - If an error occurs while writing to writer.
      • writeEntry

        public static void writeEntry​(Asn1Writer writer,
                                      Entry entry)
                               throws IOException
        Writes an Entry to the provided Asn1Writer.
        Parameters:
        writer - The Asn1Writer to which the ASN.1 encoded Entry should be written.
        entry - The entry.
        Throws:
        IOException - If an error occurs while writing to writer.
      • readModification

        public static Modification readModification​(Asn1Reader reader,
                                                    DecodeOptions options,
                                                    Schema schema)
                                             throws IOException
        Reads the next ASN.1 element from the provided ASN1Reader as a Modification.
        Parameters:
        reader - The ASN1Reader from which the ASN.1 encoded Modification should be read.
        options - The decode options to use when decoding the modification.
        schema - The schema
        Returns:
        The decoded Modification.
        Throws:
        IOException - If an error occurs while reading from reader.
      • readAttribute

        public static Attribute readAttribute​(Asn1Reader reader,
                                              DecodeOptions options,
                                              Schema schema)
                                       throws IOException
        Reads the next ASN.1 element from the provided ASN1Reader as an Attribute.
        Parameters:
        reader - The ASN1Reader from which the ASN.1 encoded Attribute should be read.
        options - The decode options to use when decoding the attribute.
        schema - The schema
        Returns:
        The decoded Attribute.
        Throws:
        IOException - If an error occurs while reading from reader.
      • writeModification

        public static void writeModification​(Asn1Writer writer,
                                             Modification modification)
                                      throws IOException
        Writes an Modification to the provided Asn1Writer.
        Parameters:
        writer - The Asn1Writer to which the ASN.1 encoded Modification should be written.
        modification - The modification.
        Throws:
        IOException - If an error occurs while writing to writer.
      • writeAttribute

        public static void writeAttribute​(Asn1Writer writer,
                                          Attribute attribute)
                                   throws IOException
        Writes an Attribute to the provided Asn1Writer.
        Parameters:
        writer - The Asn1Writer to which the ASN.1 encoded Attribute should be written.
        attribute - The attribute.
        Throws:
        IOException - If an error occurs while writing to writer.