No description
  • Rust 67.2%
  • Svelte 16.9%
  • TypeScript 13.1%
  • JavaScript 1.5%
  • CSS 1.1%
  • Other 0.2%
Find a file
Jade Ellis 1cac12a130
feat: Signed requests
There's a whole load of stuff here and it was a few days to get it
working.

I discovered that httpsig-rs doesn't handle colons in signature names
correctly, so I had to seperate out the algorithm from the key ID.

A seperate binary exists to demonstrate making a singed request, as the
functionality is not used in the main binary yet.

There is a bunch of stuff to make it ieasier if the key algorithm
changes, although it is left hardcoded in a few places because we don't
need forwards compatibility, we just need to make backwards
compatibility easy

Server-side graphql queries use cynic, which builds queries from rust
types. We have code to resolve the graphql endpoint for a server and
then fetch keys.

A trait is implemented to make it easier to run graphql queries from the
server.

Signature is implemented by the httpsig library on the hyper request.
Luckily for us, reqwest and axum roughly use similar types (thanks to
the http crate). There is some conversion going on, in particular around
buffering the request body to sign the digest.

Speaking of, the covered components are picked to cover all parts of the
request that could affect the response. The assumption is this, in
combination with TLS, is sufficient security to subvert impersonation.
2026-05-26 00:48:49 +01:00
.github/workflows feat(ci): Use sccache 2026-05-09 17:49:53 +01:00
.vscode chore: Run prettier 2026-05-04 15:09:58 +01:00
crates feat: Signed requests 2026-05-26 00:48:49 +01:00
packages/playerbrainz feat: Signed requests 2026-05-26 00:48:49 +01:00
.gitignore chore: Move frontend to subdir 2026-05-11 22:46:56 +01:00
.pre-commit-config.yaml refactor: Use discovery endpoint & graphql login 2026-05-09 20:38:09 +01:00
.prettierignore feat: Libraries settings 2026-05-04 15:04:33 +01:00
.prettierrc feat: Libraries settings 2026-05-04 15:04:33 +01:00
.typos.toml chore: Add typos config 2026-05-04 16:14:55 +01:00
Cargo.lock feat: Signed requests 2026-05-26 00:48:49 +01:00
Cargo.toml feat: Signed requests 2026-05-26 00:48:49 +01:00
committed.toml chore: Configure committed 2026-05-09 17:42:50 +01:00
dist-workspace.toml feat(ci): Use sccache 2026-05-09 17:49:53 +01:00
package.json chore: Move frontend to subdir 2026-05-11 22:46:56 +01:00
pnpm-lock.yaml chore: Move frontend to subdir 2026-05-11 22:46:56 +01:00
pnpm-workspace.yaml chore: Move frontend to subdir 2026-05-11 22:46:56 +01:00
rust-toolchain.toml feat: Core scanning code 2026-04-22 21:17:06 +01:00