private static void AuthHeader()

in src/AlibabaCloud.OSS.V2/Signer/SignerV4.cs [104:164]


        private static void AuthHeader(SigningContext signingContext)
        {
            var request = signingContext.Request;
            var credentials = signingContext.Credentials;
            var region = signingContext.Region ?? "";
            var product = signingContext.Product ?? "";

            // Date
            var signTime = signingContext.SignTime ?? DateTime.UtcNow;
            var datetime = FormatDateTime(signTime);
            var date = FormatDate(signTime);
            var datetimeGmt = FormatRfc822Date(signTime);

            // Scope
            var scope = $"{date}/{region}/{product}/aliyun_v4_request";

            // Credentials information
            if (credentials!.SecurityToken.IsNotEmpty())
                request!.Headers["x-oss-security-token"] = credentials.SecurityToken;

            // Other Headers
            request!.Headers["x-oss-content-sha256"] = UnsignedPayload;
            request.Headers["x-oss-date"] = datetime;
            request.Headers["Date"] = datetimeGmt;

            // lower key & Sorted Headers
            // the headers is OrdinalIgnoreCase
            var headers = request.Headers;

            var additionalHeaders = GetAdditionalHeaders(headers, signingContext.AdditionalHeaders);
            additionalHeaders.Sort();

            // CanonicalRequest
            var canonicalRequest = CanonicalizeRequest(
                request,
                ResourcePath(signingContext.Bucket, signingContext.Key),
                headers,
                additionalHeaders
            );

            // StringToSign
            var stringToSign = CalcStringToSign(datetime, scope, canonicalRequest);

            // Signature
            var signature = CalcSignature(credentials.AccessKeySecret, date, region, product, stringToSign);

            // Credential
            var sb = new StringBuilder();
            sb.AppendFormat("OSS4-HMAC-SHA256 Credential={0}/{1}", credentials.AccessKeyId, scope);
            if (additionalHeaders.Count > 0) sb.AppendFormat(",AdditionalHeaders={0}", additionalHeaders.JoinToString(";"));
            sb.AppendFormat(",Signature={0}", signature);

            request.Headers["Authorization"] = sb.ToString();

            //Console.WriteLine("canonicalRequest:{0}\n", canonicalRequest);
            //Console.WriteLine("stringToSign:{0}\n", stringToSign);
            //Console.WriteLine("signature:{0}\n", signature);

            //update
            signingContext.StringToSign = stringToSign;
        }