public override int BerDecode(IAsn1DecodingBuffer buffer, bool explicitTag = true) { int headLen = 0; Asn1Tag seqTag; headLen += TagBerDecode(buffer, out seqTag); int valueLen; headLen += LengthBerDecode(buffer, out valueLen); int valueLenDecode = 0; messageID = new MessageID(); valueLenDecode += messageID.BerDecode(buffer); protocolOp = new LDAPMessage_protocolOp(); valueLenDecode += protocolOp.BerDecode(buffer); if (valueLenDecode == valueLen) { controls = null; } else { Asn1Tag contextTag; valueLenDecode += TagBerDecode(buffer, out contextTag); controls = new Controls(); valueLenDecode += controls.BerDecodeWithoutUnisersalTag(buffer); } if (valueLen != valueLenDecode) { throw new Asn1DecodingUnexpectedData(ExceptionMessages.DecodingUnexpectedData + " LDAPResult."); } return headLen + valueLen; }
public LDAPMessage( MessageID messageID, LDAPMessage_protocolOp protocolOp, Controls controls) { this.messageID = messageID; this.protocolOp = protocolOp; this.controls = controls; }
/// <summary> /// Creates a BindRequestPacket with context and BindRequest. /// </summary> /// <param name="context">The context.</param> /// <param name="bindRequest">The BindRequest message.</param> /// <returns>The BindRequestPacket.</returns> private AdtsBindRequestPacket CreateBindRequestPacket( AdtsLdapContext context, BindRequest bindRequest) { LDAPMessage_protocolOp operation = new LDAPMessage_protocolOp(); operation.SetData(LDAPMessage_protocolOp.bindRequest, bindRequest); MessageID messageId = new MessageID(context.MessageId); LDAPMessage message = new LDAPMessage(messageId, operation, null); AdtsBindRequestPacket packet = new AdtsBindRequestPacket(); packet.ldapMessagev3 = message; packet.messageId = context.MessageId; return packet; }