Example #1
0
        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;

            resultCode      = new LDAPResult_resultCode();
            valueLenDecode += resultCode.BerDecode(buffer);
            matchedDN       = new LDAPDN();
            valueLenDecode += matchedDN.BerDecode(buffer);
            errorMessage    = new LDAPString();
            valueLenDecode += errorMessage.BerDecode(buffer);
            if (valueLenDecode == valueLen)
            {
                referral = null;
            }
            else
            {
                Asn1Tag contextTag;
                valueLenDecode += TagBerDecode(buffer, out contextTag);
                referral        = new Referral();
                valueLenDecode += referral.BerDecodeWithoutUnisersalTag(buffer);
            }
            if (valueLen != valueLenDecode)
            {
                throw new Asn1DecodingUnexpectedData(ExceptionMessages.DecodingUnexpectedData + " LDAPResult.");
            }
            return(headLen + valueLen);
        }