diff options
Diffstat (limited to 'goldap/read_error_test.go')
-rw-r--r-- | goldap/read_error_test.go | 3146 |
1 files changed, 3146 insertions, 0 deletions
diff --git a/goldap/read_error_test.go b/goldap/read_error_test.go new file mode 100644 index 0000000..d2d3878 --- /dev/null +++ b/goldap/read_error_test.go @@ -0,0 +1,3146 @@ +package message + +import ( + "strings" + "testing" +) + +type LDAPMessageErrorTestData struct { + label string + bytes Bytes + err string +} + +func TestReadLDAPMessageError(t *testing.T) { + for i, test := range getLDAPMessageErrorTestData() { + message, err := ReadLDAPMessage(&test.bytes) + if err == nil { + t.Errorf("#%d: %s\nEXPECTED ERROR MESSAGE:\n%s\nGOT A LDAP STRUCT INSTEAD:\n%#+v", i, test.label, test.err, message) + } else if !strings.Contains(err.Error(), test.err) { + t.Errorf("#%d: %s\nGOT:\n%s\nEXPECTED:\n%s", i+1, test.label, err.Error(), test.err) + } + } +} + +func getLDAPMessageErrorTestData() (ret []LDAPMessageErrorTestData) { + return []LDAPMessageErrorTestData{ + // Request 1: client => bind request + // Wrong authentication tag + { + label: "Client => bind request, wrong authentication tag", + bytes: Bytes{ + offset: 0, + bytes: []byte{ + // 300c020101600702010304008000 + 0x30, 0x0c, + 0x02, 0x01, 0x01, + // BindRequest ::= [APPLICATION 0] SEQUENCE { + 0x60, 0x07, + // version INTEGER (1 .. 127), + 0x02, 0x01, 0x03, + // name LDAPDN, + 0x04, 0x00, + // authentication AuthenticationChoice } + // AuthenticationChoice ::= CHOICE { + // simple [0] OCTET STRING, + 0x81, 0x00, + }, + }, + err: `ReadLDAPMessage: +ReadSubBytes: +readComponents: +readProtocolOp: +readBindRequest: +ReadSubBytes: +readComponents: +readAuthenticationChoice: invalid tag value 1 for AuthenticationChoice`, + }, + + // Request 2: client => bind request + // Wrong version (too small) + { + label: "Client => bind request, wrong version (too small)", + bytes: Bytes{ + offset: 0, + bytes: []byte{ + // 300c020101600702010304008000 + 0x30, 0x0c, + 0x02, 0x01, 0x01, + // BindRequest ::= [APPLICATION 0] SEQUENCE { + 0x60, 0x07, + // version INTEGER (1 .. 127), + 0x02, 0x01, 0x00, + // name LDAPDN, + 0x04, 0x00, + // authentication AuthenticationChoice } + // AuthenticationChoice ::= CHOICE { + // simple [0] OCTET STRING, + 0x81, 0x00, + }, + }, + err: `ReadLDAPMessage: +ReadSubBytes: +readComponents: +readProtocolOp: +readBindRequest: +ReadSubBytes: +readComponents: invalid version 0, must be between 1 and 127`, + }, + + // Request 3: client => bind request + // Wrong version (too large) + { + label: "Client => bind request, wrong wrong version (too large)", + bytes: Bytes{ + offset: 0, + bytes: []byte{ + // 300c020101600702010304008000 + 0x30, 0x0d, + 0x02, 0x01, 0x01, + // BindRequest ::= [APPLICATION 0] SEQUENCE { + 0x60, 0x08, + // version INTEGER (1 .. 127), + 0x02, 0x02, 0x00, 0xff, + // name LDAPDN, + 0x04, 0x00, + // authentication AuthenticationChoice } + // AuthenticationChoice ::= CHOICE { + // simple [0] OCTET STRING, + 0x81, 0x00, + }, + }, + err: `ReadLDAPMessage: +ReadSubBytes: +readComponents: +readProtocolOp: +readBindRequest: +ReadSubBytes: +readComponents: invalid version 255, must be between 1 and 127`, + }, + + // Request 4: client => bind request + // Invalid type for version + { + label: "Client => bind request, invalid type for version", + bytes: Bytes{ + offset: 0, + bytes: []byte{ + // 300c020101600702010304008000 + 0x30, 0x0d, + 0x02, 0x01, 0x01, + // BindRequest ::= [APPLICATION 0] SEQUENCE { + 0x60, 0x08, + // version INTEGER (1 .. 127), + 0x04, 0x02, 0x30, 0x30, + // name LDAPDN, + 0x04, 0x00, + // authentication AuthenticationChoice } + // AuthenticationChoice ::= CHOICE { + // simple [0] OCTET STRING, + 0x81, 0x00, + }, + }, + err: `ReadLDAPMessage: +ReadSubBytes: +readComponents: +readProtocolOp: +readBindRequest: +ReadSubBytes: +readComponents: +readINTEGER: +ReadPrimitiveSubBytes: +Expect: asn1: syntax error: ExpectTag: wrong tag value: got 4 (OCTET STRING), expected 2 (INTEGER).`, + }, + + // Request 5: client SearchRequest with FilterExtensibleMatch + // Error: invalid tag and length for the extensible filter dnAttribute boolean + { + label: "Client SearchRequest with FilterExtensibleMatch, invalid tag and length for the extensible filter dnAttribute boolean", + bytes: Bytes{ + offset: 0, + bytes: []byte{ + // 3074020131636f04166f753d636f6e73756d6572732c6f753d73797374656d0a01020a0103020203e8020100010100a936811474656c6570686f6e654e756d6265724d61746368820f74656c6570686f6e654e756d626572830a30313233343536373839 + // 8401ff300d040b6f626a656374436c617373 + 0x30, 0x74, 0x02, 0x01, 0x31, 0x63, 0x6f, 0x04, 0x16, 0x6f, 0x75, 0x3d, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x72, 0x73, 0x2c, 0x6f, 0x75, 0x3d, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x0a, 0x01, 0x02, 0x0a, 0x01, 0x03, 0x02, 0x02, 0x03, 0xe8, 0x02, 0x01, 0x00, 0x01, 0x01, 0x00, 0xa9, 0x36, 0x81, 0x14, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x68, 0x6f, 0x6e, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x82, 0x0f, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x68, 0x6f, 0x6e, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x83, 0x0a, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, + // dnAttributes [4] BOOLEAN DEFAULT FALSE + 0x84, 0x40, 0xff, 0x30, 0x0d, 0x04, 0x0b, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6c, 0x61, 0x73, 0x73, + }, + }, + err: `ReadLDAPMessage: +ReadSubBytes: +readComponents: +readProtocolOp: +readSearchRequest: +ReadSubBytes: +readComponents: +readFilter: +readFilterExtensibleMatch: +readTaggedMatchingRuleAssertion: +ReadSubBytes: +readComponents: readTaggedBOOLEAN: +ReadPrimitiveSubBytes: data truncated: expecting 64 bytes at offset 53 but only 1 bytes are remaining`, + }, + + // Request 6: SERVER SearchResultDone with Controls + // Error: invalid boolean for the criticality of controls + { + label: "server SearchResultDone with Controls, invalid boolean 0x0f for the criticality of controls", + bytes: Bytes{ + offset: 0, + bytes: []byte{ + // 303402012465070a010004000400a02630240416312e322e3834302e3131333535362e312e342e3331390101ff040730050201000400 + 0x30, 0x34, 0x02, 0x01, 0x24, 0x65, 0x07, 0x0a, 0x01, 0x00, 0x04, 0x00, 0x04, 0x00, 0xa0, 0x26, 0x30, 0x24, 0x04, 0x16, 0x31, 0x2e, 0x32, 0x2e, 0x38, 0x34, 0x30, 0x2e, 0x31, 0x31, 0x33, 0x35, 0x35, 0x36, 0x2e, 0x31, 0x2e, 0x34, 0x2e, 0x33, 0x31, 0x39, + // Bad boolean here: 0x0f is not a 0x00 of 0xFF + 0x01, 0x01, 0x0f, + 0x04, 0x07, 0x30, 0x05, 0x02, 0x01, 0x00, 0x04, 0x00, + }, + }, + err: `ReadLDAPMessage: +ReadSubBytes: +readComponents: +readTaggedControls: +ReadSubBytes: +readComponents: +readControl: +ReadSubBytes: +readComponents: +readBOOLEAN: +ReadPrimitiveSubBytes: +asn1: syntax error: invalid boolean: should be 0x00 of 0xFF`, + }, + + // An abandon request with invalid negative abandon message ID + { + label: "client AbandonRequest, invalid negative abandon message ID : 0x9f = -97", + bytes: Bytes{ + offset: 0, + bytes: []byte{ + 0x30, 0x06, + 0x02, 0x01, 0x0a, // messageID + 0x50, 0x01, 0x9f, // Abandon request [APPLICATION 16] MessageID = 0x9f = -97 (invalid !) + }, + }, + err: `ReadLDAPMessage: +ReadSubBytes: +readComponents: +readProtocolOp: +readAbandonRequest: +readTaggedMessageID: +readTaggedPositiveINTEGER: Invalid INTEGER value -97 ! Expected value between 0 and 2147483647`, + }, + + // An abandon request with an invalid too large abandon message ID + { + label: "client AbandonRequest, invalid too large abandon message ID", + bytes: Bytes{ + offset: 0, + bytes: []byte{ + 0x30, 0x0d, + 0x02, 0x01, 0x0a, // messageID + 0x50, 0x08, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, // Abandon request [APPLICATION 16] MessageID = 0x0f ff ff ff ff ff ff ff + }, + }, + err: `ReadLDAPMessage: +ReadSubBytes: +readComponents: +readProtocolOp: +readAbandonRequest: +readTaggedMessageID: +readTaggedPositiveINTEGER: +readTaggedINTEGER: +ReadPrimitiveSubBytes: +asn1: structure error: integer too large`, + }, + + { + label: "server SearchResultDone, invalid too large result code", + bytes: Bytes{ + offset: 0, + bytes: []byte{ + // 300c02010b65070a010004000400 + 0x30, 0x13, 0x02, 0x01, 0x0b, 0x65, 0x0e, + 0x0a, 0x08, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x04, 0x00, 0x04, 0x00, + }, + }, + err: `ReadLDAPMessage: +ReadSubBytes: +readComponents: +readProtocolOp: +readSearchResultDone: +readTaggedLDAPResult: +ReadSubBytes: +readComponents: +readENUMERATED: +ReadPrimitiveSubBytes: +asn1: structure error: integer too large`, + }, + + { + label: "server SearchResultDone, invalid result code", + bytes: Bytes{ + offset: 0, + bytes: []byte{ + // 300c02010b65070a010004000400 + 0x30, 0x0d, 0x02, 0x01, 0x0b, 0x65, 0x08, + 0x0a, 0x02, 0x0f, 0xff, + 0x04, 0x00, 0x04, 0x00, + }, + }, + err: `ReadLDAPMessage: +ReadSubBytes: +readComponents: +readProtocolOp: +readSearchResultDone: +readTaggedLDAPResult: +ReadSubBytes: +readComponents: +readENUMERATED: Invalid ENUMERATED VALUE 4095`, + }, + + { + label: "client delRequest, invalid length for the protocolOp", + bytes: Bytes{ + offset: 0, + bytes: []byte{ + // 30400201274a3b636e3d4120636f6d706c657820706572736f6e5c2c207665727920636f6d706c657820212c6f753d636f6e73756d6572732c6f753d73797374656d + 0x30, 0x40, 0x02, 0x01, 0x27, + 0x4a, 0x3c, 0x63, 0x6e, 0x3d, 0x41, 0x20, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x78, 0x20, 0x70, 0x65, 0x72, 0x73, 0x6f, 0x6e, 0x5c, 0x2c, 0x20, 0x76, 0x65, 0x72, 0x79, 0x20, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x78, 0x20, 0x21, 0x2c, 0x6f, 0x75, 0x3d, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x72, 0x73, 0x2c, 0x6f, 0x75, 0x3d, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, + }, + }, + err: `ReadLDAPMessage: +ReadSubBytes: +readComponents: +readProtocolOp: +readDelRequest: +readTaggedLDAPDN: +readTaggedLDAPString: +readTaggedOCTETSTRING: +ReadPrimitiveSubBytes: data truncated: expecting 60 bytes at offset 5 but only 59 bytes are remaining`, + }, + + { + label: "client searchRequest with controls, invalid length for the control value", + bytes: Bytes{ + offset: 0, + bytes: []byte{ + // 30819c020124633704096f753d73797374656d0a01020a0103020203e8020100010100870b6f626a656374436c617373300d040b6f626a656374436c617373a05e301e0417312e332e362e312e342e312e343230332e312e31302e3104030101ff30190417322e31362e3834302e312e3131333733302e332e342e3230210416312e322e3834302e3131333535362e312e342e333139040730050201030400 + 0x30, 0x81, 0x9c, 0x02, 0x01, 0x24, 0x63, 0x37, 0x04, 0x09, 0x6f, 0x75, 0x3d, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x0a, 0x01, 0x02, 0x0a, 0x01, 0x03, 0x02, 0x02, 0x03, 0xe8, 0x02, 0x01, 0x00, 0x01, 0x01, 0x00, 0x87, 0x0b, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x30, 0x0d, 0x04, 0x0b, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6c, 0x61, 0x73, 0x73, 0xa0, 0x5e, 0x30, 0x1e, 0x04, 0x17, 0x31, 0x2e, 0x33, 0x2e, 0x36, 0x2e, 0x31, 0x2e, 0x34, 0x2e, 0x31, 0x2e, 0x34, 0x32, 0x30, 0x33, 0x2e, 0x31, 0x2e, 0x31, 0x30, 0x2e, 0x31, 0x04, 0x03, 0x01, 0x01, 0xff, 0x30, 0x19, 0x04, 0x17, 0x32, 0x2e, 0x31, 0x36, 0x2e, 0x38, 0x34, 0x30, 0x2e, 0x31, 0x2e, 0x31, 0x31, 0x33, 0x37, 0x33, 0x30, 0x2e, 0x33, 0x2e, 0x34, 0x2e, 0x32, 0x30, 0x21, 0x04, 0x16, 0x31, 0x2e, 0x32, 0x2e, 0x38, 0x34, 0x30, 0x2e, 0x31, 0x31, 0x33, 0x35, 0x35, 0x36, 0x2e, 0x31, 0x2e, 0x34, 0x2e, 0x33, 0x31, 0x39, + // controlValue: OCTETSTRING + 0x04, + 0x08, // Wrong length here + 0x30, 0x05, 0x02, 0x01, 0x03, 0x04, 0x00, + }, + }, + err: `ReadLDAPMessage: +ReadSubBytes: +readComponents: +readTaggedControls: +ReadSubBytes: +readComponents: +readControl: +ReadSubBytes: +readComponents: +readOCTETSTRING: +ReadPrimitiveSubBytes: data truncated: expecting 8 bytes at offset 26 but only 7 bytes are remaining`, + }, + + { + label: "client AbandonRequest, invalid type for the MessageID", + bytes: Bytes{ + offset: 0, + bytes: []byte{ + 0x30, 0x06, + 0x04, 0x01, 0x0a, // messageID + 0x50, 0x01, 0x05, // Abandon request [APPLICATION 16] MessageID = 0x05 + }, + }, + err: `ReadLDAPMessage: +ReadSubBytes: +readComponents: +readTaggedMessageID: +readTaggedPositiveINTEGER: +readTaggedINTEGER: +ReadPrimitiveSubBytes: +Expect: asn1: syntax error: ExpectTag: wrong tag value: got 4 (OCTET STRING), expected 2 (INTEGER).`, + }, + + { + label: "client searchRequest with controls, invalid length for the controls", + bytes: Bytes{ + offset: 0, + bytes: []byte{ + // 30819c020124633704096f753d73797374656d0a01020a0103020203e8020100010100870b6f626a656374436c617373300d040b6f626a656374436c617373a05e301e0417312e332e362e312e342e312e343230332e312e31302e3104030101ff30190417322e31362e3834302e312e3131333733302e332e342e3230210416312e322e3834302e3131333535362e312e342e333139040730050201030400 + 0x30, 0x81, 0x9c, 0x02, 0x01, 0x24, 0x63, 0x37, 0x04, 0x09, 0x6f, 0x75, 0x3d, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x0a, 0x01, 0x02, 0x0a, 0x01, 0x03, 0x02, 0x02, 0x03, 0xe8, 0x02, 0x01, 0x00, 0x01, 0x01, 0x00, 0x87, 0x0b, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x30, 0x0d, 0x04, 0x0b, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6c, 0x61, 0x73, 0x73, + 0xa0, 0x82, 0x00, 0x5e, // invalid length: not in DER format + 0x30, 0x1e, 0x04, 0x17, 0x31, 0x2e, 0x33, 0x2e, 0x36, 0x2e, 0x31, 0x2e, 0x34, 0x2e, 0x31, 0x2e, 0x34, 0x32, 0x30, 0x33, 0x2e, 0x31, 0x2e, 0x31, 0x30, 0x2e, 0x31, 0x04, 0x03, 0x01, 0x01, 0xff, 0x30, 0x19, 0x04, 0x17, 0x32, 0x2e, 0x31, 0x36, 0x2e, 0x38, 0x34, 0x30, 0x2e, 0x31, 0x2e, 0x31, 0x31, 0x33, 0x37, 0x33, 0x30, 0x2e, 0x33, 0x2e, 0x34, 0x2e, 0x32, 0x30, 0x21, 0x04, 0x16, 0x31, 0x2e, 0x32, 0x2e, 0x38, 0x34, 0x30, 0x2e, 0x31, 0x31, 0x33, 0x35, 0x35, 0x36, 0x2e, 0x31, 0x2e, 0x34, 0x2e, 0x33, 0x31, 0x39, 0x04, 0x07, 0x30, 0x05, 0x02, 0x01, 0x03, 0x04, 0x00, + }, + }, + err: `ReadLDAPMessage: +ReadSubBytes: +readComponents: +ParseTagAndLength: asn1: structure error: superfluous leading zeros in length`, + }, + + { + label: "client BindRequest, invalid length for the ProtocolOp", + bytes: Bytes{ + offset: 0, + bytes: []byte{ + // 300c020101600702010304008000 + 0x30, 0x0e, + 0x02, 0x01, 0x01, + // BindRequest ::= [APPLICATION 0] SEQUENCE { + 0x60, 0x82, 0x00, 0x07, // Invalid length here + // version INTEGER (1 .. 127), + 0x02, 0x01, 0x03, + // name LDAPDN, + 0x04, 0x00, + // authentication AuthenticationChoice } + // AuthenticationChoice ::= CHOICE { + // simple [0] OCTET STRING, + 0x80, 0x00, + }, + }, + err: `ReadLDAPMessage: +ReadSubBytes: +readComponents: +readProtocolOp: +ParseTagAndLength: asn1: structure error: superfluous leading zeros in length`, + }, + + // // Request 2: server => bind response + // { + // bytes: Bytes{ + // offset: 0, + // bytes: []byte{ + // // 300c02010161070a010004000400 + // 0x30, 0x0c, + // 0x02, 0x01, 0x01, + // // BindResponse ::= [APPLICATION 1] SEQUENCE { + // // COMPONENTS OF LDAPResult, + // 0x61, 0x07, + // // LDAPResult ::= SEQUENCE { + // // resultCode ENUMERATED { + // // success (0), + // // ... }, + // 0x0a, 0x01, 0x00, + // // matchedDN LDAPDN, + // 0x04, 0x00, + // // diagnosticMessage LDAPString, + // 0x04, 0x00, + // // referral [3] Referral OPTIONAL } + // // serverSaslCreds [7] OCTET STRING OPTIONAL } + // }, + // }, + // out: LDAPMessage{ + // messageID: MessageID(int(0x01)), + // protocolOp: BindResponse{ + // LDAPResult: LDAPResult{ + // resultCode: 0, + // matchedDN: LDAPDN(""), + // diagnosticMessage: LDAPString(""), + // }, + // }, + // }, + // }, + + // // Request 3: client => search request + // // select "subschemaSubentry" from entries where "objectClass" is present + // { + // bytes: Bytes{ + // offset: 0, + // bytes: []byte{ + // // 3038020102633304000a01000a0103020100020100010100870b6f626a656374436c61737330130411737562736368656d61537562656e747279 + // 0x30, 0x38, + // 0x02, 0x01, 0x02, + // // SearchRequest ::= [APPLICATION 3] SEQUENCE { + // 0x63, 0x33, + // // baseObject LDAPDN, + // 0x04, 0x00, + // // scope ENUMERATED { + // // baseObject (0), + // // ... }, + // 0x0a, 0x01, 0x00, + // // derefAliases ENUMERATED { + // // derefAlways (3) }, + // 0x0a, 0x01, 0x03, + // // sizeLimit INTEGER (0 .. maxInt), + // 0x02, 0x01, 0x00, + // // timeLimit INTEGER (0 .. maxInt), + // 0x02, 0x01, 0x00, + // // typesOnly BOOLEAN, + // 0x01, 0x01, 0x00, + // // filter Filter, + // // Filter ::= CHOICE { + // // present [7] AttributeDescription, + // // ... } + // // AttributeDescription ::= LDAPString + // // -- Constrained to <attributedescription> + // // -- [RFC4512] + // 0x87, 0x0b, + // // "objectClass" + // 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6c, 0x61, 0x73, 0x73, + // // attributes AttributeSelection } + // // AttributeSelection ::= SEQUENCE OF selector LDAPString + // // -- The LDAPString is constrained to + // // -- <attributeSelector> in Section 4.5.1.8 + // 0x30, 0x13, + // 0x04, 0x11, + // // "subschemaSubentry" + // 0x73, 0x75, 0x62, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x53, 0x75, 0x62, 0x65, 0x6e, 0x74, 0x72, 0x79, + // }, + // }, + // out: LDAPMessage{ + // messageID: MessageID(int(0x02)), + // protocolOp: SearchRequest{ + // baseObject: LDAPDN(""), + // scope: SearchRequestScopeBaseObject, + // derefAliases: SearchRequetDerefAliasesDerefAlways, + // sizeLimit: 0, + // timeLimit: 0, + // typesOnly: false, + // filter: FilterPresent("objectClass"), + // attributes: AttributeSelection([]LDAPString{"subschemaSubentry"}), + // }, + // }, + // }, + + // // Request 4: server => search result entry + // { + // bytes: Bytes{ + // offset: 0, + // bytes: []byte{ + // // 302b02010264260400302230200411737562736368656d61537562656e747279310b0409636e3d736368656d61 + // 0x30, 0x2b, + // 0x02, 0x01, 0x02, + // // SearchResultEntry ::= [APPLICATION 4] SEQUENCE { + // 0x64, 0x26, + // // objectName LDAPDN, + // 0x04, 0x00, + // // attributes PartialAttributeList } + // // PartialAttributeList ::= SEQUENCE OF + // // partialAttribute PartialAttribute + // 0x30, 0x22, + // // PartialAttribute ::= SEQUENCE { + // 0x30, 0x20, + // // type AttributeDescription, + // 0x04, 0x11, + // // "subschemaSubentry" + // 0x73, 0x75, 0x62, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x53, 0x75, 0x62, 0x65, 0x6e, 0x74, 0x72, 0x79, + // // vals SET OF value AttributeValue } + // // AttributeValue ::= OCTET STRING + // 0x31, 0x0b, + // 0x04, 0x09, + // // "cn=schema" + // 0x63, 0x6e, 0x3d, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, + // }, + // }, + // out: LDAPMessage{ + // messageID: MessageID(int(0x02)), + // protocolOp: SearchResultEntry{ + // objectName: LDAPDN(""), + // attributes: PartialAttributeList( + // []PartialAttribute{ + // PartialAttribute{ + // type_: AttributeDescription("subschemaSubentry"), + // vals: []AttributeValue{AttributeValue("cn=schema")}, + // }, + // }, + // ), + // }, + // }, + // }, + + // // Request 5: server => search result done + // { + // bytes: Bytes{ + // offset: 0, + // bytes: []byte{ + // // 300c02010265070a010004000400 + // 0x30, 0x0c, + // 0x02, 0x01, 0x02, + // // SearchResultDone ::= [APPLICATION 5] LDAPResult + // // LDAPResult ::= SEQUENCE { + // 0x65, 0x07, + // // resultCode ENUMERATED { + // // success (0), + // // ... }, + // 0x0a, 0x01, 0x00, + // // matchedDN LDAPDN, + // 0x04, 0x00, + // // diagnosticMessage LDAPString, + // 0x04, 0x00, + // // referral [3] Referral OPTIONAL } + // }, + // }, + // out: LDAPMessage{ + // messageID: MessageID(int(0x02)), + // protocolOp: SearchResultDone(LDAPResult{ + // resultCode: ResultCodeSuccess, + // matchedDN: LDAPDN(""), + // diagnosticMessage: LDAPString(""), + // }), + // }, + // }, + + // // Request 6: client => search request + // // select + // { + // bytes: Bytes{ + // offset: 0, + // bytes: []byte{ + // // 305d02010363580409636e3d736368656d610a01000a0103020100020100010100a318040b6f626a656374436c6173730409737562736368656d613022040f63726561746554696d657374616d70040f6d6f6469667954696d657374616d70 + // 0x30, 0x5d, + // 0x02, 0x01, 0x03, + // // SearchRequest ::= [APPLICATION 3] SEQUENCE { + // 0x63, 0x58, + // // baseObject LDAPDN, + // // "cn=schema" + // 0x04, 0x09, 0x63, 0x6e, 0x3d, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, + // // scope ENUMERATED { + // // baseObject (0), + // // ... }, + // 0x0a, 0x01, 0x00, + // // derefAliases ENUMERATED { + // // derefAlways (3) }, + // 0x0a, 0x01, 0x03, + // // sizeLimit INTEGER (0 .. maxInt), + // 0x02, 0x01, 0x00, + // // timeLimit INTEGER (0 .. maxInt), + // 0x02, 0x01, 0x00, + // // typesOnly BOOLEAN, + // 0x01, 0x01, 0x00, + // // filter Filter, + // // Filter ::= CHOICE { + // // equalityMatch [3] AttributeValueAssertion, + // // AttributeValueAssertion ::= SEQUENCE { + // 0xa3, 0x18, + // // attributeDesc AttributeDescription, + // // "objectClass" + // 0x04, 0x0b, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6c, 0x61, 0x73, 0x73, + // // assertionValue AssertionValue } + // // "subschema" + // 0x04, 0x09, 0x73, 0x75, 0x62, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, + // // attributes AttributeSelection } + // // AttributeSelection ::= SEQUENCE OF selector LDAPString + // // -- The LDAPString is constrained to + // // -- <attributeSelector> in Section 4.5.1.8 + // 0x30, 0x22, + // // "createTimestamp" + // 0x04, 0x0f, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, + // // "modifyTimestamp" + // 0x04, 0x0f, 0x6d, 0x6f, 0x64, 0x69, 0x66, 0x79, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, + // }, + // }, + // out: LDAPMessage{ + // messageID: MessageID(int(0x03)), + // protocolOp: SearchRequest{ + // baseObject: LDAPDN("cn=schema"), + // scope: SearchRequestScopeBaseObject, + // derefAliases: SearchRequetDerefAliasesDerefAlways, + // sizeLimit: 0, + // timeLimit: 0, + // typesOnly: false, + // filter: FilterEqualityMatch( + // AttributeValueAssertion{ + // attributeDesc: AttributeDescription("objectClass"), + // assertionValue: AssertionValue("subschema"), + // }), + // attributes: AttributeSelection([]LDAPString{"createTimestamp", "modifyTimestamp"}), + // }, + // }, + // }, + + // // Request 7: server => search result entry + // { + // bytes: Bytes{ + // offset: 0, + // bytes: []byte{ + // // 305e02010364590409636e3d736368656d61304c3024040f6d6f6469667954696d657374616d703111040f32303039303831383032323733335a3024040f63726561746554696d657374616d703111040f32303039303831383032323733335a + // 0x30, 0x5e, + // 0x02, 0x01, 0x03, + // // SearchResultEntry ::= [APPLICATION 4] SEQUENCE { + // 0x64, 0x59, + // // objectName LDAPDN, + // // "cn=schema" + // 0x04, 0x09, 0x63, 0x6e, 0x3d, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, + // // attributes PartialAttributeList } + // // PartialAttributeList ::= SEQUENCE OF + // // partialAttribute PartialAttribute + // 0x30, 0x4c, + // // PartialAttribute ::= SEQUENCE { + // 0x30, 0x24, + // // type AttributeDescription, + // // "modifyTimestamp" + // 0x04, 0x0f, 0x6d, 0x6f, 0x64, 0x69, 0x66, 0x79, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, + // // vals SET OF value AttributeValue } + // 0x31, 0x11, + // // "20090818022733Z" + // 0x04, 0x0f, 0x32, 0x30, 0x30, 0x39, 0x30, 0x38, 0x31, 0x38, 0x30, 0x32, 0x32, 0x37, 0x33, 0x33, 0x5a, + // // PartialAttribute ::= SEQUENCE { + // 0x30, 0x24, + // // type AttributeDescription, + // // "createTimestamp" + // 0x04, 0x0f, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, + // // vals SET OF value AttributeValue } + // 0x31, 0x11, + // // "20090818022733Z" + // 0x04, 0x0f, 0x32, 0x30, 0x30, 0x39, 0x30, 0x38, 0x31, 0x38, 0x30, 0x32, 0x32, 0x37, 0x33, 0x33, 0x5a, + // }, + // }, + // out: LDAPMessage{ + // messageID: MessageID(int(0x03)), + // protocolOp: SearchResultEntry{ + // objectName: LDAPDN("cn=schema"), + // attributes: PartialAttributeList( + // []PartialAttribute{ + // PartialAttribute{ + // type_: AttributeDescription("modifyTimestamp"), + // vals: []AttributeValue{AttributeValue("20090818022733Z")}, + // }, + // PartialAttribute{ + // type_: AttributeDescription("createTimestamp"), + // vals: []AttributeValue{AttributeValue("20090818022733Z")}, + // }, + // }, + // ), + // }, + // }, + // }, + + // // Request 8 + // { + // bytes: Bytes{ + // offset: 0, + // bytes: []byte{ + // // 300c02010365070a010004000400 + // 0x30, 0x0c, + // 0x02, 0x01, 0x03, + // // SearchResultDone ::= [APPLICATION 5] LDAPResult + // // LDAPResult ::= SEQUENCE { + // 0x65, 0x07, + // // resultCode ENUMERATED { + // // success (0), + // // ... }, + // 0x0a, 0x01, 0x00, + // // matchedDN LDAPDN, + // 0x04, 0x00, + // // diagnosticMessage LDAPString, + // 0x04, 0x00, + // // referral [3] Referral OPTIONAL } + // }, + // }, + // out: LDAPMessage{ + // messageID: MessageID(int(0x03)), + // protocolOp: SearchResultDone(LDAPResult{ + // resultCode: ResultCodeSuccess, + // matchedDN: LDAPDN(""), + // diagnosticMessage: LDAPString(""), + // }), + // }, + // }, + + // // Request 9: client => search request + // { + // bytes: Bytes{ + // offset: 0, + // bytes: []byte{ + // // 3081dd0201046381d704000a01000a0100020100020100010100870b6f626a656374436c6173733081b6040e6e616d696e67436f6e74657874730411737562736368656d61537562656e7472790414737570706f727465644c44415056657273696f6e0417737570706f727465645341534c4d656368616e69736d730412737570706f72746564457874656e73696f6e0410737570706f72746564436f6e74726f6c0411737570706f727465644665617475726573040a76656e646f724e616d65040d76656e646f7256657273696f6e04012b040b6f626a656374436c617373 + // 0x30, 0x81, 0xdd, + // 0x02, 0x01, 0x04, + // // SearchRequest ::= [APPLICATION 3] SEQUENCE { + // 0x63, 0x81, 0xd7, + // // baseObject LDAPDN, + // 0x04, 0x00, + // // scope ENUMERATED { + // // baseObject (0), + // // ... }, + // 0x0a, 0x01, 0x00, + // // derefAliases ENUMERATED { + // // neverDerefAliases (0) }, + // 0x0a, 0x01, 0x00, + // // sizeLimit INTEGER (0 .. maxInt), + // 0x02, 0x01, 0x00, + // // timeLimit INTEGER (0 .. maxInt), + // 0x02, 0x01, 0x00, + // // typesOnly BOOLEAN, + // 0x01, 0x01, 0x00, + // // filter Filter, + // // Filter ::= CHOICE { + // // present [7] AttributeDescription, + // // "objetClass" + // 0x87, 0x0b, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6c, 0x61, 0x73, 0x73, + // // attributes AttributeSelection } + // // AttributeSelection ::= SEQUENCE OF selector LDAPString + // // -- The LDAPString is constrained to + // // -- <attributeSelector> in Section 4.5.1.8 + // 0x30, 0x81, 0xb6, + // // namingContexts + // 0x04, 0x0e, 0x6e, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x73, + // // subschemaSubentry + // 0x04, 0x11, 0x73, 0x75, 0x62, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x53, 0x75, 0x62, 0x65, 0x6e, 0x74, 0x72, 0x79, + // // supportedLDAPVersion + // 0x04, 0x14, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x4c, 0x44, 0x41, 0x50, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, + // // supportedSASLMechanisms + // 0x04, 0x17, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x53, 0x41, 0x53, 0x4c, 0x4d, 0x65, 0x63, 0x68, 0x61, 0x6e, 0x69, 0x73, 0x6d, 0x73, + // // supportedExtension + // 0x04, 0x12, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, + // // supportedControl + // 0x04, 0x10, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, + // // supportedFeatures + // 0x04, 0x11, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, + // // vendorName + // 0x04, 0x0a, 0x76, 0x65, 0x6e, 0x64, 0x6f, 0x72, 0x4e, 0x61, 0x6d, 0x65, + // // vendorVersion + // 0x04, 0x0d, 0x76, 0x65, 0x6e, 0x64, 0x6f, 0x72, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, + // // + + // 0x04, 0x01, 0x2b, + // // objectClass + // 0x04, 0x0b, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6c, 0x61, 0x73, 0x73, + // }, + // }, + // out: LDAPMessage{ + // messageID: MessageID(int(0x04)), + // protocolOp: SearchRequest{ + // baseObject: LDAPDN(""), + // scope: SearchRequestScopeBaseObject, + // derefAliases: SearchRequetDerefAliasesNeverDerefAliases, + // sizeLimit: 0, + // timeLimit: 0, + // typesOnly: false, + // filter: FilterPresent("objectClass"), + // attributes: AttributeSelection([]LDAPString{ + // "namingContexts", + // "subschemaSubentry", + // "supportedLDAPVersion", + // "supportedSASLMechanisms", + // "supportedExtension", + // "supportedControl", + // "supportedFeatures", + // "vendorName", + // "vendorVersion", + // "+", + // "objectClass", + // }), + // }, + // }, + // }, + + // // Request 10 + // { + // bytes: Bytes{ + // offset: 0, + // bytes: []byte{ + // // 308203850201046482037e040030820378302a040a76656e646f724e616d65311c041a41706163686520536f66747761726520466f756e646174696f6e301c040d76656e646f7256657273696f6e310b0409322e302e302d4d31343026040b6f626a656374436c61737331170403746f700410657874656e7369626c654f626a65637430200411737562736368656d61537562656e747279310b0409636e3d736368656d61301b0414737570706f727465644c44415056657273696f6e31030401333082012e0410737570706f72746564436f6e74726f6c318201180417322e31362e3834302e312e3131333733302e332e342e330417312e332e362e312e342e312e343230332e312e31302e310417322e31362e3834302e312e3131333733302e332e342e320418312e332e362e312e342e312e343230332e312e392e312e340419312e332e362e312e342e312e34322e322e32372e382e352e310418312e332e362e312e342e312e343230332e312e392e312e310418312e332e362e312e342e312e343230332e312e392e312e330418312e332e362e312e342e312e343230332e312e392e312e320417312e332e362e312e342e312e31383036302e302e302e310417322e31362e3834302e312e3131333733302e332e342e370416312e322e3834302e3131333535362e312e342e3331393081910412737570706f72746564457874656e73696f6e317b0416312e332e362e312e342e312e313436362e32303033360416312e332e362e312e342e312e313436362e32303033370417312e332e362e312e342e312e31383036302e302e312e350417312e332e362e312e342e312e31383036302e302e312e330417312e332e362e312e342e312e343230332e312e31312e3130530417737570706f727465645341534c4d656368616e69736d73313804044e544c4d0406475353415049040a4753532d53504e45474f04084352414d2d4d4435040653494d504c45040a4449474553542d4d443530330409656e747279555549443126042466323930343235632d383237322d346536322d386136372d3932623036663338646266353046040e6e616d696e67436f6e7465787473313404096f753d73797374656d041164633d6578616d706c652c64633d636f6d04096f753d736368656d6104096f753d636f6e666967302d0411737570706f72746564466561747572657331180416312e332e362e312e342e312e343230332e312e352e31 + // 0x30, 0x82, 0x03, 0x85, 0x02, 0x01, 0x04, 0x64, 0x82, 0x03, 0x7e, 0x04, 0x00, 0x30, 0x82, 0x03, 0x78, 0x30, 0x2a, 0x04, 0x0a, 0x76, 0x65, 0x6e, 0x64, 0x6f, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x31, 0x1c, 0x04, 0x1a, 0x41, 0x70, 0x61, 0x63, 0x68, 0x65, 0x20, 0x53, 0x6f, 0x66, 0x74, 0x77, 0x61, 0x72, 0x65, 0x20, 0x46, 0x6f, 0x75, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x30, 0x1c, 0x04, 0x0d, 0x76, 0x65, 0x6e, 0x64, 0x6f, 0x72, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x31, 0x0b, 0x04, 0x09, 0x32, 0x2e, 0x30, 0x2e, 0x30, 0x2d, 0x4d, 0x31, 0x34, 0x30, 0x26, 0x04, 0x0b, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x31, 0x17, 0x04, 0x03, 0x74, 0x6f, 0x70, 0x04, 0x10, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x62, 0x6c, 0x65, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x30, 0x20, 0x04, 0x11, 0x73, 0x75, 0x62, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x53, 0x75, 0x62, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x31, 0x0b, 0x04, 0x09, 0x63, 0x6e, 0x3d, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x30, 0x1b, 0x04, 0x14, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x4c, 0x44, 0x41, 0x50, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x31, 0x03, 0x04, 0x01, 0x33, 0x30, 0x82, 0x01, 0x2e, 0x04, 0x10, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x31, 0x82, 0x01, 0x18, 0x04, 0x17, 0x32, 0x2e, 0x31, 0x36, 0x2e, 0x38, 0x34, 0x30, 0x2e, 0x31, 0x2e, 0x31, 0x31, 0x33, 0x37, 0x33, 0x30, 0x2e, 0x33, 0x2e, 0x34, 0x2e, 0x33, 0x04, 0x17, 0x31, 0x2e, 0x33, 0x2e, 0x36, 0x2e, 0x31, 0x2e, 0x34, 0x2e, 0x31, 0x2e, 0x34, 0x32, 0x30, 0x33, 0x2e, 0x31, 0x2e, 0x31, 0x30, 0x2e, 0x31, 0x04, 0x17, 0x32, 0x2e, 0x31, 0x36, 0x2e, 0x38, 0x34, 0x30, 0x2e, 0x31, 0x2e, 0x31, 0x31, 0x33, 0x37, 0x33, 0x30, 0x2e, 0x33, 0x2e, 0x34, 0x2e, 0x32, 0x04, 0x18, 0x31, 0x2e, 0x33, 0x2e, 0x36, 0x2e, 0x31, 0x2e, 0x34, 0x2e, 0x31, 0x2e, 0x34, 0x32, 0x30, 0x33, 0x2e, 0x31, 0x2e, 0x39, 0x2e, 0x31, 0x2e, 0x34, 0x04, 0x19, 0x31, 0x2e, 0x33, 0x2e, 0x36, 0x2e, 0x31, 0x2e, 0x34, 0x2e, 0x31, 0x2e, 0x34, 0x32, 0x2e, 0x32, 0x2e, 0x32, 0x37, 0x2e, 0x38, 0x2e, 0x35, 0x2e, 0x31, 0x04, 0x18, 0x31, 0x2e, 0x33, 0x2e, 0x36, 0x2e, 0x31, 0x2e, 0x34, 0x2e, 0x31, 0x2e, 0x34, 0x32, 0x30, 0x33, 0x2e, 0x31, 0x2e, 0x39, 0x2e, 0x31, 0x2e, 0x31, 0x04, 0x18, 0x31, 0x2e, 0x33, 0x2e, 0x36, 0x2e, 0x31, 0x2e, 0x34, 0x2e, 0x31, 0x2e, 0x34, 0x32, 0x30, 0x33, 0x2e, 0x31, 0x2e, 0x39, 0x2e, 0x31, 0x2e, 0x33, 0x04, 0x18, 0x31, 0x2e, 0x33, 0x2e, 0x36, 0x2e, 0x31, 0x2e, 0x34, 0x2e, 0x31, 0x2e, 0x34, 0x32, 0x30, 0x33, 0x2e, 0x31, 0x2e, 0x39, 0x2e, 0x31, 0x2e, 0x32, 0x04, 0x17, 0x31, 0x2e, 0x33, 0x2e, 0x36, 0x2e, 0x31, 0x2e, 0x34, 0x2e, 0x31, 0x2e, 0x31, 0x38, 0x30, 0x36, 0x30, 0x2e, 0x30, 0x2e, 0x30, 0x2e, 0x31, 0x04, 0x17, 0x32, 0x2e, 0x31, 0x36, 0x2e, 0x38, 0x34, 0x30, 0x2e, 0x31, 0x2e, 0x31, 0x31, 0x33, 0x37, 0x33, 0x30, 0x2e, 0x33, 0x2e, 0x34, 0x2e, 0x37, 0x04, 0x16, 0x31, 0x2e, 0x32, 0x2e, 0x38, 0x34, 0x30, 0x2e, 0x31, 0x31, 0x33, 0x35, 0x35, 0x36, 0x2e, 0x31, 0x2e, 0x34, 0x2e, 0x33, 0x31, 0x39, 0x30, 0x81, 0x91, 0x04, 0x12, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x31, 0x7b, 0x04, 0x16, 0x31, 0x2e, 0x33, 0x2e, 0x36, 0x2e, 0x31, 0x2e, 0x34, 0x2e, 0x31, 0x2e, 0x31, 0x34, 0x36, 0x36, 0x2e, 0x32, 0x30, 0x30, 0x33, 0x36, 0x04, 0x16, 0x31, 0x2e, 0x33, 0x2e, 0x36, 0x2e, 0x31, 0x2e, 0x34, 0x2e, 0x31, 0x2e, 0x31, 0x34, 0x36, 0x36, 0x2e, 0x32, 0x30, 0x30, 0x33, 0x37, 0x04, 0x17, 0x31, 0x2e, 0x33, 0x2e, 0x36, 0x2e, 0x31, 0x2e, 0x34, 0x2e, 0x31, 0x2e, 0x31, 0x38, 0x30, 0x36, 0x30, 0x2e, 0x30, 0x2e, 0x31, 0x2e, 0x35, 0x04, 0x17, 0x31, 0x2e, 0x33, 0x2e, 0x36, 0x2e, 0x31, 0x2e, 0x34, 0x2e, 0x31, 0x2e, 0x31, 0x38, 0x30, 0x36, 0x30, 0x2e, 0x30, 0x2e, 0x31, 0x2e, 0x33, 0x04, 0x17, 0x31, 0x2e, 0x33, 0x2e, 0x36, 0x2e, 0x31, 0x2e, 0x34, 0x2e, 0x31, 0x2e, 0x34, 0x32, 0x30, 0x33, 0x2e, 0x31, 0x2e, 0x31, 0x31, 0x2e, 0x31, 0x30, 0x53, 0x04, 0x17, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x53, 0x41, 0x53, 0x4c, 0x4d, 0x65, 0x63, 0x68, 0x61, 0x6e, 0x69, 0x73, 0x6d, 0x73, 0x31, 0x38, 0x04, 0x04, 0x4e, 0x54, 0x4c, 0x4d, 0x04, 0x06, 0x47, 0x53, 0x53, 0x41, 0x50, 0x49, 0x04, 0x0a, 0x47, 0x53, 0x53, 0x2d, 0x53, 0x50, 0x4e, 0x45, 0x47, 0x4f, 0x04, 0x08, 0x43, 0x52, 0x41, 0x4d, 0x2d, 0x4d, 0x44, 0x35, 0x04, 0x06, 0x53, 0x49, 0x4d, 0x50, 0x4c, 0x45, 0x04, 0x0a, 0x44, 0x49, 0x47, 0x45, 0x53, 0x54, 0x2d, 0x4d, 0x44, 0x35, 0x30, 0x33, 0x04, 0x09, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x55, 0x55, 0x49, 0x44, 0x31, 0x26, 0x04, 0x24, 0x66, 0x32, 0x39, 0x30, 0x34, 0x32, 0x35, 0x63, 0x2d, 0x38, 0x32, 0x37, 0x32, 0x2d, 0x34, 0x65, 0x36, 0x32, 0x2d, 0x38, 0x61, 0x36, 0x37, 0x2d, 0x39, 0x32, 0x62, 0x30, 0x36, 0x66, 0x33, 0x38, 0x64, 0x62, 0x66, 0x35, 0x30, 0x46, 0x04, 0x0e, 0x6e, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x73, 0x31, 0x34, 0x04, 0x09, 0x6f, 0x75, 0x3d, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x04, 0x11, 0x64, 0x63, 0x3d, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2c, 0x64, 0x63, 0x3d, 0x63, 0x6f, 0x6d, 0x04, 0x09, 0x6f, 0x75, 0x3d, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x04, 0x09, 0x6f, 0x75, 0x3d, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x30, 0x2d, 0x04, 0x11, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x31, 0x18, 0x04, 0x16, 0x31, 0x2e, 0x33, 0x2e, 0x36, 0x2e, 0x31, 0x2e, 0x34, 0x2e, 0x31, 0x2e, 0x34, 0x32, 0x30, 0x33, 0x2e, 0x31, 0x2e, 0x35, 0x2e, 0x31, + // }, + // }, + // out: LDAPMessage{ + // messageID: MessageID(4), + // protocolOp: SearchResultEntry{ + // objectName: LDAPDN(""), + // attributes: PartialAttributeList{ + // PartialAttribute{ + // type_: AttributeDescription("vendorName"), + // vals: []AttributeValue{ + // AttributeValue("Apache Software Foundation"), + // }, + // }, + // PartialAttribute{ + // type_: AttributeDescription("vendorVersion"), + // vals: []AttributeValue{ + // AttributeValue("2.0.0-M14"), + // }, + // }, + // PartialAttribute{ + // type_: AttributeDescription("objectClass"), + // vals: []AttributeValue{ + // AttributeValue("top"), + // AttributeValue("extensibleObject"), + // }, + // }, + // PartialAttribute{ + // type_: AttributeDescription("subschemaSubentry"), + // vals: []AttributeValue{ + // AttributeValue("cn=schema"), + // }, + // }, + // PartialAttribute{ + // type_: AttributeDescription("supportedLDAPVersion"), + // vals: []AttributeValue{ + // AttributeValue("3"), + // }, + // }, + // PartialAttribute{ + // type_: AttributeDescription("supportedControl"), + // vals: []AttributeValue{ + // AttributeValue("2.16.840.1.113730.3.4.3"), + // AttributeValue("1.3.6.1.4.1.4203.1.10.1"), + // AttributeValue("2.16.840.1.113730.3.4.2"), + // AttributeValue("1.3.6.1.4.1.4203.1.9.1.4"), + // AttributeValue("1.3.6.1.4.1.42.2.27.8.5.1"), + // AttributeValue("1.3.6.1.4.1.4203.1.9.1.1"), + // AttributeValue("1.3.6.1.4.1.4203.1.9.1.3"), + // AttributeValue("1.3.6.1.4.1.4203.1.9.1.2"), + // AttributeValue("1.3.6.1.4.1.18060.0.0.1"), + // AttributeValue("2.16.840.1.113730.3.4.7"), + // AttributeValue("1.2.840.113556.1.4.319"), + // }, + // }, + // PartialAttribute{ + // type_: AttributeDescription("supportedExtension"), + // vals: []AttributeValue{ + // AttributeValue("1.3.6.1.4.1.1466.20036"), + // AttributeValue("1.3.6.1.4.1.1466.20037"), + // AttributeValue("1.3.6.1.4.1.18060.0.1.5"), + // AttributeValue("1.3.6.1.4.1.18060.0.1.3"), + // AttributeValue("1.3.6.1.4.1.4203.1.11.1"), + // }, + // }, + // PartialAttribute{ + // type_: AttributeDescription("supportedSASLMechanisms"), + // vals: []AttributeValue{ + // AttributeValue("NTLM"), + // AttributeValue("GSSAPI"), + // AttributeValue("GSS-SPNEGO"), + // AttributeValue("CRAM-MD5"), + // AttributeValue("SIMPLE"), + // AttributeValue("DIGEST-MD5"), + // }, + // }, + // PartialAttribute{ + // type_: AttributeDescription("entryUUID"), + // vals: []AttributeValue{ + // AttributeValue("f290425c-8272-4e62-8a67-92b06f38dbf5"), + // }, + // }, + // PartialAttribute{ + // type_: AttributeDescription("namingContexts"), + // vals: []AttributeValue{ + // AttributeValue("ou=system"), + // AttributeValue("dc=example,dc=com"), + // AttributeValue("ou=schema"), + // AttributeValue("ou=config"), + // }, + // }, + // PartialAttribute{ + // type_: AttributeDescription("supportedFeatures"), + // vals: []AttributeValue{ + // AttributeValue("1.3.6.1.4.1.4203.1.5.1"), + // }, + // }, + // }, + // }, + // controls: (*Controls)(nil), + // }, + // }, + + // // Request 11 + // { + // bytes: Bytes{ + // offset: 0, + // bytes: []byte{ + // // 300c02010465070a010004000400 + // 0x30, 0x0c, 0x02, 0x01, 0x04, 0x65, 0x07, 0x0a, 0x01, 0x00, 0x04, 0x00, 0x04, 0x00, + // }, + // }, + // out: LDAPMessage{ + // messageID: MessageID(4), + // protocolOp: SearchResultDone{ + // resultCode: ENUMERATED(0), + // matchedDN: LDAPDN(""), + // diagnosticMessage: LDAPString(""), + // referral: (*Referral)(nil), + // }, + // controls: (*Controls)(nil), + // }, + // }, + + // // Request 12 + // { + // bytes: Bytes{ + // offset: 0, + // bytes: []byte{ + // // 3028020105632304000a01000a0100020100020100010100870b6f626a656374436c617373300304012a + // 0x30, 0x28, 0x02, 0x01, 0x05, 0x63, 0x23, 0x04, 0x00, 0x0a, 0x01, 0x00, 0x0a, 0x01, 0x00, 0x02, 0x01, 0x00, 0x02, 0x01, 0x00, 0x01, 0x01, 0x00, 0x87, 0x0b, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x30, 0x03, 0x04, 0x01, 0x2a, + // }, + // }, + // out: LDAPMessage{ + // messageID: MessageID(5), + // protocolOp: SearchRequest{ + // baseObject: LDAPDN(""), + // scope: ENUMERATED(0), + // derefAliases: ENUMERATED(0), + // sizeLimit: INTEGER(0), + // timeLimit: INTEGER(0), + // typesOnly: BOOLEAN(false), + // filter: FilterPresent("objectClass"), + // attributes: AttributeSelection{ + // LDAPString("*"), + // }, + // }, + // controls: (*Controls)(nil), + // }, + // }, + + // // Request 13 + // { + // bytes: Bytes{ + // offset: 0, + // bytes: []byte{ + // // 3031020105642c040030283026040b6f626a656374436c61737331170403746f700410657874656e7369626c654f626a656374 + // 0x30, 0x31, 0x02, 0x01, 0x05, 0x64, 0x2c, 0x04, 0x00, 0x30, 0x28, 0x30, 0x26, 0x04, 0x0b, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x31, 0x17, 0x04, 0x03, 0x74, 0x6f, 0x70, 0x04, 0x10, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x62, 0x6c, 0x65, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, + // }, + // }, + // out: LDAPMessage{ + // messageID: MessageID(5), + // protocolOp: SearchResultEntry{ + // objectName: LDAPDN(""), + // attributes: PartialAttributeList{ + // PartialAttribute{ + // type_: AttributeDescription("objectClass"), + // vals: []AttributeValue{ + // AttributeValue("top"), + // AttributeValue("extensibleObject"), + // }, + // }, + // }, + // }, + // controls: (*Controls)(nil), + // }, + // }, + + // // Request 14 + // { + // bytes: Bytes{ + // offset: 0, + // bytes: []byte{ + // // 300c02010565070a010004000400 + // 0x30, 0x0c, 0x02, 0x01, 0x05, 0x65, 0x07, 0x0a, 0x01, 0x00, 0x04, 0x00, 0x04, 0x00, + // }, + // }, + // out: LDAPMessage{ + // messageID: MessageID(5), + // protocolOp: SearchResultDone{ + // resultCode: ENUMERATED(0), + // matchedDN: LDAPDN(""), + // diagnosticMessage: LDAPString(""), + // referral: (*Referral)(nil), + // }, + // controls: (*Controls)(nil), + // }, + // }, + + // // Request 15 + // { + // bytes: Bytes{ + // offset: 0, + // bytes: []byte{ + // // 304c020106634704096f753d736368656d610a01000a0103020101020100010100870b6f626a656374436c617373301e040f6861735375626f7264696e61746573040b6f626a656374436c617373 + // 0x30, 0x4c, 0x02, 0x01, 0x06, 0x63, 0x47, 0x04, 0x09, 0x6f, 0x75, 0x3d, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x0a, 0x01, 0x00, 0x0a, 0x01, 0x03, 0x02, 0x01, 0x01, 0x02, 0x01, 0x00, 0x01, 0x01, 0x00, 0x87, 0x0b, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x30, 0x1e, 0x04, 0x0f, 0x68, 0x61, 0x73, 0x53, 0x75, 0x62, 0x6f, 0x72, 0x64, 0x69, 0x6e, 0x61, 0x74, 0x65, 0x73, 0x04, 0x0b, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6c, 0x61, 0x73, 0x73, + // }, + // }, + // out: LDAPMessage{ + // messageID: MessageID(6), + // protocolOp: SearchRequest{ + // baseObject: LDAPDN("ou=schema"), + // scope: ENUMERATED(0), + // derefAliases: ENUMERATED(3), + // sizeLimit: INTEGER(1), + // timeLimit: INTEGER(0), + // typesOnly: BOOLEAN(false), + // filter: FilterPresent("objectClass"), + // attributes: AttributeSelection{ + // LDAPString("hasSubordinates"), + // LDAPString("objectClass"), + // }, + // }, + // controls: (*Controls)(nil), + // }, + // }, + + // // Request 16 + // { + // bytes: Bytes{ + // offset: 0, + // bytes: []byte{ + // // 303c020106643704096f753d736368656d61302a3028040b6f626a656374636c617373311904126f7267616e697a6174696f6e616c556e69740403746f70 + // 0x30, 0x3c, 0x02, 0x01, 0x06, 0x64, 0x37, 0x04, 0x09, 0x6f, 0x75, 0x3d, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x30, 0x2a, 0x30, 0x28, 0x04, 0x0b, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x31, 0x19, 0x04, 0x12, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x55, 0x6e, 0x69, 0x74, 0x04, 0x03, 0x74, 0x6f, 0x70, + // }, + // }, + // out: LDAPMessage{ + // messageID: MessageID(6), + // protocolOp: SearchResultEntry{ + // objectName: LDAPDN("ou=schema"), + // attributes: PartialAttributeList{ + // PartialAttribute{ + // type_: AttributeDescription("objectclass"), + // vals: []AttributeValue{ + // AttributeValue("organizationalUnit"), + // AttributeValue("top"), + // }, + // }, + // }, + // }, + // controls: (*Controls)(nil), + // }, + // }, + + // // Request 17 + // { + // bytes: Bytes{ + // offset: 0, + // bytes: []byte{ + // // 300c02010665070a010004000400 + // 0x30, 0x0c, 0x02, 0x01, 0x06, 0x65, 0x07, 0x0a, 0x01, 0x00, 0x04, 0x00, 0x04, 0x00, + // }, + // }, + // out: LDAPMessage{ + // messageID: MessageID(6), + // protocolOp: SearchResultDone{ + // resultCode: ENUMERATED(0), + // matchedDN: LDAPDN(""), + // diagnosticMessage: LDAPString(""), + // referral: (*Referral)(nil), + // }, + // controls: (*Controls)(nil), + // }, + // }, + + // // Request 18 + // { + // bytes: Bytes{ + // offset: 0, + // bytes: []byte{ + // // 304c020107634704096f753d636f6e6669670a01000a0103020101020100010100870b6f626a656374436c617373301e040f6861735375626f7264696e61746573040b6f626a656374436c617373 + // 0x30, 0x4c, 0x02, 0x01, 0x07, 0x63, 0x47, 0x04, 0x09, 0x6f, 0x75, 0x3d, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x0a, 0x01, 0x00, 0x0a, 0x01, 0x03, 0x02, 0x01, 0x01, 0x02, 0x01, 0x00, 0x01, 0x01, 0x00, 0x87, 0x0b, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x30, 0x1e, 0x04, 0x0f, 0x68, 0x61, 0x73, 0x53, 0x75, 0x62, 0x6f, 0x72, 0x64, 0x69, 0x6e, 0x61, 0x74, 0x65, 0x73, 0x04, 0x0b, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6c, 0x61, 0x73, 0x73, + // }, + // }, + // out: LDAPMessage{ + // messageID: MessageID(7), + // protocolOp: SearchRequest{ + // baseObject: LDAPDN("ou=config"), + // scope: ENUMERATED(0), + // derefAliases: ENUMERATED(3), + // sizeLimit: INTEGER(1), + // timeLimit: INTEGER(0), + // typesOnly: BOOLEAN(false), + // filter: FilterPresent("objectClass"), + // attributes: AttributeSelection{ + // LDAPString("hasSubordinates"), + // LDAPString("objectClass"), + // }, + // }, + // controls: (*Controls)(nil), + // }, + // }, + + // // Request 19 + // { + // bytes: Bytes{ + // offset: 0, + // bytes: []byte{ + // // 303c020107643704096f753d636f6e666967302a3028040b6f626a656374636c61737331190403746f7004126f7267616e697a6174696f6e616c556e6974 + // 0x30, 0x3c, 0x02, 0x01, 0x07, 0x64, 0x37, 0x04, 0x09, 0x6f, 0x75, 0x3d, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x30, 0x2a, 0x30, 0x28, 0x04, 0x0b, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x31, 0x19, 0x04, 0x03, 0x74, 0x6f, 0x70, 0x04, 0x12, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x55, 0x6e, 0x69, 0x74, + // }, + // }, + // out: LDAPMessage{ + // messageID: MessageID(7), + // protocolOp: SearchResultEntry{ + // objectName: LDAPDN("ou=config"), + // attributes: PartialAttributeList{ + // PartialAttribute{ + // type_: AttributeDescription("objectclass"), + // vals: []AttributeValue{ + // AttributeValue("top"), + // AttributeValue("organizationalUnit"), + // }, + // }, + // }, + // }, + // controls: (*Controls)(nil), + // }, + // }, + + // // Request 20 + // { + // bytes: Bytes{ + // offset: 0, + // bytes: []byte{ + // // 300c02010765070a010004000400 + // 0x30, 0x0c, 0x02, 0x01, 0x07, 0x65, 0x07, 0x0a, 0x01, 0x00, 0x04, 0x00, 0x04, 0x00, + // }, + // }, + // out: LDAPMessage{ + // messageID: MessageID(7), + // protocolOp: SearchResultDone{ + // resultCode: ENUMERATED(0), + // matchedDN: LDAPDN(""), + // diagnosticMessage: LDAPString(""), + // referral: (*Referral)(nil), + // }, + // controls: (*Controls)(nil), + // }, + // }, + + // // Request 21 + // { + // bytes: Bytes{ + // offset: 0, + // bytes: []byte{ + // // 304c020108634704096f753d73797374656d0a01000a0103020101020100010100870b6f626a656374436c617373301e040f6861735375626f7264696e61746573040b6f626a656374436c617373 + // 0x30, 0x4c, 0x02, 0x01, 0x08, 0x63, 0x47, 0x04, 0x09, 0x6f, 0x75, 0x3d, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x0a, 0x01, 0x00, 0x0a, 0x01, 0x03, 0x02, 0x01, 0x01, 0x02, 0x01, 0x00, 0x01, 0x01, 0x00, 0x87, 0x0b, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x30, 0x1e, 0x04, 0x0f, 0x68, 0x61, 0x73, 0x53, 0x75, 0x62, 0x6f, 0x72, 0x64, 0x69, 0x6e, 0x61, 0x74, 0x65, 0x73, 0x04, 0x0b, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6c, 0x61, 0x73, 0x73, + // }, + // }, + // out: LDAPMessage{ + // messageID: MessageID(8), + // protocolOp: SearchRequest{ + // baseObject: LDAPDN("ou=system"), + // scope: ENUMERATED(0), + // derefAliases: ENUMERATED(3), + // sizeLimit: INTEGER(1), + // timeLimit: INTEGER(0), + // typesOnly: BOOLEAN(false), + // filter: FilterPresent("objectClass"), + // attributes: AttributeSelection{ + // LDAPString("hasSubordinates"), + // LDAPString("objectClass"), + // }, + // }, + // controls: (*Controls)(nil), + // }, + // }, + + // // Request 22 + // { + // bytes: Bytes{ + // offset: 0, + // bytes: []byte{ + // // 303c020108643704096f753d73797374656d302a3028040b6f626a656374636c61737331190403746f7004126f7267616e697a6174696f6e616c556e6974 + // 0x30, 0x3c, 0x02, 0x01, 0x08, 0x64, 0x37, 0x04, 0x09, 0x6f, 0x75, 0x3d, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x30, 0x2a, 0x30, 0x28, 0x04, 0x0b, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x31, 0x19, 0x04, 0x03, 0x74, 0x6f, 0x70, 0x04, 0x12, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x55, 0x6e, 0x69, 0x74, + // }, + // }, + // out: LDAPMessage{ + // messageID: MessageID(8), + // protocolOp: SearchResultEntry{ + // objectName: LDAPDN("ou=system"), + // attributes: PartialAttributeList{ + // PartialAttribute{ + // type_: AttributeDescription("objectclass"), + // vals: []AttributeValue{ + // AttributeValue("top"), + // AttributeValue("organizationalUnit"), + // }, + // }, + // }, + // }, + // controls: (*Controls)(nil), + // }, + // }, + + // // Request 23 + // { + // bytes: Bytes{ + // offset: 0, + // bytes: []byte{ + // // 300c02010865070a010004000400 + // 0x30, 0x0c, 0x02, 0x01, 0x08, 0x65, 0x07, 0x0a, 0x01, 0x00, 0x04, 0x00, 0x04, 0x00, + // }, + // }, + // out: LDAPMessage{ + // messageID: MessageID(8), + // protocolOp: SearchResultDone{ + // resultCode: ENUMERATED(0), + // matchedDN: LDAPDN(""), + // diagnosticMessage: LDAPString(""), + // referral: (*Referral)(nil), + // }, + // controls: (*Controls)(nil), + // }, + // }, + + // // Request 24 + // { + // bytes: Bytes{ + // offset: 0, + // bytes: []byte{ + // // 304c02010963470409636e3d736368656d610a01000a0103020101020100010100870b6f626a656374436c617373301e040f6861735375626f7264696e61746573040b6f626a656374436c617373 + // 0x30, 0x4c, 0x02, 0x01, 0x09, 0x63, 0x47, 0x04, 0x09, 0x63, 0x6e, 0x3d, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x0a, 0x01, 0x00, 0x0a, 0x01, 0x03, 0x02, 0x01, 0x01, 0x02, 0x01, 0x00, 0x01, 0x01, 0x00, 0x87, 0x0b, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x30, 0x1e, 0x04, 0x0f, 0x68, 0x61, 0x73, 0x53, 0x75, 0x62, 0x6f, 0x72, 0x64, 0x69, 0x6e, 0x61, 0x74, 0x65, 0x73, 0x04, 0x0b, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6c, 0x61, 0x73, 0x73, + // }, + // }, + // out: LDAPMessage{ + // messageID: MessageID(9), + // protocolOp: SearchRequest{ + // baseObject: LDAPDN("cn=schema"), + // scope: ENUMERATED(0), + // derefAliases: ENUMERATED(3), + // sizeLimit: INTEGER(1), + // timeLimit: INTEGER(0), + // typesOnly: BOOLEAN(false), + // filter: FilterPresent("objectClass"), + // attributes: AttributeSelection{ + // LDAPString("hasSubordinates"), + // LDAPString("objectClass"), + // }, + // }, + // controls: (*Controls)(nil), + // }, + // }, + + // // Request 25 + // { + // bytes: Bytes{ + // offset: 0, + // bytes: []byte{ + // // 304e02010964490409636e3d736368656d61303c303a040b6f626a656374436c617373312b0403746f700409737562736368656d610408737562656e747279040f617061636865537562736368656d61 + // 0x30, 0x4e, 0x02, 0x01, 0x09, 0x64, 0x49, 0x04, 0x09, 0x63, 0x6e, 0x3d, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x30, 0x3c, 0x30, 0x3a, 0x04, 0x0b, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x31, 0x2b, 0x04, 0x03, 0x74, 0x6f, 0x70, 0x04, 0x09, 0x73, 0x75, 0x62, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x04, 0x08, 0x73, 0x75, 0x62, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x04, 0x0f, 0x61, 0x70, 0x61, 0x63, 0x68, 0x65, 0x53, 0x75, 0x62, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, + // }, + // }, + // out: LDAPMessage{ + // messageID: MessageID(9), + // protocolOp: SearchResultEntry{ + // objectName: LDAPDN("cn=schema"), + // attributes: PartialAttributeList{ + // PartialAttribute{ + // type_: AttributeDescription("objectClass"), + // vals: []AttributeValue{ + // AttributeValue("top"), + // AttributeValue("subschema"), + // AttributeValue("subentry"), + // AttributeValue("apacheSubschema"), + // }, + // }, + // }, + // }, + // controls: (*Controls)(nil), + // }, + // }, + + // // Request 26 + // { + // bytes: Bytes{ + // offset: 0, + // bytes: []byte{ + // // 300c02010965070a010004000400 + // 0x30, 0x0c, 0x02, 0x01, 0x09, 0x65, 0x07, 0x0a, 0x01, 0x00, 0x04, 0x00, 0x04, 0x00, + // }, + // }, + // out: LDAPMessage{ + // messageID: MessageID(9), + // protocolOp: SearchResultDone{ + // resultCode: ENUMERATED(0), + // matchedDN: LDAPDN(""), + // diagnosticMessage: LDAPString(""), + // referral: (*Referral)(nil), + // }, + // controls: (*Controls)(nil), + // }, + // }, + + // // Request 27 + // { + // bytes: Bytes{ + // offset: 0, + // bytes: []byte{ + // // 305402010a634f041164633d6578616d706c652c64633d636f6d0a01000a0103020101020100010100870b6f626a656374436c617373301e040f6861735375626f7264696e61746573040b6f626a656374436c617373 + // 0x30, 0x54, 0x02, 0x01, 0x0a, 0x63, 0x4f, 0x04, 0x11, 0x64, 0x63, 0x3d, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2c, 0x64, 0x63, 0x3d, 0x63, 0x6f, 0x6d, 0x0a, 0x01, 0x00, 0x0a, 0x01, 0x03, 0x02, 0x01, 0x01, 0x02, 0x01, 0x00, 0x01, 0x01, 0x00, 0x87, 0x0b, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x30, 0x1e, 0x04, 0x0f, 0x68, 0x61, 0x73, 0x53, 0x75, 0x62, 0x6f, 0x72, 0x64, 0x69, 0x6e, 0x61, 0x74, 0x65, 0x73, 0x04, 0x0b, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6c, 0x61, 0x73, 0x73, + // }, + // }, + // out: LDAPMessage{ + // messageID: MessageID(10), + // protocolOp: SearchRequest{ + // baseObject: LDAPDN("dc=example,dc=com"), + // scope: ENUMERATED(0), + // derefAliases: ENUMERATED(3), + // sizeLimit: INTEGER(1), + // timeLimit: INTEGER(0), + // typesOnly: BOOLEAN(false), + // filter: FilterPresent("objectClass"), + // attributes: AttributeSelection{ + // LDAPString("hasSubordinates"), + // LDAPString("objectClass"), + // }, + // }, + // controls: (*Controls)(nil), + // }, + // }, + + // // Request 28 + // { + // bytes: Bytes{ + // offset: 0, + // bytes: []byte{ + // // 303802010a6433041164633d6578616d706c652c64633d636f6d301e301c040b6f626a656374636c617373310d0406646f6d61696e0403746f70 + // 0x30, 0x38, 0x02, 0x01, 0x0a, 0x64, 0x33, 0x04, 0x11, 0x64, 0x63, 0x3d, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2c, 0x64, 0x63, 0x3d, 0x63, 0x6f, 0x6d, 0x30, 0x1e, 0x30, 0x1c, 0x04, 0x0b, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x31, 0x0d, 0x04, 0x06, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x04, 0x03, 0x74, 0x6f, 0x70, + // }, + // }, + // out: LDAPMessage{ + // messageID: MessageID(10), + // protocolOp: SearchResultEntry{ + // objectName: LDAPDN("dc=example,dc=com"), + // attributes: PartialAttributeList{ + // PartialAttribute{ + // type_: AttributeDescription("objectclass"), + // vals: []AttributeValue{ + // AttributeValue("domain"), + // AttributeValue("top"), + // }, + // }, + // }, + // }, + // controls: (*Controls)(nil), + // }, + // }, + + // // Request 29 + // { + // bytes: Bytes{ + // offset: 0, + // bytes: []byte{ + // // 300c02010a65070a010004000400 + // 0x30, 0x0c, 0x02, 0x01, 0x0a, 0x65, 0x07, 0x0a, 0x01, 0x00, 0x04, 0x00, 0x04, 0x00, + // }, + // }, + // out: LDAPMessage{ + // messageID: MessageID(10), + // protocolOp: SearchResultDone{ + // resultCode: ENUMERATED(0), + // matchedDN: LDAPDN(""), + // diagnosticMessage: LDAPString(""), + // referral: (*Referral)(nil), + // }, + // controls: (*Controls)(nil), + // }, + // }, + + // // Request 30 + // { + // bytes: Bytes{ + // offset: 0, + // bytes: []byte{ + // // 304d02010b634804096f753d636f6e6669670a01010a0103020203e8020100010100870b6f626a656374436c617373301e040f6861735375626f7264696e61746573040b6f626a656374436c617373 + // 0x30, 0x4d, 0x02, 0x01, 0x0b, 0x63, 0x48, 0x04, 0x09, 0x6f, 0x75, 0x3d, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x0a, 0x01, 0x01, 0x0a, 0x01, 0x03, 0x02, 0x02, 0x03, 0xe8, 0x02, 0x01, 0x00, 0x01, 0x01, 0x00, 0x87, 0x0b, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x30, 0x1e, 0x04, 0x0f, 0x68, 0x61, 0x73, 0x53, 0x75, 0x62, 0x6f, 0x72, 0x64, 0x69, 0x6e, 0x61, 0x74, 0x65, 0x73, 0x04, 0x0b, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6c, 0x61, 0x73, 0x73, + // }, + // }, + // out: LDAPMessage{ + // messageID: MessageID(11), + // protocolOp: SearchRequest{ + // baseObject: LDAPDN("ou=config"), + // scope: ENUMERATED(1), + // derefAliases: ENUMERATED(3), + // sizeLimit: INTEGER(1000), + // timeLimit: INTEGER(0), + // typesOnly: BOOLEAN(false), + // filter: FilterPresent("objectClass"), + // attributes: AttributeSelection{ + // LDAPString("hasSubordinates"), + // LDAPString("objectClass"), + // }, + // }, + // controls: (*Controls)(nil), + // }, + // }, + + // // Request 31 + // { + // bytes: Bytes{ + // offset: 0, + // bytes: []byte{ + // // 306702010b646204286164732d6469726563746f72795365727669636549643d64656661756c742c6f753d636f6e66696730363034040b6f626a656374636c61737331250403746f7004146164732d6469726563746f72795365727669636504086164732d62617365 + // 0x30, 0x67, 0x02, 0x01, 0x0b, 0x64, 0x62, 0x04, 0x28, 0x61, 0x64, 0x73, 0x2d, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x3d, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x2c, 0x6f, 0x75, 0x3d, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x30, 0x36, 0x30, 0x34, 0x04, 0x0b, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x31, 0x25, 0x04, 0x03, 0x74, 0x6f, 0x70, 0x04, 0x14, 0x61, 0x64, 0x73, 0x2d, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x04, 0x08, 0x61, 0x64, 0x73, 0x2d, 0x62, 0x61, 0x73, 0x65, + // }, + // }, + // out: LDAPMessage{ + // messageID: MessageID(11), + // protocolOp: SearchResultEntry{ + // objectName: LDAPDN("ads-directoryServiceId=default,ou=config"), + // attributes: PartialAttributeList{ + // PartialAttribute{ + // type_: AttributeDescription("objectclass"), + // vals: []AttributeValue{ + // AttributeValue("top"), + // AttributeValue("ads-directoryService"), + // AttributeValue("ads-base"), + // }, + // }, + // }, + // }, + // controls: (*Controls)(nil), + // }, + // }, + + // // Request 32 + // { + // bytes: Bytes{ + // offset: 0, + // bytes: []byte{ + // // 300c02010b65070a010004000400 + // 0x30, 0x0c, 0x02, 0x01, 0x0b, 0x65, 0x07, 0x0a, 0x01, 0x00, 0x04, 0x00, 0x04, 0x00, + // }, + // }, + // out: LDAPMessage{ + // messageID: MessageID(11), + // protocolOp: SearchResultDone{ + // resultCode: ENUMERATED(0), + // matchedDN: LDAPDN(""), + // diagnosticMessage: LDAPString(""), + // referral: (*Referral)(nil), + // }, + // controls: (*Controls)(nil), + // }, + // }, + + // // Request 33 + // { + // bytes: Bytes{ + // offset: 0, + // bytes: []byte{ + // // 303102010c632c04096f753d636f6e6669670a01000a0103020100020100010100870b6f626a656374436c617373300304012a + // 0x30, 0x31, 0x02, 0x01, 0x0c, 0x63, 0x2c, 0x04, 0x09, 0x6f, 0x75, 0x3d, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x0a, 0x01, 0x00, 0x0a, 0x01, 0x03, 0x02, 0x01, 0x00, 0x02, 0x01, 0x00, 0x01, 0x01, 0x00, 0x87, 0x0b, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x30, 0x03, 0x04, 0x01, 0x2a, + // }, + // }, + // out: LDAPMessage{ + // messageID: MessageID(12), + // protocolOp: SearchRequest{ + // baseObject: LDAPDN("ou=config"), + // scope: ENUMERATED(0), + // derefAliases: ENUMERATED(3), + // sizeLimit: INTEGER(0), + // timeLimit: INTEGER(0), + // typesOnly: BOOLEAN(false), + // filter: FilterPresent("objectClass"), + // attributes: AttributeSelection{ + // LDAPString("*"), + // }, + // }, + // controls: (*Controls)(nil), + // }, + // }, + + // // Request 34 + // { + // bytes: Bytes{ + // offset: 0, + // bytes: []byte{ + // // 304c02010c644704096f753d636f6e666967303a300e04026f7531080406636f6e6669673028040b6f626a656374636c61737331190403746f7004126f7267616e697a6174696f6e616c556e6974 + // 0x30, 0x4c, 0x02, 0x01, 0x0c, 0x64, 0x47, 0x04, 0x09, 0x6f, 0x75, 0x3d, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x30, 0x3a, 0x30, 0x0e, 0x04, 0x02, 0x6f, 0x75, 0x31, 0x08, 0x04, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x30, 0x28, 0x04, 0x0b, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x31, 0x19, 0x04, 0x03, 0x74, 0x6f, 0x70, 0x04, 0x12, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x55, 0x6e, 0x69, 0x74, + // }, + // }, + // out: LDAPMessage{ + // messageID: MessageID(12), + // protocolOp: SearchResultEntry{ + // objectName: LDAPDN("ou=config"), + // attributes: PartialAttributeList{ + // PartialAttribute{ + // type_: AttributeDescription("ou"), + // vals: []AttributeValue{ + // AttributeValue("config"), + // }, + // }, + // PartialAttribute{ + // type_: AttributeDescription("objectclass"), + // vals: []AttributeValue{ + // AttributeValue("top"), + // AttributeValue("organizationalUnit"), + // }, + // }, + // }, + // }, + // controls: (*Controls)(nil), + // }, + // }, + + // // Request 35 + // { + // bytes: Bytes{ + // offset: 0, + // bytes: []byte{ + // // 300c02010c65070a010004000400 + // 0x30, 0x0c, 0x02, 0x01, 0x0c, 0x65, 0x07, 0x0a, 0x01, 0x00, 0x04, 0x00, 0x04, 0x00, + // }, + // }, + // out: LDAPMessage{ + // messageID: MessageID(12), + // protocolOp: SearchResultDone{ + // resultCode: ENUMERATED(0), + // matchedDN: LDAPDN(""), + // diagnosticMessage: LDAPString(""), + // referral: (*Referral)(nil), + // }, + // controls: (*Controls)(nil), + // }, + // }, + + // // Request 36 + // { + // bytes: Bytes{ + // offset: 0, + // bytes: []byte{ + // // 306c02010d636704286164732d6469726563746f72795365727669636549643d64656661756c742c6f753d636f6e6669670a01010a0103020203e8020100010100870b6f626a656374436c617373301e040f6861735375626f7264696e61746573040b6f626a656374436c617373 + // 0x30, 0x6c, 0x02, 0x01, 0x0d, 0x63, 0x67, 0x04, 0x28, 0x61, 0x64, 0x73, 0x2d, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x3d, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x2c, 0x6f, 0x75, 0x3d, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x0a, 0x01, 0x01, 0x0a, 0x01, 0x03, 0x02, 0x02, 0x03, 0xe8, 0x02, 0x01, 0x00, 0x01, 0x01, 0x00, 0x87, 0x0b, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x30, 0x1e, 0x04, 0x0f, 0x68, 0x61, 0x73, 0x53, 0x75, 0x62, 0x6f, 0x72, 0x64, 0x69, 0x6e, 0x61, 0x74, 0x65, 0x73, 0x04, 0x0b, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6c, 0x61, 0x73, 0x73, + // }, + // }, + // out: LDAPMessage{ + // messageID: MessageID(13), + // protocolOp: SearchRequest{ + // baseObject: LDAPDN("ads-directoryServiceId=default,ou=config"), + // scope: ENUMERATED(1), + // derefAliases: ENUMERATED(3), + // sizeLimit: INTEGER(1000), + // timeLimit: INTEGER(0), + // typesOnly: BOOLEAN(false), + // filter: FilterPresent("objectClass"), + // attributes: AttributeSelection{ + // LDAPString("hasSubordinates"), + // LDAPString("objectClass"), + // }, + // }, + // controls: (*Controls)(nil), + // }, + // }, + + // // Request 37 + // { + // bytes: Bytes{ + // offset: 0, + // bytes: []byte{ + // // 307b02010d647604456164732d6a6f75726e616c49643d64656661756c744a6f75726e616c2c6164732d6469726563746f72795365727669636549643d64656661756c742c6f753d636f6e666967302d302b040b6f626a656374636c617373311c0403746f70040b6164732d6a6f75726e616c04086164732d62617365 + // 0x30, 0x7b, 0x02, 0x01, 0x0d, 0x64, 0x76, 0x04, 0x45, 0x61, 0x64, 0x73, 0x2d, 0x6a, 0x6f, 0x75, 0x72, 0x6e, 0x61, 0x6c, 0x49, 0x64, 0x3d, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x4a, 0x6f, 0x75, 0x72, 0x6e, 0x61, 0x6c, 0x2c, 0x61, 0x64, 0x73, 0x2d, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x3d, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x2c, 0x6f, 0x75, 0x3d, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x30, 0x2d, 0x30, 0x2b, 0x04, 0x0b, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x31, 0x1c, 0x04, 0x03, 0x74, 0x6f, 0x70, 0x04, 0x0b, 0x61, 0x64, 0x73, 0x2d, 0x6a, 0x6f, 0x75, 0x72, 0x6e, 0x61, 0x6c, 0x04, 0x08, 0x61, 0x64, 0x73, 0x2d, 0x62, 0x61, 0x73, 0x65, + // }, + // }, + // out: LDAPMessage{ + // messageID: MessageID(13), + // protocolOp: SearchResultEntry{ + // objectName: LDAPDN("ads-journalId=defaultJournal,ads-directoryServiceId=default,ou=config"), + // attributes: PartialAttributeList{ + // PartialAttribute{ + // type_: AttributeDescription("objectclass"), + // vals: []AttributeValue{ + // AttributeValue("top"), + // AttributeValue("ads-journal"), + // AttributeValue("ads-base"), + // }, + // }, + // }, + // }, + // controls: (*Controls)(nil), + // }, + // }, + + // // Request 38 + // { + // bytes: Bytes{ + // offset: 0, + // bytes: []byte{ + // // 306b02010d646604386f753d696e746572636570746f72732c6164732d6469726563746f72795365727669636549643d64656661756c742c6f753d636f6e666967302a3028040b6f626a656374636c61737331190403746f7004126f7267616e697a6174696f6e616c556e6974 + // 0x30, 0x6b, 0x02, 0x01, 0x0d, 0x64, 0x66, 0x04, 0x38, 0x6f, 0x75, 0x3d, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x63, 0x65, 0x70, 0x74, 0x6f, 0x72, 0x73, 0x2c, 0x61, 0x64, 0x73, 0x2d, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x3d, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x2c, 0x6f, 0x75, 0x3d, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x30, 0x2a, 0x30, 0x28, 0x04, 0x0b, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x31, 0x19, 0x04, 0x03, 0x74, 0x6f, 0x70, 0x04, 0x12, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x55, 0x6e, 0x69, 0x74, + // }, + // }, + // out: LDAPMessage{ + // messageID: MessageID(13), + // protocolOp: SearchResultEntry{ + // objectName: LDAPDN("ou=interceptors,ads-directoryServiceId=default,ou=config"), + // attributes: PartialAttributeList{ + // PartialAttribute{ + // type_: AttributeDescription("objectclass"), + // vals: []AttributeValue{ + // AttributeValue("top"), + // AttributeValue("organizationalUnit"), + // }, + // }, + // }, + // }, + // controls: (*Controls)(nil), + // }, + // }, + + // // Request 39 + // { + // bytes: Bytes{ + // offset: 0, + // bytes: []byte{ + // // 306902010d646404366f753d706172746974696f6e732c6164732d6469726563746f72795365727669636549643d64656661756c742c6f753d636f6e666967302a3028040b6f626a656374636c61737331190403746f7004126f7267616e697a6174696f6e616c556e6974 + // 0x30, 0x69, 0x02, 0x01, 0x0d, 0x64, 0x64, 0x04, 0x36, 0x6f, 0x75, 0x3d, 0x70, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2c, 0x61, 0x64, 0x73, 0x2d, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x3d, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x2c, 0x6f, 0x75, 0x3d, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x30, 0x2a, 0x30, 0x28, 0x04, 0x0b, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x31, 0x19, 0x04, 0x03, 0x74, 0x6f, 0x70, 0x04, 0x12, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x55, 0x6e, 0x69, 0x74, + // }, + // }, + // out: LDAPMessage{ + // messageID: MessageID(13), + // protocolOp: SearchResultEntry{ + // objectName: LDAPDN("ou=partitions,ads-directoryServiceId=default,ou=config"), + // attributes: PartialAttributeList{ + // PartialAttribute{ + // type_: AttributeDescription("objectclass"), + // vals: []AttributeValue{ + // AttributeValue("top"), + // AttributeValue("organizationalUnit"), + // }, + // }, + // }, + // }, + // controls: (*Controls)(nil), + // }, + // }, + + // // Request 40 + // { + // bytes: Bytes{ + // offset: 0, + // bytes: []byte{ + // // 30818102010d647c04496164732d6368616e67654c6f6749643d64656661756c744368616e67654c6f672c6164732d6469726563746f72795365727669636549643d64656661756c742c6f753d636f6e666967302f302d040b6f626a656374636c617373311e0403746f7004086164732d62617365040d6164732d6368616e67654c6f67 + // 0x30, 0x81, 0x81, 0x02, 0x01, 0x0d, 0x64, 0x7c, 0x04, 0x49, 0x61, 0x64, 0x73, 0x2d, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4c, 0x6f, 0x67, 0x49, 0x64, 0x3d, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4c, 0x6f, 0x67, 0x2c, 0x61, 0x64, 0x73, 0x2d, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x3d, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x2c, 0x6f, 0x75, 0x3d, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x30, 0x2f, 0x30, 0x2d, 0x04, 0x0b, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x31, 0x1e, 0x04, 0x03, 0x74, 0x6f, 0x70, 0x04, 0x08, 0x61, 0x64, 0x73, 0x2d, 0x62, 0x61, 0x73, 0x65, 0x04, 0x0d, 0x61, 0x64, 0x73, 0x2d, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4c, 0x6f, 0x67, + // }, + // }, + // out: LDAPMessage{ + // messageID: MessageID(13), + // protocolOp: SearchResultEntry{ + // objectName: LDAPDN("ads-changeLogId=defaultChangeLog,ads-directoryServiceId=default,ou=config"), + // attributes: PartialAttributeList{ + // PartialAttribute{ + // type_: AttributeDescription("objectclass"), + // vals: []AttributeValue{ + // AttributeValue("top"), + // AttributeValue("ads-base"), + // AttributeValue("ads-changeLog"), + // }, + // }, + // }, + // }, + // controls: (*Controls)(nil), + // }, + // }, + + // // Request 41 + // { + // bytes: Bytes{ + // offset: 0, + // bytes: []byte{ + // // 306602010d646104336f753d736572766572732c6164732d6469726563746f72795365727669636549643d64656661756c742c6f753d636f6e666967302a3028040b6f626a656374636c61737331190403746f7004126f7267616e697a6174696f6e616c556e6974 + // 0x30, 0x66, 0x02, 0x01, 0x0d, 0x64, 0x61, 0x04, 0x33, 0x6f, 0x75, 0x3d, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x73, 0x2c, 0x61, 0x64, 0x73, 0x2d, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x3d, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x2c, 0x6f, 0x75, 0x3d, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x30, 0x2a, 0x30, 0x28, 0x04, 0x0b, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x31, 0x19, 0x04, 0x03, 0x74, 0x6f, 0x70, 0x04, 0x12, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x55, 0x6e, 0x69, 0x74, + // }, + // }, + // out: LDAPMessage{ + // messageID: MessageID(13), + // protocolOp: SearchResultEntry{ + // objectName: LDAPDN("ou=servers,ads-directoryServiceId=default,ou=config"), + // attributes: PartialAttributeList{ + // PartialAttribute{ + // type_: AttributeDescription("objectclass"), + // vals: []AttributeValue{ + // AttributeValue("top"), + // AttributeValue("organizationalUnit"), + // }, + // }, + // }, + // }, + // controls: (*Controls)(nil), + // }, + // }, + + // // Request 42 + // { + // bytes: Bytes{ + // offset: 0, + // bytes: []byte{ + // // 300c02010d65070a010004000400 + // 0x30, 0x0c, 0x02, 0x01, 0x0d, 0x65, 0x07, 0x0a, 0x01, 0x00, 0x04, 0x00, 0x04, 0x00, + // }, + // }, + // out: LDAPMessage{ + // messageID: MessageID(13), + // protocolOp: SearchResultDone{ + // resultCode: ENUMERATED(0), + // matchedDN: LDAPDN(""), + // diagnosticMessage: LDAPString(""), + // referral: (*Referral)(nil), + // }, + // controls: (*Controls)(nil), + // }, + // }, + + // // Request 43 + // { + // bytes: Bytes{ + // offset: 0, + // bytes: []byte{ + // // 305002010e634b04286164732d6469726563746f72795365727669636549643d64656661756c742c6f753d636f6e6669670a01000a0103020100020100010100870b6f626a656374436c617373300304012a + // 0x30, 0x50, 0x02, 0x01, 0x0e, 0x63, 0x4b, 0x04, 0x28, 0x61, 0x64, 0x73, 0x2d, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x3d, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x2c, 0x6f, 0x75, 0x3d, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x0a, 0x01, 0x00, 0x0a, 0x01, 0x03, 0x02, 0x01, 0x00, 0x02, 0x01, 0x00, 0x01, 0x01, 0x00, 0x87, 0x0b, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x30, 0x03, 0x04, 0x01, 0x2a, + // }, + // }, + // out: LDAPMessage{ + // messageID: MessageID(14), + // protocolOp: SearchRequest{ + // baseObject: LDAPDN("ads-directoryServiceId=default,ou=config"), + // scope: ENUMERATED(0), + // derefAliases: ENUMERATED(3), + // sizeLimit: INTEGER(0), + // timeLimit: INTEGER(0), + // typesOnly: BOOLEAN(false), + // filter: FilterPresent("objectClass"), + // attributes: AttributeSelection{ + // LDAPString("*"), + // }, + // }, + // controls: (*Controls)(nil), + // }, + // }, + + // // Request 44 + // { + // bytes: Bytes{ + // offset: 0, + // bytes: []byte{ + // // 3082017c02010e6482017504286164732d6469726563746f72795365727669636549643d64656661756c742c6f753d636f6e66696730820147302304166164732d6469726563746f72797365727669636569643109040764656661756c74302104166164732d647373796e63706572696f646d696c6c69733107040531353030303024041a6164732d6473616c6c6f77616e6f6e796d6f757361636365737331060404545255453016040f6164732d64737265706c696361696431030401313025041a6164732d6473616363657373636f6e74726f6c656e61626c65643107040546414c5345301f04146164732d647370617373776f726468696464656e3107040546414c5345302a041f6164732d647364656e6f726d616c697a656f706174747273656e61626c65643107040546414c53453015040b6164732d656e61626c656431060404545255453034040b6f626a656374636c61737331250403746f7004146164732d6469726563746f72795365727669636504086164732d62617365 + // 0x30, 0x82, 0x01, 0x7c, 0x02, 0x01, 0x0e, 0x64, 0x82, 0x01, 0x75, 0x04, 0x28, 0x61, 0x64, 0x73, 0x2d, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x3d, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x2c, 0x6f, 0x75, 0x3d, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x30, 0x82, 0x01, 0x47, 0x30, 0x23, 0x04, 0x16, 0x61, 0x64, 0x73, 0x2d, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x69, 0x64, 0x31, 0x09, 0x04, 0x07, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x30, 0x21, 0x04, 0x16, 0x61, 0x64, 0x73, 0x2d, 0x64, 0x73, 0x73, 0x79, 0x6e, 0x63, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x6d, 0x69, 0x6c, 0x6c, 0x69, 0x73, 0x31, 0x07, 0x04, 0x05, 0x31, 0x35, 0x30, 0x30, 0x30, 0x30, 0x24, 0x04, 0x1a, 0x61, 0x64, 0x73, 0x2d, 0x64, 0x73, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x61, 0x6e, 0x6f, 0x6e, 0x79, 0x6d, 0x6f, 0x75, 0x73, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x31, 0x06, 0x04, 0x04, 0x54, 0x52, 0x55, 0x45, 0x30, 0x16, 0x04, 0x0f, 0x61, 0x64, 0x73, 0x2d, 0x64, 0x73, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x69, 0x64, 0x31, 0x03, 0x04, 0x01, 0x31, 0x30, 0x25, 0x04, 0x1a, 0x61, 0x64, 0x73, 0x2d, 0x64, 0x73, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x31, 0x07, 0x04, 0x05, 0x46, 0x41, 0x4c, 0x53, 0x45, 0x30, 0x1f, 0x04, 0x14, 0x61, 0x64, 0x73, 0x2d, 0x64, 0x73, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x68, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x31, 0x07, 0x04, 0x05, 0x46, 0x41, 0x4c, 0x53, 0x45, 0x30, 0x2a, 0x04, 0x1f, 0x61, 0x64, 0x73, 0x2d, 0x64, 0x73, 0x64, 0x65, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x6f, 0x70, 0x61, 0x74, 0x74, 0x72, 0x73, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x31, 0x07, 0x04, 0x05, 0x46, 0x41, 0x4c, 0x53, 0x45, 0x30, 0x15, 0x04, 0x0b, 0x61, 0x64, 0x73, 0x2d, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x31, 0x06, 0x04, 0x04, 0x54, 0x52, 0x55, 0x45, 0x30, 0x34, 0x04, 0x0b, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x31, 0x25, 0x04, 0x03, 0x74, 0x6f, 0x70, 0x04, 0x14, 0x61, 0x64, 0x73, 0x2d, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x04, 0x08, 0x61, 0x64, 0x73, 0x2d, 0x62, 0x61, 0x73, 0x65, + // }, + // }, + // out: LDAPMessage{ + // messageID: MessageID(14), + // protocolOp: SearchResultEntry{ + // objectName: LDAPDN("ads-directoryServiceId=default,ou=config"), + // attributes: PartialAttributeList{ + // PartialAttribute{ + // type_: AttributeDescription("ads-directoryserviceid"), + // vals: []AttributeValue{ + // AttributeValue("default"), + // }, + // }, + // PartialAttribute{ + // type_: AttributeDescription("ads-dssyncperiodmillis"), + // vals: []AttributeValue{ + // AttributeValue("15000"), + // }, + // }, + // PartialAttribute{ + // type_: AttributeDescription("ads-dsallowanonymousaccess"), + // vals: []AttributeValue{ + // AttributeValue("TRUE"), + // }, + // }, + // PartialAttribute{ + // type_: AttributeDescription("ads-dsreplicaid"), + // vals: []AttributeValue{ + // AttributeValue("1"), + // }, + // }, + // PartialAttribute{ + // type_: AttributeDescription("ads-dsaccesscontrolenabled"), + // vals: []AttributeValue{ + // AttributeValue("FALSE"), + // }, + // }, + // PartialAttribute{ + // type_: AttributeDescription("ads-dspasswordhidden"), + // vals: []AttributeValue{ + // AttributeValue("FALSE"), + // }, + // }, + // PartialAttribute{ + // type_: AttributeDescription("ads-dsdenormalizeopattrsenabled"), + // vals: []AttributeValue{ + // AttributeValue("FALSE"), + // }, + // }, + // PartialAttribute{ + // type_: AttributeDescription("ads-enabled"), + // vals: []AttributeValue{ + // AttributeValue("TRUE"), + // }, + // }, + // PartialAttribute{ + // type_: AttributeDescription("objectclass"), + // vals: []AttributeValue{ + // AttributeValue("top"), + // AttributeValue("ads-directoryService"), + // AttributeValue("ads-base"), + // }, + // }, + // }, + // }, + // controls: (*Controls)(nil), + // }, + // }, + + // // Request 45 + // { + // bytes: Bytes{ + // offset: 0, + // bytes: []byte{ + // // 300c02010e65070a010004000400 + // 0x30, 0x0c, 0x02, 0x01, 0x0e, 0x65, 0x07, 0x0a, 0x01, 0x00, 0x04, 0x00, 0x04, 0x00, + // }, + // }, + // out: LDAPMessage{ + // messageID: MessageID(14), + // protocolOp: SearchResultDone{ + // resultCode: ENUMERATED(0), + // matchedDN: LDAPDN(""), + // diagnosticMessage: LDAPString(""), + // referral: (*Referral)(nil), + // }, + // controls: (*Controls)(nil), + // }, + // }, + + // // Request 46 + // { + // bytes: Bytes{ + // offset: 0, + // bytes: []byte{ + // // 306002010f635b04386f753d696e746572636570746f72732c6164732d6469726563746f72795365727669636549643d64656661756c742c6f753d636f6e6669670a01000a0103020100020100010100870b6f626a656374436c617373300304012a + // 0x30, 0x60, 0x02, 0x01, 0x0f, 0x63, 0x5b, 0x04, 0x38, 0x6f, 0x75, 0x3d, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x63, 0x65, 0x70, 0x74, 0x6f, 0x72, 0x73, 0x2c, 0x61, 0x64, 0x73, 0x2d, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x3d, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x2c, 0x6f, 0x75, 0x3d, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x0a, 0x01, 0x00, 0x0a, 0x01, 0x03, 0x02, 0x01, 0x00, 0x02, 0x01, 0x00, 0x01, 0x01, 0x00, 0x87, 0x0b, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x30, 0x03, 0x04, 0x01, 0x2a, + // }, + // }, + // out: LDAPMessage{ + // messageID: MessageID(15), + // protocolOp: SearchRequest{ + // baseObject: LDAPDN("ou=interceptors,ads-directoryServiceId=default,ou=config"), + // scope: ENUMERATED(0), + // derefAliases: ENUMERATED(3), + // sizeLimit: INTEGER(0), + // timeLimit: INTEGER(0), + // typesOnly: BOOLEAN(false), + // filter: FilterPresent("objectClass"), + // attributes: AttributeSelection{ + // LDAPString("*"), + // }, + // }, + // controls: (*Controls)(nil), + // }, + // }, + + // // Request 47 + // { + // bytes: Bytes{ + // offset: 0, + // bytes: []byte{ + // // 30818102010f647c04386f753d696e746572636570746f72732c6164732d6469726563746f72795365727669636549643d64656661756c742c6f753d636f6e6669673040301404026f75310e040c696e746572636570746f72733028040b6f626a656374636c61737331190403746f7004126f7267616e697a6174696f6e616c556e6974 + // 0x30, 0x81, 0x81, 0x02, 0x01, 0x0f, 0x64, 0x7c, 0x04, 0x38, 0x6f, 0x75, 0x3d, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x63, 0x65, 0x70, 0x74, 0x6f, 0x72, 0x73, 0x2c, 0x61, 0x64, 0x73, 0x2d, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x3d, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x2c, 0x6f, 0x75, 0x3d, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x30, 0x40, 0x30, 0x14, 0x04, 0x02, 0x6f, 0x75, 0x31, 0x0e, 0x04, 0x0c, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x63, 0x65, 0x70, 0x74, 0x6f, 0x72, 0x73, 0x30, 0x28, 0x04, 0x0b, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x31, 0x19, 0x04, 0x03, 0x74, 0x6f, 0x70, 0x04, 0x12, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x55, 0x6e, 0x69, 0x74, + // }, + // }, + // out: LDAPMessage{ + // messageID: MessageID(15), + // protocolOp: SearchResultEntry{ + // objectName: LDAPDN("ou=interceptors,ads-directoryServiceId=default,ou=config"), + // attributes: PartialAttributeList{ + // PartialAttribute{ + // type_: AttributeDescription("ou"), + // vals: []AttributeValue{ + // AttributeValue("interceptors"), + // }, + // }, + // PartialAttribute{ + // type_: AttributeDescription("objectclass"), + // vals: []AttributeValue{ + // AttributeValue("top"), + // AttributeValue("organizationalUnit"), + // }, + // }, + // }, + // }, + // controls: (*Controls)(nil), + // }, + // }, + + // // Request 48 + // { + // bytes: Bytes{ + // offset: 0, + // bytes: []byte{ + // // 300c02010f65070a010004000400 + // 0x30, 0x0c, 0x02, 0x01, 0x0f, 0x65, 0x07, 0x0a, 0x01, 0x00, 0x04, 0x00, 0x04, 0x00, + // }, + // }, + // out: LDAPMessage{ + // messageID: MessageID(15), + // protocolOp: SearchResultDone{ + // resultCode: ENUMERATED(0), + // matchedDN: LDAPDN(""), + // diagnosticMessage: LDAPString(""), + // referral: (*Referral)(nil), + // }, + // controls: (*Controls)(nil), + // }, + // }, + + // // Request 49 + // { + // bytes: Bytes{ + // offset: 0, + // bytes: []byte{ + // // 307c020110637704386f753d696e746572636570746f72732c6164732d6469726563746f72795365727669636549643d64656661756c742c6f753d636f6e6669670a01010a0103020203e8020100010100870b6f626a656374436c617373301e040f6861735375626f7264696e61746573040b6f626a656374436c617373 + // 0x30, 0x7c, 0x02, 0x01, 0x10, 0x63, 0x77, 0x04, 0x38, 0x6f, 0x75, 0x3d, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x63, 0x65, 0x70, 0x74, 0x6f, 0x72, 0x73, 0x2c, 0x61, 0x64, 0x73, 0x2d, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x3d, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x2c, 0x6f, 0x75, 0x3d, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x0a, 0x01, 0x01, 0x0a, 0x01, 0x03, 0x02, 0x02, 0x03, 0xe8, 0x02, 0x01, 0x00, 0x01, 0x01, 0x00, 0x87, 0x0b, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x30, 0x1e, 0x04, 0x0f, 0x68, 0x61, 0x73, 0x53, 0x75, 0x62, 0x6f, 0x72, 0x64, 0x69, 0x6e, 0x61, 0x74, 0x65, 0x73, 0x04, 0x0b, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6c, 0x61, 0x73, 0x73, + // }, + // }, + // out: LDAPMessage{ + // messageID: MessageID(16), + // protocolOp: SearchRequest{ + // baseObject: LDAPDN("ou=interceptors,ads-directoryServiceId=default,ou=config"), + // scope: ENUMERATED(1), + // derefAliases: ENUMERATED(3), + // sizeLimit: INTEGER(1000), + // timeLimit: INTEGER(0), + // typesOnly: BOOLEAN(false), + // filter: FilterPresent("objectClass"), + // attributes: AttributeSelection{ + // LDAPString("hasSubordinates"), + // LDAPString("objectClass"), + // }, + // }, + // controls: (*Controls)(nil), + // }, + // }, + + // // Request 50 + // { + // bytes: Bytes{ + // offset: 0, + // bytes: []byte{ + // // 30819a020110648194045f6164732d696e746572636570746f7249643d657863657074696f6e496e746572636570746f722c6f753d696e746572636570746f72732c6164732d6469726563746f72795365727669636549643d64656661756c742c6f753d636f6e6669673031302f040b6f626a656374636c6173733120040f6164732d696e746572636570746f720403746f7004086164732d62617365 + // 0x30, 0x81, 0x9a, 0x02, 0x01, 0x10, 0x64, 0x81, 0x94, 0x04, 0x5f, 0x61, 0x64, 0x73, 0x2d, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x63, 0x65, 0x70, 0x74, 0x6f, 0x72, 0x49, 0x64, 0x3d, 0x65, 0x78, 0x63, 0x65, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x63, 0x65, 0x70, 0x74, 0x6f, 0x72, 0x2c, 0x6f, 0x75, 0x3d, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x63, 0x65, 0x70, 0x74, 0x6f, 0x72, 0x73, 0x2c, 0x61, 0x64, 0x73, 0x2d, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x3d, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x2c, 0x6f, 0x75, 0x3d, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x30, 0x31, 0x30, 0x2f, 0x04, 0x0b, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x31, 0x20, 0x04, 0x0f, 0x61, 0x64, 0x73, 0x2d, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x63, 0x65, 0x70, 0x74, 0x6f, 0x72, 0x04, 0x03, 0x74, 0x6f, 0x70, 0x04, 0x08, 0x61, 0x64, 0x73, 0x2d, 0x62, 0x61, 0x73, 0x65, + // }, + // }, + // out: LDAPMessage{ + // messageID: MessageID(16), + // protocolOp: SearchResultEntry{ + // objectName: LDAPDN("ads-interceptorId=exceptionInterceptor,ou=interceptors,ads-directoryServiceId=default,ou=config"), + // attributes: PartialAttributeList{ + // PartialAttribute{ + // type_: AttributeDescription("objectclass"), + // vals: []AttributeValue{ + // AttributeValue("ads-interceptor"), + // AttributeValue("top"), + // AttributeValue("ads-base"), + // }, + // }, + // }, + // }, + // controls: (*Controls)(nil), + // }, + // }, + + // // Request 51 + // { + // bytes: Bytes{ + // offset: 0, + // bytes: []byte{ + // // 308196020110648190045b6164732d696e746572636570746f7249643d6576656e74496e746572636570746f722c6f753d696e746572636570746f72732c6164732d6469726563746f72795365727669636549643d64656661756c742c6f753d636f6e6669673031302f040b6f626a656374636c6173733120040f6164732d696e746572636570746f720403746f7004086164732d62617365 + // 0x30, 0x81, 0x96, 0x02, 0x01, 0x10, 0x64, 0x81, 0x90, 0x04, 0x5b, 0x61, 0x64, 0x73, 0x2d, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x63, 0x65, 0x70, 0x74, 0x6f, 0x72, 0x49, 0x64, 0x3d, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x63, 0x65, 0x70, 0x74, 0x6f, 0x72, 0x2c, 0x6f, 0x75, 0x3d, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x63, 0x65, 0x70, 0x74, 0x6f, 0x72, 0x73, 0x2c, 0x61, 0x64, 0x73, 0x2d, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x3d, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x2c, 0x6f, 0x75, 0x3d, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x30, 0x31, 0x30, 0x2f, 0x04, 0x0b, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x31, 0x20, 0x04, 0x0f, 0x61, 0x64, 0x73, 0x2d, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x63, 0x65, 0x70, 0x74, 0x6f, 0x72, 0x04, 0x03, 0x74, 0x6f, 0x70, 0x04, 0x08, 0x61, 0x64, 0x73, 0x2d, 0x62, 0x61, 0x73, 0x65, + // }, + // }, + // out: LDAPMessage{ + // messageID: MessageID(16), + // protocolOp: SearchResultEntry{ + // objectName: LDAPDN("ads-interceptorId=eventInterceptor,ou=interceptors,ads-directoryServiceId=default,ou=config"), + // attributes: PartialAttributeList{ + // PartialAttribute{ + // type_: AttributeDescription("objectclass"), + // vals: []AttributeValue{ + // AttributeValue("ads-interceptor"), + // AttributeValue("top"), + // AttributeValue("ads-base"), + // }, + // }, + // }, + // }, + // controls: (*Controls)(nil), + // }, + // }, + + // // Request 52 + // { + // bytes: Bytes{ + // offset: 0, + // bytes: []byte{ + // // 3081a502011064819f046a6164732d696e746572636570746f7249643d6f7065726174696f6e616c417474726962757465496e746572636570746f722c6f753d696e746572636570746f72732c6164732d6469726563746f72795365727669636549643d64656661756c742c6f753d636f6e6669673031302f040b6f626a656374636c6173733120040f6164732d696e746572636570746f720403746f7004086164732d62617365 + // 0x30, 0x81, 0xa5, 0x02, 0x01, 0x10, 0x64, 0x81, 0x9f, 0x04, 0x6a, 0x61, 0x64, 0x73, 0x2d, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x63, 0x65, 0x70, 0x74, 0x6f, 0x72, 0x49, 0x64, 0x3d, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x63, 0x65, 0x70, 0x74, 0x6f, 0x72, 0x2c, 0x6f, 0x75, 0x3d, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x63, 0x65, 0x70, 0x74, 0x6f, 0x72, 0x73, 0x2c, 0x61, 0x64, 0x73, 0x2d, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x3d, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x2c, 0x6f, 0x75, 0x3d, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x30, 0x31, 0x30, 0x2f, 0x04, 0x0b, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x31, 0x20, 0x04, 0x0f, 0x61, 0x64, 0x73, 0x2d, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x63, 0x65, 0x70, 0x74, 0x6f, 0x72, 0x04, 0x03, 0x74, 0x6f, 0x70, 0x04, 0x08, 0x61, 0x64, 0x73, 0x2d, 0x62, 0x61, 0x73, 0x65, + // }, + // }, + // out: LDAPMessage{ + // messageID: MessageID(16), + // protocolOp: SearchResultEntry{ + // objectName: LDAPDN("ads-interceptorId=operationalAttributeInterceptor,ou=interceptors,ads-directoryServiceId=default,ou=config"), + // attributes: PartialAttributeList{ + // PartialAttribute{ + // type_: AttributeDescription("objectclass"), + // vals: []AttributeValue{ + // AttributeValue("ads-interceptor"), + // AttributeValue("top"), + // AttributeValue("ads-base"), + // }, + // }, + // }, + // }, + // controls: (*Controls)(nil), + // }, + // }, + + // // Request 53 + // { + // bytes: Bytes{ + // offset: 0, + // bytes: []byte{ + // // 3081be0201106481b804646164732d696e746572636570746f7249643d61757468656e7469636174696f6e496e746572636570746f722c6f753d696e746572636570746f72732c6164732d6469726563746f72795365727669636549643d64656661756c742c6f753d636f6e6669673050304e040b6f626a656374636c617373313f040f6164732d696e746572636570746f720403746f7004086164732d62617365041d6164732d61757468656e7469636174696f6e496e746572636570746f72 + // 0x30, 0x81, 0xbe, 0x02, 0x01, 0x10, 0x64, 0x81, 0xb8, 0x04, 0x64, 0x61, 0x64, 0x73, 0x2d, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x63, 0x65, 0x70, 0x74, 0x6f, 0x72, 0x49, 0x64, 0x3d, 0x61, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x63, 0x65, 0x70, 0x74, 0x6f, 0x72, 0x2c, 0x6f, 0x75, 0x3d, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x63, 0x65, 0x70, 0x74, 0x6f, 0x72, 0x73, 0x2c, 0x61, 0x64, 0x73, 0x2d, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x3d, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x2c, 0x6f, 0x75, 0x3d, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x30, 0x50, 0x30, 0x4e, 0x04, 0x0b, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x31, 0x3f, 0x04, 0x0f, 0x61, 0x64, 0x73, 0x2d, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x63, 0x65, 0x70, 0x74, 0x6f, 0x72, 0x04, 0x03, 0x74, 0x6f, 0x70, 0x04, 0x08, 0x61, 0x64, 0x73, 0x2d, 0x62, 0x61, 0x73, 0x65, 0x04, 0x1d, 0x61, 0x64, 0x73, 0x2d, 0x61, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x63, 0x65, 0x70, 0x74, 0x6f, 0x72, + // }, + // }, + // out: LDAPMessage{ + // messageID: MessageID(16), + // protocolOp: SearchResultEntry{ + // objectName: LDAPDN("ads-interceptorId=authenticationInterceptor,ou=interceptors,ads-directoryServiceId=default,ou=config"), + // attributes: PartialAttributeList{ + // PartialAttribute{ + // type_: AttributeDescription("objectclass"), + // vals: []AttributeValue{ + // AttributeValue("ads-interceptor"), + // AttributeValue("top"), + // AttributeValue("ads-base"), + // AttributeValue("ads-authenticationInterceptor"), + // }, + // }, + // }, + // }, + // controls: (*Controls)(nil), + // }, + // }, + + // // Request 54 + // { + // bytes: Bytes{ + // offset: 0, + // bytes: []byte{ + // // 3081a202011064819c04676164732d696e746572636570746f7249643d616369417574686f72697a6174696f6e496e746572636570746f72322c6f753d696e746572636570746f72732c6164732d6469726563746f72795365727669636549643d64656661756c742c6f753d636f6e6669673031302f040b6f626a656374636c6173733120040f6164732d696e746572636570746f720403746f7004086164732d62617365 + // 0x30, 0x81, 0xa2, 0x02, 0x01, 0x10, 0x64, 0x81, 0x9c, 0x04, 0x67, 0x61, 0x64, 0x73, 0x2d, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x63, 0x65, 0x70, 0x74, 0x6f, 0x72, 0x49, 0x64, 0x3d, 0x61, 0x63, 0x69, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x63, 0x65, 0x70, 0x74, 0x6f, 0x72, 0x32, 0x2c, 0x6f, 0x75, 0x3d, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x63, 0x65, 0x70, 0x74, 0x6f, 0x72, 0x73, 0x2c, 0x61, 0x64, 0x73, 0x2d, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x3d, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x2c, 0x6f, 0x75, 0x3d, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x30, 0x31, 0x30, 0x2f, 0x04, 0x0b, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x31, 0x20, 0x04, 0x0f, 0x61, 0x64, 0x73, 0x2d, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x63, 0x65, 0x70, 0x74, 0x6f, 0x72, 0x04, 0x03, 0x74, 0x6f, 0x70, 0x04, 0x08, 0x61, 0x64, 0x73, 0x2d, 0x62, 0x61, 0x73, 0x65, + // }, + // }, + // out: LDAPMessage{ + // messageID: MessageID(16), + // protocolOp: SearchResultEntry{ + // objectName: LDAPDN("ads-interceptorId=aciAuthorizationInterceptor2,ou=interceptors,ads-directoryServiceId=default,ou=config"), + // attributes: PartialAttributeList{ + // PartialAttribute{ + // type_: AttributeDescription("objectclass"), + // vals: []AttributeValue{ + // AttributeValue("ads-interceptor"), + // AttributeValue("top"), + // AttributeValue("ads-base"), + // }, + // }, + // }, + // }, + // controls: (*Controls)(nil), + // }, + // }, + + // // Request 55 + // { + // bytes: Bytes{ + // offset: 0, + // bytes: []byte{ + // // 3081a002011064819a04656164732d696e746572636570746f7249643d70617373776f726448617368696e67496e746572636570746f722c6f753d696e746572636570746f72732c6164732d6469726563746f72795365727669636549643d64656661756c742c6f753d636f6e6669673031302f040b6f626a656374636c6173733120040f6164732d696e746572636570746f720403746f7004086164732d62617365 + // 0x30, 0x81, 0xa0, 0x02, 0x01, 0x10, 0x64, 0x81, 0x9a, 0x04, 0x65, 0x61, 0x64, 0x73, 0x2d, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x63, 0x65, 0x70, 0x74, 0x6f, 0x72, 0x49, 0x64, 0x3d, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x48, 0x61, 0x73, 0x68, 0x69, 0x6e, 0x67, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x63, 0x65, 0x70, 0x74, 0x6f, 0x72, 0x2c, 0x6f, 0x75, 0x3d, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x63, 0x65, 0x70, 0x74, 0x6f, 0x72, 0x73, 0x2c, 0x61, 0x64, 0x73, 0x2d, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x3d, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x2c, 0x6f, 0x75, 0x3d, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x30, 0x31, 0x30, 0x2f, 0x04, 0x0b, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x31, 0x20, 0x04, 0x0f, 0x61, 0x64, 0x73, 0x2d, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x63, 0x65, 0x70, 0x74, 0x6f, 0x72, 0x04, 0x03, 0x74, 0x6f, 0x70, 0x04, 0x08, 0x61, 0x64, 0x73, 0x2d, 0x62, 0x61, 0x73, 0x65, + // }, + // }, + // out: LDAPMessage{ + // messageID: MessageID(16), + // protocolOp: SearchResultEntry{ + // objectName: LDAPDN("ads-interceptorId=passwordHashingInterceptor,ou=interceptors,ads-directoryServiceId=default,ou=config"), + // attributes: PartialAttributeList{ + // PartialAttribute{ + // type_: AttributeDescription("objectclass"), + // vals: []AttributeValue{ + // AttributeValue("ads-interceptor"), + // AttributeValue("top"), + // AttributeValue("ads-base"), + // }, + // }, + // }, + // }, + // controls: (*Controls)(nil), + // }, + // }, + + // // Request 56 + // { + // bytes: Bytes{ + // offset: 0, + // bytes: []byte{ + // // 308197020110648191045c6164732d696e746572636570746f7249643d736368656d61496e746572636570746f722c6f753d696e746572636570746f72732c6164732d6469726563746f72795365727669636549643d64656661756c742c6f753d636f6e6669673031302f040b6f626a656374636c6173733120040f6164732d696e746572636570746f720403746f7004086164732d62617365 + // 0x30, 0x81, 0x97, 0x02, 0x01, 0x10, 0x64, 0x81, 0x91, 0x04, 0x5c, 0x61, 0x64, 0x73, 0x2d, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x63, 0x65, 0x70, 0x74, 0x6f, 0x72, 0x49, 0x64, 0x3d, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x63, 0x65, 0x70, 0x74, 0x6f, 0x72, 0x2c, 0x6f, 0x75, 0x3d, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x63, 0x65, 0x70, 0x74, 0x6f, 0x72, 0x73, 0x2c, 0x61, 0x64, 0x73, 0x2d, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x3d, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x2c, 0x6f, 0x75, 0x3d, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x30, 0x31, 0x30, 0x2f, 0x04, 0x0b, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x31, 0x20, 0x04, 0x0f, 0x61, 0x64, 0x73, 0x2d, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x63, 0x65, 0x70, 0x74, 0x6f, 0x72, 0x04, 0x03, 0x74, 0x6f, 0x70, 0x04, 0x08, 0x61, 0x64, 0x73, 0x2d, 0x62, 0x61, 0x73, 0x65, + // }, + // }, + // out: LDAPMessage{ + // messageID: MessageID(16), + // protocolOp: SearchResultEntry{ + // objectName: LDAPDN("ads-interceptorId=schemaInterceptor,ou=interceptors,ads-directoryServiceId=default,ou=config"), + // attributes: PartialAttributeList{ + // PartialAttribute{ + // type_: AttributeDescription("objectclass"), + // vals: []AttributeValue{ + // AttributeValue("ads-interceptor"), + // AttributeValue("top"), + // AttributeValue("ads-base"), + // }, + // }, + // }, + // }, + // controls: (*Controls)(nil), + // }, + // }, + + // // Request 57 + // { + // bytes: Bytes{ + // offset: 0, + // bytes: []byte{ + // // 3081a402011064819e04696164732d696e746572636570746f7249643d61646d696e697374726174697665506f696e74496e746572636570746f722c6f753d696e746572636570746f72732c6164732d6469726563746f72795365727669636549643d64656661756c742c6f753d636f6e6669673031302f040b6f626a656374636c6173733120040f6164732d696e746572636570746f720403746f7004086164732d62617365 + // 0x30, 0x81, 0xa4, 0x02, 0x01, 0x10, 0x64, 0x81, 0x9e, 0x04, 0x69, 0x61, 0x64, 0x73, 0x2d, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x63, 0x65, 0x70, 0x74, 0x6f, 0x72, 0x49, 0x64, 0x3d, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x69, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x76, 0x65, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x63, 0x65, 0x70, 0x74, 0x6f, 0x72, 0x2c, 0x6f, 0x75, 0x3d, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x63, 0x65, 0x70, 0x74, 0x6f, 0x72, 0x73, 0x2c, 0x61, 0x64, 0x73, 0x2d, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x3d, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x2c, 0x6f, 0x75, 0x3d, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x30, 0x31, 0x30, 0x2f, 0x04, 0x0b, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x31, 0x20, 0x04, 0x0f, 0x61, 0x64, 0x73, 0x2d, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x63, 0x65, 0x70, 0x74, 0x6f, 0x72, 0x04, 0x03, 0x74, 0x6f, 0x70, 0x04, 0x08, 0x61, 0x64, 0x73, 0x2d, 0x62, 0x61, 0x73, 0x65, + // }, + // }, + // out: LDAPMessage{ + // messageID: MessageID(16), + // protocolOp: SearchResultEntry{ + // objectName: LDAPDN("ads-interceptorId=administrativePointInterceptor,ou=interceptors,ads-directoryServiceId=default,ou=config"), + // attributes: PartialAttributeList{ + // PartialAttribute{ + // type_: AttributeDescription("objectclass"), + // vals: []AttributeValue{ + // AttributeValue("ads-interceptor"), + // AttributeValue("top"), + // AttributeValue("ads-base"), + // }, + // }, + // }, + // }, + // controls: (*Controls)(nil), + // }, + // }, + + // // Request 58 + // { + // bytes: Bytes{ + // offset: 0, + // bytes: []byte{ + // // 308199020110648193045e6164732d696e746572636570746f7249643d726566657272616c496e746572636570746f722c6f753d696e746572636570746f72732c6164732d6469726563746f72795365727669636549643d64656661756c742c6f753d636f6e6669673031302f040b6f626a656374636c6173733120040f6164732d696e746572636570746f720403746f7004086164732d62617365 + // 0x30, 0x81, 0x99, 0x02, 0x01, 0x10, 0x64, 0x81, 0x93, 0x04, 0x5e, 0x61, 0x64, 0x73, 0x2d, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x63, 0x65, 0x70, 0x74, 0x6f, 0x72, 0x49, 0x64, 0x3d, 0x72, 0x65, 0x66, 0x65, 0x72, 0x72, 0x61, 0x6c, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x63, 0x65, 0x70, 0x74, 0x6f, 0x72, 0x2c, 0x6f, 0x75, 0x3d, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x63, 0x65, 0x70, 0x74, 0x6f, 0x72, 0x73, 0x2c, 0x61, 0x64, 0x73, 0x2d, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x3d, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x2c, 0x6f, 0x75, 0x3d, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x30, 0x31, 0x30, 0x2f, 0x04, 0x0b, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x31, 0x20, 0x04, 0x0f, 0x61, 0x64, 0x73, 0x2d, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x63, 0x65, 0x70, 0x74, 0x6f, 0x72, 0x04, 0x03, 0x74, 0x6f, 0x70, 0x04, 0x08, 0x61, 0x64, 0x73, 0x2d, 0x62, 0x61, 0x73, 0x65, + // }, + // }, + // out: LDAPMessage{ + // messageID: MessageID(16), + // protocolOp: SearchResultEntry{ + // objectName: LDAPDN("ads-interceptorId=referralInterceptor,ou=interceptors,ads-directoryServiceId=default,ou=config"), + // attributes: PartialAttributeList{ + // PartialAttribute{ + // type_: AttributeDescription("objectclass"), + // vals: []AttributeValue{ + // AttributeValue("ads-interceptor"), + // AttributeValue("top"), + // AttributeValue("ads-base"), + // }, + // }, + // }, + // }, + // controls: (*Controls)(nil), + // }, + // }, + + // // Request 59 + // { + // bytes: Bytes{ + // offset: 0, + // bytes: []byte{ + // // 30819e02011064819804636164732d696e746572636570746f7249643d6b657944657269766174696f6e496e746572636570746f722c6f753d696e746572636570746f72732c6164732d6469726563746f72795365727669636549643d64656661756c742c6f753d636f6e6669673031302f040b6f626a656374636c6173733120040f6164732d696e746572636570746f720403746f7004086164732d62617365 + // 0x30, 0x81, 0x9e, 0x02, 0x01, 0x10, 0x64, 0x81, 0x98, 0x04, 0x63, 0x61, 0x64, 0x73, 0x2d, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x63, 0x65, 0x70, 0x74, 0x6f, 0x72, 0x49, 0x64, 0x3d, 0x6b, 0x65, 0x79, 0x44, 0x65, 0x72, 0x69, 0x76, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x63, 0x65, 0x70, 0x74, 0x6f, 0x72, 0x2c, 0x6f, 0x75, 0x3d, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x63, 0x65, 0x70, 0x74, 0x6f, 0x72, 0x73, 0x2c, 0x61, 0x64, 0x73, 0x2d, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x3d, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x2c, 0x6f, 0x75, 0x3d, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x30, 0x31, 0x30, 0x2f, 0x04, 0x0b, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x31, 0x20, 0x04, 0x0f, 0x61, 0x64, 0x73, 0x2d, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x63, 0x65, 0x70, 0x74, 0x6f, 0x72, 0x04, 0x03, 0x74, 0x6f, 0x70, 0x04, 0x08, 0x61, 0x64, 0x73, 0x2d, 0x62, 0x61, 0x73, 0x65, + // }, + // }, + // out: LDAPMessage{ + // messageID: MessageID(16), + // protocolOp: SearchResultEntry{ + // objectName: LDAPDN("ads-interceptorId=keyDerivationInterceptor,ou=interceptors,ads-directoryServiceId=default,ou=config"), + // attributes: PartialAttributeList{ + // PartialAttribute{ + // type_: AttributeDescription("objectclass"), + // vals: []AttributeValue{ + // AttributeValue("ads-interceptor"), + // AttributeValue("top"), + // AttributeValue("ads-base"), + // }, + // }, + // }, + // }, + // controls: (*Controls)(nil), + // }, + // }, + + // // Request 60 + // { + // bytes: Bytes{ + // offset: 0, + // bytes: []byte{ + // // 30819e02011064819804636164732d696e746572636570746f7249643d6e6f726d616c697a6174696f6e496e746572636570746f722c6f753d696e746572636570746f72732c6164732d6469726563746f72795365727669636549643d64656661756c742c6f753d636f6e6669673031302f040b6f626a656374636c6173733120040f6164732d696e746572636570746f720403746f7004086164732d62617365 + // 0x30, 0x81, 0x9e, 0x02, 0x01, 0x10, 0x64, 0x81, 0x98, 0x04, 0x63, 0x61, 0x64, 0x73, 0x2d, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x63, 0x65, 0x70, 0x74, 0x6f, 0x72, 0x49, 0x64, 0x3d, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x63, 0x65, 0x70, 0x74, 0x6f, 0x72, 0x2c, 0x6f, 0x75, 0x3d, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x63, 0x65, 0x70, 0x74, 0x6f, 0x72, 0x73, 0x2c, 0x61, 0x64, 0x73, 0x2d, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x3d, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x2c, 0x6f, 0x75, 0x3d, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x30, 0x31, 0x30, 0x2f, 0x04, 0x0b, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x31, 0x20, 0x04, 0x0f, 0x61, 0x64, 0x73, 0x2d, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x63, 0x65, 0x70, 0x74, 0x6f, 0x72, 0x04, 0x03, 0x74, 0x6f, 0x70, 0x04, 0x08, 0x61, 0x64, 0x73, 0x2d, 0x62, 0x61, 0x73, 0x65, + // }, + // }, + // out: LDAPMessage{ + // messageID: MessageID(16), + // protocolOp: SearchResultEntry{ + // objectName: LDAPDN("ads-interceptorId=normalizationInterceptor,ou=interceptors,ads-directoryServiceId=default,ou=config"), + // attributes: PartialAttributeList{ + // PartialAttribute{ + // type_: AttributeDescription("objectclass"), + // vals: []AttributeValue{ + // AttributeValue("ads-interceptor"), + // AttributeValue("top"), + // AttributeValue("ads-base"), + // }, + // }, + // }, + // }, + // controls: (*Controls)(nil), + // }, + // }, + + // // Request 61 + // { + // bytes: Bytes{ + // offset: 0, + // bytes: []byte{ + // // 308199020110648193045e6164732d696e746572636570746f7249643d737562656e747279496e746572636570746f722c6f753d696e746572636570746f72732c6164732d6469726563746f72795365727669636549643d64656661756c742c6f753d636f6e6669673031302f040b6f626a656374636c6173733120040f6164732d696e746572636570746f720403746f7004086164732d62617365 + // 0x30, 0x81, 0x99, 0x02, 0x01, 0x10, 0x64, 0x81, 0x93, 0x04, 0x5e, 0x61, 0x64, 0x73, 0x2d, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x63, 0x65, 0x70, 0x74, 0x6f, 0x72, 0x49, 0x64, 0x3d, 0x73, 0x75, 0x62, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x63, 0x65, 0x70, 0x74, 0x6f, 0x72, 0x2c, 0x6f, 0x75, 0x3d, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x63, 0x65, 0x70, 0x74, 0x6f, 0x72, 0x73, 0x2c, 0x61, 0x64, 0x73, 0x2d, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x3d, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x2c, 0x6f, 0x75, 0x3d, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x30, 0x31, 0x30, 0x2f, 0x04, 0x0b, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x31, 0x20, 0x04, 0x0f, 0x61, 0x64, 0x73, 0x2d, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x63, 0x65, 0x70, 0x74, 0x6f, 0x72, 0x04, 0x03, 0x74, 0x6f, 0x70, 0x04, 0x08, 0x61, 0x64, 0x73, 0x2d, 0x62, 0x61, 0x73, 0x65, + // }, + // }, + // out: LDAPMessage{ + // messageID: MessageID(16), + // protocolOp: SearchResultEntry{ + // objectName: LDAPDN("ads-interceptorId=subentryInterceptor,ou=interceptors,ads-directoryServiceId=default,ou=config"), + // attributes: PartialAttributeList{ + // PartialAttribute{ + // type_: AttributeDescription("objectclass"), + // vals: []AttributeValue{ + // AttributeValue("ads-interceptor"), + // AttributeValue("top"), + // AttributeValue("ads-base"), + // }, + // }, + // }, + // }, + // controls: (*Controls)(nil), + // }, + // }, + + // // Request 62 + // { + // bytes: Bytes{ + // offset: 0, + // bytes: []byte{ + // // 3081a502011064819f046a6164732d696e746572636570746f7249643d64656661756c74417574686f72697a6174696f6e496e746572636570746f722c6f753d696e746572636570746f72732c6164732d6469726563746f72795365727669636549643d64656661756c742c6f753d636f6e6669673031302f040b6f626a656374636c6173733120040f6164732d696e746572636570746f720403746f7004086164732d62617365 + // 0x30, 0x81, 0xa5, 0x02, 0x01, 0x10, 0x64, 0x81, 0x9f, 0x04, 0x6a, 0x61, 0x64, 0x73, 0x2d, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x63, 0x65, 0x70, 0x74, 0x6f, 0x72, 0x49, 0x64, 0x3d, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x63, 0x65, 0x70, 0x74, 0x6f, 0x72, 0x2c, 0x6f, 0x75, 0x3d, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x63, 0x65, 0x70, 0x74, 0x6f, 0x72, 0x73, 0x2c, 0x61, 0x64, 0x73, 0x2d, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x3d, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x2c, 0x6f, 0x75, 0x3d, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x30, 0x31, 0x30, 0x2f, 0x04, 0x0b, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x31, 0x20, 0x04, 0x0f, 0x61, 0x64, 0x73, 0x2d, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x63, 0x65, 0x70, 0x74, 0x6f, 0x72, 0x04, 0x03, 0x74, 0x6f, 0x70, 0x04, 0x08, 0x61, 0x64, 0x73, 0x2d, 0x62, 0x61, 0x73, 0x65, + // }, + // }, + // out: LDAPMessage{ + // messageID: MessageID(16), + // protocolOp: SearchResultEntry{ + // objectName: LDAPDN("ads-interceptorId=defaultAuthorizationInterceptor,ou=interceptors,ads-directoryServiceId=default,ou=config"), + // attributes: PartialAttributeList{ + // PartialAttribute{ + // type_: AttributeDescription("objectclass"), + // vals: []AttributeValue{ + // AttributeValue("ads-interceptor"), + // AttributeValue("top"), + // AttributeValue("ads-base"), + // }, + // }, + // }, + // }, + // controls: (*Controls)(nil), + // }, + // }, + + // // Request 63 + // { + // bytes: Bytes{ + // offset: 0, + // bytes: []byte{ + // // 308198020110648192045d6164732d696e746572636570746f7249643d74726967676572496e746572636570746f722c6f753d696e746572636570746f72732c6164732d6469726563746f72795365727669636549643d64656661756c742c6f753d636f6e6669673031302f040b6f626a656374636c6173733120040f6164732d696e746572636570746f720403746f7004086164732d62617365 + // 0x30, 0x81, 0x98, 0x02, 0x01, 0x10, 0x64, 0x81, 0x92, 0x04, 0x5d, 0x61, 0x64, 0x73, 0x2d, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x63, 0x65, 0x70, 0x74, 0x6f, 0x72, 0x49, 0x64, 0x3d, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x63, 0x65, 0x70, 0x74, 0x6f, 0x72, 0x2c, 0x6f, 0x75, 0x3d, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x63, 0x65, 0x70, 0x74, 0x6f, 0x72, 0x73, 0x2c, 0x61, 0x64, 0x73, 0x2d, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x3d, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x2c, 0x6f, 0x75, 0x3d, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x30, 0x31, 0x30, 0x2f, 0x04, 0x0b, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x31, 0x20, 0x04, 0x0f, 0x61, 0x64, 0x73, 0x2d, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x63, 0x65, 0x70, 0x74, 0x6f, 0x72, 0x04, 0x03, 0x74, 0x6f, 0x70, 0x04, 0x08, 0x61, 0x64, 0x73, 0x2d, 0x62, 0x61, 0x73, 0x65, + // }, + // }, + // out: LDAPMessage{ + // messageID: MessageID(16), + // protocolOp: SearchResultEntry{ + // objectName: LDAPDN("ads-interceptorId=triggerInterceptor,ou=interceptors,ads-directoryServiceId=default,ou=config"), + // attributes: PartialAttributeList{ + // PartialAttribute{ + // type_: AttributeDescription("objectclass"), + // vals: []AttributeValue{ + // AttributeValue("ads-interceptor"), + // AttributeValue("top"), + // AttributeValue("ads-base"), + // }, + // }, + // }, + // }, + // controls: (*Controls)(nil), + // }, + // }, + + // // Request 64 + // { + // bytes: Bytes{ + // offset: 0, + // bytes: []byte{ + // // 3081a402011064819e04696164732d696e746572636570746f7249643d636f6c6c656374697665417474726962757465496e746572636570746f722c6f753d696e746572636570746f72732c6164732d6469726563746f72795365727669636549643d64656661756c742c6f753d636f6e6669673031302f040b6f626a656374636c6173733120040f6164732d696e746572636570746f720403746f7004086164732d62617365 + // 0x30, 0x81, 0xa4, 0x02, 0x01, 0x10, 0x64, 0x81, 0x9e, 0x04, 0x69, 0x61, 0x64, 0x73, 0x2d, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x63, 0x65, 0x70, 0x74, 0x6f, 0x72, 0x49, 0x64, 0x3d, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x63, 0x65, 0x70, 0x74, 0x6f, 0x72, 0x2c, 0x6f, 0x75, 0x3d, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x63, 0x65, 0x70, 0x74, 0x6f, 0x72, 0x73, 0x2c, 0x61, 0x64, 0x73, 0x2d, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x3d, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x2c, 0x6f, 0x75, 0x3d, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x30, 0x31, 0x30, 0x2f, 0x04, 0x0b, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x31, 0x20, 0x04, 0x0f, 0x61, 0x64, 0x73, 0x2d, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x63, 0x65, 0x70, 0x74, 0x6f, 0x72, 0x04, 0x03, 0x74, 0x6f, 0x70, 0x04, 0x08, 0x61, 0x64, 0x73, 0x2d, 0x62, 0x61, 0x73, 0x65, + // }, + // }, + // out: LDAPMessage{ + // messageID: MessageID(16), + // protocolOp: SearchResultEntry{ + // objectName: LDAPDN("ads-interceptorId=collectiveAttributeInterceptor,ou=interceptors,ads-directoryServiceId=default,ou=config"), + // attributes: PartialAttributeList{ + // PartialAttribute{ + // type_: AttributeDescription("objectclass"), + // vals: []AttributeValue{ + // AttributeValue("ads-interceptor"), + // AttributeValue("top"), + // AttributeValue("ads-base"), + // }, + // }, + // }, + // }, + // controls: (*Controls)(nil), + // }, + // }, + + // // Request 65 + // { + // bytes: Bytes{ + // offset: 0, + // bytes: []byte{ + // // 300c02011065070a010004000400 + // 0x30, 0x0c, 0x02, 0x01, 0x10, 0x65, 0x07, 0x0a, 0x01, 0x00, 0x04, 0x00, 0x04, 0x00, + // }, + // }, + // out: LDAPMessage{ + // messageID: MessageID(16), + // protocolOp: SearchResultDone{ + // resultCode: ENUMERATED(0), + // matchedDN: LDAPDN(""), + // diagnosticMessage: LDAPString(""), + // referral: (*Referral)(nil), + // }, + // controls: (*Controls)(nil), + // }, + // }, + + // // Request 66 + // { + // bytes: Bytes{ + // offset: 0, + // bytes: []byte{ + // // 30819002011163818a04676164732d696e746572636570746f7249643d616369417574686f72697a6174696f6e496e746572636570746f72322c6f753d696e746572636570746f72732c6164732d6469726563746f72795365727669636549643d64656661756c742c6f753d636f6e6669670a01000a0103020100020100010100870b6f626a656374436c617373300304012a + // 0x30, 0x81, 0x90, 0x02, 0x01, 0x11, 0x63, 0x81, 0x8a, 0x04, 0x67, 0x61, 0x64, 0x73, 0x2d, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x63, 0x65, 0x70, 0x74, 0x6f, 0x72, 0x49, 0x64, 0x3d, 0x61, 0x63, 0x69, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x63, 0x65, 0x70, 0x74, 0x6f, 0x72, 0x32, 0x2c, 0x6f, 0x75, 0x3d, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x63, 0x65, 0x70, 0x74, 0x6f, 0x72, 0x73, 0x2c, 0x61, 0x64, 0x73, 0x2d, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x3d, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x2c, 0x6f, 0x75, 0x3d, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x0a, 0x01, 0x00, 0x0a, 0x01, 0x03, 0x02, 0x01, 0x00, 0x02, 0x01, 0x00, 0x01, 0x01, 0x00, 0x87, 0x0b, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x30, 0x03, 0x04, 0x01, 0x2a, + // }, + // }, + // out: LDAPMessage{ + // messageID: MessageID(17), + // protocolOp: SearchRequest{ + // baseObject: LDAPDN("ads-interceptorId=aciAuthorizationInterceptor2,ou=interceptors,ads-directoryServiceId=default,ou=config"), + // scope: ENUMERATED(0), + // derefAliases: ENUMERATED(3), + // sizeLimit: INTEGER(0), + // timeLimit: INTEGER(0), + // typesOnly: BOOLEAN(false), + // filter: FilterPresent("objectClass"), + // attributes: AttributeSelection{ + // LDAPString("*"), + // }, + // }, + // controls: (*Controls)(nil), + // }, + // }, + + // // Request 67 + // { + // bytes: Bytes{ + // offset: 0, + // bytes: []byte{ + // // 3082018d0201116482018604676164732d696e746572636570746f7249643d616369417574686f72697a6174696f6e496e746572636570746f72322c6f753d696e746572636570746f72732c6164732d6469726563746f72795365727669636549643d64656661756c742c6f753d636f6e66696730820119302f040b6f626a656374636c6173733120040f6164732d696e746572636570746f720403746f7004086164732d626173653015040b6164732d656e61626c65643106040454525545306004186164732d696e746572636570746f72636c6173736e616d65314404426f72672e6170616368652e6469726563746f72792e7365727665722e636f72652e617574687a2e416369417574686f72697a6174696f6e496e746572636570746f72301b04146164732d696e746572636570746f726f726465723103040134305004116164732d696e746572636570746f726964313b041b616369417574686f72697a6174696f6e496e746572636570746f72041c616369417574686f72697a6174696f6e496e746572636570746f7232 + // 0x30, 0x82, 0x01, 0x8d, 0x02, 0x01, 0x11, 0x64, 0x82, 0x01, 0x86, 0x04, 0x67, 0x61, 0x64, 0x73, 0x2d, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x63, 0x65, 0x70, 0x74, 0x6f, 0x72, 0x49, 0x64, 0x3d, 0x61, 0x63, 0x69, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x63, 0x65, 0x70, 0x74, 0x6f, 0x72, 0x32, 0x2c, 0x6f, 0x75, 0x3d, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x63, 0x65, 0x70, 0x74, 0x6f, 0x72, 0x73, 0x2c, 0x61, 0x64, 0x73, 0x2d, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x3d, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x2c, 0x6f, 0x75, 0x3d, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x30, 0x82, 0x01, 0x19, 0x30, 0x2f, 0x04, 0x0b, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x31, 0x20, 0x04, 0x0f, 0x61, 0x64, 0x73, 0x2d, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x63, 0x65, 0x70, 0x74, 0x6f, 0x72, 0x04, 0x03, 0x74, 0x6f, 0x70, 0x04, 0x08, 0x61, 0x64, 0x73, 0x2d, 0x62, 0x61, 0x73, 0x65, 0x30, 0x15, 0x04, 0x0b, 0x61, 0x64, 0x73, 0x2d, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x31, 0x06, 0x04, 0x04, 0x54, 0x52, 0x55, 0x45, 0x30, 0x60, 0x04, 0x18, 0x61, 0x64, 0x73, 0x2d, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x63, 0x65, 0x70, 0x74, 0x6f, 0x72, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x6e, 0x61, 0x6d, 0x65, 0x31, 0x44, 0x04, 0x42, 0x6f, 0x72, 0x67, 0x2e, 0x61, 0x70, 0x61, 0x63, 0x68, 0x65, 0x2e, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x61, 0x75, 0x74, 0x68, 0x7a, 0x2e, 0x41, 0x63, 0x69, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x63, 0x65, 0x70, 0x74, 0x6f, 0x72, 0x30, 0x1b, 0x04, 0x14, 0x61, 0x64, 0x73, 0x2d, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x63, 0x65, 0x70, 0x74, 0x6f, 0x72, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x31, 0x03, 0x04, 0x01, 0x34, 0x30, 0x50, 0x04, 0x11, 0x61, 0x64, 0x73, 0x2d, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x63, 0x65, 0x70, 0x74, 0x6f, 0x72, 0x69, 0x64, 0x31, 0x3b, 0x04, 0x1b, 0x61, 0x63, 0x69, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x63, 0x65, 0x70, 0x74, 0x6f, 0x72, 0x04, 0x1c, 0x61, 0x63, 0x69, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x63, 0x65, 0x70, 0x74, 0x6f, 0x72, 0x32, + // }, + // }, + // out: LDAPMessage{ + // messageID: MessageID(17), + // protocolOp: SearchResultEntry{ + // objectName: LDAPDN("ads-interceptorId=aciAuthorizationInterceptor2,ou=interceptors,ads-directoryServiceId=default,ou=config"), + // attributes: PartialAttributeList{ + // PartialAttribute{ + // type_: AttributeDescription("objectclass"), + // vals: []AttributeValue{ + // AttributeValue("ads-interceptor"), + // AttributeValue("top"), + // AttributeValue("ads-base"), + // }, + // }, + // PartialAttribute{ + // type_: AttributeDescription("ads-enabled"), + // vals: []AttributeValue{ + // AttributeValue("TRUE"), + // }, + // }, + // PartialAttribute{ + // type_: AttributeDescription("ads-interceptorclassname"), + // vals: []AttributeValue{ + // AttributeValue("org.apache.directory.server.core.authz.AciAuthorizationInterceptor"), + // }, + // }, + // PartialAttribute{ + // type_: AttributeDescription("ads-interceptororder"), + // vals: []AttributeValue{ + // AttributeValue("4"), + // }, + // }, + // PartialAttribute{ + // type_: AttributeDescription("ads-interceptorid"), + // vals: []AttributeValue{ + // AttributeValue("aciAuthorizationInterceptor"), + // AttributeValue("aciAuthorizationInterceptor2"), + // }, + // }, + // }, + // }, + // controls: (*Controls)(nil), + // }, + // }, + + // // Request 68 + // { + // bytes: Bytes{ + // offset: 0, + // bytes: []byte{ + // // 300c02011165070a010004000400 + // 0x30, 0x0c, 0x02, 0x01, 0x11, 0x65, 0x07, 0x0a, 0x01, 0x00, 0x04, 0x00, 0x04, 0x00, + // }, + // }, + // out: LDAPMessage{ + // messageID: MessageID(17), + // protocolOp: SearchResultDone{ + // resultCode: ENUMERATED(0), + // matchedDN: LDAPDN(""), + // diagnosticMessage: LDAPString(""), + // referral: (*Referral)(nil), + // }, + // controls: (*Controls)(nil), + // }, + // }, + + // // Request 69 + // { + // bytes: Bytes{ + // offset: 0, + // bytes: []byte{ + // // 3081ac0201126381a604676164732d696e746572636570746f7249643d616369417574686f72697a6174696f6e496e746572636570746f72322c6f753d696e746572636570746f72732c6164732d6469726563746f72795365727669636549643d64656661756c742c6f753d636f6e6669670a01010a0103020203e8020100010100870b6f626a656374436c617373301e040f6861735375626f7264696e61746573040b6f626a656374436c617373 + // 0x30, 0x81, 0xac, 0x02, 0x01, 0x12, 0x63, 0x81, 0xa6, 0x04, 0x67, 0x61, 0x64, 0x73, 0x2d, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x63, 0x65, 0x70, 0x74, 0x6f, 0x72, 0x49, 0x64, 0x3d, 0x61, 0x63, 0x69, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x63, 0x65, 0x70, 0x74, 0x6f, 0x72, 0x32, 0x2c, 0x6f, 0x75, 0x3d, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x63, 0x65, 0x70, 0x74, 0x6f, 0x72, 0x73, 0x2c, 0x61, 0x64, 0x73, 0x2d, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x3d, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x2c, 0x6f, 0x75, 0x3d, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x0a, 0x01, 0x01, 0x0a, 0x01, 0x03, 0x02, 0x02, 0x03, 0xe8, 0x02, 0x01, 0x00, 0x01, 0x01, 0x00, 0x87, 0x0b, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x30, 0x1e, 0x04, 0x0f, 0x68, 0x61, 0x73, 0x53, 0x75, 0x62, 0x6f, 0x72, 0x64, 0x69, 0x6e, 0x61, 0x74, 0x65, 0x73, 0x04, 0x0b, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6c, 0x61, 0x73, 0x73, + // }, + // }, + // out: LDAPMessage{ + // messageID: MessageID(18), + // protocolOp: SearchRequest{ + // baseObject: LDAPDN("ads-interceptorId=aciAuthorizationInterceptor2,ou=interceptors,ads-directoryServiceId=default,ou=config"), + // scope: ENUMERATED(1), + // derefAliases: ENUMERATED(3), + // sizeLimit: INTEGER(1000), + // timeLimit: INTEGER(0), + // typesOnly: BOOLEAN(false), + // filter: FilterPresent("objectClass"), + // attributes: AttributeSelection{ + // LDAPString("hasSubordinates"), + // LDAPString("objectClass"), + // }, + // }, + // controls: (*Controls)(nil), + // }, + // }, + + // // Request 70 + // { + // bytes: Bytes{ + // offset: 0, + // bytes: []byte{ + // // 300c02011265070a010004000400 + // 0x30, 0x0c, 0x02, 0x01, 0x12, 0x65, 0x07, 0x0a, 0x01, 0x00, 0x04, 0x00, 0x04, 0x00, + // }, + // }, + // out: LDAPMessage{ + // messageID: MessageID(18), + // protocolOp: SearchResultDone{ + // resultCode: ENUMERATED(0), + // matchedDN: LDAPDN(""), + // diagnosticMessage: LDAPString(""), + // referral: (*Referral)(nil), + // }, + // controls: (*Controls)(nil), + // }, + // }, + + // // Request 71 + // { + // bytes: Bytes{ + // offset: 0, + // bytes: []byte{ + // // 30050201134200 + // 0x30, 0x05, 0x02, 0x01, 0x13, 0x42, 0x00, + // }, + // }, + // out: LDAPMessage{ + // messageID: MessageID(19), + // protocolOp: UnbindRequest{}, + // controls: (*Controls)(nil), + // }, + // }, + + // // Request 72: CLIENT AddRequest + // { + // bytes: Bytes{ + // offset: 0, + // bytes: []byte{ + // // 3081b60201156881b0044a636e3d723030582b636f6d6d6f6e4e616d653d54686520723030582b6465736372697074696f6e3d41207465737420757365722c6f753d636f6e73756d6572732c6f753d73797374656d3062301c040b6465736372697074696f6e310d040b4120746573742075736572300c0402736e310604047230307830160402636e311004047230305804085468652072303058301c040b6f626a656374436c617373310d0406706572736f6e0403746f70 + // 0x30, 0x81, 0xb6, 0x02, 0x01, 0x15, 0x68, 0x81, 0xb0, 0x04, 0x4a, 0x63, 0x6e, 0x3d, 0x72, 0x30, 0x30, 0x58, 0x2b, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x3d, 0x54, 0x68, 0x65, 0x20, 0x72, 0x30, 0x30, 0x58, 0x2b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x3d, 0x41, 0x20, 0x74, 0x65, 0x73, 0x74, 0x20, 0x75, 0x73, 0x65, 0x72, 0x2c, 0x6f, 0x75, 0x3d, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x72, 0x73, 0x2c, 0x6f, 0x75, 0x3d, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x30, 0x62, 0x30, 0x1c, 0x04, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x31, 0x0d, 0x04, 0x0b, 0x41, 0x20, 0x74, 0x65, 0x73, 0x74, 0x20, 0x75, 0x73, 0x65, 0x72, 0x30, 0x0c, 0x04, 0x02, 0x73, 0x6e, 0x31, 0x06, 0x04, 0x04, 0x72, 0x30, 0x30, 0x78, 0x30, 0x16, 0x04, 0x02, 0x63, 0x6e, 0x31, 0x10, 0x04, 0x04, 0x72, 0x30, 0x30, 0x58, 0x04, 0x08, 0x54, 0x68, 0x65, 0x20, 0x72, 0x30, 0x30, 0x58, 0x30, 0x1c, 0x04, 0x0b, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x31, 0x0d, 0x04, 0x06, 0x70, 0x65, 0x72, 0x73, 0x6f, 0x6e, 0x04, 0x03, 0x74, 0x6f, 0x70, + // }, + // }, + // out: LDAPMessage{ + // messageID: MessageID(21), + // protocolOp: AddRequest{ + // entry: LDAPDN("cn=r00X+commonName=The r00X+description=A test user,ou=consumers,ou=system"), + // attributes: AttributeList{ + // Attribute{ + // type_: AttributeDescription("description"), + // vals: []AttributeValue{ + // AttributeValue("A test user"), + // }, + // }, + // Attribute{ + // type_: AttributeDescription("sn"), + // vals: []AttributeValue{ + // AttributeValue("r00x"), + // }, + // }, + // Attribute{ + // type_: AttributeDescription("cn"), + // vals: []AttributeValue{ + // AttributeValue("r00X"), + // AttributeValue("The r00X"), + // }, + // }, + // Attribute{ + // type_: AttributeDescription("objectClass"), + // vals: []AttributeValue{ + // AttributeValue("person"), + // AttributeValue("top"), + // }, + // }, + // }, + // }, + // controls: (*Controls)(nil), + // }, + // }, + + // // Request 73: SERVER AddResponse + // { + // bytes: Bytes{ + // offset: 0, + // bytes: []byte{ + // // 300c02011569070a010004000400 + // 0x30, 0x0c, 0x02, 0x01, 0x15, 0x69, 0x07, 0x0a, 0x01, 0x00, 0x04, 0x00, 0x04, 0x00, + // }, + // }, + // out: LDAPMessage{ + // messageID: MessageID(21), + // protocolOp: AddResponse{ + // resultCode: ENUMERATED(0), + // matchedDN: LDAPDN(""), + // diagnosticMessage: LDAPString(""), + // referral: (*Referral)(nil), + // }, + // controls: (*Controls)(nil), + // }, + // }, + + // // Request 74: CLIENT ModifyRequest + // { + // bytes: Bytes{ + // offset: 0, + // bytes: []byte{ + // // 30790201196674044a636e3d723030582b636f6d6d6f6e6e616d653d54686520723030582b6465736372697074696f6e3d41207465737420757365722c6f753d636f6e73756d6572732c6f753d73797374656d302630240a0100301f040f74656c6570686f6e654e756d626572310c040a30313233343536373839 + // 0x30, 0x79, 0x02, 0x01, 0x19, 0x66, 0x74, 0x04, 0x4a, 0x63, 0x6e, 0x3d, 0x72, 0x30, 0x30, 0x58, 0x2b, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x54, 0x68, 0x65, 0x20, 0x72, 0x30, 0x30, 0x58, 0x2b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x3d, 0x41, 0x20, 0x74, 0x65, 0x73, 0x74, 0x20, 0x75, 0x73, 0x65, 0x72, 0x2c, 0x6f, 0x75, 0x3d, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x72, 0x73, 0x2c, 0x6f, 0x75, 0x3d, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x30, 0x26, 0x30, 0x24, 0x0a, 0x01, 0x00, 0x30, 0x1f, 0x04, 0x0f, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x68, 0x6f, 0x6e, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x31, 0x0c, 0x04, 0x0a, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, + // }, + // }, + // out: LDAPMessage{ + // messageID: MessageID(25), + // protocolOp: ModifyRequest{ + // object: LDAPDN("cn=r00X+commonname=The r00X+description=A test user,ou=consumers,ou=system"), + // changes: []ModifyRequestChange{ + // ModifyRequestChange{ + // operation: ENUMERATED(0), + // modification: PartialAttribute{ + // type_: AttributeDescription("telephoneNumber"), + // vals: []AttributeValue{ + // AttributeValue("0123456789"), + // }, + // }, + // }, + // }, + // }, + // controls: (*Controls)(nil), + // }, + // }, + + // // Request 75: SERVER ModifyResponse + // { + // bytes: Bytes{ + // offset: 0, + // bytes: []byte{ + // // 300c02011967070a010004000400 + // 0x30, 0x0c, 0x02, 0x01, 0x19, 0x67, 0x07, 0x0a, 0x01, 0x00, 0x04, 0x00, 0x04, 0x00, + // }, + // }, + // out: LDAPMessage{ + // messageID: MessageID(25), + // protocolOp: ModifyResponse{ + // resultCode: ENUMERATED(0), + // matchedDN: LDAPDN(""), + // diagnosticMessage: LDAPString(""), + // referral: (*Referral)(nil), + // }, + // controls: (*Controls)(nil), + // }, + // }, + + // // Request 76: CLIENT ModifyDNrequest + // { + // bytes: Bytes{ + // offset: 0, + // bytes: []byte{ + // // 307502011b6c70044a636e3d723030582b636f6d6d6f6e6e616d653d54686520723030582b6465736372697074696f6e3d41207465737420757365722c6f753d636f6e73756d6572732c6f753d73797374656d0407636e3d723030580101ff80166f753d636f6e73756d6572732c6f753d73797374656d + // 0x30, 0x75, 0x02, 0x01, 0x1b, 0x6c, 0x70, 0x04, 0x4a, 0x63, 0x6e, 0x3d, 0x72, 0x30, 0x30, 0x58, 0x2b, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x54, 0x68, 0x65, 0x20, 0x72, 0x30, 0x30, 0x58, 0x2b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x3d, 0x41, 0x20, 0x74, 0x65, 0x73, 0x74, 0x20, 0x75, 0x73, 0x65, 0x72, 0x2c, 0x6f, 0x75, 0x3d, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x72, 0x73, 0x2c, 0x6f, 0x75, 0x3d, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x04, 0x07, 0x63, 0x6e, 0x3d, 0x72, 0x30, 0x30, 0x58, 0x01, 0x01, 0xff, 0x80, 0x16, 0x6f, 0x75, 0x3d, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x72, 0x73, 0x2c, 0x6f, 0x75, 0x3d, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, + // }, + // }, + // out: LDAPMessage{ + // messageID: MessageID(27), + // protocolOp: ModifyDNRequest{ + // entry: LDAPDN("cn=r00X+commonname=The r00X+description=A test user,ou=consumers,ou=system"), + // newrdn: RelativeLDAPDN("cn=r00X"), + // deleteoldrdn: BOOLEAN(true), + // newSuperior: LDAPDN("ou=consumers,ou=system").Pointer(), + // }, + // controls: (*Controls)(nil), + // }, + // }, + + // // Request 77: SERVER ModifyDNResponse + // { + // bytes: Bytes{ + // offset: 0, + // bytes: []byte{ + // // 300c02011b6d070a010004000400 + // 0x30, 0x0c, 0x02, 0x01, 0x1b, 0x6d, 0x07, 0x0a, 0x01, 0x00, 0x04, 0x00, 0x04, 0x00, + // }, + // }, + // out: LDAPMessage{ + // messageID: MessageID(27), + // protocolOp: ModifyDNResponse{ + // resultCode: ENUMERATED(0), + // matchedDN: LDAPDN(""), + // diagnosticMessage: LDAPString(""), + // referral: (*Referral)(nil), + // }, + // controls: (*Controls)(nil), + // }, + // }, + + // // Request 78: CLIENT + // { + // bytes: Bytes{ + // offset: 0, + // bytes: []byte{ + // // 303b020121633604096f753d73797374656d0a01020a0103020203e8020100010100a30a0402636e040472303058300d040b6f626a656374436c617373 + // 0x30, 0x3b, 0x02, 0x01, 0x21, 0x63, 0x36, 0x04, 0x09, 0x6f, 0x75, 0x3d, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x0a, 0x01, 0x02, 0x0a, 0x01, 0x03, 0x02, 0x02, 0x03, 0xe8, 0x02, 0x01, 0x00, 0x01, 0x01, 0x00, 0xa3, 0x0a, 0x04, 0x02, 0x63, 0x6e, 0x04, 0x04, 0x72, 0x30, 0x30, 0x58, 0x30, 0x0d, 0x04, 0x0b, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6c, 0x61, 0x73, 0x73, + // }, + // }, + // out: LDAPMessage{ + // messageID: MessageID(33), + // protocolOp: SearchRequest{ + // baseObject: LDAPDN("ou=system"), + // scope: ENUMERATED(2), + // derefAliases: ENUMERATED(3), + // sizeLimit: INTEGER(1000), + // timeLimit: INTEGER(0), + // typesOnly: BOOLEAN(false), + // filter: FilterEqualityMatch{ + // attributeDesc: AttributeDescription("cn"), + // assertionValue: AssertionValue("r00X"), + // }, + // attributes: AttributeSelection{ + // LDAPString("objectClass"), + // }, + // }, + // controls: (*Controls)(nil), + // }, + // }, + + // // Request 79: SERVER + // { + // bytes: Bytes{ + // offset: 0, + // bytes: []byte{ + // // 30450201216440041e636e3d723030582c6f753d636f6e73756d6572732c6f753d73797374656d301e301c040b6f626a656374436c617373310d0403746f700406706572736f6e + // 0x30, 0x45, 0x02, 0x01, 0x21, 0x64, 0x40, 0x04, 0x1e, 0x63, 0x6e, 0x3d, 0x72, 0x30, 0x30, 0x58, 0x2c, 0x6f, 0x75, 0x3d, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x72, 0x73, 0x2c, 0x6f, 0x75, 0x3d, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x30, 0x1e, 0x30, 0x1c, 0x04, 0x0b, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x31, 0x0d, 0x04, 0x03, 0x74, 0x6f, 0x70, 0x04, 0x06, 0x70, 0x65, 0x72, 0x73, 0x6f, 0x6e, + // }, + // }, + // out: LDAPMessage{ + // messageID: MessageID(33), + // protocolOp: SearchResultEntry{ + // objectName: LDAPDN("cn=r00X,ou=consumers,ou=system"), + // attributes: PartialAttributeList{ + // PartialAttribute{ + // type_: AttributeDescription("objectClass"), + // vals: []AttributeValue{ + // AttributeValue("top"), + // AttributeValue("person"), + // }, + // }, + // }, + // }, + // controls: (*Controls)(nil), + // }, + // }, + + // // Request 80: SERVER + // { + // bytes: Bytes{ + // offset: 0, + // bytes: []byte{ + // // 300c02012165070a010004000400 + // 0x30, 0x0c, 0x02, 0x01, 0x21, 0x65, 0x07, 0x0a, 0x01, 0x00, 0x04, 0x00, 0x04, 0x00, + // }, + // }, + // out: LDAPMessage{ + // messageID: MessageID(33), + // protocolOp: SearchResultDone{ + // resultCode: ENUMERATED(0), + // matchedDN: LDAPDN(""), + // diagnosticMessage: LDAPString(""), + // referral: (*Referral)(nil), + // }, + // controls: (*Controls)(nil), + // }, + // }, + + // // Request 81: CLIENT SearchRequest with controls + // { + // bytes: Bytes{ + // offset: 0, + // bytes: []byte{ + // // 30819c020124633704096f753d73797374656d0a01020a0103020203e8020100010100870b6f626a656374436c617373300d040b6f626a656374436c617373a05e301e0417312e332e362e312e342e312e343230332e312e31302e3104030101ff30190417322e31362e3834302e312e3131333733302e332e342e3230210416312e322e3834302e3131333535362e312e342e333139040730050201030400 + // 0x30, 0x81, 0x9c, 0x02, 0x01, 0x24, 0x63, 0x37, 0x04, 0x09, 0x6f, 0x75, 0x3d, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x0a, 0x01, 0x02, 0x0a, 0x01, 0x03, 0x02, 0x02, 0x03, 0xe8, 0x02, 0x01, 0x00, 0x01, 0x01, 0x00, 0x87, 0x0b, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x30, 0x0d, 0x04, 0x0b, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6c, 0x61, 0x73, 0x73, 0xa0, 0x5e, 0x30, 0x1e, 0x04, 0x17, 0x31, 0x2e, 0x33, 0x2e, 0x36, 0x2e, 0x31, 0x2e, 0x34, 0x2e, 0x31, 0x2e, 0x34, 0x32, 0x30, 0x33, 0x2e, 0x31, 0x2e, 0x31, 0x30, 0x2e, 0x31, 0x04, 0x03, 0x01, 0x01, 0xff, 0x30, 0x19, 0x04, 0x17, 0x32, 0x2e, 0x31, 0x36, 0x2e, 0x38, 0x34, 0x30, 0x2e, 0x31, 0x2e, 0x31, 0x31, 0x33, 0x37, 0x33, 0x30, 0x2e, 0x33, 0x2e, 0x34, 0x2e, 0x32, 0x30, 0x21, 0x04, 0x16, 0x31, 0x2e, 0x32, 0x2e, 0x38, 0x34, 0x30, 0x2e, 0x31, 0x31, 0x33, 0x35, 0x35, 0x36, 0x2e, 0x31, 0x2e, 0x34, 0x2e, 0x33, 0x31, 0x39, 0x04, 0x07, 0x30, 0x05, 0x02, 0x01, 0x03, 0x04, 0x00, + // }, + // }, + // out: LDAPMessage{ + // messageID: MessageID(36), + // protocolOp: SearchRequest{ + // baseObject: LDAPDN("ou=system"), + // scope: ENUMERATED(2), + // derefAliases: ENUMERATED(3), + // sizeLimit: INTEGER(1000), + // timeLimit: INTEGER(0), + // typesOnly: BOOLEAN(false), + // filter: FilterPresent("objectClass"), + // attributes: AttributeSelection{ + // LDAPString("objectClass"), + // }, + // }, + // controls: &Controls{ + // Control{ + // controlType: LDAPOID("1.3.6.1.4.1.4203.1.10.1"), + // criticality: BOOLEAN(false), + // controlValue: OCTETSTRING("\x01\x01\xff").Pointer(), + // }, + // Control{ + // controlType: LDAPOID("2.16.840.1.113730.3.4.2"), + // criticality: BOOLEAN(false), + // controlValue: (*OCTETSTRING)(nil), + // }, + // Control{ + // controlType: LDAPOID("1.2.840.113556.1.4.319"), + // criticality: BOOLEAN(false), + // controlValue: OCTETSTRING("0\x05\x02\x01\x03\x04\x00").Pointer(), + // }, + // }, + // }, + // }, + + // // (| + // // (& + // // (cn=r00x) + // // (telephoneNumber=*) + // // ) + // // (cn~=The) + // // (& + // // (!(description=Toto)) + // // (ou=co*f*g*r*on) + // // ) + // // ) + // // Request 83: CLIENT + // { + // bytes: Bytes{ + // offset: 0, + // bytes: []byte{ + // // 30818e02010d63818804096f753d73797374656d0a01020a0103020203e8020100010100a15ca01da30a0402636e040472303078870f74656c6570686f6e654e756d626572a8090402636e0403546865a030a215a313040b6465736372697074696f6e0404546f746fa41704026f7530118002636f81016681016781017282026f6e300d040b6f626a656374436c617373 + // 0x30, 0x81, 0x8e, 0x02, 0x01, 0x0d, 0x63, 0x81, 0x88, 0x04, 0x09, 0x6f, 0x75, 0x3d, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x0a, 0x01, 0x02, 0x0a, 0x01, 0x03, 0x02, 0x02, 0x03, 0xe8, 0x02, 0x01, 0x00, 0x01, 0x01, 0x00, 0xa1, 0x5c, 0xa0, 0x1d, 0xa3, 0x0a, 0x04, 0x02, 0x63, 0x6e, 0x04, 0x04, 0x72, 0x30, 0x30, 0x78, 0x87, 0x0f, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x68, 0x6f, 0x6e, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0xa8, 0x09, 0x04, 0x02, 0x63, 0x6e, 0x04, 0x03, 0x54, 0x68, 0x65, 0xa0, 0x30, 0xa2, 0x15, 0xa3, 0x13, 0x04, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x04, 0x04, 0x54, 0x6f, 0x74, 0x6f, 0xa4, 0x17, 0x04, 0x02, 0x6f, 0x75, 0x30, 0x11, 0x80, 0x02, 0x63, 0x6f, 0x81, 0x01, 0x66, 0x81, 0x01, 0x67, 0x81, 0x01, 0x72, 0x82, 0x02, 0x6f, 0x6e, 0x30, 0x0d, 0x04, 0x0b, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6c, 0x61, 0x73, 0x73, + // }, + // }, + // out: LDAPMessage{ + // messageID: MessageID(13), + // protocolOp: SearchRequest{ + // baseObject: LDAPDN("ou=system"), + // scope: ENUMERATED(2), + // derefAliases: ENUMERATED(3), + // sizeLimit: INTEGER(1000), + // timeLimit: INTEGER(0), + // typesOnly: BOOLEAN(false), + // filter: FilterOr{ + // FilterAnd{ + // FilterEqualityMatch{ + // attributeDesc: AttributeDescription("cn"), + // assertionValue: AssertionValue("r00x"), + // }, + // FilterPresent("telephoneNumber"), + // }, + // FilterApproxMatch{ + // attributeDesc: AttributeDescription("cn"), + // assertionValue: AssertionValue("The"), + // }, + // FilterAnd{ + // FilterNot{ + // Filter: FilterEqualityMatch{ + // attributeDesc: AttributeDescription("description"), + // assertionValue: AssertionValue("Toto"), + // }, + // }, + // FilterSubstrings{ + // type_: AttributeDescription("ou"), + // substrings: []Substring{ + // SubstringInitial("co"), + // SubstringAny("f"), + // SubstringAny("g"), + // SubstringAny("r"), + // SubstringFinal("on"), + // }, + // }, + // }, + // }, + // attributes: AttributeSelection{ + // LDAPString("objectClass"), + // }, + // }, + // controls: (*Controls)(nil), + // }, + // }, + + // // Request 84: CLIENT SearchRequest with FilterGreaterOrEqual and FilterLessOrEqual + // { + // bytes: Bytes{ + // offset: 0, + // bytes: []byte{ + // // 3072020119636d04000a01020a0103020203e8020100010100a04aa523041e6164732d636867507764506f6c69637950617373776f72644c656e677468040133a623041e6164732d636867507764506f6c69637950617373776f72644c656e677468040135300d040b6f626a656374436c617373 + // 0x30, 0x72, 0x02, 0x01, 0x19, 0x63, 0x6d, 0x04, 0x00, 0x0a, 0x01, 0x02, 0x0a, 0x01, 0x03, 0x02, 0x02, 0x03, 0xe8, 0x02, 0x01, 0x00, 0x01, 0x01, 0x00, 0xa0, 0x4a, 0xa5, 0x23, 0x04, 0x1e, 0x61, 0x64, 0x73, 0x2d, 0x63, 0x68, 0x67, 0x50, 0x77, 0x64, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x04, 0x01, 0x33, 0xa6, 0x23, 0x04, 0x1e, 0x61, 0x64, 0x73, 0x2d, 0x63, 0x68, 0x67, 0x50, 0x77, 0x64, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x04, 0x01, 0x35, 0x30, 0x0d, 0x04, 0x0b, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6c, 0x61, 0x73, 0x73, + // }, + // }, + // out: LDAPMessage{ + // messageID: MessageID(25), + // protocolOp: SearchRequest{ + // baseObject: LDAPDN(""), + // scope: ENUMERATED(2), + // derefAliases: ENUMERATED(3), + // sizeLimit: INTEGER(1000), + // timeLimit: INTEGER(0), + // typesOnly: BOOLEAN(false), + // filter: FilterAnd{ + // FilterGreaterOrEqual{ + // attributeDesc: AttributeDescription("ads-chgPwdPolicyPasswordLength"), + // assertionValue: AssertionValue("3"), + // }, + // FilterLessOrEqual{ + // attributeDesc: AttributeDescription("ads-chgPwdPolicyPasswordLength"), + // assertionValue: AssertionValue("5"), + // }, + // }, + // attributes: AttributeSelection{ + // LDAPString("objectClass"), + // }, + // }, + // controls: (*Controls)(nil), + // }, + // }, + + // // Request 85: CLIENT SearchRequest with FilterExtensibleMatch + // { + // bytes: Bytes{ + // offset: 0, + // bytes: []byte{ + // // 3074020131636f04166f753d636f6e73756d6572732c6f753d73797374656d0a01020a0103020203e8020100010100a936811474656c6570686f6e654e756d6265724d61746368820f74656c6570686f6e654e756d626572830a303132333435363738398401ff300d040b6f626a656374436c617373 + // 0x30, 0x74, 0x02, 0x01, 0x31, 0x63, 0x6f, 0x04, 0x16, 0x6f, 0x75, 0x3d, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x72, 0x73, 0x2c, 0x6f, 0x75, 0x3d, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x0a, 0x01, 0x02, 0x0a, 0x01, 0x03, 0x02, 0x02, 0x03, 0xe8, 0x02, 0x01, 0x00, 0x01, 0x01, 0x00, 0xa9, 0x36, 0x81, 0x14, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x68, 0x6f, 0x6e, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x82, 0x0f, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x68, 0x6f, 0x6e, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x83, 0x0a, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x84, 0x01, 0xff, 0x30, 0x0d, 0x04, 0x0b, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6c, 0x61, 0x73, 0x73, + // }, + // }, + // out: LDAPMessage{ + // messageID: MessageID(49), + // protocolOp: SearchRequest{ + // baseObject: LDAPDN("ou=consumers,ou=system"), + // scope: ENUMERATED(2), + // derefAliases: ENUMERATED(3), + // sizeLimit: INTEGER(1000), + // timeLimit: INTEGER(0), + // typesOnly: BOOLEAN(false), + // filter: FilterExtensibleMatch{ + // matchingRule: MatchingRuleId("telephoneNumberMatch").Pointer(), + // type_: AttributeDescription("telephoneNumber").Pointer(), + // matchValue: AssertionValue("0123456789"), + // dnAttributes: BOOLEAN(true), + // }, + // attributes: AttributeSelection{ + // LDAPString("objectClass"), + // }, + // }, + // controls: (*Controls)(nil), + // }, + // }, + + // // Request 86: CLIENT + // { + // bytes: Bytes{ + // offset: 0, + // bytes: []byte{ + // // 30400201274a3b636e3d4120636f6d706c657820706572736f6e5c2c207665727920636f6d706c657820212c6f753d636f6e73756d6572732c6f753d73797374656d + // 0x30, 0x40, 0x02, 0x01, 0x27, 0x4a, 0x3b, 0x63, 0x6e, 0x3d, 0x41, 0x20, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x78, 0x20, 0x70, 0x65, 0x72, 0x73, 0x6f, 0x6e, 0x5c, 0x2c, 0x20, 0x76, 0x65, 0x72, 0x79, 0x20, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x78, 0x20, 0x21, 0x2c, 0x6f, 0x75, 0x3d, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x72, 0x73, 0x2c, 0x6f, 0x75, 0x3d, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, + // }, + // }, + // out: LDAPMessage{ + // messageID: MessageID(39), + // protocolOp: DelRequest("cn=A complex person\\, very complex !,ou=consumers,ou=system"), + // controls: (*Controls)(nil), + // }, + // }, + + // // Request 87: SERVER + // { + // bytes: Bytes{ + // offset: 0, + // bytes: []byte{ + // // 300c0201276b070a010004000400 + // 0x30, 0x0c, 0x02, 0x01, 0x27, 0x6b, 0x07, 0x0a, 0x01, 0x00, 0x04, 0x00, 0x04, 0x00, + // }, + // }, + // out: LDAPMessage{ + // messageID: MessageID(39), + // protocolOp: DelResponse{ + // resultCode: ENUMERATED(0), + // matchedDN: LDAPDN(""), + // diagnosticMessage: LDAPString(""), + // referral: (*Referral)(nil), + // }, + // controls: (*Controls)(nil), + // }, + // }, + + // // Request 88: CLIENT ExtendedRequest: Start TLS (OID 1.3.6.1.4.1.1466.20037) + // { + // bytes: Bytes{ + // offset: 0, + // bytes: []byte{ + // // 301d02010177188016312e332e362e312e342e312e313436362e3230303337 + // 0x30, 0x1d, 0x02, 0x01, 0x01, 0x77, 0x18, 0x80, 0x16, 0x31, 0x2e, 0x33, 0x2e, 0x36, 0x2e, 0x31, 0x2e, 0x34, 0x2e, 0x31, 0x2e, 0x31, 0x34, 0x36, 0x36, 0x2e, 0x32, 0x30, 0x30, 0x33, 0x37, + // }, + // }, + // out: LDAPMessage{ + // messageID: MessageID(1), + // protocolOp: ExtendedRequest{ + // requestName: LDAPOID("1.3.6.1.4.1.1466.20037"), + // requestValue: (*OCTETSTRING)(nil), + // }, + // controls: (*Controls)(nil), + // }, + // }, + + // // Request 89: SERVER ExtendedResponse: Start TLS (OID 1.3.6.1.4.1.1466.20037) + // { + // bytes: Bytes{ + // offset: 0, + // bytes: []byte{ + // // 302602010178210a0100040004008a16312e332e362e312e342e312e313436362e32303033378b00 + // 0x30, 0x26, 0x02, 0x01, 0x01, 0x78, 0x21, 0x0a, 0x01, 0x00, 0x04, 0x00, 0x04, 0x00, 0x8a, 0x16, 0x31, 0x2e, 0x33, 0x2e, 0x36, 0x2e, 0x31, 0x2e, 0x34, 0x2e, 0x31, 0x2e, 0x31, 0x34, 0x36, 0x36, 0x2e, 0x32, 0x30, 0x30, 0x33, 0x37, 0x8b, 0x00, + // }, + // }, + // out: LDAPMessage{ + // messageID: MessageID(1), + // protocolOp: ExtendedResponse{ + // LDAPResult: LDAPResult{ + // resultCode: ENUMERATED(0), + // matchedDN: LDAPDN(""), + // diagnosticMessage: LDAPString(""), + // referral: (*Referral)(nil), + // }, + // responseName: LDAPOID("1.3.6.1.4.1.1466.20037").Pointer(), + // responseValue: OCTETSTRING("").Pointer(), + // }, + // controls: (*Controls)(nil), + // }, + // }, + + // // A bind request with a simple login / password authentication + // { + // bytes: Bytes{ + // offset: 0, + // bytes: []byte{ + // 0x30, 0x1d, + // 0x02, 0x01, 0x01, // messageID + // 0x60, 0x18, // Application, tag 0 => this is a Bind request + // 0x02, 0x01, 0x03, // Version 3 + // 0x04, 0x07, 0x6d, 0x79, 0x4c, 0x6f, 0x67, 0x69, 0x6e, // login = myLogin + // 0x80, 0x0a, 0x6d, 0x79, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, // simple authentication: myPassword + // }, + // }, + // out: LDAPMessage{ + // messageID: MessageID(int(0x01)), + // protocolOp: BindRequest{ + // version: 0x03, + // name: LDAPDN("myLogin"), + // authentication: OCTETSTRING([]byte("myPassword")), + // }, + // }, + // }, + // // A bind request with SASL (CRAM-MD5) + // { + // bytes: Bytes{ + // offset: 0, + // bytes: []byte{ + // 0x30, 0x16, + // 0x02, 0x01, 0x01, // messageID + // 0x60, 0x11, + // 0x02, 0x01, 0x03, // version 3 + // 0x04, 0x00, // no login + // 0xa3, 0x0a, 0x04, 0x08, 0x43, 0x52, 0x41, 0x4d, 0x2d, 0x4d, 0x44, 0x35, // SASL mechanism "CRAM-MD5", no credentials + // }, + // }, + // out: LDAPMessage{ + // messageID: MessageID(int(0x01)), + // protocolOp: BindRequest{ + // version: 0x03, + // name: LDAPDN(""), + // authentication: SaslCredentials{ + // mechanism: LDAPString("CRAM-MD5"), + // }, + // }, + // }, + // }, + } +} |