Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion gen/python/pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ build-backend = "setuptools.build_meta"

[project]
name = "fora-protocol"
version = "1.0.8"
version = "1.1.0"
description = "Generated types export for Python: Pydantic v2 models (wire.models, extending wire.base.WireModel), registered vocabulary constants (vocab.*) and the published per-message JSON Schemas (wire.schemas.load), generated from the proto via JSON Schema."
readme = "README.md"
requires-python = ">=3.9"
Expand Down
4 changes: 2 additions & 2 deletions gen/ts/package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion gen/ts/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@fora-protocol/sdk-types",
"version": "1.0.8",
"version": "1.1.0",
"private": true,
"description": "Generated TypeScript types export: Zod schemas (./wire/schemas) + vocabulary constants (./vocab/*), generated from the proto via JSON Schema. Not published on its own: it ships inside @fora-protocol/sdk (built by sdk/ts/scripts/build.mjs), which exports these subpaths unchanged.",
"license": "Apache-2.0",
Expand Down
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@fora-protocol/sdk-l1",
"version": "1.0.8",
"version": "1.1.0",
"private": true,
"type": "module",
"sideEffects": false,
Expand Down
2 changes: 1 addition & 1 deletion proto/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# FORA Protocol Changelog

## Unreleased
## v1.1.0

### Breaking against v1.0.8

Expand Down
4 changes: 2 additions & 2 deletions sdk/python/pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -120,7 +120,7 @@ build-backend = "setuptools.build_meta"

