HPPR Ring1 Authentication

© R.A.Sol

Ring1 is the standard repository-auth API. All Ring1 requests are Seals signed by a Ring1 member key.

The key can be derived from a password or set up explicitly.

Request Envelope

Ring1 request form:

🖧: S.<hash>.H3
Seal-By: <member-vkey>
Seal-Sig: <signature>
🖧: P.<hash>.H3
Group: repo
App: 🖧<COMMAND>
Location: <repo-name>/<ring1-name>/<session-id>
TAI: <tai>
🖧: B.<hash>.H3
Data-Length: <len>

<args>

Rules:

Keys

ring0 Key

The repo verification key is the oldest packet at:

//repo/admin/ring1/ring0/keys/|/seal

Oldest means lowest (TAI, hash).

Ring1 and Ring2 setup packets must be signed by this repo key.

Ring1 Keys Config

Path:

//repo/admin/ring1/<name>/keys/|/seal/<vkey>

Packet contains Secret-Key: &.<b64a>.H3. 🖧ADD can use these keys.

Setup Config

Path:

//repo/admin/ring1/<name>/setup/|

Signed by ring0.

Headers:

Ring1-Name constraints:

Secret Token Derivation

Ring1-Secret-Token format:

<derived-token> <original-secret>

Split on first ASCII space.

Client derives <derived-token> using Argon2id with HELLO PHC. Repo does not recompute Argon2id. Repo uses <derived-token> directly.

Argon2id:

Then HSB3 key derivation secret is:

<derived-token>/<ring1-name>/<repo-vkey>

Special Ring1 Names

Pre-ACL Defaults

These apply before ACL-Rule evaluation and are final.

Ring1 Commands

Ring1 includes all commands from 030 and adds:

🖧ADD

Input is LF-separated headers, blank line, optional data.

Type selection:

Defaults:

References:

🖧DETACH

Payload is one hash. Removes packet from coordinate index only. Stored packet remains in hash storage. ring0 only.

🖧TIPS

Returns LF-separated versioned coordinates for tip packets.

🖧WATCH

Returns a stream of + and - lines for matching coordinate prefix changes. Events are filtered by list permission.

🖧AUDIT

Streams audit log lines. ring0 only.

Errors

Common Ring1 failures:

Security

Ring1 expects encrypted transport for confidentiality. Replay resistance uses HELLO-bound session IDs in request Location.