A JSON object missing its SAID field. SAIDification adds the field and fills it.
{
"first": "Sue",
"last": "Smith",
"role": "Founder"
}
Four plain fields — no SAID yet.
The label the caller picked (here `d`) is inserted with an empty placeholder.
{
"d": "",
"first": "Sue",
"last": "Smith",
"role": "Founder"
}
keripy requires the key to exist before it can be dummied. Valid labels: d, i, id, $id, @id.
Blake3-256 → CESR encodes to 44 base64url chars. The placeholder must be that exact length so the final swap is byte-for-byte reversible.
{
"d": "############################################",
"first": "Sue",
"last": "Smith",
"role": "Founder"
}
The dummy preserves the byte layout that the verifier will reconstruct.
Compact JSON (no whitespace, insertion order) is hashed. The 32-byte digest is CESR-encoded — leading `E` is the Blake3-256 derivation code.
{"d":"############################################","first":"Sue","last":"Smith","role":"Founder"}
Blake3-256 ⇒ CESR ⇒ EPjC9oI1JVaeGTvqZbqq9gIuDnAM2ATUhbT4x3g88zll
The dummy `#` run is replaced with the computed SAID. Same length, so every other byte stays put — that is what makes verification just ‘redo step 3 and compare’.
{
"d": "EPjC9oI1JVaeGTvqZbqq9gIuDnAM2ATUhbT4x3g88zll",
"first": "Sue",
"last": "Smith",
"role": "Founder"
}
Final SAIDified document.