付録 B. 完全な ASN.1 定義 (Complete ASN.1 Definition)
本付録は RFC 4511 で使用される ASN.1 module をまとめる。この module は LDAPMessage envelope、protocol operation の choice、control、result、DN、filter、search、update、extended operation、intermediate response、および StartTLS などのプロトコル要素を定義する。
中核となる構造は以下のように要約できる。
LDAPMessage ::= SEQUENCE {
messageID MessageID,
protocolOp CHOICE {
bindRequest BindRequest,
bindResponse BindResponse,
unbindRequest UnbindRequest,
searchRequest SearchRequest,
searchResEntry SearchResultEntry,
searchResDone SearchResultDone,
searchResRef SearchResultReference,
modifyRequest ModifyRequest,
modifyResponse ModifyResponse,
addRequest AddRequest,
addResponse AddResponse,
delRequest DelRequest,
delResponse DelResponse,
modDNRequest ModifyDNRequest,
modDNResponse ModifyDNResponse,
compareRequest CompareRequest,
compareResponse CompareResponse,
abandonRequest AbandonRequest,
extendedReq ExtendedRequest,
extendedResp ExtendedResponse,
intermediateResponse IntermediateResponse },
controls [0] Controls OPTIONAL }
完全な ASN.1 定義には、LDAPString、LDAPOID、LDAPDN、RelativeLDAPDN、AttributeDescription、AttributeValue、AssertionValue、LDAPResult、Referral、Filter、SubstringFilter、MatchingRuleAssertion などの型も規定されている。これらの定義は、第 4 章の意味論の説明および第 5 章の BER 符号化規則とともに、線上 (on-the-wire) の LDAP protocol syntax を構成する。
本付録を読む際、コードブロック内の識別子はプロトコルの線上形式の一部であるため、翻訳またはローカライズしてはならないことに注意されたい。日本語の説明は、これらの ASN.1 型が LDAP メッセージ内で果たす役割のみを解説する。messageID は要求と応答の関連付けに、protocolOp は実際の操作を示すために、controls は client または server が拡張制御情報を運ぶために用いられる。
これらの型は、LDAP の client と server が解析、符号化、検証できなければならないメッセージ構造を総合的に限定する。実装者は本付録を、本文の操作意味論、エラーコード、およびセキュリティ要件とともに読み、ASN.1 構造のみからプロトコル動作を推論しないよう心掛けるべきである。