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;
                serverSaslCreds = null;
            }
            else
            {
                Asn1Tag contextTag;
                valueLenDecode += TagBerDecode(buffer, out contextTag);
                if (contextTag.TagValue == 3)
                {
                    //referral
                    referral        = new Referral();
                    valueLenDecode += referral.BerDecodeWithoutUnisersalTag(buffer);
                    if (valueLenDecode < valueLen)
                    {
                        valueLenDecode += TagBerDecode(buffer, out contextTag);
                    }
                }
                if (contextTag.TagValue == 7)
                {
                    //serverSaslCreds
                    serverSaslCreds = new Asn1OctetString();
                    valueLenDecode += serverSaslCreds.BerDecodeWithoutUnisersalTag(buffer);
                }
            }
            if (valueLen != valueLenDecode)
            {
                throw new Asn1DecodingUnexpectedData(ExceptionMessages.DecodingUnexpectedData + " BindResponse.");
            }
            return(headLen + valueLen);
        }
Example #2
0
        public override int BerDecode(IAsn1DecodingBuffer buffer, bool explicitTag = true)
        {
            int     allLen = 0;
            Asn1Tag contextTag;

            allLen += TagBerDecode(buffer, out contextTag);
            switch (contextTag.TagValue)
            {
            case 0:
                field0  = new Asn1OctetString();
                allLen += field0.BerDecodeWithoutUnisersalTag(buffer);
                SetData(1, field0);
                break;

            case 3:
                field1  = new SaslCredentials();
                allLen += field1.BerDecodeWithoutUnisersalTag(buffer);
                SetData(2, field1);
                break;

            case 9:
                field2  = new Asn1OctetString();
                allLen += field2.BerDecodeWithoutUnisersalTag(buffer);
                SetData(3, field2);
                break;

            case 10:
                field3  = new Asn1OctetString();
                allLen += field3.BerDecodeWithoutUnisersalTag(buffer);
                SetData(4, field3);
                break;

            case 11:
                field4  = new Asn1OctetString();
                allLen += field4.BerDecodeWithoutUnisersalTag(buffer);
                SetData(5, field4);
                break;

            default:
                throw new Asn1DecodingUnexpectedData(ExceptionMessages.DecodingUnexpectedData + " AuthenticationChoice");
            }
            return(allLen);
        }