- The release field takes a file too: a release object, drand's JSON or a
local release archive (spec v0.15, §47.1, §50). opener.ts gives it to
open as OpenOptions.release, a release in hand, never compared with the
clock: an archive is read only for its header and one signature, and a
file too large to be a release, and not an archive, is not read.
- What is pasted goes to open as drand's JSON, which names no chain.
- With a clock before the round time the form stays, without the request to
drand, and a release in hand opens the capsule; the result says the clock
seems to be behind (OpenReport.clockBehind).
- The glosses of steps 9 and 10 say what v0.15 checks.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@ -91,9 +91,9 @@ export function openStepGloss(name: string): string {
case'access credential':
return'Solo en time_and_key, antes de usar el release: la .dkk como objeto, su vínculo con esta cápsula (capsule_id y, si lo trae, capsule_digest) y que haya al menos una credencial.';
case'release':
return'Antes de usarlo, sin red, se comprueba con el reloj de este dispositivo que la fecha de apertura ya pasó; después se toma el release que has dado, la firma de la ronda.';
return'Se toma el release que has dado, la firma de la ronda. Como ya lo tienes, no se compara con el reloj de este dispositivo: si la firma es válida, la ronda se publicó. Solo antes de pedirlo a la red se comprueba con el reloj que la fecha ya pasó.';
case'release verification':
return'Primero la ronda del release, que debe ser la de la DateKey; después la firma, que debe ser la codificación canónica de un punto de G1 y verificar con la clave pública del perfil fijado (§17, §51).';
return'Primero, si es un objeto release, su forma y que sea de la cadena del perfil fijado; si es la respuesta de drand, que se pueda leer. Después la ronda, que debe ser la de la DateKey, y la firma, que debe ser la codificación canónica de un punto de G1 y verificar con la clave pública del perfil fijado (§17, §47.1, §51).';
case'open sealed control':
return'Se abre OUTER_TIME_AGE con la firma verificada: exactamente un stanza tlock con la ronda y la cadena del perfil, su cuerpo IBE de 128 bytes y el MAC de la cabecera age.';
problem:'El fichero del release ocupa 8193 bytes: no es un archivo de releases, y un release ocupa como mucho 1 KiB, o 8 KiB si es la respuesta de drand en JSON.',
return`El fichero del release ocupa ${formatBytes(r.size)}: no es un archivo de releases, y un release ocupa como mucho 1 KiB, o 8 KiB si es la respuesta de drand en JSON.`;