/// <summary> /// Deserializes a JSON string into a WindowsKey. /// This uses a Google specific JSON object containing the /// following properties. /// /// email: the email of the account creator. /// expireOn: the date and time in UTC we should stop accepting the key. /// exponent: the exponent for encryption. /// modulus: a 2048 bit RSA public key modulus. /// userName: the name of the user account. /// /// This format is still subject to change. /// Reliance on it in any way is at your own risk. /// </summary> /// <param name="windowsKey">The serialized WindowsKey.</param> /// <returns> /// A WindowsKey object or null if deserialization fails. /// </returns> public static WindowsKey DeserializeWindowsKey(string windowsKey) { DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(WindowsKeyJson)); using (MemoryStream stream = new MemoryStream(Encoding.UTF8.GetBytes(windowsKey))) { try { WindowsKeyJson windowsKeyJson = (WindowsKeyJson)serializer.ReadObject(stream); string expireOn = windowsKeyJson.ExpireOn; string exponent = windowsKeyJson.Exponent; string modulus = windowsKeyJson.Modulus; string userName = windowsKeyJson.UserName; return(new WindowsKey(expireOn: expireOn, exponent: exponent, modulus: modulus, userName: userName)); } catch (Exception) { Logger.Warning("Windows key [{0}] could not be deserialized.", windowsKey); return(null); } } }
/// <summary> /// Converts a WindowsKey into a serialized JSON string. /// </summary> /// <returns>The serialized JSON object as a string.</returns> public override string ToString() { WindowsKeyJson windowsKeyJson = new WindowsKeyJson { Email = this.Email, ExpireOn = this.ExpireOn, Exponent = this.Exponent, Modulus = this.Modulus, UserName = this.UserName }; DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(WindowsKeyJson)); using (MemoryStream stream = new MemoryStream()) { serializer.WriteObject(stream, windowsKeyJson); stream.Position = 0; using (StreamReader reader = new StreamReader(stream)) { return(reader.ReadToEnd()); } } }
/// <summary> /// Converts a WindowsKey into a serialized JSON string. /// </summary> /// <returns>The serialized JSON object as a string.</returns> public override string ToString() { WindowsKeyJson windowsKeyJson = new WindowsKeyJson { Email = this.Email, ExpireOn = this.ExpireOn, Exponent = this.Exponent, Modulus = this.Modulus, UserName = this.UserName }; DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(WindowsKeyJson)); using (MemoryStream stream = new MemoryStream()) { serializer.WriteObject(stream, windowsKeyJson); stream.Position = 0; using (StreamReader reader = new StreamReader(stream)) { return reader.ReadToEnd(); } } }