public static void WriteEncryptedMessage(Utf8JsonWriter json, EncryptedMessage message) { json.WriteString(EncryptedMessage_EncryptedMessageTextName, message.EncryptedMessageText); json.WriteStartObject(nameof(message.EncryptionData)); EncryptionDataSerializer.WriteEncryptionData(json, message.EncryptionData); json.WriteEndObject(); }
private static EncryptedMessage ReadEncryptionData(JsonElement root) { var data = new EncryptedMessage(); foreach (var property in root.EnumerateObject()) { ReadPropertyValue(data, property); } return(data); }
private static void ReadPropertyValue(EncryptedMessage data, JsonProperty property) { if (property.NameEquals(EncryptedMessage_EncryptedMessageTextName)) { data.EncryptedMessageText = property.Value.GetString(); } else if (property.NameEquals(nameof(data.EncryptionData))) { data.EncryptionData = EncryptionDataSerializer.ReadEncryptionData(property.Value); } }
public static ReadOnlyMemory <byte> SerializeEncryptedMessage(EncryptedMessage message) { var writer = new Core.ArrayBufferWriter <byte>(); using var json = new Utf8JsonWriter(writer); json.WriteStartObject(); WriteEncryptedMessage(json, message); json.WriteEndObject(); json.Flush(); return(writer.WrittenMemory); }
public static bool TryDeserialize(string serializedData, out EncryptedMessage encryptedMessage) { try { encryptedMessage = Deserialize(serializedData); return(true); } // JsonException does not actually cover everything. InvalidOperationException can be thrown // on some string inputs, as we can't assume input is even JSON. catch (Exception) { encryptedMessage = default; return(false); } }
private static void ReadPropertyValue(EncryptedMessage data, JsonProperty property) { if (property.NameEquals(EncryptedMessage_EncryptedMessageTextName)) { data.EncryptedMessageText = property.Value.GetString(); } else if (property.NameEquals(nameof(data.EncryptionData))) { data.EncryptionData = EncryptionDataSerializer.ReadEncryptionData(property.Value); } else { throw new FormatException($"Failed to deserialize `{typeof(EncryptedMessage).FullName}`. Unrecognized property `{property.Name}`."); } }
private static EncryptedMessage ReadEncryptionData(JsonElement root) { var data = new EncryptedMessage(); foreach (var property in root.EnumerateObject()) { ReadPropertyValue(data, property); } if (data.EncryptionData == default || data.EncryptedMessageText == default) { throw new FormatException($"Failed to find non-optional properties while deserializing `{typeof(EncryptedMessage).FullName}`."); } return(data); }
public static string Serialize(EncryptedMessage data) { return(Encoding.UTF8.GetString(SerializeEncryptedMessage(data).ToArray())); }
public static BinaryData Serialize(EncryptedMessage data) { return(BinaryData.FromBytes(SerializeEncryptedMessage(data))); }