public override int BerDecode(IAsn1DecodingBuffer buffer, bool explicitTag = true) { Asn1Tag asn1Tag; int headLen = 0, valueLen = 0, tagLength = 0; if (explicitTag) { headLen += TagBerDecode(buffer, out asn1Tag); headLen += LengthBerDecode(buffer, out valueLen); } int valueLenDecode = 0; messageID = new MessageID(); valueLenDecode += messageID.BerDecode(buffer, true); protocolOp = new LDAPMessage_protocolOp(); valueLenDecode += protocolOp.BerDecode(buffer, true); asn1Tag = new Asn1Tag(Asn1TagType.Context, 0) { EncodingWay = EncodingWay.Constructed }; if (IsTagMatch(buffer, asn1Tag, out tagLength, true)) { controls = new Controls(); valueLenDecode += controls.BerDecode(buffer, false); } valueLenDecode += tagLength; return(headLen + valueLenDecode); }
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 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); }