using System; using System.Text; using Newtonsoft.Json; using Jd.ACES.Utils; namespace Jd.ACES.Common { public class KeyRequest { [JsonProperty("data")] public KeyRequestData Data { get; set; } [JsonProperty("sig")] public string Sig; public KeyRequest() { } /// /// Initialize an instance of KeyRequest class for specified token to request key with major SDK version. /// The token will sign the key request data. /// /// The token to request key. /// The major version of SDK. /// public KeyRequest(Token t, int major_sdk_ver) { Data = new KeyRequestData(t.GetId(), major_sdk_ver); // sign with given token Sig = Convert.ToBase64String(t.DoSign(Encoding.Default.GetBytes(JsonHelper.ToJson(Data)))); } /// /// Create a new request data for specified token to request key with major SDK version. /// The token will sign the key request data. /// /// The token to request key. /// The major version of SDK. /// the string of request data with signature. /// public static KeyRequest CreateNewKeyRequest(Token t, int major_sdk_ver) { return new KeyRequest(t, major_sdk_ver); } } public class KeyRequestData { [JsonProperty("sdk_ver")] public int SdkVer { get; set; } [JsonProperty("ts")] public long Ts { get; set; } [JsonProperty("tid")] public string Tid { get; set; } public KeyRequestData() { } public KeyRequestData(string tid, int major_sdk_ver) { // basic header construction this.SdkVer = major_sdk_ver; this.Ts = EnvironmentHelper.GetCurrentMillis(); this.Tid = tid; } } }