Beispiel #1
0
        public string GetSign(string methods, string url, string parameters, string headers)
        {
            /*
             * q-sign-algorithm=sha1
             * &q-ak=[SecretID]
             * &q-sign-time=[SignTime]
             * &q-key-time=[KeyTime]
             * &q-header-list=[SignedHeaderList]
             * &q-url-param-list=[SignedParameterList]
             * &q-signature=[Signature]
             */

            var    now      = UtilityTime.GetTimeStampByUtcNow();
            var    exp      = cosKeyData.expiredTime;
            string singtime = now + ";" + exp;

            string signKey = Utility.Encryption.HmacSha1Sign(singtime, cosKeyData.tmpSecretKey);
            //Debug.Log("计算结果signKey " + signKey);
            string httpString = methods + "\n" + url + "\n" + parameters + "\n" + headers + "\n";
            //Debug.Log("计算结果 " + httpString);

            string stringToSign = "sha1\n" + singtime + "\n" + Utility.Encryption.EncryptToSHA1(httpString) + "\n";
            //Debug.Log("计算结果 " + stringToSign);

            string signature = Utility.Encryption.HmacSha1Sign(stringToSign, signKey);
            //Debug.Log("计算结果 " + signature);

            StringBuilder authorization = new StringBuilder();

            authorization.Append("q-sign-algorithm=sha1");

            authorization.Append("&q-ak=");
            authorization.Append(cosKeyData.tmpSecretId);

            authorization.Append("&q-sign-time=");
            authorization.Append(singtime);

            authorization.Append("&q-key-time=");
            authorization.Append(singtime);

            authorization.Append("&q-header-list=");
            authorization.Append(parameters);

            authorization.Append("&q-url-param-list=");
            authorization.Append(headers);

            authorization.Append("&q-signature=");
            authorization.Append(signature);

            string authStr = authorization.ToString();

            Debug.Log("sign  " + authStr);

            return(authStr);
        }
Beispiel #2
0
        private CosKeyDataModel cosKeyData;            //     cosKeyData = WebRequestResult.JsonToObject<CosKeyDataModel>("cos_key_dict");

        #region ... API

        /// <summary>
        /// 检查 cos key有效期
        /// </summary>
        /// <param name="complete"></param>
        public void CheckCosKey(UnityAction complete = null)
        {
            if (cosKeyData != null && !cosKeyData.IsNull)
            {
                long tmpCosKeyTime = UtilityTime.GetTimeStampByUtcNow(); // cosKeyData.expiredTime;
                long nowCosKeyTime = UtilityTime.GetTimeStampByUtcNow();
                if ((tmpCosKeyTime - nowCosKeyTime) > COS_KEY_TIMEOUT)   // 密钥在有效时间内
                {
                    if (complete != null)
                    {
                        complete();
                    }
                    return;
                }
            }
            // TODO:发送获取 cos  key 请求   key从服务器获取
        }