Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Implement RFC9530 Content-Digest as an http.RoundTripper #108

Open
wants to merge 2 commits into
base: main
Choose a base branch
from

Conversation

nickstenning
Copy link
Member

This implements an http.RoundTripper which transparently calculates RFC9530-compatible Content-Digest headers for outgoing requests. This header will be needed if we in future wish to sign request bodies with RFC9421.

This implements an http.RoundTripper which transparently calculates
RFC9530-compatible Content-Digest headers for outgoing requests. This
header will be needed if we in future wish to sign request bodies with
RFC9421.
Generating new byte buffers for every single processed request is quite
wasteful and generates a lot of work for the GC.

Similarly, the hash.Hash struct can be reused, although this provides
only a small additional benefit.

Before:

    goos: darwin
    goarch: arm64
    pkg: github.com/replicate/go/http/digest
    BenchmarkTransport-10               9200            123811 ns/op        1058.65 MB/s      525456 B/op         24 allocs/op
    PASS
    ok      github.com/replicate/go/http/digest     6.684s

After:

    goos: darwin
    goarch: arm64
    pkg: github.com/replicate/go/http/digest
    BenchmarkTransport-10              12412             95642 ns/op        1370.45 MB/s        1450 B/op         12 allocs/op
    PASS
    ok      github.com/replicate/go/http/digest     14.619s
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

1 participant