예제 #1
0
        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();
        }
예제 #2
0
        private static EncryptedMessage ReadEncryptionData(JsonElement root)
        {
            var data = new EncryptedMessage();

            foreach (var property in root.EnumerateObject())
            {
                ReadPropertyValue(data, property);
            }
            return(data);
        }
예제 #3
0
 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);
     }
 }
예제 #4
0
        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);
        }
예제 #5
0
 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);
        }
예제 #8
0
 public static string Serialize(EncryptedMessage data)
 {
     return(Encoding.UTF8.GetString(SerializeEncryptedMessage(data).ToArray()));
 }
예제 #9
0
 public static BinaryData Serialize(EncryptedMessage data)
 {
     return(BinaryData.FromBytes(SerializeEncryptedMessage(data)));
 }