module WT

An accelerated version of the reference implementation ported from Python, see here:

docs.aws.amazon.com/general/latest/gr/sigv4-signed-request-examples.html

The optimisation in comparison to the ref implementation is that everything that can be computed once gets computed for the first signature being generated, and then reused. This includes the timestamp and everything derived from it, the signing key and the query string (before the signature is computed).

Note that this is specifically made for the cases where one needs presigned URLs for multiple objects from the same bucket, with the same expiry. Passing the expiry via the constructor, for instance, allows us to cache more of the query string - saving even more time.