public static void ExecOperation(CborWriter writer, string op) { switch (op) { case nameof(writer.WriteInt64): writer.WriteInt64(42); break; case nameof(writer.WriteByteString): writer.WriteByteString(Array.Empty <byte>()); break; case nameof(writer.WriteTextString): writer.WriteTextString(""); break; case nameof(writer.WriteStartIndefiniteLengthTextString): writer.WriteStartIndefiniteLengthTextString(); break; case nameof(writer.WriteStartIndefiniteLengthByteString): writer.WriteStartIndefiniteLengthByteString(); break; case nameof(writer.WriteStartArray): writer.WriteStartArray(null); break; case nameof(writer.WriteStartMap): writer.WriteStartMap(null); break; case nameof(writer.WriteEndIndefiniteLengthByteString): writer.WriteEndIndefiniteLengthByteString(); break; case nameof(writer.WriteEndIndefiniteLengthTextString): writer.WriteEndIndefiniteLengthTextString(); break; case nameof(writer.WriteEndArray): writer.WriteEndArray(); break; case nameof(writer.WriteEndMap): writer.WriteEndMap(); break; default: throw new Exception($"Unrecognized CborWriter operation name {op}"); } }
public static void WriteChunkedTextString(CborWriter writer, string[] chunks) { writer.WriteStartIndefiniteLengthTextString(); foreach (string chunk in chunks) { writer.WriteTextString(chunk); } writer.WriteEndIndefiniteLengthTextString(); }
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 Roundtrip_IndefiniteTextString(CborConformanceMode mode, string[] chunks) { bool convertIndefiniteLengthEncodings = mode is CborConformanceMode.Canonical or CborConformanceMode.Ctap2Canonical; var writer = new CborWriter(convertIndefiniteLengthEncodings: convertIndefiniteLengthEncodings); writer.WriteStartIndefiniteLengthTextString(); foreach (string chunk in chunks) { writer.WriteTextString(chunk); } writer.WriteEndIndefiniteLengthTextString(); byte[] encoding = writer.Encode(); var reader = new CborReader(encoding); string expected = String.Concat(chunks); string result = reader.ReadTextString(); Assert.Equal(expected, result); }
public void GetValueAsStringBeingIndefiniteLengthSucceeds(string value) { Verify(0); Verify(1); Verify(10); void Verify(int repetitions) { var writer = new CborWriter(); writer.WriteStartIndefiniteLengthTextString(); for (int i = 0; i < repetitions; i++) { writer.WriteTextString(value); } writer.WriteEndIndefiniteLengthTextString(); CoseHeaderValue headerValue = CoseHeaderValue.FromEncodedValue(writer.Encode()); string expectedValue = string.Join("", Enumerable.Repeat(value, repetitions)); Assert.Equal(expectedValue, headerValue.GetValueAsString()); } }