コード例 #1
0
        internal override IDictionary <string, string> GetSignature(HttpRequest request, HttpContext context, IHeaders iheaders)
        {
            CommonUtil.AddHeader(request, iheaders.ContentSha256Header(), ContentSha256);
            IDictionary <string, string> tempDict = new Dictionary <string, string>();

            foreach (KeyValuePair <string, string> entry in request.Headers)
            {
                if (string.IsNullOrEmpty(entry.Key))
                {
                    continue;
                }
                tempDict.Add(entry.Key.Trim().ToLower(), entry.Value);
            }

            List <string> signedHeadersList = V4Signer.GetSignedHeaderList(tempDict);
            string        signedHeaders     = V4Signer.GetSignedHeaders(signedHeadersList);

            IDictionary <string, string> dateDict = V4Signer.GetLongDateAndShortDate(request, iheaders);

            string signature = GetTemporarySignature(request, context, iheaders, dateDict, signedHeaders, tempDict, signedHeadersList, ContentSha256);

            IDictionary <string, string> ret = new Dictionary <string, string>();

            ret.Add("Signature", signature);
            ret.Add("ShortDate", dateDict["ShortDate"]);
            ret.Add("SignedHeaders", signedHeaders);
            return(ret);
        }