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 void ClaimsSetTest() { try { var set = new ClaimsSet("{\"typ\":\"JWT\", \"alg\":\"HS256\"}"); var keys = set.ToList(); set["awkward"] = (int)24; set["typ"] = "Scooby"; set["hmm"] = 42; var json = set.ToString(); var set2 = new ClaimsSet(json); Assert.AreEqual(set2["typ"], "Scooby"); Assert.AreEqual(set2["alg"], "HS256"); Assert.AreEqual((long)set2["awkward"], 24L); Assert.AreEqual((long)set2["hmm"], 42L); } catch (Exception ex) { throw; } }
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); }
private static ReadOnlySpan <byte> Compress(ClaimsSet claimsSet, CompressionFormat compressionFormat, out int originalSize) { var buffer = new NdrBuffer(); buffer.MarshalObject(claimsSet); ReadOnlySpan <byte> encoded = buffer.ToSpan(alignment: 8); originalSize = encoded.Length; if (compressionFormat != CompressionFormat.COMPRESSION_FORMAT_NONE) { encoded = Compressions.Compress(encoded, compressionFormat); } return(encoded); }
private static ReadOnlySpan <byte> Compress(ClaimsSet claimsSet, CompressionFormat compressionFormat, out int originalSize) { var stream = new NdrBinaryStream(); claimsSet.Encode(stream); var encoded = stream.ToSpan(); originalSize = encoded.Length; if (compressionFormat != CompressionFormat.COMPRESSION_FORMAT_NONE) { encoded = Compressions.Compress(encoded, compressionFormat); } return(encoded); }