docs: document the +cric cryptosuite that replaced +crub in Ames and Jael - #271
Open
sigilante wants to merge 1 commit into
Open
docs: document the +cric cryptosuite that replaced +crub in Ames and Jael#271sigilante wants to merge 1 commit into
sigilante wants to merge 1 commit into
Conversation
…Jael Cross-cutting correction against urbit/docs.urbit.org@08026c84b2. Flagged independently by two passes of the audit, in two different doc trees. WHAT CHANGED UPSTREAM +cric:crypto (zuse.hoon:1489) is the suite Ames and Jael now use. Unlike +crub, which is fixed to Suite B, +cric is a door over a tagged payload and carries either suite: $% [suite=%b pub=[cry=@ sgn=@ ~] sek=...] [suite=%c pub=[cry=@ sgn=@ tw=[ugn=@ dat=@ xtr=@]] sek=...] == Counted rather than assumed: sys/vane/ames.hoon contains ZERO references to `crub` and 26 to `cric`. Jael builds keys through +cric as well (pit:nu:cric:crypto, nol:nu:cric:crypto -- jael.hoon:266,338,854,1260,1271,1306). +crub still exists in zuse (:1703) and its documentation is kept; it is now labelled as superseded rather than "the only cryptosuite in use". Structural change worth calling out: the symmetric arms moved into a +cyf sub-core. What the docs called `+en:crub:crypto` is now `+en:cyf:cric:crypto` (ames.hoon uses en:cyf: / de:cyf: / dy:cyf: throughout). Documented all four sub-cores: as, ex, nu, cyf. CORRECTIONS THAT REQUIRED READING THE CURRENT STATE, NOT THE MIGRATION CODE The audit described Ames as wrapping _cric:crypto in an internal +acru-25 core, with a legacy +acru-12 for old peers. That is true of the MIGRATION types only. The current `+$ axle` (lull.hoon:1601, axle-31) has no crypto-core field at all -- it stores `[saf=keypairs =ring =pass]`, where `+$ keypairs [pub=public-keys sek=private-keys]` (lull.hoon:1069). +acru-12 (ames.hoon:817) and +acru-25 (:881) appear only inside versioned state definitions such as ames-state-13 and ames-state-22. The docs now say this explicitly, so the next reader does not repeat the mistake. Comet self-attestation no longer signs via an acru core. +etch-open-packet (ames.hoon:423-438) signs with `(sign-raw:ed:crypto - [sgn.pub sgn.sek]:saf)`, so the documented `+sign:as:crub` was wrong in both suite and arm. NOT CHANGED, having been checked: jael/data-types.md $point and $key-update ALREADY carry `crypto-suite=@ud` and match lull.hoon:4323,4327. The audit listed these as needing the field added; they did not. Only $point's prose omitted an explanation of what crypto-suite means, which is now supplied. `+crub:so` (stdlib/4l.md) is an unrelated date-parsing arm and is untouched. core-academy/ca02.md quotes +crub source, but Core Academy declares itself a snapshot at Zuse 412k. All anchor links in the touched files were verified to resolve. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This was referenced Aug 4, 2026
thelifeandtimes
left a comment
Member
There was a problem hiding this comment.
Deferring to @hanfel-dovned for this
hanfel-dovned
approved these changes
Aug 25, 2026
hanfel-dovned
left a comment
There was a problem hiding this comment.
Looks good to me. The edge case I describe here may or may not be worth drawing attention to.
| ``` | ||
|
|
||
| Public key data for a particular ship. The `rift` is the current continuity breach number and `$life` is the current key revision number. The `.keys` `+map` contains the public key (`.pass`) for each `$life` up to the current one. The `.sponsor` is the current sponsor of the ship in question, if it has one. | ||
| Public key data for a particular ship. The `rift` is the current continuity breach number and `$life` is the current key revision number. The `.keys` `+map` contains, for each `$life` up to the current one, the public key (`.pass`) and the `crypto-suite` version number identifying which cryptographic suite that key belongs to. The `.sponsor` is the current sponsor of the ship in question, if it has one. |
There was a problem hiding this comment.
Confidential comets do introduce an edge case where you might not have the entire history of a point's networking keys stored in its Jael state, but this should probably be discouraged at the very least, and depending on how we implement the namespace it may have to be forbidden.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Sixth PR from the audit against
urbit/urbit@08026c84b2. Cross-cutting — this one was flagged independently by two passes of the audit, in two different doc trees, which is what pushed it up the queue.Companion PRs: #266, #267, #268, #269, #270.
What changed upstream
+cric:crypto(zuse.hoon:1489) is the suite Ames and Jael now use. Unlike+crub, which is fixed to Suite B,+cricis a door over a tagged payload and can carry either suite:Counted rather than assumed:
sys/vane/ames.hooncontains zero references tocruband 26 tocric. Jael builds keys through+crictoo (pit:nu:cric:crypto,nol:nu:cric:crypto—jael.hoon:266,338,854,1260,1271,1306).+crubstill exists inzuse(:1703) and its documentation is kept — it's now labelled superseded rather than deleted, since the docs previously called it "the only cryptosuite which Ames makes use of".One structural change worth calling out: the symmetric arms moved into a
+cyfsub-core. What the docs called+en:crub:cryptois now+en:cyf:cric:crypto. All four sub-cores are documented:as,ex,nu,cyf.Corrections that required reading the current state, not the migration code
Two things here are worth a reviewer's attention, because the obvious search gives the wrong answer.
1. Ames no longer stores a crypto core at all. The audit described Ames as wrapping
_cric:cryptoin an internal+acru-25core with a legacy+acru-12for old peers. That is true of the migration types only. The current+$ axle(lull.hoon:1601,axle-31) has nocrypto-corefield — it stores[saf=keypairs =ring =pass], where+$ keypairsis[pub=public-keys sek=private-keys](lull.hoon:1069).+acru-12(ames.hoon:817) and+acru-25(:881) appear only inside versioned definitions likeames-state-13andames-state-22.The docs now state this explicitly, so the next reader doesn't repeat the mistake. (This is the same shape of trap as the
heedsfield in #269.)2. Comet self-attestation no longer signs via an acru core.
+etch-open-packet(ames.hoon:423-438) signs with(sign-raw:ed:crypto - [sgn.pub sgn.sek]:saf). The documented+sign:as:crubwas wrong in both suite and arm.Not changed, having been checked
jael/data-types.md$pointand$key-updatealready carrycrypto-suite=@udand matchlull.hoon:4323,4327. The audit listed these as needing the field added — they did not. Only$point's prose omitted an explanation of whatcrypto-suitemeans, which is now supplied.+crub:so(stdlib/4l.md) is an unrelated date-parsing arm in+so. Untouched.core-academy/ca02.mdquotes+crubsource, but Core Academy declares itself a snapshot at Zuse 412k.All anchor links in the touched files were verified to resolve, and this branch was test-merged against the five open companion PRs — all clean.
🤖 Generated with Claude Code