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); }
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从服务器获取 }