Esempio n. 1
0
        public override void ReadBody(NdrBinaryStream Stream)
        {
            ClaimSetSize = Stream.ReadInt();

            Stream.Seek(4);

            CompressionFormat        = (CompressionFormat)Stream.ReadInt();
            UncompressedClaimSetSize = Stream.ReadInt();
            ReservedType             = Stream.ReadShort();
            ReservedFieldSize        = Stream.ReadInt();

            Stream.Align(8);

            var size = Stream.ReadInt();

            if (size != ClaimSetSize)
            {
                throw new InvalidDataException($"Data length {size} doesn't match expected ClaimSetSize {ClaimSetSize}");
            }

            var claimSet = Stream.ReadSpan(ClaimSetSize);

            if (CompressionFormat != CompressionFormat.COMPRESSION_FORMAT_NONE)
            {
                claimSet = Compressions.Decompress(claimSet, UncompressedClaimSetSize, CompressionFormat);
            }

            ClaimsSet = new ClaimsSet();
            ClaimsSet.Decode(claimSet.AsMemory());

            ReservedField = Stream.Read(ReservedFieldSize);
        }
Esempio n. 2
0
        public override void ReadBody(NdrBinaryStream stream)
        {
            UpnLength = stream.ReadShort();
            UpnOffset = stream.ReadShort();

            DnsDomainNameLength = stream.ReadShort();
            DnsDomainNameOffset = stream.ReadShort();

            Flags = (UpnDomainFlags)stream.ReadInt();

            stream.Align(8);

            Upn = Encoding.Unicode.GetString(stream.Read(UpnLength));

            stream.Align(8);

            Domain = Encoding.Unicode.GetString(stream.Read(DnsDomainNameLength));
        }
Esempio n. 3
0
        public override void WriteBody(NdrBinaryStream stream)
        {
            var upnBytes    = Encoding.Unicode.GetBytes(Upn);
            var domainBytes = Encoding.Unicode.GetBytes(Domain);

            stream.WriteShort((short)upnBytes.Length);
            stream.WriteShort(2 + 2 + 2 + 2 + 4 + 4); // + 4 to align on 8 boundary

            stream.WriteShort((short)domainBytes.Length);
            stream.WriteShort((short)(2 + 2 + 2 + 2 + 4 + 4 + upnBytes.Length));

            stream.WriteUnsignedInt((int)Flags);

            stream.Align(8);

            stream.WriteBytes(upnBytes);

            stream.Align(8);

            stream.WriteBytes(domainBytes);
        }