public new void Sign <T>(IRequest <T> request, ICredentials credentials) { var sanitizedCredentials = this.SanitizeCredentials(credentials); var signerParams = new SignerRequestParams <T>(request, this.regionName, this.serviceName, "SDK-HMAC-SHA256"); this.AddHostHeader(request); request.AddHeader("X-Sdk-Date", signerParams.GetFormattedSigningDateTime()); String contentSha256 = this.CalculateContentHash(request); /* Not support for now * String contentSha256 = this.calculateContentHash(request); * if ("required".equals(request.getHeaders().get("x-sdk-content-sha256"))) * { * request.addHeader("x-sdk-content-sha256", contentSha256); * } * * String canonicalRequest = this.createCanonicalRequest(request, contentSha256); * string stringToSign = this.CreateStringToSign(canonicalRequest, signerParams); * byte[] signingKey = this.deriveSigningKey(sanitizedCredentials, signerParams); * byte[] signature = this.computeSignature(stringToSign, signingKey, signerParams); */ //byte[] signature = this.computeSignature(stringToSign, signingKey, signerParams); request.AddHeader("Authorization", this.BuildAuthorizationHeader(request, null, sanitizedCredentials, signerParams)); }
protected string CreateStringToSign <T>(string canonicalRequest, SignerRequestParams <T> signerParams) { var stringToSignBuilder = new StringBuilder(signerParams.GetSigningAlgorithm()); stringToSignBuilder.Append("\n") .Append(signerParams.GetFormattedSigningDateTime()) .Append("\n") .Append(signerParams.GetScope()) .Append("\n") .Append(BinaryUtils.ToHex(this.Hash(canonicalRequest))); var stringToSign = stringToSignBuilder.ToString(); return(stringToSign); }