:tag_class:

:universal: 0b00000000  # 0
:application: 0b01000000  # 64
:context_specific: 0b10000000  # 128
:private: 0b11000000  # 192

:encoding_type:

:primitive: 0b00000000  # 0
:constructed: 0b00100000  # 32

:identified_type:

:universal: 
  :primitive: 
    1:    :boolean
    2:    :integer
    4:    :string
    5:    :null
    6:    :oid
    10:   :integer
    13:   :string             # (relative OID)

  :constructed: 
    16:   :array
    17:   :array

:context_specific: 
  :primitive: 
    10:   :integer

# # Abstract Syntax Notation One - ASN.1 # :syntax:

:application: 
  :primitive: 
    2:                        # UnbindRequest body # nil!
  :constructed: 
    0:  :array                # BindRequest
    1:  :array                # BindResponse
    2:  :array                # UnbindRequest
    3:  :array                # SearchRequest
    4:  :array                # SearchData
    5:  :array                # SearchResult
    6:  :array                # ModifyRequest
    7:  :array                # ModifyResponse
    8:  :array                # AddRequest
    9:  :array                # AddResponse
    10: :array                # DelRequest
    11: :array                # DelResponse
    12: :array                # ModifyRdnRequest
    13: :array                # ModifyRdnResponse
    14: :array                # CompareRequest
    15: :array                # CompareResponse
    16: :array                # AbandonRequest
    19: :array                # SearchResultReferral
    24: :array                # Unsolicited Notification

:universal: 
  :constructed: 
    107: :array               # ExtendedResponse (PasswdModifyResponseValue)

:context_specific: 
  :primitive: 
    0: :string                # password
    1: :string                # Kerberos v4
    2: :string                # Kerberos v5
    3: :string                # SearchFilter-extensible
    4: :string                # SearchFilter-extensible
    7: :string                # serverSaslCreds
  :constructed: 
    0: :array                 # RFC-2251 Control and Filter-AND
    1: :array                 # SearchFilter-OR
    2: :array                 # SearchFilter-NOT
    3: :array                 # Search referral
    4: :array                 # unknown use in Microsoft Outlook
    5: :array                 # SearchFilter-GE
    6: :array                 # SearchFilter-LE
    7: :array                 # serverSaslCreds
    9: :array                 # SearchFilter-extensible

:request:

:con_and: 0xa0   # constructed  0, "and"
:con_or: 0xa1   # constructed  1, "or"
:con_not: 0xa2   # constructed  2, "not"
:equality_match: 0xa3   # constructed  3, "equalityMatch"
:substring: 0xa4   # constructed  4, "substring"
:op_gte: 0xa5   # constructed  5, "greaterOrEqual"
:op_lte: 0xa6   # constructed  6, "lessOrEqual"
:substr_initial: 0x80   # primitive    0, SubstringFilter "initial"
:substr_any: 0x81   # primitive    0, SubstringFilter "any"
:substr_final: 0x82   # primitive    0, SubstringFilter "final"
:is_present: 0x87   # primitive    7, "present"
:op_ext: 0xa9   # constructed  9, "extensible comparison"

:response:

0:  :bind_request
1:  :bind_result
2:  :unbind_request
3:  :search_request
4:  :search_returned_data
5:  :search_result
6:  :modify_request
7:  :modify_response
8:  :add_request
9:  :add_response
10: :delete_request
11: :delete_response
12: :modify_rdn_request
13: :modify_rdn_response
14: :compare_request
15: :compare_response
16: :abandon_request
17: :unknown
18: :unknown
19: :search_result_referral
20: :unknown
21: :unknown
22: :unknown
23: :extended_request
24: :extended_response
25: :intermediate_response

:result:

0:  :success
1:  :operations_error
2:  :protocol_error
3:  :time_limit_exceeded
4:  :size_limit_exceeded
5:  :compare_false
6:  :compare_true
7:  :auth_method_not_supported
8:  :stronger_auth_required
9:  :reserved
10: :referral
11: :admin_limit_exceeded
12: :unavailable_critical_extension
13: :confidentiality_required
14: :sasl_bind_in_progress
15: :not_used
16: :no_such_attribute
17: :undefined_attribute_type
18: :inappropriate_matching
19: :constraint_violation
20: :attribute_or_value_exists
21: :invalid_attribute_syntax
#
# 22..31 - Not used.
#
32: :no_such_object
33: :alias_problem
34: :invalid_dn_syntax
35: :ldap_is_leaf
36: :alias_dereferencing_problem
#
# 37..47 - Not used.
#
48: :inappropriate_authentication
49: :invalid_credentials
50: :insufficient_access_rights
51: :busy
52: :unavailable
53: :unwilling_to_perform
54: :loop_detected
#
# 55..63 - Not used.
#
64: :naming_violation
65: :object_class_violation
66: :not_allowed_on_non_leaf
67: :not_allowed_on_rdn
68: :entry_already_exists
69: :object_class_mods_prohibited
70: :reserved_for_cldap
71: :affects_multiple_dsas
#
# 72..79 - Not used.
#
80: :other
81: :server_down
82: :local_error
83: :encoding_error
84: :decoding_error
85: :timeout
86: :auth_method_unknown
87: :filter_error
88: :user_cancelled
89: :param_error
90: :no_memory
91: :connect_error
92: :not_supported
93: :control_not_found
94: :no_results_returned
95: :more_results
96: :client_loop
97: :referral_limit