Skip to content

AWSAuthV4Signer not respecting signBody parameter #3454

Closed
@goyalishant001

Description

@goyalishant001

Describe the bug

We had been using AWSAuthV4Signer to sign out S3 requests. Note that we are only using it to sign the headers, and the request (alongside the body) is sent using libcurl's asynchronous mechanism.
Now, to achieve this, we utilise AWSAuthV4Signer's SignRequest method with signBody set to true. Earlier, it used to stamp such requests with the header x-amz-content-sha256: UNSIGNED-PAYLOAD, which was working fine. But now, as we upgraded to the latest SDK, I observed that the signer is stamping empty string's sha256 x-amz-content-sha256: e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 with the request since it assumes there is no body. Essentially, the code is not respecting the signBody parameter at all.

Can we fall back on older behaviour where the SDK used to respect the signBody parameter, and hence, this sort of use case can be handled. It actually seems like a regression to me since. Thoughts?

Regression Issue

  • Select this option if this issue appears to be a regression.

Expected Behavior

The AWSAuthV4Signer's SignRequest method should respect the signBody parameter

Current Behavior

The AWSAuthV4Signer's SignRequest method is not respecting the signBody parameter

Reproduction Steps

Use AWSAuthV4Signer to sign the request headers (not the body) and later use libcurl to send the request

Possible Solution

No response

Additional Information/Context

No response

AWS CPP SDK version used

1.11.588

Compiler and Version used

gcc (GCC) 8.5.0 20210514

Operating System and version

Rocky Linux v8.10

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugThis issue is a bug.needs-triageThis issue or PR still needs to be triaged.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions