public override CborWriter Write(CborWriter writer) { base.Write(writer); writer.Write(Value); return writer; }
public static void WriteEncodedValue_RootValue_HappyPath(string hexEncodedValue) { byte[] encodedValue = hexEncodedValue.HexToByteArray(); var writer = new CborWriter(); writer.WriteEncodedValue(encodedValue); string hexResult = writer.Encode().ByteArrayToHex(); Assert.Equal(hexEncodedValue, hexResult.ToLower()); }
public void DecodeSign1_IncorrectStructure() { var writer = new CborWriter(); writer.WriteStartArray(4); writer.WriteNull(); writer.WriteNull(); writer.WriteNull(); writer.WriteNull(); writer.WriteEndArray(); Assert.Throws <CryptographicException>(() => CoseMessage.DecodeSign1(writer.Encode())); }
public static void WriteEncodedValue_IndefiniteLengthByteString_HappyPath() { var writer = new CborWriter(convertIndefiniteLengthEncodings: false); writer.WriteStartIndefiniteLengthByteString(); writer.WriteByteString(new byte[] { 1, 1, 1 }); writer.WriteEncodedValue("43020202".HexToByteArray()); writer.WriteEndIndefiniteLengthByteString(); byte[] encoding = writer.Encode(); Assert.Equal("5f4301010143020202ff", encoding.ByteArrayToHex().ToLower()); }
public static void WriteEncodedValue_IndefiniteLengthTextString_HappyPath() { var writer = new CborWriter(convertIndefiniteLengthEncodings: false); writer.WriteStartIndefiniteLengthTextString(); writer.WriteTextString("foo"); writer.WriteEncodedValue("63626172".HexToByteArray()); writer.WriteEndIndefiniteLengthTextString(); byte[] encoding = writer.Encode(); Assert.Equal("7f63666f6f63626172ff", encoding.ByteArrayToHex().ToLower()); }
public static void EncodeSpan_DestinationTooSmall_ShouldThrowArgumentException(object value) { var writer = new CborWriter(); Helpers.WriteValue(writer, value); byte[] encoding = writer.Encode(); byte[] target = new byte[encoding.Length - 1]; Assert.Throws <ArgumentException>(() => writer.Encode(target)); Assert.All(target, b => Assert.Equal(0, b)); }
public static void WriteMap(this CborWriter writer, CborMap map) { writer.WriteStartMap(map.Count); foreach (var item in map) { WriteObject(writer, item.Key); WriteObject(writer, item.Value); } writer.WriteEndMap(); }
public static void Roundtrip_Int64(long input) { var writer = new CborWriter(); writer.WriteInt64(input); byte[] encoding = writer.Encode(); var reader = new CborReader(encoding); long result = reader.ReadInt64(); Assert.Equal(input, result); }
public static void WriteEncodedValue_IndefiniteLengthTextString_HappyPath() { using var writer = new CborWriter(encodeIndefiniteLengths: true); writer.WriteStartTextString(); writer.WriteTextString("foo"); writer.WriteEncodedValue("63626172".HexToByteArray()); writer.WriteEndTextString(); byte[] encoding = writer.GetEncoding(); Assert.Equal("7f63666f6f63626172ff", encoding.ByteArrayToHex().ToLower()); }
public static void Roundtrip_TextString(string input) { var writer = new CborWriter(); writer.WriteTextString(input); byte[] encoding = writer.Encode(); var reader = new CborReader(encoding); string result = reader.ReadTextString(); Assert.Equal(input ?? "", result); }
public static string Write <T>(T value, CborOptions options = null) { options = options ?? CborOptions.Default; using (ByteBufferWriter bufferWriter = new ByteBufferWriter()) { CborWriter writer = new CborWriter(bufferWriter); ICborConverter <T> converter = options.Registry.ConverterRegistry.Lookup <T>(); converter.Write(ref writer, value); return(BitConverter.ToString(bufferWriter.WrittenSpan.ToArray()).Replace("-", "")); } }
public static void Roundtrip_Decimal(CborConformanceMode mode, decimal input) { var writer = new CborWriter(); writer.WriteDecimal(input); byte[] encoding = writer.Encode(); var reader = new CborReader(encoding); decimal result = reader.ReadDecimal(); Assert.Equal(input, result); }
public static void WriteEndArray_DefiniteLengthNotMet_ShouldThrowInvalidOperationException(int definiteLength) { var writer = new CborWriter(); writer.WriteStartArray(definiteLength); for (int i = 1; i < definiteLength; i++) { writer.WriteInt64(i); } Assert.Throws <InvalidOperationException>(() => writer.WriteEndArray()); }
public static void EndWriteMap_DefiniteLengthNotMet_ShouldThrowInvalidOperationException(int definiteLength) { using var writer = new CborWriter(); writer.WriteStartMap(definiteLength); for (int i = 1; i < definiteLength; i++) { writer.WriteTextString($"key_{i}"); writer.WriteInt64(i); } Assert.Throws <InvalidOperationException>(() => writer.WriteEndMap()); }
public static void Roundtrip_ByteString(CborConformanceMode mode, byte[] input) { var writer = new CborWriter(mode); writer.WriteByteString(input); byte[] encoding = writer.Encode(); var reader = new CborReader(encoding, mode); byte[] result = reader.ReadByteString(); AssertHelper.HexEqual(input, result); }
public static void Roundtrip_TextString(CborConformanceMode mode, string input) { var writer = new CborWriter(mode); writer.WriteTextString(input); byte[] encoding = writer.Encode(); var reader = new CborReader(encoding, mode); string result = reader.ReadTextString(); Assert.Equal(input, result); }
public static void Roundtrip_UInt64(CborConformanceMode mode, ulong input) { var writer = new CborWriter(mode); writer.WriteUInt64(input); byte[] encoding = writer.Encode(); var reader = new CborReader(encoding, mode); ulong result = reader.ReadUInt64(); Assert.Equal(input, result); }
public static void Roundtrip_NegativeInteger(CborConformanceMode mode, ulong input) { var writer = new CborWriter(mode); writer.WriteCborNegativeIntegerRepresentation(input); byte[] encoding = writer.Encode(); var reader = new CborReader(encoding, mode); ulong result = reader.ReadCborNegativeIntegerRepresentation(); Assert.Equal(input, result); }
public static void Roundtrip_ByteString(string hexInput) { byte[] input = hexInput.HexToByteArray(); #endif var writer = new CborWriter(); writer.WriteByteString(input); byte[] encoding = writer.Encode(); var reader = new CborReader(encoding); byte[] result = reader.ReadByteString(); AssertHelper.HexEqual(input ?? Array.Empty <byte>(), result); }
public static void ByteString_Encoding_ShouldContainInputBytes(CborConformanceMode mode, byte[] input) { var writer = new CborWriter(mode); writer.WriteByteString(input); byte[] encoding = writer.Encode(); int length = input?.Length ?? 0; int lengthEncodingLength = GetLengthEncodingLength(length); Assert.Equal(lengthEncodingLength + length, encoding.Length); AssertHelper.HexEqual(input ?? Array.Empty <byte>(), encoding.Skip(lengthEncodingLength).ToArray());
public static void Roundtrip_Half(CborConformanceMode mode, Half input) { var writer = new CborWriter(mode); writer.WriteHalf(input); byte[] encoding = writer.Encode(); var reader = new CborReader(encoding, mode); Half result = reader.ReadHalf(); Assert.Equal(input, result); }
public static void CborWriter_MultipleRootLevelValuesAllowed_WritingMultipleRootValues_HappyPath(object value, int repetitions, string expectedHexEncoding) { byte[] expectedEncoding = expectedHexEncoding.HexToByteArray(); using var writer = new CborWriter(allowMultipleRootLevelValues: true); for (int i = 0; i < repetitions; i++) { Helpers.WriteValue(writer, value); } AssertHelper.HexEqual(expectedEncoding, writer.GetEncoding()); }
public static void WriteTag_NestedTags_HappyPath(ulong[] tags, object value, string hexExpectedEncoding) { byte[] expectedEncoding = hexExpectedEncoding.HexToByteArray(); var writer = new CborWriter(); foreach (ulong tag in tags) { writer.WriteTag((CborTag)tag); } Helpers.WriteValue(writer, value); AssertHelper.HexEqual(expectedEncoding, writer.Encode()); }
public static void WriteEncodedValue_IndefiniteLengthByteString_HappyPath() { using var writer = new CborWriter(encodeIndefiniteLengths: true); writer.WriteStartByteString(); writer.WriteByteString(new byte[] { 1, 1, 1 }); writer.WriteEncodedValue("43020202".HexToByteArray()); writer.WriteEndByteString(); byte[] encoding = writer.GetEncoding(); Assert.Equal("5f4301010143020202ff", encoding.ByteArrayToHex().ToLower()); }
public override void Write(ref CborWriter writer, DateTime value) { switch (_options.DateTimeFormat) { case DateTimeFormat.ISO8601: writer.WriteString(value.ToString("yyyy-MM-dd'T'HH:mm:ss.FFFK")); break; case DateTimeFormat.Unix: writer.WriteInt64(new DateTimeOffset(value).ToUnixTimeSeconds()); break; } }
public static void ByteString_Encoding_ShouldContainInputBytes(string hexInput) { byte[] input = hexInput.HexToByteArray(); #endif var writer = new CborWriter(); writer.WriteByteString(input); byte[] encoding = writer.Encode(); int length = input?.Length ?? 0; int lengthEncodingLength = GetLengthEncodingLength(length); Assert.Equal(lengthEncodingLength + length, encoding.Length); AssertHelper.HexEqual(input ?? Array.Empty <byte>(), encoding.Skip(lengthEncodingLength).ToArray());
public static void GetEncoding_MultipleRootLevelValuesAllowed_PartialRootValue_ShouldThrowInvalidOperationException() { var writer = new CborWriter(allowMultipleRootLevelValues: true); writer.WriteStartArray(1); writer.WriteDouble(3.14); writer.WriteEndArray(); writer.WriteStartArray(1); writer.WriteDouble(3.14); // misses writer.WriteEndArray(); Assert.Throws <InvalidOperationException>(() => writer.Encode()); }
public void SignWithCborNegativeIntegerRepresentationAlgorithmHeaderValue(ulong value) { var writer = new CborWriter(); writer.WriteCborNegativeIntegerRepresentation(value); ReadOnlySpan <byte> encodedValue = writer.Encode(); CoseHeaderMap protectedHeaders = new CoseHeaderMap(); protectedHeaders[CoseHeaderLabel.Algorithm] = CoseHeaderValue.FromEncodedValue(encodedValue); Assert.Throws <CryptographicException>(() => Sign(s_sampleContent, DefaultKey, DefaultHash, protectedHeaders)); }
public static void WriteArray_DefiniteLengthExceeded_WithNestedData_ShouldThrowInvalidOperationException(int definiteLength) { using var writer = new CborWriter(); writer.WriteStartArray(definiteLength); for (int i = 0; i < definiteLength; i++) { writer.WriteStartArray(definiteLength: 1); writer.WriteInt64(i); writer.WriteEndArray(); } Assert.Throws <InvalidOperationException>(() => writer.WriteInt64(0)); }
public static CoseHeaderValue FromString(string value) { if (value == null) { throw new ArgumentNullException(nameof(value)); } var writer = new CborWriter(); writer.WriteTextString(value); return(FromEncodedValue(Encode(writer))); }
public static void WriteTag_NoValue_ShouldThrowInvalidOperationException(ulong[] tags) { using var writer = new CborWriter(); foreach (ulong tag in tags) { writer.WriteTag((CborTag)tag); } InvalidOperationException exn = Assert.Throws <InvalidOperationException>(() => writer.GetEncoding()); Assert.Equal("Buffer contains incomplete CBOR document.", exn.Message); }
public override CborWriter Write(CborWriter writer) { base.Write(writer); writer.WriteArray(Value.Count()); foreach (var cborObject in Value) { cborObject.Write(writer); } return writer; }
public byte[] Serialize() { using (MemoryStream memory = new MemoryStream()) { CborWriter writer = new CborWriter(memory); this.Write(writer); return memory.ToArray(); } }
public virtual CborWriter Write(CborWriter writer) { if (this.Tag != null) { writer.WriteTag(this.Tag); } return writer; }