예제 #1
0
        public static bool CheckAuthorization(string authorizationFilePath, byte[] publicKey, ref string expiresDate)
        {
            if (!string.IsNullOrEmpty(authorizationFilePath))
            {
                string  authString  = System.IO.File.ReadAllText(authorizationFilePath);
                JObject authJsonObj = Newtonsoft.Json.JsonConvert.DeserializeObject(authString) as JObject;

                var signature       = authJsonObj["signature"].ToString();
                var data            = authJsonObj["data"].ToString();
                var isSignatureOkay = RSACommon.VerifyMessage(publicKey, signature, data);
                if (isSignatureOkay)
                {
                    var     json        = System.Text.Encoding.UTF8.GetString(Convert.FromBase64String(data));
                    JObject registerObj = Newtonsoft.Json.JsonConvert.DeserializeObject(json) as JObject;
                    if ((bool)registerObj["IsRegister"])
                    {
                        //检查当前电脑硬件信息,匹配成功才合法
                        var computer = MyComputerInfo.Instance();

                        if (registerObj["CpuID"].ToString() == computer.CpuID &&
                            computer.IsExistMacAddress(registerObj["MacAddress"].ToString()) &&
                            registerObj["DiskID"].ToString() == computer.DiskID
                            )
                        {
                            expiresDate = registerObj["ExpirationDate"].ToString();
                            return(true);
                        }
                    }
                }
            }

            return(false);
        }
예제 #2
0
 public static MyComputerInfo Instance()
 {
     if (_instance == null)
     {
         _instance = new MyComputerInfo();
     }
     return(_instance);
 }