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); }
public ClaimsSetMetadata(byte[] data) { var pacStream = new NdrBinaryReader(data); Header = new RpcHeader(pacStream); ClaimSetSize = pacStream.ReadInt(); pacStream.Seek(4); CompressionFormat = (CompressionFormat)pacStream.ReadInt(); UncompressedClaimSetSize = pacStream.ReadInt(); ReservedType = pacStream.ReadShort(); ReservedFieldSize = pacStream.ReadInt(); pacStream.Align(8); var size = pacStream.ReadInt(); if (size != ClaimSetSize) { throw new InvalidDataException($"Data length {size} doesn't match expected ClaimSetSize {ClaimSetSize}"); } var claimSet = pacStream.Read(ClaimSetSize); if (CompressionFormat != CompressionFormat.COMPRESSION_FORMAT_NONE) { claimSet = Compressions.Decompress(claimSet, UncompressedClaimSetSize, CompressionFormat); } ClaimsSet = new ClaimsSet(claimSet); ReservedField = pacStream.Read(ReservedFieldSize); }
private ClaimsSet UnmarshalClaimsSet(ReadOnlyMemory <byte> claimSet) { if (CompressionFormat != CompressionFormat.COMPRESSION_FORMAT_NONE) { claimSet = Compressions.Decompress(claimSet.Span, UncompressedClaimSetSize, CompressionFormat); } var claimsSet = new ClaimsSet(); new NdrBuffer(claimSet).UnmarshalObject(claimsSet); return(claimsSet); }
private ClaimsSet UnmarshalClaimsSet(ReadOnlyMemory <byte> claimSet) { if (this.CompressionFormat != CompressionFormat.COMPRESSION_FORMAT_NONE) { claimSet = Compressions.Decompress(claimSet.Span, this.UncompressedClaimSetSize, this.CompressionFormat); } var claimsSet = new ClaimsSet(); using (var buffer = new NdrBuffer(claimSet)) { buffer.UnmarshalObject(claimsSet); } return(claimsSet); }