# File lib/aws/core/signers/version_4.rb, line 56
        def sign_request req, options = {}
          datetime = options[:datetime] || Time.now.utc.strftime("%Y%m%dT%H%M%SZ")
          key = derive_key(datetime)
          token = credentials.session_token
          chunk_signing = !!options[:chunk_signing]
          content_sha256 = req.headers['x-amz-content-sha256'] || body_digest(req, chunk_signing)

          req.headers['host'] = req.host
          req.headers['x-amz-date'] = datetime
          req.headers['x-amz-security-token'] = token if token
          req.headers['x-amz-content-sha256'] = content_sha256

          if chunk_signing
            orig_size = req.headers['content-length'].to_i
            signed_size = ChunkSignedStream.signed_size(orig_size.to_i)
            req.headers['content-length'] = signed_size.to_s
            req.headers['x-amz-decoded-content-length'] = orig_size.to_s
          end

          req.headers['authorization'] = authorization(req, key, datetime, content_sha256)

          req.body_stream = chunk_signed_stream(req, key) if chunk_signing

          req
        end