public ClaimEntry(NdrBinaryReader pacStream) { pacStream.Seek(4); Type = (ClaimType)pacStream.ReadShort(); pacStream.Align(4); Count = pacStream.ReadUnsignedInt(); pacStream.Seek(4); }
internal void ReadValue(NdrBinaryReader stream) { Id = stream.ReadString(); stream.Align(4); var count = stream.ReadInt(); if (count != Count) { throw new InvalidDataException($"ValueCount {Count} doesn't match actual count {count} for claim {Id}."); } if (Type == ClaimType.CLAIM_TYPE_STRING) { var ptr = stream.ReadInt(); if (count > 1 && ptr != 0) { stream.Seek(8); } } ReadValues(stream); }
public ClaimsArray(NdrBinaryReader pacStream) { ClaimSource = (ClaimSourceType)pacStream.ReadInt(); Count = pacStream.ReadUnsignedInt(); var claims = new List <ClaimEntry>(); pacStream.Seek(4); var count = pacStream.ReadInt(); if (Count != count) { throw new InvalidDataException($"Claims count {Count} doesn't match actual count {count}"); } for (var i = 0; i < Count; i++) { claims.Add(new ClaimEntry(pacStream)); } foreach (var entry in claims) { entry.ReadValue(pacStream); } ClaimEntries = claims; }
public ClaimsSet(byte[] claims) { var pacStream = new NdrBinaryReader(claims); Header = new RpcHeader(pacStream); Count = pacStream.ReadInt(); pacStream.Seek(4); ReservedType = pacStream.ReadShort(); ReservedFieldSize = pacStream.ReadInt(); ReservedField = pacStream.Read(ReservedFieldSize); pacStream.Align(8); ClaimsArray = ReadClaimsArray(pacStream); }