Abrir la cápsula

{#if !due}

La fecha de apertura todavía no ha llegado según el reloj de este dispositivo. Hasta entonces drand no publica la firma de la ronda {round} y nadie puede abrir la cápsula, tampoco esta página (paso 9, ERR_RELEASE_UNAVAILABLE).

{:else}
{#if timeAndKey}
La llave

Esta cápsula se creó «solo con una llave»: además de la firma de la ronda, hace falta su fichero .dkk, las palabras con las que se creó o la clave secreta de age de una de las personas a las que se dio. No salen de este navegador.

Las que se escribieron al crear la cápsula. Dan igual mayúsculas, acentos y espacios.

Pega el fichero de tu clave entero, el que creó age-keygen: vale la línea AGE-SECRET-KEY-1…, y las que empiezan por # se ignoran. Solo se usa en este navegador y se borra después.

{/if}
{#if fixture?.release === undefined}
{#if askNote !== ''}

{askNote}

{/if} {/if}

{#if fixture?.release !== undefined} Viene del registro del fixture: es la que publicó drand para la ronda {round}, como muestra su página en drand. Cámbiala para ver cómo la rechaza el paso 10. {:else} «Pedir la firma a drand» la pide a sus relays públicos, que ven tu dirección IP y qué ronda pides. También puedes abrir la firma de la ronda {round} en drand en otra pestaña, copiar lo que muestra y pegarlo aquí; vale también la firma sola, en hexadecimal. {/if} Solo se leen la ronda y la firma, que se verifican aquí con la clave pública del perfil fijado (§51).

{#if problem}

{problem}

{/if}
{#if fixture === undefined}

El texto descifrado se escribe en un fichero temporal privado de este navegador y solo se muestra y se ofrece si age lo autentica entero (§56); si es texto, la página muestra el principio. Si la cápsula guarda varios ficheros, ese fichero temporal es un ZIP con todos ellos. Se borra cuando lo pides, al abrir o cargar otra cápsula y al salir de la página; sin ese fichero, se abre en la memoria de la página hasta 64 MiB.

{/if}
{/if}

{announcement}

{#if result} {@const r = result.report}

{r.opened ? 'Abierta' : r.failure ? `Rechazada en el paso ${r.failure.step}` : 'Rechazada'}

{#if r.opened}

Supera los pasos 9 a 18 en {seconds(result.ms)} s. age ha autenticado el texto entero con la clave de PAYLOAD_AGE, pero eso no prueba quién lo escribió, ni que sea el original si otros abrieron la cápsula antes (§55.1).

{:else if r.failure}

{r.failure.code}

{errorGloss(r.failure.code)}

{#if r.steps.length === 0}

{escapeInvisible(r.failure.message)}

{/if} {/if}
{#if r.plaintext} {@const p = r.plaintext}

Contenido

{#if p.text !== undefined} {#if p.text === ''}

El texto en claro está vacío.

{:else}
{p.textCut ? `${p.text}\n…` : p.text}
{#if p.textCut}

Se muestra el principio, como mucho {formatInteger(SHOWN_TEXT)} caracteres.{fixture === undefined ? ' Descárgalo para verlo entero.' : ''}

{/if} {/if} {:else}

No es texto UTF-8 imprimible, así que la página no lo muestra{fixture === undefined ? ': descárgalo y ábrelo con el programa que corresponda.' : '.'}

{/if} {#if result.download} {@const d = result.download} {#if deleted}

{d.temporary ? 'Fichero temporal borrado. Para descargarlo otra vez, abre de nuevo la cápsula.' : 'El texto descifrado ya no está en la página. Para descargarlo otra vez, abre de nuevo la cápsula.'}

{:else}
Descargar {d.name} {#if d.temporary} {/if}

{#if d.temporary} Está en un fichero temporal privado de este navegador ({formatByteCount(d.size)}). Se borra cuando lo pides, al abrir o cargar otra cápsula y al salir de la página. {:else} Está en la memoria de esta página ({formatByteCount(d.size)}), porque el navegador no le deja un fichero temporal privado. Se libera al abrir o cargar otra cápsula y al salir de la página. {/if}

{/if} {/if}
Tamaño
{formatByteCount(p.length)}
{#if r.padding}
Relleno
regla {r.padding.rule}: la cápsula sellaba {formatByteCount(r.padding.paddedLength)}, el contenido seguido de ceros, que se comprobaron y no se entregan
{/if}
SHA-256
{p.sha256}
{#if p.expectedSHA256 !== undefined}
Registro del fixture
{p.expectedSHA256 === p.sha256 ? 'coincide' : 'no coincide'}: {p.expectedSHA256}
{/if}
{/if} {#if result.files} {@const v = result.files} {@const f = v.files}

Contenido

    {#each f.verdicts as line, i (i)}
  • {line}
  • {/each}
{#if f.head.author !== ''}

autor declarado (texto del creador, sin comprobar):

{escapeInvisible(f.head.author, true)}

{/if} {#if f.head.comment !== ''}
Comentario del creador (sin comprobar)
{escapeInvisible(f.head.comment, true)}
{/if} {#if v.shown}
Principio de {f.facts[0]?.shown} (contenido del creador, sin comprobar)
{v.shown.cut ? `${v.shown.text}\n…` : v.shown.text}
{#if v.shown.cut}

Se muestra el principio del fichero, como mucho {formatInteger(SHOWN_TEXT)} caracteres.

{/if} {/if} {#if v.primary} {#if deleted}

{v.temporary ? 'Fichero temporal borrado. Para descargar los ficheros otra vez, abre de nuevo la cápsula.' : 'Los ficheros ya no están en la página. Para descargarlos otra vez, abre de nuevo la cápsula.'}

{:else}
Descargar {v.primary.name} {#if v.zip} Descargar {v.zip.name}, con su carpeta {/if} {#if v.temporary} {/if}

{#if v.temporary} Están en un fichero temporal privado de este navegador. Se borra cuando lo pides, al abrir o cargar otra cápsula y al salir de la página. {:else} Están en la memoria de esta página: el navegador no le deja un fichero temporal privado, o no tiene sitio para ellos. Se liberan al abrir o cargar otra cápsula y al salir de la página. {/if}

{/if} {/if} {#if f.facts.length === 0}

{f.head.comment === '' ? 'La cápsula no guarda ficheros ni comentario.' : 'La cápsula no guarda ficheros, solo el comentario.'}

{:else}

Ficheros ({formatInteger(f.facts.length)})

    {#each f.facts.slice(0, LISTED) as file, i (i)}
  • {file.shown} {formatByteCount(file.size)}{file.mtimeMs === undefined ? '' : `, fecha del fichero ${formatDateTime(file.mtimeMs)}`} {#if v.each && !deleted} {/if} {#each file.warnings as warning, k (k)}

    aviso: {warning}

    {/each}
  • {/each}
{#if f.facts.length > LISTED}

Y {formatInteger(f.facts.length - LISTED)} ficheros más, que están en el ZIP.

{/if}

Las rutas son texto del creador: se muestran tal cual, con los caracteres invisibles escritos como \u…. La fecha de cada fichero es la que declaró el creador y no prueba nada.

{/if}
{/if} {#if r.steps.length > 0}

Pasos 9 a 18

{/if} {#if r.release}

Release verificado

Ronda
{r.release.round}
Firma
{r.release.signature}
{/if} {#if r.controlExtensions}

Extensiones de CONTROL_CBOR

{/if} {/if}