Skip to content

feat(hairpin): trust a CA file; re-pin hairpin and camber to http 0.36.0.0 - #507

Merged
paymog merged 1 commit into
mainfrom
feat/repin-http-036-501
Oct 19, 2026
Merged

paymog merged 1 commit into
mainfrom
feat/repin-http-036-501

Conversation

@paymog

@paymog paymog commented Oct 19, 2026 •

Copy link
Copy Markdown
Owner

First wave of #501. Hairpin and camber move to [email protected], and Hairpin gains a CA setting.

Hairpin CA file

Hairpin.ca(c, path) sets a PEM CA file. Requests (Http.Hops.ca) and streams (Http.StreamHops.ca) trust it in place of the default store. "", the default, keeps the default store. Like the client certificate, the file follows same-origin redirects only; http enforces that.

Opts gains a ca field. Only hairpin.bend builds Opts, so no caller changes.

Versions

package from to
hairpin 0.8.0.0 0.9.0.0
camber 0.11.0.0 0.12.0.0

Camber's own examples that import [email protected] from the hub (users*.bend, bench/public_*, deploy/users.bend) stay on http 0.35.0.0 until camber 0.12.0.0 publishes. Mixing those pins would mix two Http type sets.

scripts/pins.allow lets [email protected], [email protected], and [email protected] through until the second wave. That wave re-pins jwt, llm, oauth2, sigv4, webhooks, gateway, authz, runner, and the camber examples, drops the three lines, and closes #501.

Verification

  • hairpin/ca-check.sh (native) and hairpin/ca-check.sh js: a request and a stream, each through a redirect, reach a private-CA server with Hairpin.ca, and fail with ErrTls code 100 without it. Both lanes pass.
  • scripts/check.sh hairpin and scripts/check.sh camber pass.
  • scripts/pins.sh and scripts/publish.sh --check hairpin camber pass.

Refs #501

…6.0.0

Hairpin.ca(c, path) sets a PEM CA file that requests and streams trust
in place of the default store. hairpin/ca-check.sh checks it against a
private-CA server on both lanes.

hairpin 0.9.0.0 and camber 0.12.0.0 import [email protected].
Their importers re-pin after both publish; pins.allow lets the old
pins through until then.

Refs #501
@paymog
paymog merged commit 63e8561 into main Oct 19, 2026
60 checks passed
@paymog
paymog deleted the feat/repin-http-036-501 branch October 19, 2026 02:01
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.

Hairpin and siblings: re-pin http 0.36.0.0; let Hairpin streams trust a CA file

1 participant