public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) { ShareData data = value as ShareData; if (data == null) { throw new ArgumentException("invalid data to serialize"); } INodeCrypto parent = data.Parent as INodeCrypto; if (parent == null) { throw new ArgumentException("parent node must implement INodeCrypto"); } writer.WriteStartArray(); if (parent.SharedKey != null) { writer.WriteStartArray(); writer.WriteValue(data.Parent.Id); writer.WriteEndArray(); writer.WriteStartArray(); writer.WriteValue(data.CompletionHandle); writer.WriteEndArray(); writer.WriteStartArray(); writer.WriteValue(0); writer.WriteValue(0); writer.WriteValue(Crypto.EncryptAesEcb(data.Key, parent.SharedKey).ToBase64()); writer.WriteEndArray(); } writer.WriteEndArray(); }