[project]
name = "fora-protocol-sdk"
version = "1.0.8"
version = "1.1.0"
description = "FORA protocol SDK for Python: the IO-free protocol mechanics (thumbprint, signed-URL verification, RFC 9421 request signing and verification, offer and acceptance signatures, cross-field validation), the key and endpoint resolvers and the Connect-unary JSON client."
readme = "README.md"
requires-python = ">=3.11"
Expand All @@ -131,7 +131,7 @@ dependencies = [
# fora-protocol. Pinned exactly: both distributions are built from the same
# tag and the release workflow refuses a tag whose version differs from this
# pin (scripts/release/check-versions.py).
"fora-protocol==1.0.8",
"fora-protocol==1.1.0",
"cryptography>=44",
# Maintained HTTP client for the L2 fetching resolvers (WBA / well-known
# directory GETs). It owns the response state machine (status, redirects, 1xx,
Expand Down
4 changes: 2 additions & 2 deletions sdk/python/uv.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 2 additions & 2 deletions sdk/ts/package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion sdk/ts/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@fora-protocol/sdk-l1",
"version": "1.0.8",
"version": "1.1.0",
"private": true,
"description": "FORA protocol SDK for TypeScript — the IO-free protocol mechanics (signing, verification, canonicalization) plus the IO tiers built on them: the key/endpoint resolvers and the Connect-unary JSON client. Exposed at the repo root so plain npm — which has no git-subdirectory support — can pin the TS SDK by commit as a whole-repo git dependency (parity with the Go/pip git+subdir+rev pins). Re-exports sdk/ts, which compiles the in-repo gen/ts by relative path. Self-contained packaging and npm publish are not yet implemented.",
"type": "module",
Expand Down
2 changes: 1 addition & 1 deletion website/src/content/docs/protocol/authentication.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -88,7 +88,7 @@ The rules that make both true are in [The Web Bot Auth Profile](#the-web-bot-aut
WBA establishes identity: this bot is who it claims to be. FORA adds the transaction layer on top of that identity: this bot is authorised to access this content at this price.

:::caution[Profile change in progress]
The next SDK release implements this profile in Go, Python and TypeScript. The SDKs released as v1.0.8 do not. They send `Signature-Agent` as a bare, unquoted URL rather than a dictionary, set no `tag`, generate a 16-byte nonce, and refuse any signature that does not cover all five FORA components. The reference implementation's directories are served as `application/jwk-set+json` and unsigned until it adopts that release. The change is a hard cut with no transition window: verifiers of the new release refuse the bare unquoted `Signature-Agent` that v1.0.8 sends and a directory served under the old media type, so a v1.0.8 client must upgrade to keep working. The SDKs and the reference implementation change together; the [changelog](/reference/changelog/) lists each difference.
The SDKs released as v1.1.0 implement this profile in Go, Python and TypeScript. The SDKs released as v1.0.8 do not. They send `Signature-Agent` as a bare, unquoted URL rather than a dictionary, set no `tag`, generate a 16-byte nonce, and refuse any signature that does not cover all five FORA components. The reference implementation's directories are served as `application/jwk-set+json` and unsigned until it adopts that release. The change is a hard cut with no transition window: verifiers from v1.1.0 refuse the bare unquoted `Signature-Agent` that v1.0.8 sends and a directory served under the old media type, so a v1.0.8 client must upgrade to keep working. The SDKs and the reference implementation change together; the [changelog](/reference/changelog/) lists each difference.
:::

#### Where FORA departs from WG-00
Expand Down
2 changes: 1 addition & 1 deletion website/src/content/docs/protocol/standards-layering.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ C2PA and FORA are orthogonal: C2PA proves **what content IS** (provenance, creat

The IETF [webbotauth working group](https://datatracker.ietf.org/wg/webbotauth/about/) is standardising cryptographic bot identity: bots sign HTTP requests with RFC 9421 HTTP Message Signatures and publish their keys in a directory at a well-known path. Its only adopted document is [draft-ietf-webbotauth-httpsig-protocol-00](https://datatracker.ietf.org/doc/draft-ietf-webbotauth-httpsig-protocol/00/) (1 September 2026), and that version is the one FORA targets.

Every FORA request signature is a conformant signature under that draft, so a CDN or origin that verifies Web Bot Auth can verify a FORA agent without FORA-specific integration. In the other direction, FORA accepts signatures from any Web Bot Auth library, with or without `alg`, provided that on a FORA RPC the signature also covers the request method, target URI, body digest and `Authorization` header, its key is Ed25519, and the signer's key directory meets the rules where FORA departs from the draft. FORA asks for those components through Web Bot Auth's own `Accept-Signature` mechanism. Conformance does not come from sharing the cryptography: it depends on the header forms, the covered components, the signature parameters and the directory format, which [Authentication](/protocol/authentication/#the-web-bot-auth-profile) specifies, together with the [three places FORA departs from the draft](/protocol/authentication/#where-fora-departs-from-wg-00), all in the key directory. The SDKs released as v1.0.8 do not implement that profile yet, and Authentication lists the differences. Web Bot Auth solves identity (Layer 2); FORA adds the transaction layer (Layer 4) on top of that identity.
Every FORA request signature is a conformant signature under that draft, so a CDN or origin that verifies Web Bot Auth can verify a FORA agent without FORA-specific integration. In the other direction, FORA accepts signatures from any Web Bot Auth library, with or without `alg`, provided that on a FORA RPC the signature also covers the request method, target URI, body digest and `Authorization` header, its key is Ed25519, and the signer's key directory meets the rules where FORA departs from the draft. FORA asks for those components through Web Bot Auth's own `Accept-Signature` mechanism. Conformance does not come from sharing the cryptography: it depends on the header forms, the covered components, the signature parameters and the directory format, which [Authentication](/protocol/authentication/#the-web-bot-auth-profile) specifies, together with the [three places FORA departs from the draft](/protocol/authentication/#where-fora-departs-from-wg-00), all in the key directory. The SDKs implement that profile from v1.1.0; those released as v1.0.8 do not, and Authentication lists the differences. Web Bot Auth solves identity (Layer 2); FORA adds the transaction layer (Layer 4) on top of that identity.

## How They Compose

Expand Down
2 changes: 1 addition & 1 deletion website/src/content/docs/reference/changelog.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ description: "FORA protocol changelog"
This page contains curated public release notes. For the exhaustive maintainer
and protocol history, see [`proto/CHANGELOG.md`](https://github.com/FORA-Protocol/protocol/blob/main/proto/CHANGELOG.md).

## Unreleased
## v1.1.0

### Breaking against v1.0.8

Expand Down
Loading