Skip to content

Conversation

@AkshatM
Copy link
Contributor

@AkshatM AkshatM commented Dec 17, 2025

Release v1.0.0 of web-bot-auth crates

These include some pretty significant and breaking changes:

  1. Dependency on time library is now required instead of std::time
    for all API users. As a bonus, however, we gain support on Cloudflare
    Workers as well as removal of a class of errors related to system
    clocks and created / expires parsing.

  2. A number of constructs were removed: WebBotAuthSignedMessage,
    SignedMessage::fetch_all_signature_headers and
    SignedMessage::fetch_all_signature_inputs. The library now exposes
    a single method to look up components to verify.

  3. Signature-Agent can now be parsed as a dictionary, but retains
    support for being parsed as a raw string.

  4. It enforces use of req parameter for @authority in http-message-dir. This is in
    line with the specification, but can break verification of existing
    sites.

These changes are sufficiently breaking enough to justify using semver
bump.

Make @authority;req errors more prominent + fix example signature generation

This change amends the http-signature-dir to print an error log
whendirectories mistakenly sign @authority without the req
parameter.

It fixes a bug with the example signature agent card generation where
only the host component was used to sign @authority, rather than the
full host and port pair (i.e. the actual authority component). This
led to verifiers being unable to verify generated signatures.

It fixes some minor comments and superfluous Github Actions changes,
and does some basic refactoring to make the logic a bit more
straightforward in the example. Importantly, it also adds the
alg parameter in generated signatures - this is in line with the
opinionated signing we do, whereby other elements normal to web bot auth
are also enforced for arbitrary HTTP signatures.

I also removed the pin on Rust v1.87 in Github Actions, this way we always test against
the latest Rust version.

generation

This change amends the `http-signature-dir` to print an error log
whendirectories mistakenly sign `@authority` without the `req`
parameter.

It fixes a bug with the example signature agent card generation where
only the host component was used to sign `@authority`, rather than the
full host and port pair (i.e. the _actual_ authority component). This
led to verifiers being unable to verify generated signatures.

It fixes some minor comments and superfluous Github Actions changes,
and does some basic refactoring to make the logic a bit more
straightforward in the example. Importantly, it also adds the
`alg` parameter in generated signatures - this is in line with the
opinionated signing we do, whereby other elements normal to web bot auth
are also enforced for arbitrary HTTP signatures.
@AkshatM AkshatM force-pushed the akshat/release-1.0.0 branch 4 times, most recently from b18d91c to b044e22 Compare December 17, 2025 19:31
@AkshatM AkshatM requested a review from thibmeu December 17, 2025 19:39
@AkshatM AkshatM changed the title Akshat/release 1.0.0 Release v1.0.0 of web-bot-auth crates Dec 17, 2025
These include some pretty significant and breaking changes:

1. Dependency on `time` library is now required instead of `std::time`
   for all API users. As a bonus, however, we gain support on Cloudflare
   Workers as well as removal of a class of errors related to system
   clocks and `created` / `expires` parsing.

2. A number of constructs were removed: `WebBotAuthSignedMessage`,
   `SignedMessage::fetch_all_signature_headers` and
   `SignedMessage::fetch_all_signature_inputs`. The library now exposes
   a single method to look up components to verify.

3. `Signature-Agent` can now be parsed as a dictionary, but retains
   support for being parsed as a raw string.

4. It enforces use of `req` parameter in `http-message-dir`. This is in
   line with the specification, but can break verification of existing
   sites.

These changes are sufficiently breaking enough to justify using semver
bump.

I also removed the pin to Rust v1.87 in the Github Actions handler. This
ensures we're building against the latest available Rust version.
@AkshatM AkshatM force-pushed the akshat/release-1.0.0 branch from b044e22 to e57d395 Compare December 17, 2025 19:50
resolver = "2"

[workspace.package]
version = "0.5.1"
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

given the spec is still evolving, I'd rather cut 0.6.0

Copy link
Collaborator

@thibmeu thibmeu left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

overall ok. need to move to 0.6.0 instead I think

Comment on lines -52 to -53
- run: cargo build --all --verbose --exclude plexi-cli --all-features --tests
- run: cargo build --all --verbose --exclude plexi-cli --exclude http-signature-directory --all-features --tests --target wasm32-unknown-unknown
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

good call

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.

2 participants