@@ -117,13 +117,15 @@ signV4 !sp !req =
117117 accessKey = toS $ spAccessKey sp
118118 secretKey = toS $ spSecretKey sp
119119 expiry = spExpirySecs sp
120+ sha256Hdr = ("x-amz-content-sha256",
121+ fromMaybe "UNSIGNED-PAYLOAD" $ spPayloadHash sp)
120122
121123 -- headers to be added to the request
122124 datePair = ("X-Amz-Date", awsTimeFormatBS ts)
123125 computedHeaders = NC.requestHeaders req ++
124126 if isJust $ expiry
125127 then []
126− else [(\(x, y) -> (mk x, y)) datePair]
128+ else map (\(x, y) -> (mk x, y)) [datePair, sha256Hdr]
127129 headersToSign = getHeadersToSign computedHeaders
128130 signedHeaderKeys = B.intercalate ";" $ sort $ map fst headersToSign
129131
@@ -158,8 +160,6 @@ signV4 !sp !req =
158160 authHeader = mkAuthHeader (spAccessKey sp) scope signedHeaderKeys signature
159161
160162 -- finally compute output pairs
161− sha256Hdr = ("x-amz-content-sha256",
162− fromMaybe "UNSIGNED-PAYLOAD" $ spPayloadHash sp)
163163 output = if isJust expiry
164164 then ("X-Amz-Signature", signature) : authQP
165165 else [(\(x, y) -> (CI.foldedCase x, y)) authHeader,