Compare commits

...

7 Commits
v0.11 ... v0.14

Author SHA1 Message Date
dev 013b069522 Specification 0.14, approved: one drand scheme and the tlock steps vectors
2 days ago
dev 2cdc1d9d12 Check the chain and the body of the sealed locator, as ParseInfo of Go
3 days ago
dev 63ca2ba82e Specification 0.13, approved: the spec version 0.13 and testdata at spec-v0.13
3 days ago
dev 450b3f8cf3 Refuse a CID that is not canonical and a host of two brackets, as Go
3 days ago
dev 4a0d4f7e61 checkResolvedIp: an IPv4-mapped prefix is not one of NAT64, a test
3 days ago
dev d65e21864d Draft v0.13: checkResolvedIp counts an address of NAT64 by its IPv4
3 days ago
dev 62107d7cd4 Specification 0.12, approved: SPEC_VERSION 0.12 and testdata at spec-v0.12
3 days ago

@ -2,6 +2,45 @@
Cambios notables de la librería Dart. El proyecto usa versionado semántico; mientras sea 0.x, no hay promesa de estabilidad.
## Especificación 0.14, en la rama `v0.14` — sin versión
### La especificación 0.14, aprobada (06-10-2026)
- El autor aprobó el 6 de octubre de 2026 el borrador v0.14 con la recomendación de cada una de sus diez decisiones: `datekeys-go` lo cierra con el tag `spec-v0.14` (`39b2033`). `specVersion` pasa a `0.14`, y `testdata` se sincroniza con ese tag: cambia el campo `spec` de cada fichero y llega `vectors/tlock_steps.json`, 136 ficheros.
- **Un solo scheme de drand (decisión 8, §12.1).** `validateProfile` admite solo `bls-unchained-g1-rfc9380`, con la clave pública en G2, como `validateDrand` de Go desde `c041fa3`, en su orden: un nombre que drand no conoce sigue siendo «is not a drand scheme», y cualquier otro scheme de drand, también `pedersen-bls-unchained` y `bls-unchained-on-g1`, da `ERR_UNKNOWN_PROFILE` con el texto de Go, «scheme … is not bls-unchained-g1-rfc9380, the only scheme of V1». Ninguna cápsula válida cambia.
- `test/vectors/formats_profile.json` y su parte de `formats_vectors.g.dart` se regeneran con `tool/formats_go_vectors.go` sobre `39b2033`: cambian solo los trece casos de otro scheme de drand y el campo `spec`. Cinco eran válidos y ahora dan `ERR_UNKNOWN_PROFILE`: cuatro de `bls-unchained-on-g1` con la clave de Quicknet, y el perfil `drand:default:v1` con `pedersen-bls-unchained`. Los otros ocho, de `pedersen-bls-chained` y `bls-bn254-unchained-on-g1`, ya se rechazaban y cambian solo de texto. Los demás vectores de `test/vectors/` cambian solo su campo `spec`.
- **`tlock_steps.json`.** `test/tlock_steps_vm_test.dart` lo recorre valor a valor con el código de la librería (`release.dart`, `ibe.dart`, `tlock.dart`, `bls12381_hash.dart`): M, H(M), la ecuación del emparejamiento, las partes del stanza, e(firma, U), H2, sigma, H4, la file key, cada intento de H3 y r, r·G2 = U, que `decryptOnG2` y `unwrapTlockStanza` dan la file key y que `encryptOnG2WithSigma` escribe el mismo cuerpo, y las comprobaciones negativas del generador de Go: otro DST, la ronda sin SHA-256 y un H3 que borre solo el bit más alto. `test/tlock_steps_test.dart` lo hace compilado a JavaScript, sobre la copia `test/vectors/tlock_steps.g.dart`, que escribe `tool/tlock_steps_copy.dart`.
- El comentario de `h3` de `ibe.dart` decía que se borra el bit más alto; el código desplaza el primer byte un bit a la derecha, como kyber y como dice ahora el §63. Solo cambia el comentario.
## Especificación 0.13, en la rama `v0.13` — sin versión
### El localizador sellado, comprobado antes de la fecha (06-10-2026)
- `parseCapsuleInfo` comprueba el localizador sellado como `ParseInfo` de Go desde `69dbb0c`, a petición del autor: la cadena del stanza tlock en hexadecimal en minúsculas y, si la DateKey es de Quicknet, la de Quicknet; y que el cuerpo tras la cabecera `age` lleve un texto de 4096 bytes o un múltiplo, así que una cabecera sin cuerpo se rechaza. Cada caso es `ERR_EXTENSION_DATA_INVALID` con el texto de Go. `CapsuleInfo.toExtension` rechaza además una DateKey de un perfil que la librería no fija. El límite de 1 MiB al abrir el localizador se queda, por decisión del autor.
- Los vectores de Go del localizador se regeneran sobre ese commit: cambian solo los casos de esas comprobaciones.
### La especificación 0.13, aprobada (06-10-2026)
- El autor aprobó el 6 de octubre de 2026 el borrador v0.13, tal como estaba: `datekeys-go` lo cierra con el tag `spec-v0.13` (`913dd60`). `specVersion` pasa a `0.13`, `testdata` se sincroniza con ese tag, y los vectores de `test/vectors/` cambian solo su campo `spec`.
### Dos direcciones que el §44.1 ya rechazaba (06-10-2026)
- Un CID con un carácter de más cuyos bits son cero y `https://[[2000::]/` se rechazan, como en `datekeys-go` desde `e801e03`. `test/vectors/locator_uris.json` y `locator_vectors.json` se regeneran sobre ese commit: cambian solo las diez direcciones de esas dos formas y los localizadores que las llevan.
### NAT64 (06-10-2026)
- El borrador v0.13 de `datekeys-go` (`a83b44d`, sin aprobar) cuenta una dirección de NAT64 a la que resuelve un nombre, de `64:ff9b::/96` o del prefijo de la red, por la IPv4 que lleva dentro (§44.1, cambio 1 del §76). `checkResolvedIp` lo sigue, con el parámetro `nat64` para el prefijo de la red, y los textos de `locator.CheckResolvedIP` de Go. Una dirección de NAT64 escrita en el localizador se sigue rechazando.
- `testdata` se sincroniza con `a83b44d`, que añade `vectors/resolved_ip.json`: 42 casos, que corre `test/resolved_ip_test.dart`. `specVersion` sigue en `0.12` hasta que el autor apruebe el borrador.
## Especificación 0.12, en la rama `v0.12` — sin versión
### La especificación 0.12, aprobada (06-10-2026)
- El autor aprobó el 6 de octubre de 2026 el borrador v0.12, tal como estaba: `datekeys-go` lo cierra con el tag `spec-v0.12` (`fe405e2`). La librería pasa a la rama `v0.12`, como dice el plan: la rama `v0.11` se queda en `bb66e48`.
- `specVersion` pasa a `0.12`, y `testdata` se sincroniza con el tag: solo cambia el campo `spec` de cada fichero.
- Los vectores de `test/vectors/` que escriben los generadores de Go cambian solo su campo `spec`, en los `.json` y en sus copias `.g.dart`: entre `c531e93` y `fe405e2`, Go solo cambia `SpecVersion` y añade `wordkey.json`, así que el resto sale igual. Dos pruebas que comparaban con `0.11` comparan ahora con `specVersion`.
- La librería ya seguía el borrador: no cambia nada más. `tool/check.sh` pasa con 2 131 pruebas en la VM y 665 en Node.
## Especificación 0.11, en la rama `v0.11` — sin versión
### Los vectores compartidos de la llave de palabras (06-10-2026)

@ -56,7 +56,7 @@ Notas de la etapa 2:
- **El STREAM** se descifra según llega el texto cifrado (`AgePayloadDecryptor`), como el lector de Go: entrega el texto de cada chunk en cuanto se autentica, y un fallo que revela un byte posterior llega en la llamada siguiente.
- **La identity de `OUTER_TIME_AGE`** se compone en la etapa 4, con el perfil: `checkTimeStanzas` de esta etapa, que recibe la ronda, el chain hash y el id del perfil, y `checkTlockProfile` y `unwrapTlockStanza` de la etapa 3.
La etapa 3 porta BLS12-381 de `kilic/bls12-381` v0.1.0, sobre el que calcula `drand/kyber-bls12381` v0.3.4 para drand y tlock; el IBE de `encrypt/ibe` de `drand/kyber` v1.3.2, el de `tlock` v1.2.0 con Quicknet; y `provider.Verify` y el stanza tlock de `agewrap` de `datekeys-go`, con las mismas comprobaciones en el mismo orden y los mismos textos de error. Como `datekeys-ts`, verifica solo el scheme de Quicknet, `bls-unchained-g1-rfc9380`. Todo es código propio: de `package:crypto` usa solo SHA-256.
La etapa 3 porta BLS12-381 de `kilic/bls12-381` v0.1.0, sobre el que calcula `drand/kyber-bls12381` v0.3.4 para drand y tlock; el IBE de `encrypt/ibe` de `drand/kyber` v1.3.2, el de `tlock` v1.2.0 con Quicknet; y `provider.Verify` y el stanza tlock de `agewrap` de `datekeys-go`, con las mismas comprobaciones en el mismo orden y los mismos textos de error. Como `datekeys-ts`, verifica solo el scheme de Quicknet, `bls-unchained-g1-rfc9380`, el único que admite el §12.1 desde la v0.14. Todo es código propio: de `package:crypto` usa solo SHA-256.
| Módulo | Contenido | En Go |
|---|---|---|
@ -74,7 +74,7 @@ Notas de la etapa 3:
- **Los veredictos de un punto** son los de `FromCompressed` de kilic: el flag de compresión a 1; el punto en el infinito solo como `0xc0` y ceros; coordenadas menores que p, sin reducir; un punto de la curva; y un punto del subgrupo de orden r. En G1 el subgrupo se comprueba con [r]·P = O; en G2, con ψ(P) = [x]·P (Scott, eprint 2021/1130, como noble), que las pruebas comparan con [r]·P = O en puntos fuera del subgrupo, también con torsión de cada orden pequeño del cofactor.
- **GT** es el valor del emparejamiento de kilic, con su exponenciación final, f^(3·(p⁴ − p² + 1)/r), y se serializa en su orden (§63, «Serialización de GT en H2»).
- **El hash a G1** sigue a kilic, que suma las dos salidas del mapa en E′ antes de la isogenia. kilic se aparta del RFC 9380 solo donde ningún hash llega: dos salidas iguales u opuestas, que suma con la fórmula de E. Este código las suma con la ley de grupo de E′, como el RFC.
- **Las diferencias con Go, a propósito,** son las de `datekeys-ts`: otro scheme que el de Quicknet da `ERR_UNKNOWN_PROFILE` con un texto propio, donde Go verificaría los otros schemes de drand; y el punto en el infinito nunca es una firma válida (§63 paso 10), mientras que Go la acepta si la clave pública también es el punto en el infinito, una clave que ningún perfil pinneado tiene (§12.1). Las pruebas fijan las dos.
- **Las diferencias con Go, a propósito,** son las de `datekeys-ts`: otro scheme que el de Quicknet da `ERR_UNKNOWN_PROFILE` con un texto propio, donde `provider.Verify` de Go verificaría los otros schemes de drand en un perfil que no ha pasado por `Validate` (desde la v0.14, `validateProfile` rechaza esos perfiles, como Go); y el punto en el infinito nunca es una firma válida (§63 paso 10), mientras que Go la acepta si la clave pública también es el punto en el infinito, una clave que ningún perfil pinneado tiene (§12.1). Las pruebas fijan las dos.
- **El stanza tlock.** `unwrapTlockStanza` recibe los argumentos y el cuerpo del único stanza y hace lo que `NewTimeIdentity` y su `Unwrap` en Go: el perfil, los argumentos, otra vez el release y el cuerpo. El número y el tipo de los stanzas los comprueban las reglas de `agewrap` de la etapa 2, que necesitan la cabecera entera. Se guarda el último release verificado: el paso 11 vuelve a verificar el del paso 10, como en Go, sin otro emparejamiento.
- **La fuente de releases.** La librería no trae cliente HTTP: recibe una `ReleaseSource`, como `OpenOptions.Source` en Go. `fetchRelease` aplica la regla del paso 9: lo que lance la fuente es `ERR_RELEASE_UNAVAILABLE`, con su texto y ningún otro código.
- **Lo que se exporta.** `lib/datekeys.dart` exporta la verificación de releases y `checkCompressedPoint`, como `datekeys-ts`. El IBE y el stanza tlock son internos: los usará la apertura de la etapa 4. El cifrado no se exporta todavía: es del escritor, la etapa 6.
@ -271,10 +271,10 @@ La parte 7a de la etapa 7 porta el paquete `locator` de `datekeys-go` en `c531e9
Notas de la parte 7a:
- **Lo que queda fuera.** La librería no descarga nada. La app pide el resto solo cuando la persona lo pide, después de mostrarle el host o el CID (`LocatorAddress.host`), y solo a una dirección que acepte `checkAddressUri` (`Locator.usable`); no sigue una redirección a una dirección que `checkAddressUri` rechace; comprueba con `checkResolvedIp`, en cada conexión, que la IP a la que resuelve un nombre es pública; lee solo los bytes del resto, y se los da a `Locator.openEnvelope`, que comprueba su SHA-256, descifra el `.dkc` y comprueba el suyo (§44.1).
- **`checkResolvedIp`** no está en Go, cuyo lector no descarga. Recibe los 4 o los 16 bytes de la dirección, los de `InternetAddress.rawAddress`, y la clasifica como `publicIP`: una IPv4 mapeada en IPv6 no es pública, así que la app pasa una IPv4 como sus 4 bytes. En una red móvil solo IPv6, el NAT64 del sistema da a un nombre con solo IPv4 una dirección de `64:ff9b::/96`, que el §44.1 no deja usar.
- **`checkResolvedIp`** es `locator.CheckResolvedIP` de Go, de la v0.13. Recibe los 4 o los 16 bytes de la dirección, los de `InternetAddress.rawAddress`, y la clasifica como `publicIP`: una IPv4 mapeada en IPv6 no es pública, así que la app pasa una IPv4 como sus 4 bytes. En una red móvil solo IPv6, el NAT64 del sistema da a un nombre con solo IPv4 una dirección de `64:ff9b::/96`: cuenta como pública si la IPv4 de dentro lo es. Con `nat64`, el prefijo de NAT64 de la red, que la app descubre con RFC 7050, una dirección de ese prefijo cuenta solo por su IPv4. `test/resolved_ip_test.dart` corre los casos de `resolved_ip.json`.
- **Sellar y crear un sobre.** `Seal` y el cifrado `age` de `NewEnvelope` necesitan el escritor de `age` de la etapa 6: son de la parte 7b. `splitEnvelope` es el resto de `NewEnvelope`: parte el fichero `age` del sobre en su cabecera y su resto, con los textos de `headerEnd`.
- **Las direcciones** se leen como están escritas, sin decodificar nada, sobre sus bytes UTF-8, como lee Go un string: el primer byte que RFC 3986 no admite se cita como lo cita el `%q` de Go, una runa (0xc3 es `'Ã'`). Las IP las lee y las clasifica `ipaddr.dart`, código propio con la aceptación exacta de `netip.ParseAddr`, nunca `InternetAddress` de `dart:io`, que acepta otras notaciones; una IPv6 son 16 bytes, y cada bloque se compara byte a byte.
- **Dos rarezas de Go que se conservan,** porque los vectores son los de Go: el host de una IPv6 es `strings.Trim(host, "[]")`, así que `https://[[2000::]/` vale; e `isCIDv1` mira que los bits sobrantes sean cero, no cuántos son, así que un CID con un carácter más cuyos bits son cero vale también, con otro texto que el canónico. Son de Go, no del texto del §44.1: si Go las corrige, sus vectores lo dirán.
- **Dos rarezas de Go, corregidas** en `datekeys-go` `e801e03` y aquí: `https://[[2000::]/` y un CID con un carácter más cuyos bits son cero se rechazan, porque el §44.1 de la v0.12 ya pedía un literal IPv6 con un solo par de corchetes y el CID en su forma canónica. Los vectores de `tool/locator_go_vectors.go` se regeneraron sobre ese commit.
- **La apertura** lee, como Go con `io.LimitReader`, como mucho 1 MiB del texto del localizador: un chunk de STREAM después de ese MiB no se descifra ni se comprueba, y lo leído no tiene la longitud de un localizador.
- **Los errores no llevan código normativo,** como en Go: un localizador que no se lee o no se abre, o una dirección fuera de las reglas, es inutilizable, y su error es una `LocatorException` con el texto de Go. Los datos de la extensión llevan un código solo, `ERR_EXTENSION_DATA_INVALID`, que la hace inutilizable a ella y nunca a la `.dkk` (§54).
- **`StandardExtensions`** comprueba por defecto la `data` de `datekeys.capsule` con `checkCapsuleData`, como `locator.Standard` de Go: al abrir una `.dkk` con ella, una extensión `datekeys.capsule` que no se lee queda inutilizable, con el texto de Go. Con `validateCapsule: null` solo comprueba que haya `data`, como el `extension.Standard` de Go sin `ValidateCapsule`: es el registro con el que el escritor de la `.dkk` comprueba lo que escribe, como el de Go, porque el codificador de `datekeys.capsule`, `CapsuleInfo.toExtension`, lee lo que escribe.
@ -541,7 +541,7 @@ Manda ECDSA: con el exponente 65 537, una verificación de RSA son 17 multiplica
| Número | Dónde | Hoy |
|---|---|---|
| Librería | `version` de `lib/src/version.dart` y de `pubspec.yaml`, que una prueba mantiene iguales | `0.1.0-dev` |
| Especificación | `specVersion` de `lib/src/version.dart`: la que nombra el campo `spec` de cada fichero de `testdata/` | `0.11` |
| Especificación | `specVersion` de `lib/src/version.dart`: la que nombra el campo `spec` de cada fichero de `testdata/` | `0.14` |
La rama sigue la versión de la especificación: `v0.11`, hasta que `datekeys-go` cierre la v0.12. Desde la etapa 5, `testdata/` es ya el de la rama `v0.12`.
@ -572,10 +572,10 @@ tool/check.sh
## Datos de prueba
`testdata/` es una copia de `datekeys-go/testdata` en un commit fijo. `testdata/SOURCE.json` registra el commit y el SHA-256 de cada fichero, igual que en `datekeys-ts`. La copia actual es la de la rama `v0.12` de `datekeys-go` en `084728d`, la misma que tiene `datekeys-ts`: 134 ficheros, con `wordkey.json`, los vectores compartidos de la llave de palabras, con los veredictos y las líneas del borrador v0.12. Cada fichero dice aún `"spec": "0.11"`, como el `SpecVersion` de Go, hasta que el autor apruebe el borrador.
`testdata/` es una copia de `datekeys-go/testdata` en un commit fijo. `testdata/SOURCE.json` registra el commit y el SHA-256 de cada fichero, igual que en `datekeys-ts`. La copia actual es la del tag `spec-v0.14` de `datekeys-go`, `39b2033`: 136 ficheros, con `tlock_steps.json`, los pasos 10 y 11 de Quicknet valor a valor, con `resolved_ip.json`, con `wordkey.json`, los vectores compartidos de la llave de palabras, y los veredictos y las líneas de la v0.12. Cada fichero dice `"spec": "0.14"`, como el `SpecVersion` de Go.
```bash
dart run tool/sync_testdata.dart sync --commit 084728d
dart run tool/sync_testdata.dart sync --commit spec-v0.14
```
```bash
@ -585,6 +585,7 @@ dart run tool/sync_testdata.dart check --against ../datekeys-go
- `sync` lee los ficheros con git en ese commit, así que nunca entran cambios sin commit del repositorio de Go.
- Los ficheros de `testdata/` no se editan ni se generan aquí.
- En cada `dart test`, `test/testdata_test.dart` comprueba la copia, y que cada fichero nombre `specVersion`.
- `test/tlock_steps_vm_test.dart` recorre `tlock_steps.json` valor a valor con el código de la librería: M, H(M), la ecuación del emparejamiento, las partes del stanza, e(firma, U), H2, sigma, H4, la file key, cada intento de H3 y r, r·G2 = U, y las comprobaciones negativas del generador de Go (otro DST, la ronda sin SHA-256 y H3 que borra solo el bit más alto). `test/tlock_steps_test.dart` hace lo mismo compilado a JavaScript, sobre `test/vectors/tlock_steps.g.dart`, la copia del fichero que escribe `dart run tool/tlock_steps_copy.dart` tras cada `sync`; la prueba de la VM comprueba que es el fichero byte a byte.
`test/vectors/` tiene los vectores de las primitivas, de la lectura y la escritura de `age`, de BLS12-381, de tlock, de las reglas de rutas y textos, de la llave de palabras, de los formatos, de la apertura, del área de seguridad, de la firma con certificados y el sello, del lector de CMS, del localizador, de las claves de autor y de la firma Ed25519, y del sellado del localizador y del sobre. Los escribe Go, con las librerías de la caché de módulos que usa `datekeys-go` (`x/crypto`, `filippo.io/age`, `kilic/bls12-381`, `drand/kyber`, `kyber-bls12381` y `tlock`) y sus paquetes, como `provider`, `agewrap`, `capsule`, `internal/pathrule`, `internal/testkit` y `wordkey`; ningún valor esperado se escribe a mano. Los generadores van en `tool/`, con `//go:build ignore`, y se ejecutan en el contexto del módulo de `datekeys-go`, sin cambiar nada en él; los de las rutas, de la apertura, del lector de CMS y del escritor de `age`, en una exportación suya, y el último, `tool/cms_go_vectors_test.go`, como una prueba de Go. Los de BLS12-381 y tlock dan la misma salida con el tag `spec-v0.11` y con el borrador v0.12, y leen ficheros congelados de `datekeys-ts`, cuya carpeta en esta máquina se llama todavía `App`:

@ -142,9 +142,11 @@ Uint8List h4(List<int> sigma, int n) => _hashTo(n, [_h4Tag, sigma]);
/// H3, the scalar r of [sigma] and [msg]: with base = SHA-256("IBE-H3" ||
/// sigma || msg), the first d = SHA-256(uint16le(i) || base), i = 1, 2, …,
/// whose top bit cleared makes it a big-endian integer below the order of
/// the scalar field. [iterations] bounds i, for tests; after it, the proof
/// fails, as in kyber.
/// that is a big-endian integer below the order of the scalar field once
/// its first byte is shifted one bit to the right, as kyber does (spec §63,
/// "H3 y H4"). The shift moves every bit of that byte: clearing only its
/// top bit gives another r (testdata/vectors/tlock_steps.json). [iterations]
/// bounds i, for tests; after it, the proof fails, as in kyber.
BigInt h3(List<int> sigma, List<int> msg, {int iterations = h3Iterations}) {
final base = _hashTo(32, [_h3Tag, sigma, msg]);
try {

@ -128,6 +128,14 @@ final class CapsuleInfo {
if (d == null || d != dateKey) {
throw _fail('Info.DateKey is not a canonical DateKey');
}
// A writer writes the DateKey of a capsule it wrote: of a profile that
// this library pins, whose chain the check of the locator then compares.
if (d.profileId != quicknetId) {
throw _fail(
'Info.DateKey is of the profile ${goQuote(utf8Bytes(d.profileId))}, '
'which this module does not pin',
);
}
final s = sealed;
if (s != null && (s.isEmpty || s.length > _maxSealed)) {
throw _fail(
@ -241,28 +249,65 @@ CapsuleInfo parseCapsuleInfo(Extension x) {
throw _dataInvalid('compact_datekey is not a canonical DateKey');
}
final s = sealed;
if (s != null && !_sealedFor(s, d.round)) {
throw _dataInvalid(
'the locator is not an age file with one tlock stanza for round '
'${d.round}, the one of its DateKey',
);
if (s != null) {
final problem = _sealedProblem(s, d);
if (problem != null) throw _dataInvalid(problem);
}
return CapsuleInfo(note: note, dateKey: d, sealed: s);
}
// Whether sealed is an age file whose header holds one tlock stanza with two
// arguments, the first of them round.
bool _sealedFor(Uint8List sealed, int round) {
final List<AgeStanza> st;
// checkSealed of Go: why the sealed locator does not have the form of spec
// §44.1, as far as it can be checked before the date, or null. An age file
// with one tlock stanza, whose arguments are the round of the DateKey d in
// decimal and a chain hash in lower-case hexadecimal (§28.1), the chain of
// the profile of d when this library pins it, Quicknet; and a body that
// holds a plaintext of 4096 bytes or a multiple, as every locator has.
String? _sealedProblem(Uint8List sealed, DateKey d) {
List<AgeStanza>? st;
try {
st = ageStanzas(sealed);
} on DateKeysException {
return false;
st = null;
}
if (st == null ||
st.length != 1 ||
st[0].type != stanzaTlock ||
st[0].args.length != 2 ||
st[0].args[0] != '${d.round}') {
return 'the locator is not an age file with one tlock stanza for round '
'${d.round}, the one of its DateKey';
}
final chain = st[0].args[1];
if (!RegExp(r'^[0-9a-f]{64}$').hasMatch(chain)) {
return 'the tlock stanza of the locator has no chain hash in lower-case '
'hexadecimal';
}
return st.length == 1 &&
st[0].type == stanzaTlock &&
st[0].args.length == 2 &&
st[0].args[0] == '$round';
if (d.profileId == quicknetId && chain != quicknetChainHash) {
return 'the locator is sealed for the chain $chain, not for the one of '
'the profile ${d.profileId} of its DateKey';
}
// ageStanzas read the header up to its MAC line, so it ends.
final end = _headerEnd(sealed);
if (end == sealed.length) {
return 'the locator is an age header without a body';
}
if (!_sealedBodyLength(sealed.length - end)) {
return 'the body of the locator is ${sealed.length - end} bytes, which no '
'plaintext of 4096 bytes or a multiple gives';
}
return null;
}
// sealedBodyLength of Go: whether n bytes after the age header are the body
// of a plaintext of 4096·k bytes, k from 1: the nonce of 16 bytes and the
// plaintext in chunks of 64 KiB, each with its tag of 16 bytes.
bool _sealedBodyLength(int n) {
for (var p = locatorBlock; p <= _maxSealed; p += locatorBlock) {
if (n == 16 + p + 16 * ((p + 65535) ~/ 65536)) return true;
}
return false;
}
/// The check of the data of datekeys.capsule that a reader that knows the
@ -536,7 +581,9 @@ String _lowerAscii(String s) => String.fromCharCodes([
void _checkHost(String host) {
if (host.isEmpty) throw _fail('an https address without a host');
if (host.startsWith('[')) {
final a = parseIpAddress(_trimBrackets(host));
// One pair of brackets, as checkHost of Go: "[[2000::]" is not an IPv6
// literal. _splitAuthority ends the literal at its first ']'.
final a = parseIpAddress(host.substring(1, host.length - 1));
if (a == null || !a.is6 || a.zone.isNotEmpty || !isPublicIp(a)) {
throw _fail('an https address with an IPv6 literal that is not public');
}
@ -639,8 +686,9 @@ bool _isCidV1(String s) {
acc &= (1 << bits) - 1;
}
}
// The bits of the last character beyond a byte are zero.
if (acc != 0) return false;
// Canonical base32 without padding: the last character carries fewer than
// 5 bits beyond the last byte, all zero.
if (bits >= 5 || acc != 0) return false;
final version = _uvarint(out, 0);
if (version == null || version.$1 != BigInt.one) return false;
final codec = _uvarint(out, version.$2);
@ -677,11 +725,48 @@ bool _isCidV1(String s) {
/// 2002::/16 and 3fff::/20. An IPv6 address that holds an IPv4 one is not,
/// IPv4-mapped included: an IPv4 address is checked as its 4 bytes.
///
/// Throws a [LocatorException] for an address that is not public, and an
/// [ArgumentError] for any other length. Go has no such function: a reader
/// of the reference does not download.
void checkResolvedIp(List<int> ip) {
/// On an IPv6-only network with DNS64 and NAT64, a name that has only IPv4
/// addresses resolves to an IPv6 address that holds one (RFC 6052): one of
/// the well-known prefix 64:ff9b::/96 is public when the IPv4 address in its
/// last 32 bits is (spec v0.13, §44.1). [nat64] is the NAT64 prefix of the
/// network, in the notation of netip.ParsePrefix (`64:ff9b:1::/48`), which
/// the application discovers with RFC 7050 or its system gives, or null for
/// none: an address in it is public only when the IPv4 address it holds, at
/// the positions of RFC 6052, is, even when the prefix is a public one. The
/// prefix must have one of the lengths of RFC 6052 and lie in 64:ff9b::/16
/// or be a public IPv6 prefix.
///
/// Throws a [LocatorException] for an address that is not public or a
/// prefix that cannot be one of NAT64, with the texts of
/// locator.CheckResolvedIP of Go, and an [ArgumentError] for an address of
/// another length or a prefix that does not parse.
void checkResolvedIp(List<int> ip, {String? nat64}) {
final a = IpAddress.fromBytes(ip);
_Nat64Prefix? network;
if (nat64 != null) {
network = _Nat64Prefix.parse(nat64);
network.check();
}
// The prefixes of NAT64 decide first: the prefix of a network may be a
// public one, and an address in it reaches the IPv4 address it holds,
// which may be private.
for (final p in [_nat64WellKnown, ?network]) {
if (!p.contains(a)) continue;
final v4 = p.ipv4(a);
if (v4 == null) {
throw _fail(
'an https address whose name resolves to $a, an address of the NAT64 '
'prefix $p whose bits 64 to 71 are not zero',
);
}
if (!isPublicIp(v4)) {
throw _fail(
'an https address whose name resolves to $a, an address of NAT64 '
'that holds $v4, an IP address that is not public',
);
}
return;
}
if (!isPublicIp(a)) {
throw _fail(
'an https address whose name resolves to $a, an IP address that is '
@ -690,6 +775,91 @@ void checkResolvedIp(List<int> ip) {
}
}
final _nat64WellKnown = _Nat64Prefix.parse('64:ff9b::/96');
final _nat64Block = _Nat64Prefix.parse('64:ff9b::/16');
// A NAT64 prefix (RFC 6052), as the netip.Prefix that CheckResolvedIP of Go
// receives: the address as written and its length, bits after the length
// kept, so that check can refuse them.
final class _Nat64Prefix {
_Nat64Prefix(this.addr, this.bits);
// netip.ParsePrefix: an address without a zone, '/', and a length in
// decimal without a sign or leading zeros, up to the bits of the address.
factory _Nat64Prefix.parse(String s) {
final slash = s.lastIndexOf('/');
final addr = slash < 0 ? null : parseIpAddress(s.substring(0, slash));
final len = slash < 0 ? '' : s.substring(slash + 1);
final bits = RegExp(r'^(0|[1-9][0-9]{0,2})$').hasMatch(len)
? int.parse(len)
: -1;
if (addr == null ||
addr.zone.isNotEmpty ||
bits < 0 ||
bits > addr.bytes.length * 8) {
throw ArgumentError.value(s, 'nat64', 'not an IP prefix');
}
return _Nat64Prefix(addr, bits);
}
final IpAddress addr;
final int bits;
// netip.Prefix.Contains: an address of the same family, without a zone,
// whose first bits are those of the prefix.
bool contains(IpAddress a) {
final p = addr.bytes;
final b = a.bytes;
if (a.zone.isNotEmpty || b.length != p.length) return false;
for (var i = 0; i < bits; i++) {
final m = 0x80 >> (i & 7);
if ((b[i >> 3] & m) != (p[i >> 3] & m)) return false;
}
return true;
}
// checkNAT64Prefix of Go.
void check() {
final p = addr.bytes;
if (!addr.is6 || addr.is4In6) {
throw _fail('the NAT64 prefix $this is not an IPv6 prefix');
}
for (var i = bits; i < 128; i++) {
if (p[i >> 3] & (0x80 >> (i & 7)) != 0) {
throw _fail('the NAT64 prefix $this has bits set after its length');
}
}
if (!const [32, 40, 48, 56, 64, 96].contains(bits)) {
throw _fail(
'the NAT64 prefix $this is not of 32, 40, 48, 56, 64 or 96 bits '
'(RFC 6052)',
);
}
if (!_nat64Block.contains(addr) && !isPublicIp(addr)) {
throw _fail(
'the NAT64 prefix $this is neither in 64:ff9b::/16 nor a public IPv6 '
'prefix',
);
}
}
// nat64IPv4 of Go: the IPv4 address that [a], an address of this prefix,
// holds at the positions of RFC 6052, section 2.2, the 32 bits after the
// prefix without bits 64 to 71, which must be zero; null if they are not.
IpAddress? ipv4(IpAddress a) {
final b = a.bytes;
if (bits < 96 && b[8] != 0) return null;
final v4 = <int>[];
for (var i = bits >> 3; v4.length < 4; i++) {
if (i != 8) v4.add(b[i]);
}
return IpAddress.fromBytes(v4);
}
@override
String toString() => '$addr/$bits';
}
// ---------------------------------------------------------------------------
// The locator

@ -424,9 +424,10 @@ Profile _profileOf(_Wire w) => Profile(
/// that is not 32 bytes;
/// 2. the rules of each field (ERR_UNKNOWN_PROFILE): the alphabets of the
/// names and their lengths, the length of the public key, a genesis time
/// in 1..253402300798, the provider drand, a scheme that tlock supports
/// and a public key that is the canonical encoding of a point of the key
/// group of the scheme other than the point at infinity;
/// in 1..253402300798, the provider drand, the scheme
/// bls-unchained-g1-rfc9380, the only one since spec v0.14, and a public
/// key that is the canonical encoding of a point of G2 other than the
/// point at infinity;
/// 3. the check of the chain hash (ERR_PROFILE_MISMATCH): it is the hash of
/// the drand chain information of the other parameters.
void validateProfile(Profile p) {
@ -476,31 +477,31 @@ void validateProfile(Profile p) {
_validateDrand(p);
}
// The key group of each drand scheme that tlock supports; the other schemes
// that drand knows are refused, and any other name is not a drand scheme,
// as SchemeFromName of drand v2.1.7 and the switch of validateDrand of Go.
const _tlockSchemes = {
'bls-unchained-g1-rfc9380': BlsGroup.g2,
'pedersen-bls-unchained': BlsGroup.g1,
'bls-unchained-on-g1': BlsGroup.g2,
};
const _otherDrandSchemes = {
// The schemes that drand knows, as SchemeFromName of drand v2.1.7: any other
// name is not a drand scheme. Of them, spec §12.1 admits since v0.14 only
// bls-unchained-g1-rfc9380, whose public key is in G2, the one scheme whose
// release and tlock decryption the specification writes byte for byte, as
// validateDrand of Go.
const _drandSchemes = {
'pedersen-bls-chained',
'pedersen-bls-unchained',
'bls-unchained-on-g1',
'bls-unchained-g1-rfc9380',
'bls-bn254-unchained-on-g1',
};
void _validateDrand(Profile p) {
final scheme = goQuote(utf8Bytes(p.scheme));
final group = _tlockSchemes[p.scheme];
if (group == null) {
if (_otherDrandSchemes.contains(p.scheme)) {
throw _unknown(
'profile ${p.id}: scheme $scheme is not supported by tlock',
);
}
if (!_drandSchemes.contains(p.scheme)) {
throw _unknown('profile ${p.id}: $scheme is not a drand scheme');
}
final verdict = checkCompressedPoint(group, p.publicKey);
if (p.scheme != quicknetScheme) {
throw _unknown(
'profile ${p.id}: scheme $scheme is not $quicknetScheme, the only '
'scheme of V1',
);
}
final verdict = checkCompressedPoint(BlsGroup.g2, p.publicKey);
if (verdict == PointVerdict.invalid) {
throw _unknown(
'profile ${p.id}: public key is not the canonical encoding of a point '

@ -5,4 +5,4 @@ const String version = '0.1.0-dev';
/// The version of the DateKeys Protocol Specification that this library
/// implements, and that the `spec` field of every file of its `testdata/`
/// names.
const String specVersion = '0.11';
const String specVersion = '0.14';

@ -9,6 +9,7 @@ library;
import 'dart:convert';
import 'dart:io';
import 'package:datekeys/src/version.dart';
import 'package:test/test.dart';
import 'formats_differential.dart';
@ -37,7 +38,7 @@ void main() {
test('every file is of this specification and of its generator', () {
for (final f in files.values) {
expect(f['spec'], '0.11');
expect(f['spec'], specVersion);
expect(f['generator'], 'tool/formats_go_vectors.go');
}
});

@ -17,6 +17,7 @@ import 'package:datekeys/src/framing.dart';
import 'package:datekeys/src/header.dart';
import 'package:datekeys/src/padding.dart';
import 'package:datekeys/src/profile.dart';
import 'package:datekeys/src/version.dart';
import 'package:test/test.dart';
typedef Json = Map<String, Object?>;
@ -42,7 +43,7 @@ void main() {
final vectors = section(file, 'vectors');
test('is of this specification and holds valid and invalid strings', () {
expect(file['spec'], '0.11');
expect(file['spec'], specVersion);
expect(vectors.where((v) => v.containsKey('dk1')), isNotEmpty);
expect(vectors.where((v) => v.containsKey('input')), isNotEmpty);
});

@ -65,17 +65,16 @@ void main() {
}
});
test('Go accepts a doubled opening bracket, and a CID with one more '
'character whose bits are zero', () {
// The host of Go is strings.Trim(host, "[]"), and isCIDv1 checks only
// that the bits left over are zero, not their count: Dart does the
// same, as the vectors of Go say.
test('a doubled opening bracket and a CID with one more character whose '
'bits are zero are refused, as by Go since the draft v0.13', () {
// checkHost of Go takes one pair of brackets, and isCIDv1 refuses 5 or
// more bits left over: neither is the form that spec §44.1 asks for.
for (final uri in [
'https://[[2000::]/',
'ipfs://bafybeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqabf3oclgtqy55fbzdia',
]) {
final c = rows(v, 'uris').firstWhere((c) => c[0] == uri);
expect(c[1], 0, reason: uri);
expect(c[1], isNot(0), reason: uri);
expectUri(c);
}
});
@ -100,25 +99,34 @@ void main() {
}
});
test('checkResolvedIp checks the bytes of an address as publicIP', () {
for (final c in rows(v, 'public')) {
final b = fromHex(c[0]! as String);
if (c[1] == null) {
expect(() => checkResolvedIp(b), throwsArgumentError);
continue;
test(
'checkResolvedIp checks the bytes of an address as publicIP, but NAT64',
() {
for (final c in rows(v, 'public')) {
final b = fromHex(c[0]! as String);
if (c[1] == null) {
expect(() => checkResolvedIp(b), throwsArgumentError);
continue;
}
final a = IpAddress.fromBytes(b);
expect('$a', c[2]);
expect(isPublicIp(a), c[1], reason: '$a');
// An address of NAT64 counts by the IPv4 address it holds (spec
// v0.13): resolved_ip_test.dart runs those.
if (b.length == 16 &&
toHex(b.sublist(0, 12)) == '0064ff9b0000000000000000') {
continue;
}
expect(
errorText(() => checkResolvedIp(b)),
c[1] == true
? ''
: 'locator: an https address whose name resolves to ${c[2]}, '
'an IP address that is not public',
);
}
final a = IpAddress.fromBytes(b);
expect('$a', c[2]);
expect(isPublicIp(a), c[1], reason: '$a');
expect(
errorText(() => checkResolvedIp(b)),
c[1] == true
? ''
: 'locator: an https address whose name resolves to ${c[2]}, '
'an IP address that is not public',
);
}
});
},
);
test('an IPv4 address mapped in IPv6 is not public', () {
expect(

@ -0,0 +1,76 @@
// The IP address that the name of an https address of a locator resolves
// to, against testdata/vectors/resolved_ip.json of the draft v0.13 (spec
// §44.1): a public address, or an address of NAT64 of 64:ff9b::/96 or of
// the prefix of the network whose IPv4 address inside is public, with the
// texts of locator.CheckResolvedIP of Go.
@TestOn('vm')
library;
import 'dart:convert';
import 'dart:io';
import 'package:datekeys/src/ipaddr.dart';
import 'package:datekeys/src/locator.dart';
import 'package:test/test.dart';
typedef Json = Map<String, Object?>;
void main() {
final f = jsonDecode(
File('testdata/vectors/resolved_ip.json').readAsStringSync(),
) as Json;
final cases = (f['cases']! as List).cast<Json>();
test('resolved_ip.json has the cases of README', () {
expect(cases, hasLength(greaterThanOrEqualTo(40)));
expect(cases.where((c) => c['result'] == 'ok'), isNotEmpty);
expect(cases.where((c) => c['result'] == 'error'), isNotEmpty);
});
for (final c in cases) {
test('${c['name']}', () {
final ip = parseIpAddress(c['ip']! as String)!;
final nat64 = c['nat64']! as String;
void check() =>
checkResolvedIp(ip.bytes, nat64: nat64.isEmpty ? null : nat64);
if (c['result'] == 'ok') {
check();
} else {
expect(c['result'], 'error');
expect(
check,
throwsA(
isA<LocatorException>().having(
(e) => e.message,
'message',
c['error'],
),
),
);
}
});
}
test('an IPv4-mapped prefix is not one of NAT64, as in Go', () {
expect(
() => checkResolvedIp([8, 8, 8, 8], nat64: '::ffff:0.0.0.0/96'),
throwsA(
isA<LocatorException>().having(
(e) => e.message,
'message',
'locator: the NAT64 prefix ::ffff:0.0.0.0/96 is not an IPv6 prefix',
),
),
);
});
test('a prefix that does not parse is an ArgumentError', () {
for (final s in ['64:ff9b::', '64:ff9b::/129', '64:ff9b::/-1', 'x/96']) {
expect(
() => checkResolvedIp([8, 8, 8, 8], nat64: s),
throwsArgumentError,
reason: s,
);
}
});
}

@ -0,0 +1,198 @@
// Steps 10 and 11 of spec §63 for Quicknet, value by value, against
// testdata/vectors/tlock_steps.json (spec v0.14, the paragraphs "Mensaje de
// ronda y hash a G1" and "H3 y H4"): every intermediate value of the file is
// computed again with the code of the library, release.dart, ibe.dart,
// tlock.dart and bls12381_*.dart, and so are the negative checks that the
// generator of Go runs on each vector. tlock_steps_vm_test.dart walks the
// file; tlock_steps_test.dart walks its copy compiled to JavaScript.
import 'dart:convert';
import 'dart:typed_data';
import 'package:datekeys/src/bls12381_curve.dart';
import 'package:datekeys/src/bls12381_fp.dart' show groupOrder;
import 'package:datekeys/src/bls12381_hash.dart';
import 'package:datekeys/src/bls12381_pairing.dart';
import 'package:datekeys/src/bytes.dart';
import 'package:datekeys/src/ibe.dart';
import 'package:datekeys/src/profile.dart';
import 'package:datekeys/src/release.dart';
import 'package:datekeys/src/sha256.dart';
import 'package:datekeys/src/tlock.dart';
import 'package:datekeys/src/version.dart';
import 'package:test/test.dart';
typedef Json = Map<String, Object?>;
// The DST of RFC 9380 for G2, which bls-unchained-on-g1 uses to hash to G1:
// a reader that takes it, or the round itself as the message, fails step 10.
const _g2Dst = 'BLS_SIG_BLS12381G2_XMD:SHA-256_SSWU_RO_NUL_';
String _s(Json v, String key) => v[key]! as String;
Uint8List _h(Json v, String key) => fromHex(_s(v, key));
Uint8List _xor(List<int> a, List<int> b) {
expect(a, hasLength(b.length));
return Uint8List.fromList([for (var i = 0; i < a.length; i++) a[i] ^ b[i]]);
}
BigInt _big(List<int> b) =>
b.isEmpty ? BigInt.zero : BigInt.parse(toHex(b), radix: 16);
/// The tests of [f], the parsed tlock_steps.json.
void tlockStepsTests(Json f) {
final vectors = (f['vectors']! as List).cast<Json>();
final tags = f['tags']! as Json;
test('names this specification and the pinned profile of Quicknet', () {
expect(f['spec'], specVersion);
final p = quicknet();
validateProfile(p);
expect(f['profile'], p.id);
expect(f['scheme'], quicknetScheme);
expect(f['scheme'], p.scheme);
expect(_s(f, 'chain_hash'), toHex(p.chainHash));
expect(_s(f, 'chain_hash'), toHex(chainInfoHash(p)));
expect(_s(f, 'public_key'), toHex(p.publicKey));
expect(f['dst'], quicknetDst);
expect(tags, {
'h2': toHex(ascii.encode('IBE-H2')),
'h3': toHex(ascii.encode('IBE-H3')),
'h4': toHex(ascii.encode('IBE-H4')),
});
expect(vectors, hasLength(5));
// The last vector is the one whose H3 needs more than one try.
expect((vectors.last['h3_tries']! as List).length, greaterThan(2));
});
final key = G2Point.decode(fromHex(_s(f, 'public_key')))!;
final chainHash = _s(f, 'chain_hash');
final h3Tag = fromHex(tags['h3']! as String);
for (final v in vectors) {
final name = _s(v, 'name');
final round = v['round']! as int;
final signature = _h(v, 'signature');
test('$name: step 10, M, H(M) and the pairing equation', () {
final m = roundIdentity(round);
expect(toHex(m), _s(v, 'message'));
final round8 = Uint8List(8)
..buffer.asByteData().setUint32(0, round ~/ 0x100000000)
..buffer.asByteData().setUint32(4, round % 0x100000000);
expect(m, sha256(round8));
final hm = hashToG1(m, quicknetDst);
expect(toHex(hm.toBytes()), _s(v, 'hash_to_g1'));
final sig = signaturePoint(signature);
// e(H(M), public_key) = e(signature, G2).
expect(pairingCheck([(hm, key), (-sig, G2Point.generator)]), isTrue);
verifyRelease(quicknet(), round, Release(round, signature));
// The usual misreadings do not verify: the DST of G2, and the round
// without SHA-256 as the message.
expect(
pairingCheck([(hashToG1(m, _g2Dst), key), (-sig, G2Point.generator)]),
isFalse,
);
expect(
pairingCheck([
(hashToG1(round8, quicknetDst), key),
(-sig, G2Point.generator),
]),
isFalse,
);
});
test('$name: step 11, H2, sigma, H4, the file key, H3 and r·G2 = U', () {
final body = _h(v, 'body');
final u = _h(v, 'u');
final vv = _h(v, 'v');
final w = _h(v, 'w');
expect(body, hasLength(tlockBodyLength));
expect(body, concatBytes([u, vv, w]));
final ct = ciphertextFromBody(body);
expect([ct.u, ct.v, ct.w], [u, vv, w]);
expect(ciphertextToBody(ct), body);
final sig = signaturePoint(signature);
final uPoint = G2Point.decode(u)!;
expect(uPoint.isInfinity, isFalse);
final gt = pairing(sig, uPoint);
expect(toHex(gtBytes(gt)), _s(v, 'pairing'));
final mask2 = h2(gt, tlockBlockLength);
expect(toHex(mask2), _s(v, 'h2'));
final sigma = _xor(vv, mask2);
expect(toHex(sigma), _s(v, 'sigma'));
final mask4 = h4(sigma, tlockBlockLength);
expect(toHex(mask4), _s(v, 'h4'));
final fileKey = _xor(w, mask4);
expect(toHex(fileKey), _s(v, 'file_key'));
// H3, try by try.
final base = sha256(concatBytes([h3Tag, sigma, fileKey]));
expect(toHex(base), _s(v, 'h3_base'));
final tries = (v['h3_tries']! as List).cast<Json>();
expect(tries, isNotEmpty);
Uint8List? cleared;
for (var k = 0; k < tries.length; k++) {
final t = tries[k];
final i = k + 1;
expect(t['i'], i);
final d = sha256(
concatBytes([
[i & 0xff, i >> 8],
base,
]),
);
expect(toHex(d), _s(t, 'digest'));
final shifted = Uint8List.fromList(d)..[0] = d[0] >> 1;
expect(toHex(shifted), _s(t, 'shifted'));
final accepted = _big(shifted) < groupOrder;
expect(t['accepted'], accepted);
expect(accepted, k == tries.length - 1, reason: 'only the last try');
// Clearing the top bit instead accepts another value.
final c = Uint8List.fromList(d)..[0] = d[0] & 0x7f;
if (cleared == null && _big(c) < groupOrder) cleared = c;
}
final r = _h(v, 'r');
expect(toHex(r), _s(tries.last, 'shifted'));
expect(h3(sigma, fileKey), _big(r));
if (tries.length > 1) {
// The library rejects every try before the last one.
expect(
() => h3(sigma, fileKey, iterations: tries.length - 1),
throwsA(isA<IbeException>()),
);
}
expect(cleared, isNotNull);
expect(toHex(cleared!), isNot(toHex(r)));
// r·G2 = U.
expect(proofHolds(_big(r), uPoint), isTrue);
expect(toHex(G2Point.generator.multiply(_big(r)).toBytes()), toHex(u));
expect(proofHolds(_big(cleared), uPoint), isFalse);
});
test('$name: the library opens the stanza and writes it again', () {
final body = _h(v, 'body');
final fileKey = _s(v, 'file_key');
expect(toHex(decryptOnG2(signature, ciphertextFromBody(body))), fileKey);
expect(
toHex(
unwrapTlockStanza(quicknet(), round, Release(round, signature), [
'$round',
chainHash,
], body),
),
fileKey,
);
final ct = encryptOnG2WithSigma(
fromHex(_s(f, 'public_key')),
fromHex(_s(v, 'message')),
fromHex(fileKey),
_h(v, 'sigma'),
);
expect(toHex(ciphertextToBody(ct)), toHex(body));
});
}
}

@ -0,0 +1,16 @@
// Steps 10 and 11 of spec §63 against the copy of
// testdata/vectors/tlock_steps.json, compiled to JavaScript, where no file
// can be read; tlock_steps_vm_test.dart walks the file itself on the VM.
@TestOn('!vm')
library;
import 'dart:convert';
import 'package:test/test.dart';
import 'tlock_steps_support.dart';
import 'vectors/tlock_steps.g.dart';
void main() {
tlockStepsTests(jsonDecode(tlockStepsJson) as Json);
}

@ -0,0 +1,28 @@
// Steps 10 and 11 of spec §63 against testdata/vectors/tlock_steps.json, read
// from the file, and the copy of the file that tlock_steps_test.dart walks
// compiled to JavaScript (test/vectors/tlock_steps.g.dart, written by
// tool/tlock_steps_copy.dart).
@TestOn('vm')
library;
import 'dart:convert';
import 'dart:io';
import 'package:test/test.dart';
import 'tlock_steps_support.dart';
import 'vectors/tlock_steps.g.dart';
void main() {
final text = File('testdata/vectors/tlock_steps.json').readAsStringSync();
test('tlock_steps.g.dart holds testdata/vectors/tlock_steps.json', () {
expect(
tlockStepsJson,
text,
reason: 'run dart run tool/tlock_steps_copy.dart',
);
});
tlockStepsTests(jsonDecode(text) as Json);
}

@ -1,5 +1,5 @@
{
"spec": "0.11",
"spec": "0.14",
"generator": "tool/formats_go_vectors.go",
"description": "The frame of BODY (capsule.ParseBodyFrame) against L, and the zeros of the security area (capsule.CheckArea).",
"frame": [

@ -1,5 +1,5 @@
{
"spec": "0.11",
"spec": "0.14",
"generator": "tool/formats_go_vectors.go",
"description": "CONTROL_CBOR of the three formats (capsule.DecodeControl) of the fixtures, in their format and in another, edited, and built field by field.",
"control": [

@ -1,5 +1,5 @@
{
"spec": "0.11",
"spec": "0.14",
"generator": "tool/formats_go_vectors.go",
"description": "dk1_ strings (datekey.Parse).",
"parse": [

@ -1,5 +1,5 @@
{
"spec": "0.11",
"spec": "0.14",
"generator": "tool/formats_go_vectors.go",
"description": "The encoders on values: capsule.EncodeHeader and EncodeControl, accesskey.Encode, profile.NewRegistry, and the canonical JSON and dk1_ string of DateKeys (CanonicalJSON and Compact, empty when not valid); an encoding is in hex, or as its length and SHA-256 when it is large. big is the size of the data of the noncritical extension a of version 1, bytes 0x01, that takes the object to its limit. limits: the decoders on objects at the limits of spec §57 and one byte past them: zeros bytes of zeros, or an extension array 81 a3 00 61 61 01 01 02 5a <len, 4 bytes> and len bytes 0x07 (extension_data), or Canonical of the extension a of version 1 whose data is len zeros (extension_canonical).",
"header": [

@ -1,5 +1,5 @@
{
"spec": "0.11",
"spec": "0.14",
"generator": "tool/formats_go_vectors.go",
"description": "Extension arrays through codec.Unmarshal with extension.DecodeArray and EncodeArray, Canonical, CheckDisjoint, CheckCriticalIn and CheckNoncriticalIn with the registry placed of the generator (or CheckCritical and CheckNoncritical when object is empty, and no registry when registry is none), and CheckWrite with extension.Standard.",
"array": [

@ -1,5 +1,5 @@
{
"spec": "0.11",
"spec": "0.14",
"generator": "tool/formats_go_vectors.go",
"description": "The PRELUDE of a .dkc (capsule.ParsePrelude), the steps 1 to 3 of capsule.Inspect on truncated and edited fixtures (with the step that fails, 0 when steps 1 to 8 pass), and whole .dkk files (accesskey.Decode), with the result, the code and the text of the Go reference.",
"prelude": [

@ -1,5 +1,5 @@
{
"spec": "0.11",
"spec": "0.14",
"generator": "tool/formats_go_vectors.go",
"description": "PUBLIC_HEADER (capsule.DecodeHeader) of the fixtures, edited, and built field by field.",
"header": [

@ -1,5 +1,5 @@
{
"spec": "0.11",
"spec": "0.14",
"generator": "tool/formats_go_vectors.go",
"description": "capsule.PaddedLength with both codes and capsule.PayloadAgeLength, at the boundaries of spec §29.1 up to L_MAX and past it; a code with null was rejected with text. check: the plaintext of PAYLOAD_AGE checked by capsule.Open against L and P (step 17): the content of the fixture (its .plaintext) followed by zeros, cut or extended to length bytes, with the byte at at set to value when given; step 0 when the capsule opens.",
"padded": [

@ -1,5 +1,5 @@
{
"spec": "0.11",
"spec": "0.14",
"generator": "tool/formats_go_vectors.go",
"description": "Provider Profiles: profile.Decode of the Quicknet profile, edited and with fields replaced, and Profile.Validate of values.",
"decode": [
@ -56,7 +56,7 @@
{"hex":"ab007819646174656b6579732d70726f76696465722d70726f66696c6501010274646174656b6579733a717569636b6e65743a763103656472616e640468717569636b6e657405582052db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e97106586083cf0f2896adee7eb8b5f01fcad3912212c437e0073e911fb90022d3e760183c8c4b450b6a0a6c3ac6a5776a2d10640d1fec758c921cc22b0e17e63aaf4bcb5ed66304de9cf809bd274ca73bab4af5a6e9c76a4bc09e76eae8991ef5ece45a0703081a64e62127097818626c732d756e636861696e65642d67312d726663393338","result":"ERR_NON_CANONICAL_CBOR","text":"profile: codec: offset 204: map key 3 after key 6: keys must be strictly ascending: ERR_NON_CANONICAL_CBOR"},
{"hex":"ab007819646174656b6579732d70726f76696465722d70726f66696c6501010274646174656b6579733a717569636b6e65743a763103656472616e640468717569636b6e657405582065dcdc7eff7c0c02ad8bc809f729ec0c11c95c704a9a63fd509a6d9ec6cc1ed106586083cf0f2896adee7eb8b5f01fcad3912212c437e0073e911fb90022d3e760183c8c4b450b6a0a6c3ac6a5776a2d1064510d1fec758c921cc22b0e17e63aaf4bcb5ed66304de9cf809bd274ca73bab4af5a6e9c76a4bc09e76eae8991ef5ece45a0700081a64e62127097818626c732d756e636861696e65642d67312d726663393338300a5820f477d5c89f21a17c863a7f937c6a6d15859414d2be09cd448d4279af331c5d3e","result":"ERR_NON_CANONICAL_CBOR","text":"profile: key 7: period 0: ERR_NON_CANONICAL_CBOR"},
{"hex":"ab007819646174656b6579732d70726f76696465722d70726f66696c6501010274646174656b6579733a717569636b6e65743a763103656472616e640478406161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616105582052db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e97106586083cf0f2896adee7eb8b5f01fcad3912212c437e0073e911fb90022d3e760183c8c4b450b6a0a6c3ac6a5776a2d1064510d1fec758c921cc22b0e17e63aaf4bcb5ed66304de9cf809bd274ca73bab4af5a6e9c76a4bc09e76eae8991ef5ece45a0703081a64e62127097818626c732d756e636861696e65642d67312d726663393338300a58213a29061a4d8c6d3c715eaf8e48da4b183b5b8ad74fbce0e484fbf91bbc80659911","result":"ERR_NON_CANONICAL_CBOR","text":"profile: key 10: codec: offset 299: a byte string of 33 bytes outside 32..32: ERR_NON_CANONICAL_CBOR"},
{"hex":"ab007819646174656b6579732d70726f76696465722d70726f66696c6501010274646174656b6579733a717569636b6e65743a763103656472616e640468717569636b6e657405582052db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e97106586083cf0f2896adee7eb8b5f01fcad3912212c437e0073e911fb90022d3e760183c8c4b450b6a0a6c3ac6a5776a2d1064510d1fec758c921cc22b0e17e63aaf4bcb5ed66304de9cf809bd274ca73bab4af5a6e9c76a4bc09e76eae8991ef5ece45a0703081a64e62127097819626c732d626e3235342d756e636861696e65642d6f6e2d67310a5820f477d5c89f21a17c863a7f937c6a6d15859414d2be09cd448d4279af331c5d3e","result":"ERR_UNKNOWN_PROFILE","text":"profile datekeys:quicknet:v1: scheme \"bls-bn254-unchained-on-g1\" is not supported by tlock: ERR_UNKNOWN_PROFILE"},
{"hex":"ab007819646174656b6579732d70726f76696465722d70726f66696c6501010274646174656b6579733a717569636b6e65743a763103656472616e640468717569636b6e657405582052db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e97106586083cf0f2896adee7eb8b5f01fcad3912212c437e0073e911fb90022d3e760183c8c4b450b6a0a6c3ac6a5776a2d1064510d1fec758c921cc22b0e17e63aaf4bcb5ed66304de9cf809bd274ca73bab4af5a6e9c76a4bc09e76eae8991ef5ece45a0703081a64e62127097819626c732d626e3235342d756e636861696e65642d6f6e2d67310a5820f477d5c89f21a17c863a7f937c6a6d15859414d2be09cd448d4279af331c5d3e","result":"ERR_UNKNOWN_PROFILE","text":"profile datekeys:quicknet:v1: scheme \"bls-bn254-unchained-on-g1\" is not bls-unchained-g1-rfc9380, the only scheme of V1: ERR_UNKNOWN_PROFILE"},
{"hex":"ab007819646174656b6579732d70726f76696465722d70726f66696c6501010274646174656b6579733a717569636b6e65743a763103656472616e640468717569636b6e657405582052db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e97106586083cf0f2896adee7eb8b5f01fcad3912212c437e0073e911fb90022d3e760183c8c4b450b6a0a6c3ac6a5776a2d1064510d1fec758c921cc22b0e17e63aaf4bcb5ed66304de9cf809bd274ca73bab4af5a6e9c76a4bc09e76eae8991ef5ece45a071b001fffffffffffff081a64e62127097818626c732d756e636861696e65642d67312d726663393338300a5820bd802afddcde3b4521da5b7dac9a4998fac55a86bb410a6852381b053a34d559","result":"ERR_NON_CANONICAL_CBOR","text":"profile: period 9007199254740991 s out of range: ERR_NON_CANONICAL_CBOR"},
{"hex":"ab007819646174656b6579732d70726f76696465722d70726f66696c6501010274646174656b6579733a717569636b6e65743a763103656472616e640468717569636b6e657405582052db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e97106586083cf0f2896adee7eb8b5f01fcad3912212c437e0073e911fb90022d3e760183c8c4b450b6a0a6c3ac6a5776a2d1064510d1fec758c921cc22b0e17e63aaf4bcb5ed66304de9cf809bd274ca73bab4af5a6e9c76a4bc09e76eae8991ef5ece45a0703081b0000003afff4417e097818626c732d756e636861696e65642d67312d726663393338300a582018b07fefff6c8fff0ce6088acf49e4de176436d70f941f0ad3fdfc8bd6c677b2","result":"ERR_PROFILE_MISMATCH","text":"profile datekeys:quicknet:v1: parameters hash to chain 2c6bca0320709af44138375ac31e95ba56907b106c702443b1d558b55d4e9621, not the pinned 52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971: ERR_PROFILE_MISMATCH"},
{"hex":"ab007819646174656b6579732d70726f76696465722d70726f66696c6501010274646174656b6579733a717569636b6e65743a763103656472616e64047841616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616105582052db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e97106586083cf0f2896adee7eb8b5f01fcad3912212c437e0073e911fb90022d3e760183c8c4b450b6a0a6c3ac6a5776a2d1064510d1fec758c921cc22b0e17e63aaf4bcb5ed66304de9cf809bd274ca73bab4af5a6e9c76a4bc09e76eae8991ef5ece45a071b001fffffffffffff081a64e62127097818626c732d756e636861696e65642d67312d726663393338300a5820f477d5c89f21a17c863a7f937c6a6d15859414d2be09cd448d4279af331c5d3e","result":"ERR_NON_CANONICAL_CBOR","text":"profile: period 9007199254740991 s out of range: ERR_NON_CANONICAL_CBOR"},
@ -164,8 +164,8 @@
{"hex":"ab007819646174656b6579732d70726f76696465722d70726f66696c650101027880616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616103656472616e640468717569636b6e6574055820b1c41498aa9ccc4100b53f00687c6443f67a6a95f089e5a84ed58a3ac6257c380658608000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000703081a64e62127097818626c732d756e636861696e65642d67312d726663393338300a5820f477d5c89f21a17c863a7f937c6a6d15859414d2be09cd448d4279af331c5d3e","result":"ERR_UNKNOWN_PROFILE","text":"profile aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa: public key is not the canonical encoding of a point of the key group of bls-unchained-g1-rfc9380: ERR_UNKNOWN_PROFILE"},
{"hex":"ab007819646174656b6579732d70726f76696465722d70726f66696c6501010274646174656b6579733a717569636b6e65743a763103656472616e640468717569636b6e6574055820076449f967c2022a9342e07eff9b1180fa22e6b7c175a3fab631bdb7622f0cce06586083cf0f2896adee7eb8b5f01fcad3912212c437e0073e911fb90022d3e760183c8c4b450b6a0a6c3ac6a5776a2d1064510d1fec758c921cc22b0e17e63aaf4bcb5ed66304de9cf809bd274ca73bab4af5a6e9c76a4bc09e76eae8991ef5ece45a0703081a64e6212709646e6f70650a5820f477d5c89f21a17c863a7f937c6a6d15859414d2be09cd448d4279af331c5d3e","result":"ERR_UNKNOWN_PROFILE","text":"profile datekeys:quicknet:v1: \"nope\" is not a drand scheme: ERR_UNKNOWN_PROFILE"},
{"hex":"ab007819646174656b6579732d70726f76696465722d70726f66696c6501010274646174656b6579733a717569636b6e65743a763103656472616e640468717569636b6e65740558204aa4595edb8fd7fa3e98d503b2d2c8fe20f06f428fb43700686ba2af394eeeae06583097f1d3a73197d7942695638c4fa9ac0fc3688c4f9774b905a14e3a3f171bac586c55e83ff97a1aeffb3af00adb22c6bb0703081a5f18588a097818626c732d756e636861696e65642d67312d726663393338300a5820f477d5c89f21a17c863a7f937c6a6d15859414d2be09cd448d4279af331c5d3e","result":"ERR_UNKNOWN_PROFILE","text":"profile datekeys:quicknet:v1: public key is not the canonical encoding of a point of the key group of bls-unchained-g1-rfc9380: ERR_UNKNOWN_PROFILE"},
{"hex":"ab007819646174656b6579732d70726f76696465722d70726f66696c65010102706472616e643a64656661756c743a763103656472616e64046764656661756c740558208990e7a9aaed2ffed73dbd7092123d6f289930540d7651336225dc172e51b2ce065830868f005eb8e6e4ca0a47c8a77ceaa5309a47978a7c71bc5cce96366b5d7a569937c529eeda66c7293784a9402801af3107181e081a5f18588a0976706564657273656e2d626c732d756e636861696e65640a5820176f93498eac9ca337150b46d21dd58673ea4e3581185f869672e59fa4cb390a","profile":{"chain_hash":"8990e7a9aaed2ffed73dbd7092123d6f289930540d7651336225dc172e51b2ce","genesis_seed":"176f93498eac9ca337150b46d21dd58673ea4e3581185f869672e59fa4cb390a","genesis_time":1595431050,"id":"drand:default:v1","max_round":8393562325,"network":"default","period":30,"provider":"drand","public_key":"868f005eb8e6e4ca0a47c8a77ceaa5309a47978a7c71bc5cce96366b5d7a569937c529eeda66c7293784a9402801af31","scheme":"pedersen-bls-unchained"},"result":"ok"},
{"hex":"ab007819646174656b6579732d70726f76696465722d70726f66696c65010102706472616e643a64656661756c743a763103656472616e64046764656661756c740558208990e7a9aaed2ffed73dbd7092123d6f289930540d7651336225dc172e51b2ce065830868f005eb8e6e4ca0a47c8a77ceaa5309a47978a7c71bc5cce96366b5d7a569937c529eeda66c7293784a9402801af3107181e081a5f18588a0974706564657273656e2d626c732d636861696e65640a5820176f93498eac9ca337150b46d21dd58673ea4e3581185f869672e59fa4cb390a","result":"ERR_UNKNOWN_PROFILE","text":"profile drand:default:v1: scheme \"pedersen-bls-chained\" is not supported by tlock: ERR_UNKNOWN_PROFILE"}
{"hex":"ab007819646174656b6579732d70726f76696465722d70726f66696c65010102706472616e643a64656661756c743a763103656472616e64046764656661756c740558208990e7a9aaed2ffed73dbd7092123d6f289930540d7651336225dc172e51b2ce065830868f005eb8e6e4ca0a47c8a77ceaa5309a47978a7c71bc5cce96366b5d7a569937c529eeda66c7293784a9402801af3107181e081a5f18588a0976706564657273656e2d626c732d756e636861696e65640a5820176f93498eac9ca337150b46d21dd58673ea4e3581185f869672e59fa4cb390a","result":"ERR_UNKNOWN_PROFILE","text":"profile drand:default:v1: scheme \"pedersen-bls-unchained\" is not bls-unchained-g1-rfc9380, the only scheme of V1: ERR_UNKNOWN_PROFILE"},
{"hex":"ab007819646174656b6579732d70726f76696465722d70726f66696c65010102706472616e643a64656661756c743a763103656472616e64046764656661756c740558208990e7a9aaed2ffed73dbd7092123d6f289930540d7651336225dc172e51b2ce065830868f005eb8e6e4ca0a47c8a77ceaa5309a47978a7c71bc5cce96366b5d7a569937c529eeda66c7293784a9402801af3107181e081a5f18588a0974706564657273656e2d626c732d636861696e65640a5820176f93498eac9ca337150b46d21dd58673ea4e3581185f869672e59fa4cb390a","result":"ERR_UNKNOWN_PROFILE","text":"profile drand:default:v1: scheme \"pedersen-bls-chained\" is not bls-unchained-g1-rfc9380, the only scheme of V1: ERR_UNKNOWN_PROFILE"}
],
"validate": [
{"profile":{"chain_hash":"52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971","genesis_seed":"f477d5c89f21a17c863a7f937c6a6d15859414d2be09cd448d4279af331c5d3e","genesis_time":1692803367,"id":"datekeys:quicknet:v1","max_round":83903165811,"network":"Q","period":3,"provider":"drand","public_key":"83cf0f2896adee7eb8b5f01fcad3912212c437e0073e911fb90022d3e760183c8c4b450b6a0a6c3ac6a5776a2d1064510d1fec758c921cc22b0e17e63aaf4bcb5ed66304de9cf809bd274ca73bab4af5a6e9c76a4bc09e76eae8991ef5ece45a","scheme":"bls-unchained-g1-rfc9380"},"result":"ERR_UNKNOWN_PROFILE","text":"profile datekeys:quicknet:v1: invalid provider, network or scheme name: ERR_UNKNOWN_PROFILE"},
@ -178,7 +178,7 @@
{"profile":{"chain_hash":"52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971","genesis_seed":"f477d5c89f21a17c863a7f937c6a6d15859414d2be09cd448d4279af331c5d3e","genesis_time":1692803367,"id":"datekeys:quicknet:v1","max_round":83903165811,"network":"quicknet","period":3,"provider":"drand","public_key":"","scheme":"bls-unchained-g1-rfc9380"},"result":"ERR_UNKNOWN_PROFILE","text":"profile datekeys:quicknet:v1: invalid public key length 0: ERR_UNKNOWN_PROFILE"},
{"profile":{"chain_hash":"52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971","genesis_seed":"f477d5c89f21a17c863a7f937c6a6d15859414d2be09cd448d4279af331c5d3e","genesis_time":0,"id":"datekeys:quicknet:v1","max_round":84467433600,"network":"quicknet","period":3,"provider":"drand","public_key":"83cf0f2896adee7eb8b5f01fcad3912212c437e0073e911fb90022d3e760183c8c4b450b6a0a6c3ac6a5776a2d1064510d1fec758c921cc22b0e17e63aaf4bcb5ed66304de9cf809bd274ca73bab4af5a6e9c76a4bc09e76eae8991ef5ece45a","scheme":"bls-unchained-g1-rfc9380"},"result":"ERR_UNKNOWN_PROFILE","text":"profile datekeys:quicknet:v1: invalid genesis time 0: ERR_UNKNOWN_PROFILE"},
{"profile":{"chain_hash":"52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971","genesis_seed":"f477d5c89f21a17c863a7f937c6a6d15859414d2be09cd448d4279af331c5d3e","genesis_time":1692803367,"id":"datekeys:quicknet:v1","max_round":83903165811,"network":"quicknet","period":3,"provider":"x","public_key":"83cf0f2896adee7eb8b5f01fcad3912212c437e0073e911fb90022d3e760183c8c4b450b6a0a6c3ac6a5776a2d1064510d1fec758c921cc22b0e17e63aaf4bcb5ed66304de9cf809bd274ca73bab4af5a6e9c76a4bc09e76eae8991ef5ece45a","scheme":"bls-unchained-g1-rfc9380"},"result":"ERR_UNKNOWN_PROFILE","text":"profile datekeys:quicknet:v1: unsupported provider \"x\": ERR_UNKNOWN_PROFILE"},
{"profile":{"chain_hash":"52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971","genesis_seed":"f477d5c89f21a17c863a7f937c6a6d15859414d2be09cd448d4279af331c5d3e","genesis_time":1692803367,"id":"datekeys:quicknet:v1","max_round":83903165811,"network":"quicknet","period":3,"provider":"drand","public_key":"83cf0f2896adee7eb8b5f01fcad3912212c437e0073e911fb90022d3e760183c8c4b450b6a0a6c3ac6a5776a2d1064510d1fec758c921cc22b0e17e63aaf4bcb5ed66304de9cf809bd274ca73bab4af5a6e9c76a4bc09e76eae8991ef5ece45a","scheme":"bls-unchained-on-g1"},"result":"ok"},
{"profile":{"chain_hash":"52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971","genesis_seed":"f477d5c89f21a17c863a7f937c6a6d15859414d2be09cd448d4279af331c5d3e","genesis_time":1692803367,"id":"datekeys:quicknet:v1","max_round":83903165811,"network":"quicknet","period":3,"provider":"drand","public_key":"83cf0f2896adee7eb8b5f01fcad3912212c437e0073e911fb90022d3e760183c8c4b450b6a0a6c3ac6a5776a2d1064510d1fec758c921cc22b0e17e63aaf4bcb5ed66304de9cf809bd274ca73bab4af5a6e9c76a4bc09e76eae8991ef5ece45a","scheme":"bls-unchained-on-g1"},"result":"ERR_UNKNOWN_PROFILE","text":"profile datekeys:quicknet:v1: scheme \"bls-unchained-on-g1\" is not bls-unchained-g1-rfc9380, the only scheme of V1: ERR_UNKNOWN_PROFILE"},
{"profile":{"chain_hash":"52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971","genesis_seed":"f477d5c89f21a17c863a7f937c6a6d15859414d2be09cd448d4279af331c5d3e","genesis_time":1692803367,"id":"datekeys:quicknet:v1","max_round":83903165811,"network":"quicknet","period":3,"provider":"drand","public_key":"83cf0f2896adee7eb8b5f01fcad3912212c437e0073e911fb90022d3e760183c8c4b450b6a0a6c3ac6a5776a2d1064510d1fec758c921cc22b0e17e63aaf4bcb5ed66304de9cf809bd274ca73bab4af5a6e9c76a4bc09e76eae8991ef5ece45a","scheme":"bls-unchained-g1-rfc9380"},"result":"ok"},
{"profile":{"chain_hash":"52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971","genesis_seed":"f477d5c89f21a17c863a7f937c6a6d15859414d2be09cd448d4279af331c5d3e","genesis_time":1692803367,"id":"datekeys:quicknet:v1","max_round":83903165811,"network":"quicknet","period":3,"provider":"drand","public_key":"cf87a715c185fffc915f9f1727ad3f9636f944d71d857fdeeab012291255a38e03cba65f31c021431341375991575b17ffc58ea27dd56206821da91223e1f72fe51c75fe30c3986ead0d7d9a622824fde5104421e7a461d13b151227ddc30af0bd637a16cb37c162b92ad9d6b5109ac4d1e0cf815c21c5e2a559f6de3d674a1e7318c80c96bdb26544087fc4e289ae7620c7bb8e8adcd28725f72f2d2551a278a2077d6c167919a629f16e672034941ed1927b97bf4356697eaad969a216315e78dabec06e290d05b0b60e3c2a201a6c0ad7f07a2e01cfa9a429e6ec0ff5c3ab81e359612bbf8bacefbf6e3f53370ba5d30184019e73b39f30c9cc8861a8137eabce1132d5bd3d78d9423f4f37befa45d57d018fd9b0fb3b1b61418c8d4233517c30c9b7ee9a2ecd81cdc55cba922160a38ed77a63eb08576706004c5d63ccfe49b15a3212d5987569f424d3110120673b05dad0ad0432fb2a782b74f9c906654dd0355ee3c90f2553d974a85580a3ae05d55d81502f785444b40fe226452ff5298f08a02be10412336a5a390458e6cce9783174f0d65724e08f9e7033db7606eb9e4c23469bbddd23b4212659480903c7c5d123f131cfa9dba39d27537da5f3428361baaa262b7ac53f50f7a985482c4cdace6e5922c7b83daa4b2cc248f16b9989d6cb55cdf886dd6ef9f1dea716d3aa763bc5005f70edfa2849fff315305b9a6bbb857769b85495069320f6eba8a47e1d27ffd6283d399092ae4576c851afde52eeb3cf17b1ba0881e54be59fa56310fdc769af61fdeb3ec9f7700729f5f25547d34de2244bf839b20a69d4237c43e55c43c9b238eda5bd443da05e3594b1c915d9af90d21758374cc68017c7b2563ac3f81df50b2cda448ec4293603587235b843b1ffbef0ea8a2b2e0c10d1ac9c7626e18798bebe2206e98088c8aecd2be8a6278a90e06b20dd36dae022442a798772912aa1239ab896c6174b352c6b355b8cc0862b31c7167c71fd7a252a1043c46a4124308ae3656a50e1c2be30154a00c83faca0bd52d359ae9044f154717e0adcb68450c15fd1c19e16851c4586a742467434fba558684072385a6fdec6707454ffc4731f8f587238d45fa140710ac6bb4a058c07fb028db32b84a79bfe04caa7f1d51760c09d6ff7609d288548a18789364b9dd145e70197df650c027a2c6293f7347f32e9e2873af1eefbc4a070001518bd2603541e4f9a19961a6863da42934dc2e5716a6edf818f7bbe87ef4dd77cd0e096db2439e51b0d5f14ec3dfb5e4ce9733757a0bab7f7ddf47a473bedbe29b6041bab7d40acd8bdd1d961db4cfb1db82f01ea0fb93a3b202c89c361b41a405f75d0cccd871b9706221277f1fe45e664bd9e41b698d0bf934368c4d7cd6f0d80c4d3c0716844911a64523eddb6e8d739aa24c2ef391685cbc2827a621a","scheme":"bls-unchained-g1-rfc9380"},"result":"ERR_UNKNOWN_PROFILE","text":"profile datekeys:quicknet:v1: public key is not the canonical encoding of a point of the key group of bls-unchained-g1-rfc9380: ERR_UNKNOWN_PROFILE"},
{"profile":{"chain_hash":"52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971","genesis_seed":"f477d5c89f21a17c863a7f937c6a6d15859414d2be09cd448d4279af331c5d3e","genesis_time":1692803367,"id":"datekeys:quicknet:v1","max_round":83903165811,"network":"quicknet","period":3,"provider":"","public_key":"83cf0f2896adee7eb8b5f01fcad3912212c437e0073e911fb90022d3e760183c8c4b450b6a0a6c3ac6a5776a2d1064510d1fec758c921cc22b0e17e63aaf4bcb5ed66304de9cf809bd274ca73bab4af5a6e9c76a4bc09e76eae8991ef5ece45a","scheme":"bls-unchained-g1-rfc9380"},"result":"ERR_UNKNOWN_PROFILE","text":"profile datekeys:quicknet:v1: invalid provider, network or scheme name: ERR_UNKNOWN_PROFILE"},
@ -188,11 +188,11 @@
{"profile":{"chain_hash":"52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971","genesis_seed":"f477d5c89f21a17c863a7f937c6a6d15859414d2be09cd448d4279af331c5d3e","genesis_time":1692803367,"id":"datekeys:quicknet:v1","max_round":83903165811,"network":"quicknet","period":3,"provider":"drand","public_key":"83cf0f2896adee7eb8b5f01fcad3912212c437e0073e911fb90022d3e760183c8c4b450b6a0a6c3ac6a5776a2d1064510d1fec758c921cc22b0e17e63aaf4bcb5ed66304de9cf809bd274ca73bab4af5a6e9c76a4bc09e76eae8991ef5ece45a","scheme":"nope"},"result":"ERR_UNKNOWN_PROFILE","text":"profile datekeys:quicknet:v1: \"nope\" is not a drand scheme: ERR_UNKNOWN_PROFILE"},
{"profile":{"chain_hash":"52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971","genesis_seed":"f477d5c89f21a17c863a7f937c6a6d15859414d2be09cd448d4279af331c5d3e","genesis_time":1692803367,"id":"datekeys:quicknet:v1","max_round":83903165811,"network":"quicknet","period":3,"provider":"drand","public_key":"cf87a715c185fffc915f9f1727ad3f9636f944d71d857fdeeab012291255a38e03cba65f31c021431341375991575b17ffc58ea27dd56206821da91223e1f72fe51c75fe30c3986ead0d7d9a622824fde5104421e7a461d13b151227ddc30af0bd637a16cb37c162b92ad9d6b5109ac4d1e0cf815c21c5e2a559f6de3d674a1e7318c80c96bdb26544087fc4e289ae7620c7bb8e8adcd28725f72f2d2551a278a2077d6c167919a629f16e672034941ed1927b97bf4356697eaad969a216315e78dabec06e290d05b0b60e3c2a201a6c0ad7f07a2e01cfa9a429e6ec0ff5c3ab81e359612bbf8bacefbf6e3f53370ba5d30184019e73b39f30c9cc8861a8137eabce1132d5bd3d78d9423f4f37befa45d57d018fd9b0fb3b1b61418c8d4233517c30c9b7ee9a2ecd81cdc55cba922160a38ed77a63eb08576706004c5d63ccfe49b15a3212d5987569f424d3110120673b05dad0ad0432fb2a782b74f9c906654dd0355ee3c90f2553d974a85580a3ae05d55d81502f785444b40fe226452ff5298f08a02be10412336a5a390458e6cce9783174f0d65724e08f9e7033db7606eb9e4c23469bbddd23b4212659480903c7c5d123f131cfa9dba39d27537da5f3428361baaa262b7ac53f50f7a985482c4cdace6e5922c7b83daa4b2cc248f16b9989d6cb55cdf886dd6ef9f1dea716d3aa763bc5005f70edfa2849fff315305b9a6bbb857769b85495069320f6eba8a47e1d27ffd6283d399092ae4576c851afde52eeb3cf17b1ba0881e54be59fa56310fdc769af61fdeb3ec9f7700729f5f25547d34de2244bf839b20a69d4237c43e55c43c9b238eda5bd443da05e3594b1c915d9af90d21758374cc68017c7b2563ac3f81df50b2cda448ec4293603587235b843b1ffbef0ea8a2b2e0c10d1ac9c7626e18798bebe2206e98088c8aecd2be8a6278a90e06b20dd36dae022442a798772912aa1239ab896c6174b352c6b355b8cc0862b31c7167c71fd7a252a1043c46a4124308ae3656a50e1c2be30154a00c83faca0bd52d359ae9044f154717e0adcb68450c15fd1c19e16851c4586a742467434fba558684072385a6fdec6707454ffc4731f8f587238d45fa140710ac6bb4a058c07fb028db32b84a79bfe04caa7f1d51760c09d6ff7609d288548a18789364b9dd145e70197df650c027a2c6293f7347f32e9e2873af1eefbc4a070001518bd2603541e4f9a19961a6863da42934dc2e5716a6edf818f7bbe87ef4dd77cd0e096db2439e51b0d5f14ec3dfb5e4ce9733757a0bab7f7ddf47a473bedbe29b6041bab7d40acd8bdd1d961db4cfb1db82f01ea0fb93a3b202c89c361b41a405f75d0cccd871b9706221277f1fe45e664bd9e41b698d0bf934368c4d7cd6f0d80c4d3c0716844911a64523eddb6e8d739aa24c2ef391685cbc2827a621a","scheme":"bls-unchained-g1-rfc9380"},"result":"ERR_UNKNOWN_PROFILE","text":"profile datekeys:quicknet:v1: public key is not the canonical encoding of a point of the key group of bls-unchained-g1-rfc9380: ERR_UNKNOWN_PROFILE"},
{"profile":{"chain_hash":"52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971","genesis_seed":"f477d5c89f21a17c863a7f937c6a6d15859414d2be09cd448d4279af331c5d3e","genesis_time":253402300798,"id":"datekeys:quicknet:v1","max_round":1,"network":"quicknet","period":3,"provider":"drand","public_key":"83cf0f2896adee7eb8b5f01fcad3912212c437e0073e911fb90022d3e760183c8c4b450b6a0a6c3ac6a5776a2d1064510d1fec758c921cc22b0e17e63aaf4bcb5ed66304de9cf809bd274ca73bab4af5a6e9c76a4bc09e76eae8991ef5ece45a","scheme":"bls-unchained-g1-rfc9380"},"result":"ERR_PROFILE_MISMATCH","text":"profile datekeys:quicknet:v1: parameters hash to chain 5daeb5ff2fdfcd368828087dd982690008eccb638dc31cb78b7bfa450cbede18, not the pinned 52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971: ERR_PROFILE_MISMATCH"},
{"profile":{"chain_hash":"52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971","genesis_seed":"f477d5c89f21a17c863a7f937c6a6d15859414d2be09cd448d4279af331c5d3e","genesis_time":1692803367,"id":"datekeys:quicknet:v1","max_round":83903165811,"network":"quicknet","period":3,"provider":"drand","public_key":"83cf0f2896adee7eb8b5f01fcad3912212c437e0073e911fb90022d3e760183c8c4b450b6a0a6c3ac6a5776a2d1064510d1fec758c921cc22b0e17e63aaf4bcb5ed66304de9cf809bd274ca73bab4af5a6e9c76a4bc09e76eae8991ef5ece45a","scheme":"pedersen-bls-chained"},"result":"ERR_UNKNOWN_PROFILE","text":"profile datekeys:quicknet:v1: scheme \"pedersen-bls-chained\" is not supported by tlock: ERR_UNKNOWN_PROFILE"},
{"profile":{"chain_hash":"52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971","genesis_seed":"f477d5c89f21a17c863a7f937c6a6d15859414d2be09cd448d4279af331c5d3e","genesis_time":1692803367,"id":"datekeys:quicknet:v1","max_round":83903165811,"network":"quicknet","period":3,"provider":"drand","public_key":"83cf0f2896adee7eb8b5f01fcad3912212c437e0073e911fb90022d3e760183c8c4b450b6a0a6c3ac6a5776a2d1064510d1fec758c921cc22b0e17e63aaf4bcb5ed66304de9cf809bd274ca73bab4af5a6e9c76a4bc09e76eae8991ef5ece45a","scheme":"pedersen-bls-chained"},"result":"ERR_UNKNOWN_PROFILE","text":"profile datekeys:quicknet:v1: scheme \"pedersen-bls-chained\" is not bls-unchained-g1-rfc9380, the only scheme of V1: ERR_UNKNOWN_PROFILE"},
{"profile":{"chain_hash":"52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971","genesis_seed":"f477d5c89f21a17c863a7f937c6a6d15859414d2be09cd448d4279af331c5d3e","genesis_time":9007199254740991,"id":"datekeys:quicknet:v1","max_round":0,"network":"quicknet","period":3,"provider":"drand","public_key":"83cf0f2896adee7eb8b5f01fcad3912212c437e0073e911fb90022d3e760183c8c4b450b6a0a6c3ac6a5776a2d1064510d1fec758c921cc22b0e17e63aaf4bcb5ed66304de9cf809bd274ca73bab4af5a6e9c76a4bc09e76eae8991ef5ece45a","scheme":"bls-unchained-g1-rfc9380"},"result":"ERR_UNKNOWN_PROFILE","text":"profile datekeys:quicknet:v1: invalid genesis time 9007199254740991: ERR_UNKNOWN_PROFILE"},
{"profile":{"chain_hash":"52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971","genesis_seed":"f477d5c89f21a17c863a7f937c6a6d15859414d2be09cd448d4279af331c5d3e","genesis_time":1692803367,"id":"datekeys:quicknet:v1","max_round":83903165811,"network":"quicknet","period":3,"provider":"drand","public_key":"83cf0f2896adee7eb8b5f01fcad3912212c437e0073e911fb90022d3e760183c8c4b450b6a0a6c3ac6a5776a2d1064510d1fec758c921cc22b0e17e63aaf4bcb5ed66304de9cf809bd274ca73bab4af5a6e9c76a4bc09e76eae8991ef5ece45a","scheme":"bls-unchained-on-g1"},"result":"ok"},
{"profile":{"chain_hash":"52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971","genesis_seed":"f477d5c89f21a17c863a7f937c6a6d15859414d2be09cd448d4279af331c5d3e","genesis_time":1692803367,"id":"datekeys:quicknet:v1","max_round":83903165811,"network":"quicknet","period":3,"provider":"drand","public_key":"83cf0f2896adee7eb8b5f01fcad3912212c437e0073e911fb90022d3e760183c8c4b450b6a0a6c3ac6a5776a2d1064510d1fec758c921cc22b0e17e63aaf4bcb5ed66304de9cf809bd274ca73bab4af5a6e9c76a4bc09e76eae8991ef5ece45a","scheme":"bls-unchained-on-g1"},"result":"ERR_UNKNOWN_PROFILE","text":"profile datekeys:quicknet:v1: scheme \"bls-unchained-on-g1\" is not bls-unchained-g1-rfc9380, the only scheme of V1: ERR_UNKNOWN_PROFILE"},
{"profile":{"chain_hash":"52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971","genesis_seed":"f477d5c89f21a17c863a7f937c6a6d15859414d2be09cd448d4279af331c5d3e","genesis_time":1,"id":"datekeys:quicknet:v1","max_round":84467433600,"network":"quicknet","period":3,"provider":"drand","public_key":"83cf0f2896adee7eb8b5f01fcad3912212c437e0073e911fb90022d3e760183c8c4b450b6a0a6c3ac6a5776a2d1064510d1fec758c921cc22b0e17e63aaf4bcb5ed66304de9cf809bd274ca73bab4af5a6e9c76a4bc09e76eae8991ef5ece45a","scheme":"bls-unchained-g1-rfc9380"},"result":"ERR_PROFILE_MISMATCH","text":"profile datekeys:quicknet:v1: parameters hash to chain 950cfcb27d257316ed5fa4216178445129f54b6b09bb6051ea45b7ab0dff8f0a, not the pinned 52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971: ERR_PROFILE_MISMATCH"},
{"profile":{"chain_hash":"52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971","genesis_seed":"f477d5c89f21a17c863a7f937c6a6d15859414d2be09cd448d4279af331c5d3e","genesis_time":1692803367,"id":"datekeys:quicknet:v1","max_round":83903165811,"network":"quicknet","period":3,"provider":"drand","public_key":"83cf0f2896adee7eb8b5f01fcad3912212c437e0073e911fb90022d3e760183c8c4b450b6a0a6c3ac6a5776a2d1064510d1fec758c921cc22b0e17e63aaf4bcb5ed66304de9cf809bd274ca73bab4af5a6e9c76a4bc09e76eae8991ef5ece45a","scheme":"pedersen-bls-chained"},"result":"ERR_UNKNOWN_PROFILE","text":"profile datekeys:quicknet:v1: scheme \"pedersen-bls-chained\" is not supported by tlock: ERR_UNKNOWN_PROFILE"},
{"profile":{"chain_hash":"52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971","genesis_seed":"f477d5c89f21a17c863a7f937c6a6d15859414d2be09cd448d4279af331c5d3e","genesis_time":1692803367,"id":"datekeys:quicknet:v1","max_round":83903165811,"network":"quicknet","period":3,"provider":"drand","public_key":"83cf0f2896adee7eb8b5f01fcad3912212c437e0073e911fb90022d3e760183c8c4b450b6a0a6c3ac6a5776a2d1064510d1fec758c921cc22b0e17e63aaf4bcb5ed66304de9cf809bd274ca73bab4af5a6e9c76a4bc09e76eae8991ef5ece45a","scheme":"pedersen-bls-chained"},"result":"ERR_UNKNOWN_PROFILE","text":"profile datekeys:quicknet:v1: scheme \"pedersen-bls-chained\" is not bls-unchained-g1-rfc9380, the only scheme of V1: ERR_UNKNOWN_PROFILE"},
{"profile":{"chain_hash":"52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971","genesis_seed":"f477d5c89f21a17c863a7f937c6a6d15859414d2be09cd448d4279af331c5d3e","genesis_time":1692803367,"id":"datekeys:quicknet:v1","max_round":0,"network":"quicknet","period":-1,"provider":"drand","public_key":"83cf0f2896adee7eb8b5f01fcad3912212c437e0073e911fb90022d3e760183c8c4b450b6a0a6c3ac6a5776a2d1064510d1fec758c921cc22b0e17e63aaf4bcb5ed66304de9cf809bd274ca73bab4af5a6e9c76a4bc09e76eae8991ef5ece45a","scheme":"bls-unchained-g1-rfc9380"},"result":"ERR_NON_CANONICAL_CBOR","text":"profile \"datekeys:quicknet:v1\": period -1s is not a whole number of seconds in 1..86400: ERR_NON_CANONICAL_CBOR"},
{"profile":{"chain_hash":"52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971","genesis_seed":"f477d5c89f21a17c863a7f937c6a6d15859414d2be09cd448d4279af331c5d3e","genesis_time":1692803367,"id":"datekeys:quicknet:v1","max_round":83903165811,"network":"quicknet","period":3,"provider":"drand","public_key":"83cf0f2896adee7eb8b5f01fcad3912212c437e0073e911fb90022d3e760183c8c4b450b6a0a6c3ac6a5776a2d1064510d1fec758c921cc22b0e17e63aaf4bcb5ed66304de9cf809bd274ca73bab4af5a6e9c76a4bc09e76eae8991ef5ece45a","scheme":"bls-unchained-g1-rfc9380"},"result":"ok"},
{"profile":{"chain_hash":"52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971","genesis_seed":"f477d5c89f21a17c863a7f937c6a6d15859414d2be09cd448d4279af331c5d3e","genesis_time":1692803367,"id":"","max_round":83903165811,"network":"quicknet","period":3,"provider":"drand","public_key":"83cf0f2896adee7eb8b5f01fcad3912212c437e0073e911fb90022d3e760183c8c4b450b6a0a6c3ac6a5776a2d1064510d1fec758c921cc22b0e17e63aaf4bcb5ed66304de9cf809bd274ca73bab4af5a6e9c76a4bc09e76eae8991ef5ece45a","scheme":"bls-unchained-g1-rfc9380"},"result":"ERR_UNKNOWN_PROFILE","text":"profile: invalid profile_id \"\": ERR_UNKNOWN_PROFILE"},
@ -204,14 +204,14 @@
{"profile":{"chain_hash":"52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971","genesis_seed":"f477d5c89f21a17c863a7f937c6a6d15859414d2be09cd448d4279af331c5d3e","genesis_time":1692803367,"id":"datekeys:quicknet:v1","max_round":2913305,"network":"quicknet","period":86400,"provider":"drand","public_key":"83cf0f2896adee7eb8b5f01fcad3912212c437e0073e911fb90022d3e760183c8c4b450b6a0a6c3ac6a5776a2d1064510d1fec758c921cc22b0e17e63aaf4bcb5ed66304de9cf809bd274ca73bab4af5a6e9c76a4bc09e76eae8991ef5ece45a","scheme":"bls-unchained-g1-rfc9380"},"result":"ERR_PROFILE_MISMATCH","text":"profile datekeys:quicknet:v1: parameters hash to chain c11da7002fbe7b2ab5db749677c90aed2afdf497830e0b1ffecb743c823b2888, not the pinned 52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971: ERR_PROFILE_MISMATCH"},
{"profile":{"chain_hash":"52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971","genesis_seed":"f477d5c89f21a17c863a7f937c6a6d15859414d2be09cd448d4279af331c5d3e","genesis_time":1692803367,"id":"datekeys:quicknet:v1","max_round":2913305,"network":"quicknet","period":86400,"provider":"drand","public_key":"83cf0f2896adee7eb8b5f01fcad3912212c437e0073e911fb90022d3e760183c8c4b450b6a0a6c3ac6a5776a2d1064510d1fec758c921cc22b0e17e63aaf4bcb5ed66304de9cf809bd274ca73bab4af5a6e9c76a4bc09e76eae8991ef5ece45a","scheme":"bls-unchained-g1-rfc9380"},"result":"ERR_PROFILE_MISMATCH","text":"profile datekeys:quicknet:v1: parameters hash to chain c11da7002fbe7b2ab5db749677c90aed2afdf497830e0b1ffecb743c823b2888, not the pinned 52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971: ERR_PROFILE_MISMATCH"},
{"profile":{"chain_hash":"52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971","genesis_seed":"f477d5c89f21a17c863a7f937c6a6d15859414d2be09cd448d4279af331c5d3e","genesis_time":1692803367,"id":"datekeys:quicknet:v1","max_round":2796773,"network":"quicknet","period":90000,"provider":"drand","public_key":"83cf0f2896adee7eb8b5f01fcad3912212c437e0073e911fb90022d3e760183c8c4b450b6a0a6c3ac6a5776a2d1064510d1fec758c921cc22b0e17e63aaf4bcb5ed66304de9cf809bd274ca73bab4af5a6e9c76a4bc09e76eae8991ef5ece45a","scheme":"bls-unchained-g1-rfc9380"},"result":"ERR_NON_CANONICAL_CBOR","text":"profile \"datekeys:quicknet:v1\": period 25h0m0s is not a whole number of seconds in 1..86400: ERR_NON_CANONICAL_CBOR"},
{"profile":{"chain_hash":"52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971","genesis_seed":"f477d5c89f21a17c863a7f937c6a6d15859414d2be09cd448d4279af331c5d3e","genesis_time":1692803367,"id":"datekeys:quicknet:v1","max_round":83903165811,"network":"quicknet","period":3,"provider":"drand","public_key":"83cf0f2896adee7eb8b5f01fcad3912212c437e0073e911fb90022d3e760183c8c4b450b6a0a6c3ac6a5776a2d1064510d1fec758c921cc22b0e17e63aaf4bcb5ed66304de9cf809bd274ca73bab4af5a6e9c76a4bc09e76eae8991ef5ece45a","scheme":"bls-unchained-on-g1"},"result":"ok"},
{"profile":{"chain_hash":"52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971","genesis_seed":"f477d5c89f21a17c863a7f937c6a6d15859414d2be09cd448d4279af331c5d3e","genesis_time":1692803367,"id":"datekeys:quicknet:v1","max_round":83903165811,"network":"quicknet","period":3,"provider":"drand","public_key":"83cf0f2896adee7eb8b5f01fcad3912212c437e0073e911fb90022d3e760183c8c4b450b6a0a6c3ac6a5776a2d1064510d1fec758c921cc22b0e17e63aaf4bcb5ed66304de9cf809bd274ca73bab4af5a6e9c76a4bc09e76eae8991ef5ece45a","scheme":"bls-unchained-on-g1"},"result":"ERR_UNKNOWN_PROFILE","text":"profile datekeys:quicknet:v1: scheme \"bls-unchained-on-g1\" is not bls-unchained-g1-rfc9380, the only scheme of V1: ERR_UNKNOWN_PROFILE"},
{"profile":{"chain_hash":"52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971","genesis_seed":"f477d5c89f21a17c863a7f937c6a6d15859414d2be09cd448d4279af331c5d3e","genesis_time":1692803367,"id":"datekeys:quicknet:v1","max_round":83903165811,"network":"quicknet","period":3,"provider":"drand","public_key":"83cf0f2896adee7eb8b5f01fcad3912212c437e0073e911fb90022d3e760183c8c4b450b6a0a6c3ac6a5776a2d1064510d1fec758c921cc22b0e17e63aaf4bcb5ed66304de9cf809bd274ca73bab4af5a6e9c76a4bc09e76eae8991ef5ece45a","scheme":"bls-unchained-g1-rfc9380"},"result":"ok"},
{"profile":{"chain_hash":"52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971","genesis_seed":"f477d5c89f21a17c863a7f937c6a6d15859414d2be09cd448d4279af331c5d3e","genesis_time":1692803367,"id":"datekeys:quicknet:v1","max_round":83903165811,"network":"quicknet","period":3,"provider":"drand","public_key":"","scheme":"bls-unchained-g1-rfc9380"},"result":"ERR_UNKNOWN_PROFILE","text":"profile datekeys:quicknet:v1: invalid public key length 0: ERR_UNKNOWN_PROFILE"},
{"profile":{"chain_hash":"52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971","genesis_seed":"f477d5c89f21a17c863a7f937c6a6d15859414d2be09cd448d4279af331c5d3e","genesis_time":-1,"id":"datekeys:quicknet:v1","max_round":84467433601,"network":"quicknet","period":3,"provider":"drand","public_key":"83cf0f2896adee7eb8b5f01fcad3912212c437e0073e911fb90022d3e760183c8c4b450b6a0a6c3ac6a5776a2d1064510d1fec758c921cc22b0e17e63aaf4bcb5ed66304de9cf809bd274ca73bab4af5a6e9c76a4bc09e76eae8991ef5ece45a","scheme":"bls-unchained-g1-rfc9380"},"result":"ERR_NON_CANONICAL_CBOR","text":"profile \"datekeys:quicknet:v1\": genesis time -1 outside 0..9007199254740991: ERR_NON_CANONICAL_CBOR"},
{"profile":{"chain_hash":"52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971","genesis_seed":"f477d5c89f21a17c863a7f937c6a6d15859414d2be09cd448d4279af331c5d3e","genesis_time":1692803367,"id":"datekeys:quicknet:v1","max_round":2913271,"network":"quicknet","period":86401,"provider":"drand","public_key":"83cf0f2896adee7eb8b5f01fcad3912212c437e0073e911fb90022d3e760183c8c4b450b6a0a6c3ac6a5776a2d1064510d1fec758c921cc22b0e17e63aaf4bcb5ed66304de9cf809bd274ca73bab4af5a6e9c76a4bc09e76eae8991ef5ece45a","scheme":"bls-unchained-g1-rfc9380"},"result":"ERR_NON_CANONICAL_CBOR","text":"profile \"datekeys:quicknet:v1\": period 24h0m1s is not a whole number of seconds in 1..86400: ERR_NON_CANONICAL_CBOR"},
{"profile":{"chain_hash":"52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971","genesis_seed":"f477d5c89f21a17c863a7f937c6a6d15859414d2be09cd448d4279af331c5d3e","genesis_time":-1,"id":"datekeys:quicknet:v1","max_round":84467433601,"network":"quicknet","period":3,"provider":"drand","public_key":"83cf0f2896adee7eb8b5f01fcad3912212c437e0073e911fb90022d3e760183c8c4b450b6a0a6c3ac6a5776a2d1064510d1fec758c921cc22b0e17e63aaf4bcb5ed66304de9cf809bd274ca73bab4af5a6e9c76a4bc09e76eae8991ef5ece45a","scheme":"bls-unchained-g1-rfc9380"},"result":"ERR_NON_CANONICAL_CBOR","text":"profile \"datekeys:quicknet:v1\": genesis time -1 outside 0..9007199254740991: ERR_NON_CANONICAL_CBOR"},
{"profile":{"chain_hash":"52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971","genesis_seed":"f477d5c89f21a17c863a7f937c6a6d15859414d2be09cd448d4279af331c5d3e","genesis_time":1692803367,"id":"Q","max_round":83903165811,"network":"quicknet","period":3,"provider":"drand","public_key":"83cf0f2896adee7eb8b5f01fcad3912212c437e0073e911fb90022d3e760183c8c4b450b6a0a6c3ac6a5776a2d1064510d1fec758c921cc22b0e17e63aaf4bcb5ed66304de9cf809bd274ca73bab4af5a6e9c76a4bc09e76eae8991ef5ece45a","scheme":"bls-unchained-g1-rfc9380"},"result":"ERR_UNKNOWN_PROFILE","text":"profile: invalid profile_id \"Q\": ERR_UNKNOWN_PROFILE"},
{"profile":{"chain_hash":"52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971","genesis_seed":"f477d5c89f21a17c863a7f937c6a6d15859414d2be09cd448d4279af331c5d3e","genesis_time":1692803367,"id":"datekeys:quicknet:v1","max_round":83903165811,"network":"quicknet","period":3,"provider":"drand","public_key":"83cf0f2896adee7eb8b5f01fcad3912212c437e0073e911fb90022d3e760183c8c4b450b6a0a6c3ac6a5776a2d1064510d1fec758c921cc22b0e17e63aaf4bcb5ed66304de9cf809bd274ca73bab4af5a6e9c76a4bc09e76eae8991ef5ece45a","scheme":"pedersen-bls-chained"},"result":"ERR_UNKNOWN_PROFILE","text":"profile datekeys:quicknet:v1: scheme \"pedersen-bls-chained\" is not supported by tlock: ERR_UNKNOWN_PROFILE"},
{"profile":{"chain_hash":"52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971","genesis_seed":"f477d5c89f21a17c863a7f937c6a6d15859414d2be09cd448d4279af331c5d3e","genesis_time":1692803367,"id":"datekeys:quicknet:v1","max_round":83903165811,"network":"quicknet","period":3,"provider":"drand","public_key":"83cf0f2896adee7eb8b5f01fcad3912212c437e0073e911fb90022d3e760183c8c4b450b6a0a6c3ac6a5776a2d1064510d1fec758c921cc22b0e17e63aaf4bcb5ed66304de9cf809bd274ca73bab4af5a6e9c76a4bc09e76eae8991ef5ece45a","scheme":"pedersen-bls-chained"},"result":"ERR_UNKNOWN_PROFILE","text":"profile datekeys:quicknet:v1: scheme \"pedersen-bls-chained\" is not bls-unchained-g1-rfc9380, the only scheme of V1: ERR_UNKNOWN_PROFILE"},
{"profile":{"chain_hash":"52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971","genesis_seed":"f477d5c89f21a17c863a7f937c6a6d15859414d2be09cd448d4279af331c5d3e","genesis_time":1692803367,"id":"datekeys:quicknet:v1","max_round":83903165811,"network":"quicknet","period":3,"provider":"drand","public_key":"83cf0f2896adee7eb8b5f01fcad3912212c437e0073e911fb90022d3e760183c8c4b450b6a0a6c3ac6a5776a2d1064510d1fec758c921cc22b0e17e63aaf4bcb5ed66304de9cf809bd274ca73bab4af5a6e9c76a4bc09e76eae8991ef5ece45a","scheme":"bls-unchained-g1-rfc9380"},"result":"ok"},
{"profile":{"chain_hash":"52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971","genesis_seed":"f477d5c89f21a17c863a7f937c6a6d15859414d2be09cd448d4279af331c5d3e","genesis_time":1692803367,"id":"datekeys:quicknet:v1","max_round":83903165811,"network":"quicknet","period":3,"provider":"drand","public_key":"83cf0f2896adee7eb8b5f01fcad3912212c437e0073e911fb90022d3e760183c8c4b450b6a0a6c3ac6a5776a2d1064510d1fec758c921cc22b0e17e63aaf4bcb5ed66304de9cf809bd274ca73bab4af5a6e9c76a4bc09e76eae8991ef5ece45a","scheme":"bls-unchained-g1-rfc9380"},"result":"ok"},
{"profile":{"chain_hash":"52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971","genesis_seed":"f477d5c89f21a17c863a7f937c6a6d15859414d2be09cd448d4279af331c5d3e","genesis_time":1692803367,"id":"datekeys:quicknet:v1","max_round":83903165811,"network":"quicknet","period":3,"provider":"drand","public_key":"83cf0f2896adee7eb8b5f01fcad3912212c437e0073e911fb90022d3e760183c8c4b450b6a0a6c3ac6a5776a2d1064510d1fec758c921cc22b0e17e63aaf4bcb5ed66304de9cf809bd274ca73bab4af5a6e9c76a4bc09e76eae8991ef5ece45a","scheme":"nope"},"result":"ERR_UNKNOWN_PROFILE","text":"profile datekeys:quicknet:v1: \"nope\" is not a drand scheme: ERR_UNKNOWN_PROFILE"},
@ -223,7 +223,7 @@
{"profile":{"chain_hash":"52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971","genesis_seed":"f477d5c89f21a17c863a7f937c6a6d15859414d2be09cd448d4279af331c5d3e","genesis_time":1692803367,"id":"datekeys:quicknet:v1","max_round":83903165811,"network":"quicknet","period":3,"provider":"drand","public_key":"cf87a715c185fffc915f9f1727ad3f9636f944d71d857fdeeab012291255a38e03cba65f31c021431341375991575b17ffc58ea27dd56206821da91223e1f72fe51c75fe30c3986ead0d7d9a622824fde5104421e7a461d13b151227ddc30af0bd637a16cb37c162b92ad9d6b5109ac4d1e0cf815c21c5e2a559f6de3d674a1e7318c80c96bdb26544087fc4e289ae7620c7bb8e8adcd28725f72f2d2551a278a2077d6c167919a629f16e672034941ed1927b97bf4356697eaad969a216315e78dabec06e290d05b0b60e3c2a201a6c0ad7f07a2e01cfa9a429e6ec0ff5c3ab81e359612bbf8bacefbf6e3f53370ba5d30184019e73b39f30c9cc8861a8137eabce1132d5bd3d78d9423f4f37befa45d57d018fd9b0fb3b1b61418c8d4233517c30c9b7ee9a2ecd81cdc55cba922160a38ed77a63eb08576706004c5d63ccfe49b15a3212d5987569f424d3110120673b05dad0ad0432fb2a782b74f9c906654dd0355ee3c90f2553d974a85580a3ae05d55d81502f785444b40fe226452ff5298f08a02be10412336a5a390458e6cce9783174f0d65724e08f9e7033db7606eb9e4c23469bbddd23b4212659480903c7c5d123f131cfa9dba39d27537da5f3428361baaa262b7ac53f50f7a985482c4cdace6e5922c7b83daa4b2cc248f16b9989d6cb55cdf886dd6ef9f1dea716d3aa763bc5005f70edfa2849fff315305b9a6bbb857769b85495069320f6eba8a47e1d27ffd6283d399092ae4576c851afde52eeb3cf17b1ba0881e54be59fa56310fdc769af61fdeb3ec9f7700729f5f25547d34de2244bf839b20a69d4237c43e55c43c9b238eda5bd443da05e3594b1c915d9af90d21758374cc68017c7b2563ac3f81df50b2cda448ec4293603587235b843b1ffbef0ea8a2b2e0c10d1ac9c7626e18798bebe2206e98088c8aecd2be8a6278a90e06b20dd36dae022442a798772912aa1239ab896c6174b352c6b355b8cc0862b31c7167c71fd7a252a1043c46a4124308ae3656a50e1c2be30154a00c83faca0bd52d359ae9044f154717e0adcb68450c15fd1c19e16851c4586a742467434fba558684072385a6fdec6707454ffc4731f8f587238d45fa140710ac6bb4a058c07fb028db32b84a79bfe04caa7f1d51760c09d6ff7609d288548a18789364b9dd145e70197df650c027a2c6293f7347f32e9e2873af1eefbc4a070001518bd2603541e4f9a19961a6863da42934dc2e5716a6edf818f7bbe87ef4dd77cd0e096db2439e51b0d5f14ec3dfb5e4ce9733757a0bab7f7ddf47a473bedbe29b6041bab7d40acd8bdd1d961db4cfb1db82f01ea0fb93a3b202c89c361b41a405f75d0cccd871b9706221277f1fe45e664bd9e41b698d0bf934368c4d7cd6f0d80c4d3c0716844911a64523eddb6e8d739aa24c2ef391685cbc2827a621a","scheme":"bls-unchained-g1-rfc9380"},"result":"ERR_UNKNOWN_PROFILE","text":"profile datekeys:quicknet:v1: public key is not the canonical encoding of a point of the key group of bls-unchained-g1-rfc9380: ERR_UNKNOWN_PROFILE"},
{"profile":{"chain_hash":"52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971","genesis_seed":"f477d5c89f21a17c863a7f937c6a6d15859414d2be09cd448d4279af331c5d3e","genesis_time":1692803367,"id":"datekeys:quicknet:v1","max_round":83903165811,"network":"quicknet","period":3,"provider":"drand","public_key":"9a0111ea397fe69a4b1ba7b6434bacd764774b84f38512bf6730d2a0f6b0f6241eabfffeb153ffffb9feffffffffaaab","scheme":"bls-unchained-g1-rfc9380"},"result":"ERR_UNKNOWN_PROFILE","text":"profile datekeys:quicknet:v1: public key is not the canonical encoding of a point of the key group of bls-unchained-g1-rfc9380: ERR_UNKNOWN_PROFILE"},
{"profile":{"chain_hash":"52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971","genesis_seed":"f477d5c89f21a17c863a7f937c6a6d15859414d2be09cd448d4279af331c5d3e","genesis_time":1,"id":"datekeys:quicknet:v1","max_round":84467433600,"network":"quicknet","period":3,"provider":"drand","public_key":"83cf0f2896adee7eb8b5f01fcad3912212c437e0073e911fb90022d3e760183c8c4b450b6a0a6c3ac6a5776a2d1064510d1fec758c921cc22b0e17e63aaf4bcb5ed66304de9cf809bd274ca73bab4af5a6e9c76a4bc09e76eae8991ef5ece45a","scheme":"bls-unchained-g1-rfc9380"},"result":"ERR_PROFILE_MISMATCH","text":"profile datekeys:quicknet:v1: parameters hash to chain 950cfcb27d257316ed5fa4216178445129f54b6b09bb6051ea45b7ab0dff8f0a, not the pinned 52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971: ERR_PROFILE_MISMATCH"},
{"profile":{"chain_hash":"52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971","genesis_seed":"f477d5c89f21a17c863a7f937c6a6d15859414d2be09cd448d4279af331c5d3e","genesis_time":1692803367,"id":"datekeys:quicknet:v1","max_round":83903165811,"network":"quicknet","period":3,"provider":"drand","public_key":"83cf0f2896adee7eb8b5f01fcad3912212c437e0073e911fb90022d3e760183c8c4b450b6a0a6c3ac6a5776a2d1064510d1fec758c921cc22b0e17e63aaf4bcb5ed66304de9cf809bd274ca73bab4af5a6e9c76a4bc09e76eae8991ef5ece45a","scheme":"bls-unchained-on-g1"},"result":"ok"},
{"profile":{"chain_hash":"52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971","genesis_seed":"f477d5c89f21a17c863a7f937c6a6d15859414d2be09cd448d4279af331c5d3e","genesis_time":1692803367,"id":"datekeys:quicknet:v1","max_round":83903165811,"network":"quicknet","period":3,"provider":"drand","public_key":"83cf0f2896adee7eb8b5f01fcad3912212c437e0073e911fb90022d3e760183c8c4b450b6a0a6c3ac6a5776a2d1064510d1fec758c921cc22b0e17e63aaf4bcb5ed66304de9cf809bd274ca73bab4af5a6e9c76a4bc09e76eae8991ef5ece45a","scheme":"bls-unchained-on-g1"},"result":"ERR_UNKNOWN_PROFILE","text":"profile datekeys:quicknet:v1: scheme \"bls-unchained-on-g1\" is not bls-unchained-g1-rfc9380, the only scheme of V1: ERR_UNKNOWN_PROFILE"},
{"profile":{"chain_hash":"52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971","genesis_seed":"f477d5c89f21a17c863a7f937c6a6d15859414d2be09cd448d4279af331c5d3e","genesis_time":1692803367,"id":"datekeys:quicknet:v1","max_round":83903165811,"network":"quicknet","period":3,"provider":"drand","public_key":"83cf0f2896adee7eb8b5f01fcad3912212c437e0073e911fb90022d3e760183c8c4b450b6a0a6c3ac6a5776a2d1064510d1fec758c921cc22b0e17e63aaf4bcb5ed66304de9cf809bd274ca73bab4af5a6e9c76a4bc09e76eae8991ef5ece45a","scheme":"nope"},"result":"ERR_UNKNOWN_PROFILE","text":"profile datekeys:quicknet:v1: \"nope\" is not a drand scheme: ERR_UNKNOWN_PROFILE"},
{"profile":{"chain_hash":"52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971","genesis_seed":"f477d5c89f21a17c863a7f937c6a6d15859414d2be09cd448d4279af331c5d3e","genesis_time":1692803367,"id":"","max_round":83903165811,"network":"quicknet","period":3,"provider":"drand","public_key":"83cf0f2896adee7eb8b5f01fcad3912212c437e0073e911fb90022d3e760183c8c4b450b6a0a6c3ac6a5776a2d1064510d1fec758c921cc22b0e17e63aaf4bcb5ed66304de9cf809bd274ca73bab4af5a6e9c76a4bc09e76eae8991ef5ece45a","scheme":"bls-unchained-g1-rfc9380"},"result":"ERR_UNKNOWN_PROFILE","text":"profile: invalid profile_id \"\": ERR_UNKNOWN_PROFILE"},
{"profile":{"chain_hash":"52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971","genesis_seed":"f477d5c89f21a17c863a7f937c6a6d15859414d2be09cd448d4279af331c5d3e","genesis_time":253402300799,"id":"datekeys:quicknet:v1","max_round":1,"network":"quicknet","period":3,"provider":"drand","public_key":"83cf0f2896adee7eb8b5f01fcad3912212c437e0073e911fb90022d3e760183c8c4b450b6a0a6c3ac6a5776a2d1064510d1fec758c921cc22b0e17e63aaf4bcb5ed66304de9cf809bd274ca73bab4af5a6e9c76a4bc09e76eae8991ef5ece45a","scheme":"bls-unchained-g1-rfc9380"},"result":"ERR_UNKNOWN_PROFILE","text":"profile datekeys:quicknet:v1: invalid genesis time 253402300799: ERR_UNKNOWN_PROFILE"},
@ -322,7 +322,7 @@
{"hex":"ab007819646174656b6579732d70726f76696465722d70726f66696c6501010274646174656b6579733a717569636b6e65743a763103656472616e640468717569636b6e6574055820000000000000000000000000000000000000000000000000000000000000000006586083cf0f2896adee7eb8b5f01fcad3912212c437e0073e911fb90022d3e760183c8c4b450b6a0a6c3ac6a5776a2d1064510d1fec758c921cc22b0e17e63aaf4bcb5ed66304de9cf809bd274ca73bab4af5a6e9c76a4bc09e76eae8991ef5ece45a0700081a64e62127097818626c732d756e636861696e65642d67312d726663393338300a5820f477d5c89f21a17c863a7f937c6a6d15859414d2be09cd448d4279af331c5d3e","name":"another chain_hash, and period 0","result":"ERR_NON_CANONICAL_CBOR","text":"profile: key 7: period 0: ERR_NON_CANONICAL_CBOR"},
{"hex":"ab007819646174656b6579732d70726f76696465722d70726f66696c6501010274646174656b6579733a717569636b6e65743a763103656472616e640468717569636b6e6574055820000000000000000000000000000000000000000000000000000000000000000006586083cf0f2896adee7eb8b5f01fcad3912212c437e0073e911fb90022d3e760183c8c4b450b6a0a6c3ac6a5776a2d1064510d1fec758c921cc22b0e17e63aaf4bcb5ed66304de9cf809bd274ca73bab4af5a6e9c76a4bc09e76eae8991ef5ece45a071a00015181081a64e62127097818626c732d756e636861696e65642d67312d726663393338300a5820f477d5c89f21a17c863a7f937c6a6d15859414d2be09cd448d4279af331c5d3e","name":"another chain_hash, and period 86401","result":"ERR_NON_CANONICAL_CBOR","text":"profile: period 86401 s out of range: ERR_NON_CANONICAL_CBOR"},
{"hex":"ab007819646174656b6579732d70726f76696465722d70726f66696c6501010274646174656b6579733a717569636b6e65743a763103656472616e640468717569636b6e6574055820000000000000000000000000000000000000000000000000000000000000000006586083cf0f2896adee7eb8b5f01fcad3912212c437e0073e911fb90022d3e760183c8c4b450b6a0a6c3ac6a5776a2d1064510d1fec758c921cc22b0e17e63aaf4bcb5ed66304de9cf809bd274ca73bab4af5a6e9c76a4bc09e76eae8991ef5ece45a07030800097818626c732d756e636861696e65642d67312d726663393338300a5820f477d5c89f21a17c863a7f937c6a6d15859414d2be09cd448d4279af331c5d3e","name":"another chain_hash, and genesis_time 0","result":"ERR_UNKNOWN_PROFILE","text":"profile datekeys:quicknet:v1: invalid genesis time 0: ERR_UNKNOWN_PROFILE"},
{"hex":"ab007819646174656b6579732d70726f76696465722d70726f66696c6501010274646174656b6579733a717569636b6e65743a763103656472616e640468717569636b6e6574055820000000000000000000000000000000000000000000000000000000000000000006586083cf0f2896adee7eb8b5f01fcad3912212c437e0073e911fb90022d3e760183c8c4b450b6a0a6c3ac6a5776a2d1064510d1fec758c921cc22b0e17e63aaf4bcb5ed66304de9cf809bd274ca73bab4af5a6e9c76a4bc09e76eae8991ef5ece45a0703081a64e621270974706564657273656e2d626c732d636861696e65640a5820f477d5c89f21a17c863a7f937c6a6d15859414d2be09cd448d4279af331c5d3e","name":"another chain_hash, and the scheme pedersen-bls-chained","result":"ERR_UNKNOWN_PROFILE","text":"profile datekeys:quicknet:v1: scheme \"pedersen-bls-chained\" is not supported by tlock: ERR_UNKNOWN_PROFILE"},
{"hex":"ab007819646174656b6579732d70726f76696465722d70726f66696c6501010274646174656b6579733a717569636b6e65743a763103656472616e640468717569636b6e6574055820000000000000000000000000000000000000000000000000000000000000000006586083cf0f2896adee7eb8b5f01fcad3912212c437e0073e911fb90022d3e760183c8c4b450b6a0a6c3ac6a5776a2d1064510d1fec758c921cc22b0e17e63aaf4bcb5ed66304de9cf809bd274ca73bab4af5a6e9c76a4bc09e76eae8991ef5ece45a0703081a64e621270974706564657273656e2d626c732d636861696e65640a5820f477d5c89f21a17c863a7f937c6a6d15859414d2be09cd448d4279af331c5d3e","name":"another chain_hash, and the scheme pedersen-bls-chained","result":"ERR_UNKNOWN_PROFILE","text":"profile datekeys:quicknet:v1: scheme \"pedersen-bls-chained\" is not bls-unchained-g1-rfc9380, the only scheme of V1: ERR_UNKNOWN_PROFILE"},
{"hex":"aa007819646174656b6579732d70726f76696465722d70726f66696c6501010274646174656b6579733a717569636b6e65743a763103656472616e640468717569636b6e6574055820000000000000000000000000000000000000000000000000000000000000000006586083cf0f2896adee7eb8b5f01fcad3912212c437e0073e911fb90022d3e760183c8c4b450b6a0a6c3ac6a5776a2d1064510d1fec758c921cc22b0e17e63aaf4bcb5ed66304de9cf809bd274ca73bab4af5a6e9c76a4bc09e76eae8991ef5ece45a0703081a64e62127097818626c732d756e636861696e65642d67312d72666339333830","name":"another chain_hash, and no key 10","result":"ERR_NON_CANONICAL_CBOR","text":"profile: 10 keys, want all 11: ERR_NON_CANONICAL_CBOR"},
{"hex":"ac007819646174656b6579732d70726f76696465722d70726f66696c6501010274646174656b6579733a717569636b6e65743a763103656472616e640468717569636b6e6574055820000000000000000000000000000000000000000000000000000000000000000006586083cf0f2896adee7eb8b5f01fcad3912212c437e0073e911fb90022d3e760183c8c4b450b6a0a6c3ac6a5776a2d1064510d1fec758c921cc22b0e17e63aaf4bcb5ed66304de9cf809bd274ca73bab4af5a6e9c76a4bc09e76eae8991ef5ece45a0703081a64e62127097818626c732d756e636861696e65642d67312d726663393338300a5820f477d5c89f21a17c863a7f937c6a6d15859414d2be09cd448d4279af331c5d3e1400","name":"another chain_hash, and an unknown key","result":"ERR_NON_CANONICAL_CBOR","text":"profile: codec: offset 1: map of 12 entries, at most 11: ERR_NON_CANONICAL_CBOR"},
{"hex":"ab007819646174656b6579732d70726f76696465722d70726f66696c6501010274646174656b6579733a717569636b6e65743a763103656472616e640468717569636b6e6574055820000000000000000000000000000000000000000000000000000000000000000006586083cf0f2896adee7eb8b5f01fcad3912212c437e0073e911fb90022d3e760183c8c4b450b6a0a6c3ac6a5776a2d1064510d1fec758c921cc22b0e17e63aaf4bcb5ed66304de9cf809bd274ca73bab4af5a6e9c76a4bc09e76eae8991ef5ece45a0703081a64e62127097818626c732d756e636861696e65642d67312d726663393338300a5820f477d5c89f21a17c863a7f937c6a6d15859414d2be09cd448d4279af331c5d3e00","name":"another chain_hash, and a trailing byte","result":"ERR_NON_CANONICAL_CBOR","text":"profile: codec: offset 274: 1 trailing bytes: ERR_NON_CANONICAL_CBOR"},
@ -332,7 +332,7 @@
{"hex":"ab007819646174656b6579732d70726f76696465722d70726f66696c6501010274646174656b6579733a717569636b6e65743a763103656472616e640468717569636b6e657405582052db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e97106583097f1d3a73197d7942695638c4fa9ac0fc3688c4f9774b905a14e3a3f171bac586c55e83ff97a1aeffb3af00adb22c6bb0700081a64e62127097818626c732d756e636861696e65642d67312d726663393338300a5820f477d5c89f21a17c863a7f937c6a6d15859414d2be09cd448d4279af331c5d3e","name":"the public key of G1, and period 0","result":"ERR_NON_CANONICAL_CBOR","text":"profile: key 7: period 0: ERR_NON_CANONICAL_CBOR"},
{"hex":"ab007819646174656b6579732d70726f76696465722d70726f66696c6501010274646174656b6579733a717569636b6e65743a763103656472616e640468717569636b6e657405582052db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e97106583097f1d3a73197d7942695638c4fa9ac0fc3688c4f9774b905a14e3a3f171bac586c55e83ff97a1aeffb3af00adb22c6bb071a00015181081a64e62127097818626c732d756e636861696e65642d67312d726663393338300a5820f477d5c89f21a17c863a7f937c6a6d15859414d2be09cd448d4279af331c5d3e","name":"the public key of G1, and period 86401","result":"ERR_NON_CANONICAL_CBOR","text":"profile: period 86401 s out of range: ERR_NON_CANONICAL_CBOR"},
{"hex":"ab007819646174656b6579732d70726f76696465722d70726f66696c6501010274646174656b6579733a717569636b6e65743a763103656472616e640468717569636b6e657405582052db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e97106583097f1d3a73197d7942695638c4fa9ac0fc3688c4f9774b905a14e3a3f171bac586c55e83ff97a1aeffb3af00adb22c6bb07030800097818626c732d756e636861696e65642d67312d726663393338300a5820f477d5c89f21a17c863a7f937c6a6d15859414d2be09cd448d4279af331c5d3e","name":"the public key of G1, and genesis_time 0","result":"ERR_UNKNOWN_PROFILE","text":"profile datekeys:quicknet:v1: invalid genesis time 0: ERR_UNKNOWN_PROFILE"},
{"hex":"ab007819646174656b6579732d70726f76696465722d70726f66696c6501010274646174656b6579733a717569636b6e65743a763103656472616e640468717569636b6e657405582052db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e97106583097f1d3a73197d7942695638c4fa9ac0fc3688c4f9774b905a14e3a3f171bac586c55e83ff97a1aeffb3af00adb22c6bb0703081a64e621270974706564657273656e2d626c732d636861696e65640a5820f477d5c89f21a17c863a7f937c6a6d15859414d2be09cd448d4279af331c5d3e","name":"the public key of G1, and the scheme pedersen-bls-chained","result":"ERR_UNKNOWN_PROFILE","text":"profile datekeys:quicknet:v1: scheme \"pedersen-bls-chained\" is not supported by tlock: ERR_UNKNOWN_PROFILE"},
{"hex":"ab007819646174656b6579732d70726f76696465722d70726f66696c6501010274646174656b6579733a717569636b6e65743a763103656472616e640468717569636b6e657405582052db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e97106583097f1d3a73197d7942695638c4fa9ac0fc3688c4f9774b905a14e3a3f171bac586c55e83ff97a1aeffb3af00adb22c6bb0703081a64e621270974706564657273656e2d626c732d636861696e65640a5820f477d5c89f21a17c863a7f937c6a6d15859414d2be09cd448d4279af331c5d3e","name":"the public key of G1, and the scheme pedersen-bls-chained","result":"ERR_UNKNOWN_PROFILE","text":"profile datekeys:quicknet:v1: scheme \"pedersen-bls-chained\" is not bls-unchained-g1-rfc9380, the only scheme of V1: ERR_UNKNOWN_PROFILE"},
{"hex":"aa007819646174656b6579732d70726f76696465722d70726f66696c6501010274646174656b6579733a717569636b6e65743a763103656472616e640468717569636b6e657405582052db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e97106583097f1d3a73197d7942695638c4fa9ac0fc3688c4f9774b905a14e3a3f171bac586c55e83ff97a1aeffb3af00adb22c6bb0703081a64e62127097818626c732d756e636861696e65642d67312d72666339333830","name":"the public key of G1, and no key 10","result":"ERR_NON_CANONICAL_CBOR","text":"profile: 10 keys, want all 11: ERR_NON_CANONICAL_CBOR"},
{"hex":"ac007819646174656b6579732d70726f76696465722d70726f66696c6501010274646174656b6579733a717569636b6e65743a763103656472616e640468717569636b6e657405582052db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e97106583097f1d3a73197d7942695638c4fa9ac0fc3688c4f9774b905a14e3a3f171bac586c55e83ff97a1aeffb3af00adb22c6bb0703081a64e62127097818626c732d756e636861696e65642d67312d726663393338300a5820f477d5c89f21a17c863a7f937c6a6d15859414d2be09cd448d4279af331c5d3e1400","name":"the public key of G1, and an unknown key","result":"ERR_NON_CANONICAL_CBOR","text":"profile: codec: offset 1: map of 12 entries, at most 11: ERR_NON_CANONICAL_CBOR"},
{"hex":"ab007819646174656b6579732d70726f76696465722d70726f66696c6501010274646174656b6579733a717569636b6e65743a763103656472616e640468717569636b6e657405582052db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e97106583097f1d3a73197d7942695638c4fa9ac0fc3688c4f9774b905a14e3a3f171bac586c55e83ff97a1aeffb3af00adb22c6bb0703081a64e62127097818626c732d756e636861696e65642d67312d726663393338300a5820f477d5c89f21a17c863a7f937c6a6d15859414d2be09cd448d4279af331c5d3e00","name":"the public key of G1, and a trailing byte","result":"ERR_NON_CANONICAL_CBOR","text":"profile: codec: offset 226: 1 trailing bytes: ERR_NON_CANONICAL_CBOR"},
@ -362,7 +362,7 @@
{"hex":"ab007819646174656b6579732d70726f76696465722d70726f66696c6501010274646174656b6579733a717569636b6e65743a763103656472616e640468717569636b6e657405582052db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e97106586083cf0f2896adee7eb8b5f01fcad3912212c437e0073e911fb90022d3e760183c8c4b450b6a0a6c3ac6a5776a2d1064510d1fec758c921cc22b0e17e63aaf4bcb5ed66304de9cf809bd274ca73bab4af5a6e9c76a4bc09e76eae8991ef5ece45a07030800097818626c732d756e636861696e65642d67312d726663393338300a5820f477d5c89f21a17c863a7f937c6a6d15859414d2be09cd448d4279af331c5d3e00","name":"genesis_time 0, and a trailing byte","result":"ERR_NON_CANONICAL_CBOR","text":"profile: codec: offset 270: 1 trailing bytes: ERR_NON_CANONICAL_CBOR"},
{"hex":"ac007819646174656b6579732d70726f76696465722d70726f66696c6501010274646174656b6579733a717569636b6e65743a763103656472616e640468717569636b6e657405582052db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e97106586083cf0f2896adee7eb8b5f01fcad3912212c437e0073e911fb90022d3e760183c8c4b450b6a0a6c3ac6a5776a2d1064510d1fec758c921cc22b0e17e63aaf4bcb5ed66304de9cf809bd274ca73bab4af5a6e9c76a4bc09e76eae8991ef5ece45a07030800097818626c732d756e636861696e65642d67312d726663393338300a5820f477d5c89f21a17c863a7f937c6a6d15859414d2be09cd448d4279af331c5d3e","name":"genesis_time 0, and a head of one entry more","result":"ERR_NON_CANONICAL_CBOR","text":"profile: codec: offset 1: map of 12 entries, at most 11: ERR_NON_CANONICAL_CBOR"},
{"hex":"ab007819646174656b6579732d70726f76696465722d70726f66696c650274646174656b6579733a717569636b6e65743a7631010103656472616e640468717569636b6e657405582052db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e97106586083cf0f2896adee7eb8b5f01fcad3912212c437e0073e911fb90022d3e760183c8c4b450b6a0a6c3ac6a5776a2d1064510d1fec758c921cc22b0e17e63aaf4bcb5ed66304de9cf809bd274ca73bab4af5a6e9c76a4bc09e76eae8991ef5ece45a07030800097818626c732d756e636861696e65642d67312d726663393338300a5820f477d5c89f21a17c863a7f937c6a6d15859414d2be09cd448d4279af331c5d3e","name":"genesis_time 0, and keys 1 and 2 swapped","result":"ERR_NON_CANONICAL_CBOR","text":"profile: codec: offset 30: map key 2 where key 1 was expected: ERR_NON_CANONICAL_CBOR"},
{"hex":"ab007819646174656b6579732d70726f76696465722d70726f66696c6501010274646174656b6579733a717569636b6e65743a763103656472616e640468717569636b6e657405582052db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e97106586083cf0f2896adee7eb8b5f01fcad3912212c437e0073e911fb90022d3e760183c8c4b450b6a0a6c3ac6a5776a2d1064510d1fec758c921cc22b0e17e63aaf4bcb5ed66304de9cf809bd274ca73bab4af5a6e9c76a4bc09e76eae8991ef5ece45a0703081a64e621270974706564657273656e2d626c732d636861696e65640a5820f477d5c89f21a17c863a7f937c6a6d15859414d2be09cd448d4279af331c5d3e","name":"the scheme pedersen-bls-chained","result":"ERR_UNKNOWN_PROFILE","text":"profile datekeys:quicknet:v1: scheme \"pedersen-bls-chained\" is not supported by tlock: ERR_UNKNOWN_PROFILE"},
{"hex":"ab007819646174656b6579732d70726f76696465722d70726f66696c6501010274646174656b6579733a717569636b6e65743a763103656472616e640468717569636b6e657405582052db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e97106586083cf0f2896adee7eb8b5f01fcad3912212c437e0073e911fb90022d3e760183c8c4b450b6a0a6c3ac6a5776a2d1064510d1fec758c921cc22b0e17e63aaf4bcb5ed66304de9cf809bd274ca73bab4af5a6e9c76a4bc09e76eae8991ef5ece45a0703081a64e621270974706564657273656e2d626c732d636861696e65640a5820f477d5c89f21a17c863a7f937c6a6d15859414d2be09cd448d4279af331c5d3e","name":"the scheme pedersen-bls-chained","result":"ERR_UNKNOWN_PROFILE","text":"profile datekeys:quicknet:v1: scheme \"pedersen-bls-chained\" is not bls-unchained-g1-rfc9380, the only scheme of V1: ERR_UNKNOWN_PROFILE"},
{"hex":"aa007819646174656b6579732d70726f76696465722d70726f66696c6501010274646174656b6579733a717569636b6e65743a763103656472616e640468717569636b6e657405582052db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e97106586083cf0f2896adee7eb8b5f01fcad3912212c437e0073e911fb90022d3e760183c8c4b450b6a0a6c3ac6a5776a2d1064510d1fec758c921cc22b0e17e63aaf4bcb5ed66304de9cf809bd274ca73bab4af5a6e9c76a4bc09e76eae8991ef5ece45a0703081a64e621270974706564657273656e2d626c732d636861696e6564","name":"the scheme pedersen-bls-chained, and no key 10","result":"ERR_NON_CANONICAL_CBOR","text":"profile: 10 keys, want all 11: ERR_NON_CANONICAL_CBOR"},
{"hex":"ac007819646174656b6579732d70726f76696465722d70726f66696c6501010274646174656b6579733a717569636b6e65743a763103656472616e640468717569636b6e657405582052db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e97106586083cf0f2896adee7eb8b5f01fcad3912212c437e0073e911fb90022d3e760183c8c4b450b6a0a6c3ac6a5776a2d1064510d1fec758c921cc22b0e17e63aaf4bcb5ed66304de9cf809bd274ca73bab4af5a6e9c76a4bc09e76eae8991ef5ece45a0703081a64e621270974706564657273656e2d626c732d636861696e65640a5820f477d5c89f21a17c863a7f937c6a6d15859414d2be09cd448d4279af331c5d3e1400","name":"the scheme pedersen-bls-chained, and an unknown key","result":"ERR_NON_CANONICAL_CBOR","text":"profile: codec: offset 1: map of 12 entries, at most 11: ERR_NON_CANONICAL_CBOR"},
{"hex":"ab007819646174656b6579732d70726f76696465722d70726f66696c6501010274646174656b6579733a717569636b6e65743a763103656472616e640468717569636b6e657405582052db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e97106586083cf0f2896adee7eb8b5f01fcad3912212c437e0073e911fb90022d3e760183c8c4b450b6a0a6c3ac6a5776a2d1064510d1fec758c921cc22b0e17e63aaf4bcb5ed66304de9cf809bd274ca73bab4af5a6e9c76a4bc09e76eae8991ef5ece45a0703081a64e621270974706564657273656e2d626c732d636861696e65640a5820f477d5c89f21a17c863a7f937c6a6d15859414d2be09cd448d4279af331c5d3e00","name":"the scheme pedersen-bls-chained, and a trailing byte","result":"ERR_NON_CANONICAL_CBOR","text":"profile: codec: offset 269: 1 trailing bytes: ERR_NON_CANONICAL_CBOR"},

@ -1,5 +1,5 @@
{
"spec": "0.11",
"spec": "0.14",
"generator": "tool/formats_go_vectors.go",
"description": "RFC 3339: time.Parse with time.RFC3339Nano, ok or error, and Format with RFC3339 and RFC3339Nano in UTC; datekey.Resolve, RoundTime and DateKey.Validate, and Profile.MaxRound, on the Quicknet profile with other genesis times and periods.",
"parse": [

@ -5,7 +5,7 @@
/// Part of test/vectors/formats_framing.json.
const formatsFramingJson = r'''
{
"spec": "0.11",
"spec": "0.14",
"generator": "tool/formats_go_vectors.go",
"description": "The PRELUDE of a .dkc (capsule.ParsePrelude), the steps 1 to 3 of capsule.Inspect on truncated and edited fixtures (with the step that fails, 0 when steps 1 to 8 pass), and whole .dkk files (accesskey.Decode), with the result, the code and the text of the Go reference.",
"prelude": [
@ -181,7 +181,7 @@ const formatsFramingJson = r'''
/// Part of test/vectors/formats_header.json.
const formatsHeaderJson = r'''
{
"spec": "0.11",
"spec": "0.14",
"generator": "tool/formats_go_vectors.go",
"description": "PUBLIC_HEADER (capsule.DecodeHeader) of the fixtures, edited, and built field by field.",
"header": [
@ -301,7 +301,7 @@ const formatsHeaderJson = r'''
/// Part of test/vectors/formats_control.json.
const formatsControlJson = r'''
{
"spec": "0.11",
"spec": "0.14",
"generator": "tool/formats_go_vectors.go",
"description": "CONTROL_CBOR of the three formats (capsule.DecodeControl) of the fixtures, in their format and in another, edited, and built field by field.",
"control": [
@ -440,7 +440,7 @@ const formatsControlJson = r'''
/// Part of test/vectors/formats_profile.json.
const formatsProfileJson = r'''
{
"spec": "0.11",
"spec": "0.14",
"generator": "tool/formats_go_vectors.go",
"description": "Provider Profiles: profile.Decode of the Quicknet profile, edited and with fields replaced, and Profile.Validate of values.",
"decode": [
@ -470,7 +470,7 @@ const formatsProfileJson = r'''
{"profile":{"chain_hash":"52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971","genesis_seed":"f477d5c89f21a17c863a7f937c6a6d15859414d2be09cd448d4279af331c5d3e","genesis_time":1692803367,"id":"datekeys:quicknet:v1","max_round":83903165811,"network":"Q","period":3,"provider":"drand","public_key":"83cf0f2896adee7eb8b5f01fcad3912212c437e0073e911fb90022d3e760183c8c4b450b6a0a6c3ac6a5776a2d1064510d1fec758c921cc22b0e17e63aaf4bcb5ed66304de9cf809bd274ca73bab4af5a6e9c76a4bc09e76eae8991ef5ece45a","scheme":"bls-unchained-g1-rfc9380"},"result":"ERR_UNKNOWN_PROFILE","text":"profile datekeys:quicknet:v1: invalid provider, network or scheme name: ERR_UNKNOWN_PROFILE"},
{"profile":{"chain_hash":"52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971","genesis_seed":"f477d5c89f21a17c863a7f937c6a6d15859414d2be09cd448d4279af331c5d3e","genesis_time":0,"id":"datekeys:quicknet:v1","max_round":84467433600,"network":"quicknet","period":3,"provider":"drand","public_key":"83cf0f2896adee7eb8b5f01fcad3912212c437e0073e911fb90022d3e760183c8c4b450b6a0a6c3ac6a5776a2d1064510d1fec758c921cc22b0e17e63aaf4bcb5ed66304de9cf809bd274ca73bab4af5a6e9c76a4bc09e76eae8991ef5ece45a","scheme":"bls-unchained-g1-rfc9380"},"result":"ERR_UNKNOWN_PROFILE","text":"profile datekeys:quicknet:v1: invalid genesis time 0: ERR_UNKNOWN_PROFILE"},
{"profile":{"chain_hash":"52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971","genesis_seed":"f477d5c89f21a17c863a7f937c6a6d15859414d2be09cd448d4279af331c5d3e","genesis_time":1692803367,"id":"datekeys:quicknet:v1","max_round":83903165811,"network":"default","period":3,"provider":"drand","public_key":"83cf0f2896adee7eb8b5f01fcad3912212c437e0073e911fb90022d3e760183c8c4b450b6a0a6c3ac6a5776a2d1064510d1fec758c921cc22b0e17e63aaf4bcb5ed66304de9cf809bd274ca73bab4af5a6e9c76a4bc09e76eae8991ef5ece45a","scheme":"bls-unchained-g1-rfc9380"},"result":"ERR_PROFILE_MISMATCH","text":"profile datekeys:quicknet:v1: parameters hash to chain bb53bd3c1f404463b224d27e22872c4754f7d4f5549693d349f616c3ac27d4a9, not the pinned 52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971: ERR_PROFILE_MISMATCH"},
{"profile":{"chain_hash":"52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971","genesis_seed":"f477d5c89f21a17c863a7f937c6a6d15859414d2be09cd448d4279af331c5d3e","genesis_time":1692803367,"id":"datekeys:quicknet:v1","max_round":83903165811,"network":"quicknet","period":3,"provider":"drand","public_key":"83cf0f2896adee7eb8b5f01fcad3912212c437e0073e911fb90022d3e760183c8c4b450b6a0a6c3ac6a5776a2d1064510d1fec758c921cc22b0e17e63aaf4bcb5ed66304de9cf809bd274ca73bab4af5a6e9c76a4bc09e76eae8991ef5ece45a","scheme":"pedersen-bls-chained"},"result":"ERR_UNKNOWN_PROFILE","text":"profile datekeys:quicknet:v1: scheme \"pedersen-bls-chained\" is not supported by tlock: ERR_UNKNOWN_PROFILE"},
{"profile":{"chain_hash":"52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971","genesis_seed":"f477d5c89f21a17c863a7f937c6a6d15859414d2be09cd448d4279af331c5d3e","genesis_time":1692803367,"id":"datekeys:quicknet:v1","max_round":83903165811,"network":"quicknet","period":3,"provider":"drand","public_key":"83cf0f2896adee7eb8b5f01fcad3912212c437e0073e911fb90022d3e760183c8c4b450b6a0a6c3ac6a5776a2d1064510d1fec758c921cc22b0e17e63aaf4bcb5ed66304de9cf809bd274ca73bab4af5a6e9c76a4bc09e76eae8991ef5ece45a","scheme":"pedersen-bls-chained"},"result":"ERR_UNKNOWN_PROFILE","text":"profile datekeys:quicknet:v1: scheme \"pedersen-bls-chained\" is not bls-unchained-g1-rfc9380, the only scheme of V1: ERR_UNKNOWN_PROFILE"},
{"profile":{"chain_hash":"52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971","genesis_seed":"f477d5c89f21a17c863a7f937c6a6d15859414d2be09cd448d4279af331c5d3e","genesis_time":1692803367,"id":"datekeys:quicknet:v1","max_round":2913271,"network":"quicknet","period":86401,"provider":"drand","public_key":"83cf0f2896adee7eb8b5f01fcad3912212c437e0073e911fb90022d3e760183c8c4b450b6a0a6c3ac6a5776a2d1064510d1fec758c921cc22b0e17e63aaf4bcb5ed66304de9cf809bd274ca73bab4af5a6e9c76a4bc09e76eae8991ef5ece45a","scheme":"bls-unchained-g1-rfc9380"},"result":"ERR_NON_CANONICAL_CBOR","text":"profile \"datekeys:quicknet:v1\": period 24h0m1s is not a whole number of seconds in 1..86400: ERR_NON_CANONICAL_CBOR"},
{"profile":{"chain_hash":"52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971","genesis_seed":"f477d5c89f21a17c863a7f937c6a6d15859414d2be09cd448d4279af331c5d3e","genesis_time":1692803367,"id":"datekeys:quicknet:v1","max_round":2913271,"network":"quicknet","period":86401,"provider":"drand","public_key":"83cf0f2896adee7eb8b5f01fcad3912212c437e0073e911fb90022d3e760183c8c4b450b6a0a6c3ac6a5776a2d1064510d1fec758c921cc22b0e17e63aaf4bcb5ed66304de9cf809bd274ca73bab4af5a6e9c76a4bc09e76eae8991ef5ece45a","scheme":"bls-unchained-g1-rfc9380"},"result":"ERR_NON_CANONICAL_CBOR","text":"profile \"datekeys:quicknet:v1\": period 24h0m1s is not a whole number of seconds in 1..86400: ERR_NON_CANONICAL_CBOR"},
{"profile":{"chain_hash":"52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971","genesis_seed":"f477d5c89f21a17c863a7f937c6a6d15859414d2be09cd448d4279af331c5d3e","genesis_time":1692803367,"id":"datekeys:quicknet:v1","max_round":2913305,"network":"quicknet","period":86400,"provider":"drand","public_key":"83cf0f2896adee7eb8b5f01fcad3912212c437e0073e911fb90022d3e760183c8c4b450b6a0a6c3ac6a5776a2d1064510d1fec758c921cc22b0e17e63aaf4bcb5ed66304de9cf809bd274ca73bab4af5a6e9c76a4bc09e76eae8991ef5ece45a","scheme":"bls-unchained-g1-rfc9380"},"result":"ERR_PROFILE_MISMATCH","text":"profile datekeys:quicknet:v1: parameters hash to chain c11da7002fbe7b2ab5db749677c90aed2afdf497830e0b1ffecb743c823b2888, not the pinned 52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971: ERR_PROFILE_MISMATCH"},
@ -504,7 +504,7 @@ const formatsProfileJson = r'''
/// Part of test/vectors/formats_extension.json.
const formatsExtensionJson = r'''
{
"spec": "0.11",
"spec": "0.14",
"generator": "tool/formats_go_vectors.go",
"description": "Extension arrays through codec.Unmarshal with extension.DecodeArray and EncodeArray, Canonical, CheckDisjoint, CheckCriticalIn and CheckNoncriticalIn with the registry placed of the generator (or CheckCritical and CheckNoncritical when object is empty, and no registry when registry is none), and CheckWrite with extension.Standard.",
"array": [
@ -596,7 +596,7 @@ const formatsExtensionJson = r'''
/// Part of test/vectors/formats_datekey.json.
const formatsDatekeyJson = r'''
{
"spec": "0.11",
"spec": "0.14",
"generator": "tool/formats_go_vectors.go",
"description": "dk1_ strings (datekey.Parse).",
"parse": [
@ -666,7 +666,7 @@ const formatsDatekeyJson = r'''
/// Part of test/vectors/formats_time.json.
const formatsTimeJson = r'''
{
"spec": "0.11",
"spec": "0.14",
"generator": "tool/formats_go_vectors.go",
"description": "RFC 3339: time.Parse with time.RFC3339Nano, ok or error, and Format with RFC3339 and RFC3339Nano in UTC; datekey.Resolve, RoundTime and DateKey.Validate, and Profile.MaxRound, on the Quicknet profile with other genesis times and periods.",
"parse": [
@ -817,7 +817,7 @@ const formatsTimeJson = r'''
/// Part of test/vectors/formats_padding.json.
const formatsPaddingJson = r'''
{
"spec": "0.11",
"spec": "0.14",
"generator": "tool/formats_go_vectors.go",
"description": "capsule.PaddedLength with both codes and capsule.PayloadAgeLength, at the boundaries of spec §29.1 up to L_MAX and past it; a code with null was rejected with text. check: the plaintext of PAYLOAD_AGE checked by capsule.Open against L and P (step 17): the content of the fixture (its .plaintext) followed by zeros, cut or extended to length bytes, with the byte at at set to value when given; step 0 when the capsule opens.",
"padded": [
@ -897,7 +897,7 @@ const formatsPaddingJson = r'''
/// Part of test/vectors/formats_encode.json.
const formatsEncodeJson = r'''
{
"spec": "0.11",
"spec": "0.14",
"generator": "tool/formats_go_vectors.go",
"description": "The encoders on values: capsule.EncodeHeader and EncodeControl, accesskey.Encode, profile.NewRegistry, and the canonical JSON and dk1_ string of DateKeys (CanonicalJSON and Compact, empty when not valid); an encoding is in hex, or as its length and SHA-256 when it is large. big is the size of the data of the noncritical extension a of version 1, bytes 0x01, that takes the object to its limit. limits: the decoders on objects at the limits of spec §57 and one byte past them: zeros bytes of zeros, or an extension array 81 a3 00 61 61 01 01 02 5a <len, 4 bytes> and len bytes 0x07 (extension_data), or Canonical of the extension a of version 1 whose data is len zeros (extension_canonical).",
"header": [
@ -932,7 +932,7 @@ const formatsEncodeJson = r'''
/// Part of test/vectors/formats_body.json.
const formatsBodyJson = r'''
{
"spec": "0.11",
"spec": "0.14",
"generator": "tool/formats_go_vectors.go",
"description": "The frame of BODY (capsule.ParseBodyFrame) against L, and the zeros of the security area (capsule.CheckArea).",
"frame": [

@ -1115,7 +1115,7 @@ const locatorUrisJson = r'''
["https://[2000::]:0443/",37,""],
["https://[2000::%25eth0]/",5,""],
["https://[2000::%eth0]/",29,""],
["https://[[2000::]/",0,"2000::"],
["https://[[2000::]/",11,""],
["https://[[2000::]]/",12,""],
["https://[2000::]]/",12,""],
["https://[2000::/",15,""],
@ -1138,7 +1138,7 @@ const locatorUrisJson = r'''
["https://[3fff:ffff:ffff:ffff:ffff:ffff:ffff:ffff]:0443/",37,""],
["https://[3fff:ffff:ffff:ffff:ffff:ffff:ffff:ffff%25eth0]/",5,""],
["https://[3fff:ffff:ffff:ffff:ffff:ffff:ffff:ffff%eth0]/",29,""],
["https://[[3fff:ffff:ffff:ffff:ffff:ffff:ffff:ffff]/",0,"3fff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"],
["https://[[3fff:ffff:ffff:ffff:ffff:ffff:ffff:ffff]/",11,""],
["https://[[3fff:ffff:ffff:ffff:ffff:ffff:ffff:ffff]]/",12,""],
["https://[3fff:ffff:ffff:ffff:ffff:ffff:ffff:ffff]]/",12,""],
["https://[3fff:ffff:ffff:ffff:ffff:ffff:ffff:ffff/",15,""],
@ -1886,7 +1886,7 @@ const locatorUrisJson = r'''
["https://[2620:4f:8000::]:0443/",37,""],
["https://[2620:4f:8000::%25eth0]/",5,""],
["https://[2620:4f:8000::%eth0]/",29,""],
["https://[[2620:4f:8000::]/",0,"2620:4f:8000::"],
["https://[[2620:4f:8000::]/",11,""],
["https://[[2620:4f:8000::]]/",12,""],
["https://[2620:4f:8000::]]/",12,""],
["https://[2620:4f:8000::/",15,""],
@ -1910,7 +1910,7 @@ const locatorUrisJson = r'''
["https://[2620:4f:8000:ffff:ffff:ffff:ffff:ffff]:0443/",37,""],
["https://[2620:4f:8000:ffff:ffff:ffff:ffff:ffff%25eth0]/",5,""],
["https://[2620:4f:8000:ffff:ffff:ffff:ffff:ffff%eth0]/",29,""],
["https://[[2620:4f:8000:ffff:ffff:ffff:ffff:ffff]/",0,"2620:4f:8000:ffff:ffff:ffff:ffff:ffff"],
["https://[[2620:4f:8000:ffff:ffff:ffff:ffff:ffff]/",11,""],
["https://[[2620:4f:8000:ffff:ffff:ffff:ffff:ffff]]/",12,""],
["https://[2620:4f:8000:ffff:ffff:ffff:ffff:ffff]]/",12,""],
["https://[2620:4f:8000:ffff:ffff:ffff:ffff:ffff/",15,""],
@ -1934,7 +1934,7 @@ const locatorUrisJson = r'''
["https://[2001:4860::]:0443/",37,""],
["https://[2001:4860::%25eth0]/",5,""],
["https://[2001:4860::%eth0]/",29,""],
["https://[[2001:4860::]/",0,"2001:4860::"],
["https://[[2001:4860::]/",11,""],
["https://[[2001:4860::]]/",12,""],
["https://[2001:4860::]]/",12,""],
["https://[2001:4860::/",15,""],
@ -1957,7 +1957,7 @@ const locatorUrisJson = r'''
["https://[2001:4860:ffff:ffff:ffff:ffff:ffff:ffff]:0443/",37,""],
["https://[2001:4860:ffff:ffff:ffff:ffff:ffff:ffff%25eth0]/",5,""],
["https://[2001:4860:ffff:ffff:ffff:ffff:ffff:ffff%eth0]/",29,""],
["https://[[2001:4860:ffff:ffff:ffff:ffff:ffff:ffff]/",0,"2001:4860:ffff:ffff:ffff:ffff:ffff:ffff"],
["https://[[2001:4860:ffff:ffff:ffff:ffff:ffff:ffff]/",11,""],
["https://[[2001:4860:ffff:ffff:ffff:ffff:ffff:ffff]]/",12,""],
["https://[2001:4860:ffff:ffff:ffff:ffff:ffff:ffff]]/",12,""],
["https://[2001:4860:ffff:ffff:ffff:ffff:ffff:ffff/",15,""],
@ -2389,19 +2389,19 @@ const locatorUrisJson = r'''
["https://ejemplo.org/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",75,""],
["ipfs://bafkreiftzasotym35727cupoyoi6pikjw364gyvpexwpnj6k4dt7humgfu",0,"bafkreiftzasotym35727cupoyoi6pikjw364gyvpexwpnj6k4dt7humgfu"],
["ipfs://bafkreiftzasotym35727cupoyoi6pikjw364gyvpexwpnj6k4dt7humgfu/x",0,"bafkreiftzasotym35727cupoyoi6pikjw364gyvpexwpnj6k4dt7humgfu"],
["ipfs://bafkreiftzasotym35727cupoyoi6pikjw364gyvpexwpnj6k4dt7humgfua",0,"bafkreiftzasotym35727cupoyoi6pikjw364gyvpexwpnj6k4dt7humgfua"],
["ipfs://bafkreiftzasotym35727cupoyoi6pikjw364gyvpexwpnj6k4dt7humgfua",7,""],
["ipfs://bafkreiftzasotym35727cupoyoi6pikjw364gyvpexwpnj6k4dt7humgfuaa",7,""],
["ipfs://bafkreiftzasotym35727cupoyoi6pikjw364gyvpexwpnj6k4dt7humgfuq",7,""],
["ipfs://bafkreiftzasotym35727cupoyoi6pikjw364gyvpexwpnj6k4dt7humgf",7,""],
["ipfs://bafybeiftzasotym35727cupoyoi6pikjw364gyvpexwpnj6k4dt7humgfu",0,"bafybeiftzasotym35727cupoyoi6pikjw364gyvpexwpnj6k4dt7humgfu"],
["ipfs://bafybeiftzasotym35727cupoyoi6pikjw364gyvpexwpnj6k4dt7humgfu/x",0,"bafybeiftzasotym35727cupoyoi6pikjw364gyvpexwpnj6k4dt7humgfu"],
["ipfs://bafybeiftzasotym35727cupoyoi6pikjw364gyvpexwpnj6k4dt7humgfua",0,"bafybeiftzasotym35727cupoyoi6pikjw364gyvpexwpnj6k4dt7humgfua"],
["ipfs://bafybeiftzasotym35727cupoyoi6pikjw364gyvpexwpnj6k4dt7humgfua",7,""],
["ipfs://bafybeiftzasotym35727cupoyoi6pikjw364gyvpexwpnj6k4dt7humgfuaa",7,""],
["ipfs://bafybeiftzasotym35727cupoyoi6pikjw364gyvpexwpnj6k4dt7humgfuq",7,""],
["ipfs://bafybeiftzasotym35727cupoyoi6pikjw364gyvpexwpnj6k4dt7humgf",7,""],
["ipfs://bafkqaaia",0,"bafkqaaia"],
["ipfs://bafkqaaia/x",0,"bafkqaaia"],
["ipfs://bafkqaaiaa",0,"bafkqaaiaa"],
["ipfs://bafkqaaiaa",7,""],
["ipfs://bafkqaaiaaa",7,""],
["ipfs://bafkqaaiaq",7,""],
["ipfs://bafkqaai",7,""],
@ -2508,7 +2508,7 @@ const locatorUrisJson = r'''
["ipfs://b/x",7,""],
["ipfs://baa",7,""],
["ipfs://bq",7,""],
["ipfs://bafybeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqabf3oclgtqy55fbzdia",0,"bafybeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqabf3oclgtqy55fbzdia"],
["ipfs://bafybeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqabf3oclgtqy55fbzdia",7,""],
["ipfs://bafybeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqabf3oclgtqy55fbzdib",7,""],
["ipfs://bafybeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqabf3oclgtqy55fbzdiaa",7,""],
["ipfs://bafybeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqabf3oclgtqy55fbzdi7",7,""],

@ -1110,7 +1110,7 @@
["https://[2000::]:0443/",37,""],
["https://[2000::%25eth0]/",5,""],
["https://[2000::%eth0]/",29,""],
["https://[[2000::]/",0,"2000::"],
["https://[[2000::]/",11,""],
["https://[[2000::]]/",12,""],
["https://[2000::]]/",12,""],
["https://[2000::/",15,""],
@ -1133,7 +1133,7 @@
["https://[3fff:ffff:ffff:ffff:ffff:ffff:ffff:ffff]:0443/",37,""],
["https://[3fff:ffff:ffff:ffff:ffff:ffff:ffff:ffff%25eth0]/",5,""],
["https://[3fff:ffff:ffff:ffff:ffff:ffff:ffff:ffff%eth0]/",29,""],
["https://[[3fff:ffff:ffff:ffff:ffff:ffff:ffff:ffff]/",0,"3fff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"],
["https://[[3fff:ffff:ffff:ffff:ffff:ffff:ffff:ffff]/",11,""],
["https://[[3fff:ffff:ffff:ffff:ffff:ffff:ffff:ffff]]/",12,""],
["https://[3fff:ffff:ffff:ffff:ffff:ffff:ffff:ffff]]/",12,""],
["https://[3fff:ffff:ffff:ffff:ffff:ffff:ffff:ffff/",15,""],
@ -1881,7 +1881,7 @@
["https://[2620:4f:8000::]:0443/",37,""],
["https://[2620:4f:8000::%25eth0]/",5,""],
["https://[2620:4f:8000::%eth0]/",29,""],
["https://[[2620:4f:8000::]/",0,"2620:4f:8000::"],
["https://[[2620:4f:8000::]/",11,""],
["https://[[2620:4f:8000::]]/",12,""],
["https://[2620:4f:8000::]]/",12,""],
["https://[2620:4f:8000::/",15,""],
@ -1905,7 +1905,7 @@
["https://[2620:4f:8000:ffff:ffff:ffff:ffff:ffff]:0443/",37,""],
["https://[2620:4f:8000:ffff:ffff:ffff:ffff:ffff%25eth0]/",5,""],
["https://[2620:4f:8000:ffff:ffff:ffff:ffff:ffff%eth0]/",29,""],
["https://[[2620:4f:8000:ffff:ffff:ffff:ffff:ffff]/",0,"2620:4f:8000:ffff:ffff:ffff:ffff:ffff"],
["https://[[2620:4f:8000:ffff:ffff:ffff:ffff:ffff]/",11,""],
["https://[[2620:4f:8000:ffff:ffff:ffff:ffff:ffff]]/",12,""],
["https://[2620:4f:8000:ffff:ffff:ffff:ffff:ffff]]/",12,""],
["https://[2620:4f:8000:ffff:ffff:ffff:ffff:ffff/",15,""],
@ -1929,7 +1929,7 @@
["https://[2001:4860::]:0443/",37,""],
["https://[2001:4860::%25eth0]/",5,""],
["https://[2001:4860::%eth0]/",29,""],
["https://[[2001:4860::]/",0,"2001:4860::"],
["https://[[2001:4860::]/",11,""],
["https://[[2001:4860::]]/",12,""],
["https://[2001:4860::]]/",12,""],
["https://[2001:4860::/",15,""],
@ -1952,7 +1952,7 @@
["https://[2001:4860:ffff:ffff:ffff:ffff:ffff:ffff]:0443/",37,""],
["https://[2001:4860:ffff:ffff:ffff:ffff:ffff:ffff%25eth0]/",5,""],
["https://[2001:4860:ffff:ffff:ffff:ffff:ffff:ffff%eth0]/",29,""],
["https://[[2001:4860:ffff:ffff:ffff:ffff:ffff:ffff]/",0,"2001:4860:ffff:ffff:ffff:ffff:ffff:ffff"],
["https://[[2001:4860:ffff:ffff:ffff:ffff:ffff:ffff]/",11,""],
["https://[[2001:4860:ffff:ffff:ffff:ffff:ffff:ffff]]/",12,""],
["https://[2001:4860:ffff:ffff:ffff:ffff:ffff:ffff]]/",12,""],
["https://[2001:4860:ffff:ffff:ffff:ffff:ffff:ffff/",15,""],
@ -2384,19 +2384,19 @@
["https://ejemplo.org/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",75,""],
["ipfs://bafkreiftzasotym35727cupoyoi6pikjw364gyvpexwpnj6k4dt7humgfu",0,"bafkreiftzasotym35727cupoyoi6pikjw364gyvpexwpnj6k4dt7humgfu"],
["ipfs://bafkreiftzasotym35727cupoyoi6pikjw364gyvpexwpnj6k4dt7humgfu/x",0,"bafkreiftzasotym35727cupoyoi6pikjw364gyvpexwpnj6k4dt7humgfu"],
["ipfs://bafkreiftzasotym35727cupoyoi6pikjw364gyvpexwpnj6k4dt7humgfua",0,"bafkreiftzasotym35727cupoyoi6pikjw364gyvpexwpnj6k4dt7humgfua"],
["ipfs://bafkreiftzasotym35727cupoyoi6pikjw364gyvpexwpnj6k4dt7humgfua",7,""],
["ipfs://bafkreiftzasotym35727cupoyoi6pikjw364gyvpexwpnj6k4dt7humgfuaa",7,""],
["ipfs://bafkreiftzasotym35727cupoyoi6pikjw364gyvpexwpnj6k4dt7humgfuq",7,""],
["ipfs://bafkreiftzasotym35727cupoyoi6pikjw364gyvpexwpnj6k4dt7humgf",7,""],
["ipfs://bafybeiftzasotym35727cupoyoi6pikjw364gyvpexwpnj6k4dt7humgfu",0,"bafybeiftzasotym35727cupoyoi6pikjw364gyvpexwpnj6k4dt7humgfu"],
["ipfs://bafybeiftzasotym35727cupoyoi6pikjw364gyvpexwpnj6k4dt7humgfu/x",0,"bafybeiftzasotym35727cupoyoi6pikjw364gyvpexwpnj6k4dt7humgfu"],
["ipfs://bafybeiftzasotym35727cupoyoi6pikjw364gyvpexwpnj6k4dt7humgfua",0,"bafybeiftzasotym35727cupoyoi6pikjw364gyvpexwpnj6k4dt7humgfua"],
["ipfs://bafybeiftzasotym35727cupoyoi6pikjw364gyvpexwpnj6k4dt7humgfua",7,""],
["ipfs://bafybeiftzasotym35727cupoyoi6pikjw364gyvpexwpnj6k4dt7humgfuaa",7,""],
["ipfs://bafybeiftzasotym35727cupoyoi6pikjw364gyvpexwpnj6k4dt7humgfuq",7,""],
["ipfs://bafybeiftzasotym35727cupoyoi6pikjw364gyvpexwpnj6k4dt7humgf",7,""],
["ipfs://bafkqaaia",0,"bafkqaaia"],
["ipfs://bafkqaaia/x",0,"bafkqaaia"],
["ipfs://bafkqaaiaa",0,"bafkqaaiaa"],
["ipfs://bafkqaaiaa",7,""],
["ipfs://bafkqaaiaaa",7,""],
["ipfs://bafkqaaiaq",7,""],
["ipfs://bafkqaai",7,""],
@ -2503,7 +2503,7 @@
["ipfs://b/x",7,""],
["ipfs://baa",7,""],
["ipfs://bq",7,""],
["ipfs://bafybeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqabf3oclgtqy55fbzdia",0,"bafybeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqabf3oclgtqy55fbzdia"],
["ipfs://bafybeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqabf3oclgtqy55fbzdia",7,""],
["ipfs://bafybeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqabf3oclgtqy55fbzdib",7,""],
["ipfs://bafybeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqabf3oclgtqy55fbzdiaa",7,""],
["ipfs://bafybeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqabf3oclgtqy55fbzdi7",7,""],

@ -261,6 +261,7 @@ const locatorVectorsJson = r'''
"a public note of 1025 bytes, not 1 to 1024: ERR_EXTENSION_DATA_INVALID",
"a public note that breaks the rules of text: text: bidirectional control U+202E: ERR_EXTENSION_DATA_INVALID",
"locator: Info.DateKey is not a canonical DateKey",
"locator: Info.DateKey is of the profile \"datekeys:other:v1\", which this module does not pin",
"locator: the extension has no locator",
"locator: the profile of the DateKey is not pinned",
"locator: not datekeys.capsule version 1 with data: ERR_EXTENSION_DATA_INVALID",
@ -274,7 +275,10 @@ const locatorVectorsJson = r'''
"locator: datekeys.capsule: key 9007199254740992 is not defined: ERR_NON_CANONICAL_CBOR: ERR_EXTENSION_DATA_INVALID",
"locator: datekeys.capsule: key 1: codec: offset 5: a text string of 1025 bytes outside 0..1024: ERR_NON_CANONICAL_CBOR: ERR_EXTENSION_DATA_INVALID",
"locator: datekeys.capsule: key 1: codec: offset 2: a byte string where a text string was expected: ERR_NON_CANONICAL_CBOR: ERR_EXTENSION_DATA_INVALID",
"locator: the locator is an age header without a body: ERR_EXTENSION_DATA_INVALID",
"locator: the locator is sealed for the chain 0000000000000000000000000000000000000000000000000000000000000000, not for the one of the profile datekeys:quicknet:v1 of its DateKey: ERR_EXTENSION_DATA_INVALID",
"locator: datekeys.capsule: key 2: codec: offset 99: truncated input: a byte string of 4451 bytes: ERR_NON_CANONICAL_CBOR: ERR_EXTENSION_DATA_INVALID",
"locator: the tlock stanza of the locator has no chain hash in lower-case hexadecimal: ERR_EXTENSION_DATA_INVALID",
"locator: datekeys.capsule: key 1: codec: offset 12: truncated input: a text string of 83 bytes: ERR_NON_CANONICAL_CBOR: ERR_EXTENSION_DATA_INVALID",
"locator: datekeys.capsule: key 0: codec: offset 2: a negative integer (initial byte 0x26) is outside the CBOR profile: ERR_NON_CANONICAL_CBOR: ERR_EXTENSION_DATA_INVALID",
"locator: datekeys.capsule: key 2: codec: offset 96: an unsigned integer where a byte string was expected: ERR_NON_CANONICAL_CBOR: ERR_EXTENSION_DATA_INVALID",
@ -410,7 +414,7 @@ const locatorVectorsJson = r'''
[1,[[2182,0,"1448"]],73,null],
[2,[[452,0,"28fa"]],18,null],
[2,[[404,3,""]],76,null],
[2,[[294,1,"42"]],0,[[["http://ejemplo.org/a",7,"",false],["https://[64:ff9b::7f00:1]/b",0,"",false],["https://ejemplo.org/c",9007199254740991,"ejemplo.org",true],["ipfs://bafybeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqabf3oclgtqy55fbzdia",1,"bafybeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqabf3oclgtqy55fbzdia",true]],"d23d7ba6d0f4956cea30c7ed4437a55c052e3fbe4d7c8fc77290eae4f877eac7","7d79f84b557ede09af7cebbc08ddd80fdd6fdb89675d0e0b88415be78ae8e049","dcc94474a1ac6e0ced926a423d3f091fd4d67b5e5a6125a696edcf17d454a0f8",809,"e1e2351f2b6a92105e27f1c98396daf42a393d618f9daf18d4fdd5ab4a069b74"]],
[2,[[294,1,"42"]],0,[[["http://ejemplo.org/a",7,"",false],["https://[64:ff9b::7f00:1]/b",0,"",false],["https://ejemplo.org/c",9007199254740991,"ejemplo.org",true],["ipfs://bafybeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqabf3oclgtqy55fbzdia",1,"",false]],"d23d7ba6d0f4956cea30c7ed4437a55c052e3fbe4d7c8fc77290eae4f877eac7","7d79f84b557ede09af7cebbc08ddd80fdd6fdb89675d0e0b88415be78ae8e049","dcc94474a1ac6e0ced926a423d3f091fd4d67b5e5a6125a696edcf17d454a0f8",809,"e1e2351f2b6a92105e27f1c98396daf42a393d618f9daf18d4fdd5ab4a069b74"]],
[2,[[59,0,"80099d"]],79,null],
[0,[[82,1,"6a"]],0,[[["https://ejemplo.org/foto.jpg",3000,"ejemplo.org",true],["ipfs://bafybeigdyrzt5sfp7udm7hu76uh7y26jf3efuylqabf3oclgtqy55fbzdi",0,"bafybeigdyrzt5sfp7udm7hu76uh7y26jf3efuylqabf3oclgtqy55fbzdi",true]],"d23d7ba6d0f4956cea30c7ed4437a55c052e3fbe4d7c8fc77290eae4f877eac7","773656573906057e9a0062fe979bdcd837ea58ac565d3e748cc3635ef9765e49","dcc94474a1ac6e0ced926a423d3f091fd4d67b5e5a6125a696edcf17d454a0f8",809,"e1e2351f2b6a92105e27f1c98396daf42a393d618f9daf18d4fdd5ab4a069b74"]],
[0,[[337,1,"7e"]],0,[[["https://ejemplo.org/foto.jpg",3000,"ejemplo.org",true],["ipfs://bafybeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqabf3oclgtqy55fbzdi",0,"bafybeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqabf3oclgtqy55fbzdi",true]],"d23d7ba6d0f4956cea30c7ed4437a55c052e3fbe4d7c8fc77290eae4f877eac7","773656573906057e9a0062fe979bdcd837ea58ac565d3e748cc3635ef9765e49","dcc94474a1ac6e0ced926a423d3f091fd4d67b7e5a6125a696edcf17d454a0f8",809,"e1e2351f2b6a92105e27f1c98396daf42a393d618f9daf18d4fdd5ab4a069b74"]],
@ -421,31 +425,31 @@ const locatorVectorsJson = r'''
[2,[[1251,1,"80"]],18,null],
[1,[[3671,425,""]],88,null],
[0,[[238,1,"69"]],0,[[["https://ejemplo.org/foto.jpg",3000,"ejemplo.org",true],["ipfs://bafybeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqabf3oclgtqy55fbzdi",0,"bafybeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqabf3oclgtqy55fbzdi",true]],"d23d7ba6d0f4956cea30c7ed4437a55c052e3fbe4d7c8fc77290eae4f877eac7","e75ba3d623878e7cf1c98919e397ec83651e5961603c4ade361f6c8860f43735","dcc94474a1ac6e0ced926a423d3f091fd4d67b5e5a6125a696edcf17d454a0f8",809,"e1e2351f2b6a92105e27f1c98396daf42a393d618f9daf18d4fdd5ab4a069b74"]],
[2,[[291,1,"b1"]],0,[[["http://ejemplo.org/a",7,"",false],["https://[64:ff9b::7f00:1]/b",0,"",false],["https://ejemplo.org/c",9007199254740991,"ejemplo.org",true],["ipfs://bafybeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqabf3oclgtqy55fbzdia",1,"bafybeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqabf3oclgtqy55fbzdia",true]],"d23d7ba6d0f4956cea30c7ed4437a55c052e3fbe4d7c8fc77290eae4f877eac7","112b909835938bd2a404286ca105ab9ce1267ff04bc987b43445da596e401aeb","dcc94474a1ac6e0ced926a423d3f091fd4d67b5e5a6125a696edcf17d454a0f8",809,"e1e2351f2b6a92105e27f1c98396daf42a393d618f9daf18d4fdd5ab4a069b74"]],
[2,[[291,1,"b1"]],0,[[["http://ejemplo.org/a",7,"",false],["https://[64:ff9b::7f00:1]/b",0,"",false],["https://ejemplo.org/c",9007199254740991,"ejemplo.org",true],["ipfs://bafybeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqabf3oclgtqy55fbzdia",1,"",false]],"d23d7ba6d0f4956cea30c7ed4437a55c052e3fbe4d7c8fc77290eae4f877eac7","112b909835938bd2a404286ca105ab9ce1267ff04bc987b43445da596e401aeb","dcc94474a1ac6e0ced926a423d3f091fd4d67b5e5a6125a696edcf17d454a0f8",809,"e1e2351f2b6a92105e27f1c98396daf42a393d618f9daf18d4fdd5ab4a069b74"]],
[1,[[175,0,"288b37bb"]],31,null],
[0,[[375,1,"25"]],0,[[["https://ejemplo.org/foto.jpg",3000,"ejemplo.org",true],["ipfs://bafybeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqabf3oclgtqy55fbzdi",0,"bafybeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqabf3oclgtqy55fbzdi",true]],"d23d7ba6d0f4956cea30c7ed4437a55c052e3fbe4d7c8fc77290eae4f877eac7","773656573906057e9a0062fe979bdcd837ea58ac565d3e748cc3635ef9765e49","dcc94474a1ac6e0ced926a423d3f091fd4d67b5e5a6125a696edcf17d454a0f8",809,"e1e2351f2b6a92105e27f1c98396daf42a3925618f9daf18d4fdd5ab4a069b74"]],
[0,[[118,1,"97"]],0,[[["https://ejemplo.org/foto.jpg",3000,"ejemplo.org",true],["ipfs://bafybeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqabf3oclgtqy55fbzdi",0,"bafybeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqabf3oclgtqy55fbzdi",true]],"d23d7ba6d0f4976cea30c7ed4437a55c052e3fbe4d7c8fc77290eae4f877eac7","773656573906057e9a0062fe979bdcd837ea58ac565d3e748cc3635ef9765e49","dcc94474a1ac6e0ced926a423d3f091fd4d67b5e5a6125a696edcf17d454a0f8",809,"e1e2351f2b6a92105e27f1c98396daf42a393d618f9daf18d4fdd5ab4a069b74"]],
[2,[[307,0,"55c8ff69"]],69,null],
[0,[[99,2,""]],96,null],
[0,[[204,0,"83ece920"]],93,null],
[2,[[436,1,"2f"]],0,[[["http://ejemplo.org/a",7,"",false],["https://[64:ff9b::7f00:1]/b",0,"",false],["https://ejemplo.org/c",9007199254740991,"ejemplo.org",true],["ipfs://bafybeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqabf3oclgtqy55fbzdia",1,"bafybeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqabf3oclgtqy55fbzdia",true]],"d23d7ba6d0f4956cea30c7ed4437a55c052e3fbe4d7c8fc77290eae4f877eac7","773656573906057e9a0062fe979bdcd837ea58ac565d3e748cc3635ef9765e49","dcc94474a1ac6e0ced926a423d3f091fd4d67b5e5a6125a696edcf17d454a0f8",809,"e1e2351f2b6a92105e27f1c98396daf42a393d618f9d2f18d4fdd5ab4a069b74"]],
[2,[[436,1,"2f"]],0,[[["http://ejemplo.org/a",7,"",false],["https://[64:ff9b::7f00:1]/b",0,"",false],["https://ejemplo.org/c",9007199254740991,"ejemplo.org",true],["ipfs://bafybeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqabf3oclgtqy55fbzdia",1,"",false]],"d23d7ba6d0f4956cea30c7ed4437a55c052e3fbe4d7c8fc77290eae4f877eac7","773656573906057e9a0062fe979bdcd837ea58ac565d3e748cc3635ef9765e49","dcc94474a1ac6e0ced926a423d3f091fd4d67b5e5a6125a696edcf17d454a0f8",809,"e1e2351f2b6a92105e27f1c98396daf42a393d618f9d2f18d4fdd5ab4a069b74"]],
[1,[[2388,1,"71"]],0,[[[["https://ejemplo0.org/","x",400,""],0,"ejemplo0.org",true],[["https://ejemplo1.org/","x",401,""],1000,"ejemplo1.org",true],[["https://ejemplo2.org/","x",402,""],2000,"ejemplo2.org",true],[["https://ejemplo3.org/","x",403,""],3000,"ejemplo3.org",true],[["https://ejemplo4.org/","x",404,""],4000,"ejemplo4.org",true],[["https://ejemplo5.org/","x",203,"qxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"],5000,"ejemplo5.org",true],[["https://ejemplo6.org/","x",406,""],6000,"ejemplo6.org",true],[["https://ejemplo7.org/","x",407,""],7000,"ejemplo7.org",true]],"d23d7ba6d0f4956cea30c7ed4437a55c052e3fbe4d7c8fc77290eae4f877eac7","773656573906057e9a0062fe979bdcd837ea58ac565d3e748cc3635ef9765e49","dcc94474a1ac6e0ced926a423d3f091fd4d67b5e5a6125a696edcf17d454a0f8",809,"e1e2351f2b6a92105e27f1c98396daf42a393d618f9daf18d4fdd5ab4a069b74"]],
[2,[[72,1,"64"]],0,[[["http://ejemplo.org/a",7,"",false],["https://[64:ff9b::7f00:1]/b",0,"",false],["https://ejdmplo.org/c",9007199254740991,"ejdmplo.org",true],["ipfs://bafybeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqabf3oclgtqy55fbzdia",1,"bafybeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqabf3oclgtqy55fbzdia",true]],"d23d7ba6d0f4956cea30c7ed4437a55c052e3fbe4d7c8fc77290eae4f877eac7","773656573906057e9a0062fe979bdcd837ea58ac565d3e748cc3635ef9765e49","dcc94474a1ac6e0ced926a423d3f091fd4d67b5e5a6125a696edcf17d454a0f8",809,"e1e2351f2b6a92105e27f1c98396daf42a393d618f9daf18d4fdd5ab4a069b74"]],
[2,[[72,1,"64"]],0,[[["http://ejemplo.org/a",7,"",false],["https://[64:ff9b::7f00:1]/b",0,"",false],["https://ejdmplo.org/c",9007199254740991,"ejdmplo.org",true],["ipfs://bafybeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqabf3oclgtqy55fbzdia",1,"",false]],"d23d7ba6d0f4956cea30c7ed4437a55c052e3fbe4d7c8fc77290eae4f877eac7","773656573906057e9a0062fe979bdcd837ea58ac565d3e748cc3635ef9765e49","dcc94474a1ac6e0ced926a423d3f091fd4d67b5e5a6125a696edcf17d454a0f8",809,"e1e2351f2b6a92105e27f1c98396daf42a393d618f9daf18d4fdd5ab4a069b74"]],
[1,[[112,1,"ca"]],31,null],
[1,[[854,2,""]],100,null],
[2,[[431,1,"31"]],0,[[["http://ejemplo.org/a",7,"",false],["https://[64:ff9b::7f00:1]/b",0,"",false],["https://ejemplo.org/c",9007199254740991,"ejemplo.org",true],["ipfs://bafybeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqabf3oclgtqy55fbzdia",1,"bafybeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqabf3oclgtqy55fbzdia",true]],"d23d7ba6d0f4956cea30c7ed4437a55c052e3fbe4d7c8fc77290eae4f877eac7","773656573906057e9a0062fe979bdcd837ea58ac565d3e748cc3635ef9765e49","dcc94474a1ac6e0ced926a423d3f091fd4d67b5e5a6125a696edcf17d454a0f8",809,"e1e2351f2b6a92105e27f1c98396daf42a313d618f9daf18d4fdd5ab4a069b74"]],
[2,[[431,1,"31"]],0,[[["http://ejemplo.org/a",7,"",false],["https://[64:ff9b::7f00:1]/b",0,"",false],["https://ejemplo.org/c",9007199254740991,"ejemplo.org",true],["ipfs://bafybeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqabf3oclgtqy55fbzdia",1,"",false]],"d23d7ba6d0f4956cea30c7ed4437a55c052e3fbe4d7c8fc77290eae4f877eac7","773656573906057e9a0062fe979bdcd837ea58ac565d3e748cc3635ef9765e49","dcc94474a1ac6e0ced926a423d3f091fd4d67b5e5a6125a696edcf17d454a0f8",809,"e1e2351f2b6a92105e27f1c98396daf42a313d618f9daf18d4fdd5ab4a069b74"]],
[1,[[2721,1375,""]],81,null],
[1,[[2152,3,""]],101,null],
[2,[[394,1,"5c"]],0,[[["http://ejemplo.org/a",7,"",false],["https://[64:ff9b::7f00:1]/b",0,"",false],["https://ejemplo.org/c",9007199254740991,"ejemplo.org",true],["ipfs://bafybeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqabf3oclgtqy55fbzdia",1,"bafybeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqabf3oclgtqy55fbzdia",true]],"d23d7ba6d0f4956cea30c7ed4437a55c052e3fbe4d7c8fc77290eae4f877eac7","773656573906057e9a0062fe979bdcd837ea58ac565d3e748cc3635ef9765e49","dcc94474a1ac6e0ced926a423d3f091fd4d67b5c5a6125a696edcf17d454a0f8",809,"e1e2351f2b6a92105e27f1c98396daf42a393d618f9daf18d4fdd5ab4a069b74"]],
[2,[[394,1,"5c"]],0,[[["http://ejemplo.org/a",7,"",false],["https://[64:ff9b::7f00:1]/b",0,"",false],["https://ejemplo.org/c",9007199254740991,"ejemplo.org",true],["ipfs://bafybeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqabf3oclgtqy55fbzdia",1,"",false]],"d23d7ba6d0f4956cea30c7ed4437a55c052e3fbe4d7c8fc77290eae4f877eac7","773656573906057e9a0062fe979bdcd837ea58ac565d3e748cc3635ef9765e49","dcc94474a1ac6e0ced926a423d3f091fd4d67b5c5a6125a696edcf17d454a0f8",809,"e1e2351f2b6a92105e27f1c98396daf42a393d618f9daf18d4fdd5ab4a069b74"]],
[1,[[2847,0,"7f97aaac"]],102,null],
[0,[[360,3736,""]],104,null],
[2,[[11,1,"3f"]],0,[[["http:?/ejemplo.org/a",7,"",false],["https://[64:ff9b::7f00:1]/b",0,"",false],["https://ejemplo.org/c",9007199254740991,"ejemplo.org",true],["ipfs://bafybeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqabf3oclgtqy55fbzdia",1,"bafybeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqabf3oclgtqy55fbzdia",true]],"d23d7ba6d0f4956cea30c7ed4437a55c052e3fbe4d7c8fc77290eae4f877eac7","773656573906057e9a0062fe979bdcd837ea58ac565d3e748cc3635ef9765e49","dcc94474a1ac6e0ced926a423d3f091fd4d67b5e5a6125a696edcf17d454a0f8",809,"e1e2351f2b6a92105e27f1c98396daf42a393d618f9daf18d4fdd5ab4a069b74"]],
[2,[[11,1,"3f"]],0,[[["http:?/ejemplo.org/a",7,"",false],["https://[64:ff9b::7f00:1]/b",0,"",false],["https://ejemplo.org/c",9007199254740991,"ejemplo.org",true],["ipfs://bafybeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqabf3oclgtqy55fbzdia",1,"",false]],"d23d7ba6d0f4956cea30c7ed4437a55c052e3fbe4d7c8fc77290eae4f877eac7","773656573906057e9a0062fe979bdcd837ea58ac565d3e748cc3635ef9765e49","dcc94474a1ac6e0ced926a423d3f091fd4d67b5e5a6125a696edcf17d454a0f8",809,"e1e2351f2b6a92105e27f1c98396daf42a393d618f9daf18d4fdd5ab4a069b74"]],
[1,[[1465,1,"f8"]],65,null],
[0,[[159,3937,""]],60,null],
[1,[[3908,1,"10"]],18,null],
[2,[[362,0,"30"]],106,null],
[2,[[1105,1,"20"]],18,null],
[2,[[416,1,"95"]],0,[[["http://ejemplo.org/a",7,"",false],["https://[64:ff9b::7f00:1]/b",0,"",false],["https://ejemplo.org/c",9007199254740991,"ejemplo.org",true],["ipfs://bafybeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqabf3oclgtqy55fbzdia",1,"bafybeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqabf3oclgtqy55fbzdia",true]],"d23d7ba6d0f4956cea30c7ed4437a55c052e3fbe4d7c8fc77290eae4f877eac7","773656573906057e9a0062fe979bdcd837ea58ac565d3e748cc3635ef9765e49","dcc94474a1ac6e0ced926a423d3f091fd4d67b5e5a6125a696edcf17d454a0f8",809,"e1e2951f2b6a92105e27f1c98396daf42a393d618f9daf18d4fdd5ab4a069b74"]],
[2,[[416,1,"95"]],0,[[["http://ejemplo.org/a",7,"",false],["https://[64:ff9b::7f00:1]/b",0,"",false],["https://ejemplo.org/c",9007199254740991,"ejemplo.org",true],["ipfs://bafybeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqabf3oclgtqy55fbzdia",1,"",false]],"d23d7ba6d0f4956cea30c7ed4437a55c052e3fbe4d7c8fc77290eae4f877eac7","773656573906057e9a0062fe979bdcd837ea58ac565d3e748cc3635ef9765e49","dcc94474a1ac6e0ced926a423d3f091fd4d67b5e5a6125a696edcf17d454a0f8",809,"e1e2951f2b6a92105e27f1c98396daf42a393d618f9daf18d4fdd5ab4a069b74"]],
[1,[[203,1,"79"]],0,[[[["https://ejemplo0.org/","x",174,"yxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"],0,"ejemplo0.org",true],[["https://ejemplo1.org/","x",401,""],1000,"ejemplo1.org",true],[["https://ejemplo2.org/","x",402,""],2000,"ejemplo2.org",true],[["https://ejemplo3.org/","x",403,""],3000,"ejemplo3.org",true],[["https://ejemplo4.org/","x",404,""],4000,"ejemplo4.org",true],[["https://ejemplo5.org/","x",405,""],5000,"ejemplo5.org",true],[["https://ejemplo6.org/","x",406,""],6000,"ejemplo6.org",true],[["https://ejemplo7.org/","x",407,""],7000,"ejemplo7.org",true]],"d23d7ba6d0f4956cea30c7ed4437a55c052e3fbe4d7c8fc77290eae4f877eac7","773656573906057e9a0062fe979bdcd837ea58ac565d3e748cc3635ef9765e49","dcc94474a1ac6e0ced926a423d3f091fd4d67b5e5a6125a696edcf17d454a0f8",809,"e1e2351f2b6a92105e27f1c98396daf42a393d618f9daf18d4fdd5ab4a069b74"]],
[2,[[2355,0,"666906c4"]],18,null],
[2,[[3117,1,"80"]],18,null],
@ -454,10 +458,10 @@ const locatorVectorsJson = r'''
[0,[[300,3,""]],115,null],
[1,[[3460,3,""]],82,null],
[1,[[2927,1,"f8"]],102,null],
[2,[[425,1,"d9"]],0,[[["http://ejemplo.org/a",7,"",false],["https://[64:ff9b::7f00:1]/b",0,"",false],["https://ejemplo.org/c",9007199254740991,"ejemplo.org",true],["ipfs://bafybeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqabf3oclgtqy55fbzdia",1,"bafybeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqabf3oclgtqy55fbzdia",true]],"d23d7ba6d0f4956cea30c7ed4437a55c052e3fbe4d7c8fc77290eae4f877eac7","773656573906057e9a0062fe979bdcd837ea58ac565d3e748cc3635ef9765e49","dcc94474a1ac6e0ced926a423d3f091fd4d67b5e5a6125a696edcf17d454a0f8",809,"e1e2351f2b6a92105e27f1d98396daf42a393d618f9daf18d4fdd5ab4a069b74"]],
[2,[[425,1,"d9"]],0,[[["http://ejemplo.org/a",7,"",false],["https://[64:ff9b::7f00:1]/b",0,"",false],["https://ejemplo.org/c",9007199254740991,"ejemplo.org",true],["ipfs://bafybeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqabf3oclgtqy55fbzdia",1,"",false]],"d23d7ba6d0f4956cea30c7ed4437a55c052e3fbe4d7c8fc77290eae4f877eac7","773656573906057e9a0062fe979bdcd837ea58ac565d3e748cc3635ef9765e49","dcc94474a1ac6e0ced926a423d3f091fd4d67b5e5a6125a696edcf17d454a0f8",809,"e1e2351f2b6a92105e27f1d98396daf42a393d618f9daf18d4fdd5ab4a069b74"]],
[0,[[365,3731,""]],104,null],
[1,[[519,1,"7c"]],0,[[[["https://ejemplo0.org/","x",400,""],0,"ejemplo0.org",true],[["https://ejemplo1.org/","x",64,"|xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"],1000,"",false],[["https://ejemplo2.org/","x",402,""],2000,"ejemplo2.org",true],[["https://ejemplo3.org/","x",403,""],3000,"ejemplo3.org",true],[["https://ejemplo4.org/","x",404,""],4000,"ejemplo4.org",true],[["https://ejemplo5.org/","x",405,""],5000,"ejemplo5.org",true],[["https://ejemplo6.org/","x",406,""],6000,"ejemplo6.org",true],[["https://ejemplo7.org/","x",407,""],7000,"ejemplo7.org",true]],"d23d7ba6d0f4956cea30c7ed4437a55c052e3fbe4d7c8fc77290eae4f877eac7","773656573906057e9a0062fe979bdcd837ea58ac565d3e748cc3635ef9765e49","dcc94474a1ac6e0ced926a423d3f091fd4d67b5e5a6125a696edcf17d454a0f8",809,"e1e2351f2b6a92105e27f1c98396daf42a393d618f9daf18d4fdd5ab4a069b74"]],
[2,[[108,1,"66"]],0,[[["http://ejemplo.org/a",7,"",false],["https://[64:ff9b::7f00:1]/b",0,"",false],["https://ejemplo.org/c",9007199254740991,"ejemplo.org",true],["ipfs://bafyfeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqabf3oclgtqy55fbzdia",1,"bafyfeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqabf3oclgtqy55fbzdia",true]],"d23d7ba6d0f4956cea30c7ed4437a55c052e3fbe4d7c8fc77290eae4f877eac7","773656573906057e9a0062fe979bdcd837ea58ac565d3e748cc3635ef9765e49","dcc94474a1ac6e0ced926a423d3f091fd4d67b5e5a6125a696edcf17d454a0f8",809,"e1e2351f2b6a92105e27f1c98396daf42a393d618f9daf18d4fdd5ab4a069b74"]],
[2,[[108,1,"66"]],0,[[["http://ejemplo.org/a",7,"",false],["https://[64:ff9b::7f00:1]/b",0,"",false],["https://ejemplo.org/c",9007199254740991,"ejemplo.org",true],["ipfs://bafyfeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqabf3oclgtqy55fbzdia",1,"",false]],"d23d7ba6d0f4956cea30c7ed4437a55c052e3fbe4d7c8fc77290eae4f877eac7","773656573906057e9a0062fe979bdcd837ea58ac565d3e748cc3635ef9765e49","dcc94474a1ac6e0ced926a423d3f091fd4d67b5e5a6125a696edcf17d454a0f8",809,"e1e2351f2b6a92105e27f1c98396daf42a393d618f9daf18d4fdd5ab4a069b74"]],
[0,[[178,1,"21"]],0,[[["https://ejemplo.org/foto.jpg",3000,"ejemplo.org",true],["ipfs://bafybeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqabf3oclgtqy55fbzdi",0,"bafybeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqabf3oclgtqy55fbzdi",true]],"d23d7ba6d0f4956cea30c7ed4437a55c052e3fbe4d7c8fc77290eae4f877eac7","28157b09d1c8526bcd0a8b62af976d71b11c5f9e692408dfbb7916edca16e66f","dcc94474a1ac6e0ced926a423d3f091fd4d67b5e5a6125a696edcf17d454a0f8",809,"e1e2351f2b6a92105e27f1c98396daf42a393d618f9daf18d4fdd5ab4a069b74"]],
[1,[[178,0,"a7"]],31,null],
[2,[[225,3871,""]],64,null],
@ -476,7 +480,7 @@ const locatorVectorsJson = r'''
[1,[[638,1,"4a"]],0,[[[["https://ejemplo0.org/","x",400,""],0,"ejemplo0.org",true],[["https://ejemplo1.org/","x",183,"Jxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"],1000,"ejemplo1.org",true],[["https://ejemplo2.org/","x",402,""],2000,"ejemplo2.org",true],[["https://ejemplo3.org/","x",403,""],3000,"ejemplo3.org",true],[["https://ejemplo4.org/","x",404,""],4000,"ejemplo4.org",true],[["https://ejemplo5.org/","x",405,""],5000,"ejemplo5.org",true],[["https://ejemplo6.org/","x",406,""],6000,"ejemplo6.org",true],[["https://ejemplo7.org/","x",407,""],7000,"ejemplo7.org",true]],"d23d7ba6d0f4956cea30c7ed4437a55c052e3fbe4d7c8fc77290eae4f877eac7","773656573906057e9a0062fe979bdcd837ea58ac565d3e748cc3635ef9765e49","dcc94474a1ac6e0ced926a423d3f091fd4d67b5e5a6125a696edcf17d454a0f8",809,"e1e2351f2b6a92105e27f1c98396daf42a393d618f9daf18d4fdd5ab4a069b74"]],
[1,[[2151,4,""]],125,null],
[1,[[3503,1,"09"]],126,null],
[2,[[316,1,"70"]],0,[[["http://ejemplo.org/a",7,"",false],["https://[64:ff9b::7f00:1]/b",0,"",false],["https://ejemplo.org/c",9007199254740991,"ejemplo.org",true],["ipfs://bafybeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqabf3oclgtqy55fbzdia",1,"bafybeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqabf3oclgtqy55fbzdia",true]],"d23d7ba6d0f4956cea30c7ed4437a55c052e3fbe4d7c8fc77290eae4f877eac7","8e3cd735cc11cf256dacdc68f2ebfcde48c5ba70d1f5438d13219ea636816960","dcc94474a1ac6e0ced926a423d3f091fd4d67b5e5a6125a696edcf17d454a0f8",809,"e1e2351f2b6a92105e27f1c98396daf42a393d618f9daf18d4fdd5ab4a069b74"]],
[2,[[316,1,"70"]],0,[[["http://ejemplo.org/a",7,"",false],["https://[64:ff9b::7f00:1]/b",0,"",false],["https://ejemplo.org/c",9007199254740991,"ejemplo.org",true],["ipfs://bafybeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqabf3oclgtqy55fbzdia",1,"",false]],"d23d7ba6d0f4956cea30c7ed4437a55c052e3fbe4d7c8fc77290eae4f877eac7","8e3cd735cc11cf256dacdc68f2ebfcde48c5ba70d1f5438d13219ea636816960","dcc94474a1ac6e0ced926a423d3f091fd4d67b5e5a6125a696edcf17d454a0f8",809,"e1e2351f2b6a92105e27f1c98396daf42a393d618f9daf18d4fdd5ab4a069b74"]],
[1,[[3023,3,""]],127,null],
[1,[[1788,1,"e3"]],125,null],
[0,[[362,1,"68"]],0,[[["https://ejemplo.org/foto.jpg",3000,"ejemplo.org",true],["ipfs://bafybeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqabf3oclgtqy55fbzdi",0,"bafybeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqabf3oclgtqy55fbzdi",true]],"d23d7ba6d0f4956cea30c7ed4437a55c052e3fbe4d7c8fc77290eae4f877eac7","773656573906057e9a0062fe979bdcd837ea58ac565d3e748cc3635ef9765e49","dcc94474a1ac6e0ced926a423d3f091fd4d67b5e5a6125a696edcf17d454a0f8",809,"e1e2351f2b6892105e27f1c98396daf42a393d618f9daf18d4fdd5ab4a069b74"]],
@ -484,23 +488,23 @@ const locatorVectorsJson = r'''
[1,[[798,3298,""]],130,null],
[1,[[3243,0,"b0bc"]],132,null],
[0,[[226,3,""]],115,null],
[2,[[382,1,"8e"]],0,[[["http://ejemplo.org/a",7,"",false],["https://[64:ff9b::7f00:1]/b",0,"",false],["https://ejemplo.org/c",9007199254740991,"ejemplo.org",true],["ipfs://bafybeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqabf3oclgtqy55fbzdia",1,"bafybeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqabf3oclgtqy55fbzdia",true]],"d23d7ba6d0f4956cea30c7ed4437a55c052e3fbe4d7c8fc77290eae4f877eac7","773656573906057e9a0062fe979bdcd837ea58ac565d3e748cc3635ef9765e49","dcc94474a1ac6e8eed926a423d3f091fd4d67b5e5a6125a696edcf17d454a0f8",809,"e1e2351f2b6a92105e27f1c98396daf42a393d618f9daf18d4fdd5ab4a069b74"]],
[2,[[382,1,"8e"]],0,[[["http://ejemplo.org/a",7,"",false],["https://[64:ff9b::7f00:1]/b",0,"",false],["https://ejemplo.org/c",9007199254740991,"ejemplo.org",true],["ipfs://bafybeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqabf3oclgtqy55fbzdia",1,"",false]],"d23d7ba6d0f4956cea30c7ed4437a55c052e3fbe4d7c8fc77290eae4f877eac7","773656573906057e9a0062fe979bdcd837ea58ac565d3e748cc3635ef9765e49","dcc94474a1ac6e8eed926a423d3f091fd4d67b5e5a6125a696edcf17d454a0f8",809,"e1e2351f2b6a92105e27f1c98396daf42a393d618f9daf18d4fdd5ab4a069b74"]],
[2,[[268,0,"4d"]],106,null],
[2,[[208,1,"67"]],0,[[["http://ejemplo.org/a",7,"",false],["https://[64:ff9b::7f00:1]/b",0,"",false],["https://ejemplo.org/c",9007199254740991,"ejemplo.org",true],["ipfs://bafybeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqabf3oclgtqy55fbzdia",1,"bafybeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqabf3oclgtqy55fbzdia",true]],"d23d7ba6d0f4956cea30c7ed4437a55c052e3fbe4d7c8fc77290eae4f877eac7","18f421ae02be52154a2090c0338dd6d6611b781d323d4ebf2d6dfbbed866bedd","dcc94474a1ac6e0ced926a423d3f091fd4d67b5e5a6125a696edcf17d454a0f8",809,"e1e2351f2b6a92105e27f1c98396daf42a393d618f9daf18d4fdd5ab4a069b74"]],
[2,[[208,1,"67"]],0,[[["http://ejemplo.org/a",7,"",false],["https://[64:ff9b::7f00:1]/b",0,"",false],["https://ejemplo.org/c",9007199254740991,"ejemplo.org",true],["ipfs://bafybeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqabf3oclgtqy55fbzdia",1,"",false]],"d23d7ba6d0f4956cea30c7ed4437a55c052e3fbe4d7c8fc77290eae4f877eac7","18f421ae02be52154a2090c0338dd6d6611b781d323d4ebf2d6dfbbed866bedd","dcc94474a1ac6e0ced926a423d3f091fd4d67b5e5a6125a696edcf17d454a0f8",809,"e1e2351f2b6a92105e27f1c98396daf42a393d618f9daf18d4fdd5ab4a069b74"]],
[1,[[2793,0,"48"]],136,null],
[2,[[187,1,"1f"]],0,[[["http://ejemplo.org/a",7,"",false],["https://[64:ff9b::7f00:1]/b",0,"",false],["https://ejemplo.org/c",9007199254740991,"ejemplo.org",true],["ipfs://bafybeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqabf3oclgtqy55fbzdia",1,"bafybeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqabf3oclgtqy55fbzdia",true]],"d23d7ba6d0f4956cea30c7ed4437a55c052e1fbe4d7c8fc77290eae4f877eac7","773656573906057e9a0062fe979bdcd837ea58ac565d3e748cc3635ef9765e49","dcc94474a1ac6e0ced926a423d3f091fd4d67b5e5a6125a696edcf17d454a0f8",809,"e1e2351f2b6a92105e27f1c98396daf42a393d618f9daf18d4fdd5ab4a069b74"]],
[2,[[187,1,"1f"]],0,[[["http://ejemplo.org/a",7,"",false],["https://[64:ff9b::7f00:1]/b",0,"",false],["https://ejemplo.org/c",9007199254740991,"ejemplo.org",true],["ipfs://bafybeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqabf3oclgtqy55fbzdia",1,"",false]],"d23d7ba6d0f4956cea30c7ed4437a55c052e1fbe4d7c8fc77290eae4f877eac7","773656573906057e9a0062fe979bdcd837ea58ac565d3e748cc3635ef9765e49","dcc94474a1ac6e0ced926a423d3f091fd4d67b5e5a6125a696edcf17d454a0f8",809,"e1e2351f2b6a92105e27f1c98396daf42a393d618f9daf18d4fdd5ab4a069b74"]],
[0,[[4092,4,""]],19,null],
[0,[[396,1,"10"]],18,null],
[1,[[2457,1,"70"]],0,[[[["https://ejemplo0.org/","x",400,""],0,"ejemplo0.org",true],[["https://ejemplo1.org/","x",401,""],1000,"ejemplo1.org",true],[["https://ejemplo2.org/","x",402,""],2000,"ejemplo2.org",true],[["https://ejemplo3.org/","x",403,""],3000,"ejemplo3.org",true],[["https://ejemplo4.org/","x",404,""],4000,"ejemplo4.org",true],[["https://ejemplo5.org/","x",272,"pxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"],5000,"ejemplo5.org",true],[["https://ejemplo6.org/","x",406,""],6000,"ejemplo6.org",true],[["https://ejemplo7.org/","x",407,""],7000,"ejemplo7.org",true]],"d23d7ba6d0f4956cea30c7ed4437a55c052e3fbe4d7c8fc77290eae4f877eac7","773656573906057e9a0062fe979bdcd837ea58ac565d3e748cc3635ef9765e49","dcc94474a1ac6e0ced926a423d3f091fd4d67b5e5a6125a696edcf17d454a0f8",809,"e1e2351f2b6a92105e27f1c98396daf42a393d618f9daf18d4fdd5ab4a069b74"]],
[2,[[392,1,"d4"]],0,[[["http://ejemplo.org/a",7,"",false],["https://[64:ff9b::7f00:1]/b",0,"",false],["https://ejemplo.org/c",9007199254740991,"ejemplo.org",true],["ipfs://bafybeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqabf3oclgtqy55fbzdia",1,"bafybeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqabf3oclgtqy55fbzdia",true]],"d23d7ba6d0f4956cea30c7ed4437a55c052e3fbe4d7c8fc77290eae4f877eac7","773656573906057e9a0062fe979bdcd837ea58ac565d3e748cc3635ef9765e49","dcc94474a1ac6e0ced926a423d3f091fd4d47b5e5a6125a696edcf17d454a0f8",809,"e1e2351f2b6a92105e27f1c98396daf42a393d618f9daf18d4fdd5ab4a069b74"]],
[2,[[392,1,"d4"]],0,[[["http://ejemplo.org/a",7,"",false],["https://[64:ff9b::7f00:1]/b",0,"",false],["https://ejemplo.org/c",9007199254740991,"ejemplo.org",true],["ipfs://bafybeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqabf3oclgtqy55fbzdia",1,"",false]],"d23d7ba6d0f4956cea30c7ed4437a55c052e3fbe4d7c8fc77290eae4f877eac7","773656573906057e9a0062fe979bdcd837ea58ac565d3e748cc3635ef9765e49","dcc94474a1ac6e0ced926a423d3f091fd4d47b5e5a6125a696edcf17d454a0f8",809,"e1e2351f2b6a92105e27f1c98396daf42a393d618f9daf18d4fdd5ab4a069b74"]],
[1,[[2166,4,""]],99,null],
[1,[[2894,1,"17"]],0,[[[["https://ejemplo0.org/","x",400,""],0,"ejemplo0.org",true],[["https://ejemplo1.org/","x",401,""],1000,"ejemplo1.org",true],[["https://ejemplo2.org/","x",402,""],2000,"ejemplo2.org",true],[["https://ejemplo3.org/","x",403,""],3000,"ejemplo3.org",true],[["https://ejemplo4.org/","x",404,""],4000,"ejemplo4.org",true],[["https://ejemplo5.org/","x",405,""],5000,"ejemplo5.org",true],[["https://ejemplo6.org/","x",274,"\u0017xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"],6000,"",false],[["https://ejemplo7.org/","x",407,""],7000,"ejemplo7.org",true]],"d23d7ba6d0f4956cea30c7ed4437a55c052e3fbe4d7c8fc77290eae4f877eac7","773656573906057e9a0062fe979bdcd837ea58ac565d3e748cc3635ef9765e49","dcc94474a1ac6e0ced926a423d3f091fd4d67b5e5a6125a696edcf17d454a0f8",809,"e1e2351f2b6a92105e27f1c98396daf42a393d618f9daf18d4fdd5ab4a069b74"]],
[1,[[600,0,"86e251"]],66,null],
[2,[[276,1,""]],78,null],
[2,[[108,1,"66"]],0,[[["http://ejemplo.org/a",7,"",false],["https://[64:ff9b::7f00:1]/b",0,"",false],["https://ejemplo.org/c",9007199254740991,"ejemplo.org",true],["ipfs://bafyfeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqabf3oclgtqy55fbzdia",1,"bafyfeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqabf3oclgtqy55fbzdia",true]],"d23d7ba6d0f4956cea30c7ed4437a55c052e3fbe4d7c8fc77290eae4f877eac7","773656573906057e9a0062fe979bdcd837ea58ac565d3e748cc3635ef9765e49","dcc94474a1ac6e0ced926a423d3f091fd4d67b5e5a6125a696edcf17d454a0f8",809,"e1e2351f2b6a92105e27f1c98396daf42a393d618f9daf18d4fdd5ab4a069b74"]],
[2,[[108,1,"66"]],0,[[["http://ejemplo.org/a",7,"",false],["https://[64:ff9b::7f00:1]/b",0,"",false],["https://ejemplo.org/c",9007199254740991,"ejemplo.org",true],["ipfs://bafyfeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqabf3oclgtqy55fbzdia",1,"",false]],"d23d7ba6d0f4956cea30c7ed4437a55c052e3fbe4d7c8fc77290eae4f877eac7","773656573906057e9a0062fe979bdcd837ea58ac565d3e748cc3635ef9765e49","dcc94474a1ac6e0ced926a423d3f091fd4d67b5e5a6125a696edcf17d454a0f8",809,"e1e2351f2b6a92105e27f1c98396daf42a393d618f9daf18d4fdd5ab4a069b74"]],
[1,[[3718,2,""]],140,null],
[0,[[119,0,"4c1c951c"]],141,null],
[2,[[90,1,"7f"]],0,[[["http://ejemplo.org/a",7,"",false],["https://[64:ff9b::7f00:1]/b",0,"",false],["https://ejemplo.org/c",9007199246352383,"ejemplo.org",true],["ipfs://bafybeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqabf3oclgtqy55fbzdia",1,"bafybeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqabf3oclgtqy55fbzdia",true]],"d23d7ba6d0f4956cea30c7ed4437a55c052e3fbe4d7c8fc77290eae4f877eac7","773656573906057e9a0062fe979bdcd837ea58ac565d3e748cc3635ef9765e49","dcc94474a1ac6e0ced926a423d3f091fd4d67b5e5a6125a696edcf17d454a0f8",809,"e1e2351f2b6a92105e27f1c98396daf42a393d618f9daf18d4fdd5ab4a069b74"]],
[2,[[90,1,"7f"]],0,[[["http://ejemplo.org/a",7,"",false],["https://[64:ff9b::7f00:1]/b",0,"",false],["https://ejemplo.org/c",9007199246352383,"ejemplo.org",true],["ipfs://bafybeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqabf3oclgtqy55fbzdia",1,"",false]],"d23d7ba6d0f4956cea30c7ed4437a55c052e3fbe4d7c8fc77290eae4f877eac7","773656573906057e9a0062fe979bdcd837ea58ac565d3e748cc3635ef9765e49","dcc94474a1ac6e0ced926a423d3f091fd4d67b5e5a6125a696edcf17d454a0f8",809,"e1e2351f2b6a92105e27f1c98396daf42a393d618f9daf18d4fdd5ab4a069b74"]],
[1,[[820,1,"88"]],66,null],
[1,[[1119,2977,""]],89,null],
[1,[[780,0,"85c5c60c"]],66,null],
@ -508,11 +512,11 @@ const locatorVectorsJson = r'''
[1,[[2954,1142,""]],81,null],
[0,[[343,0,"081384ac"]],145,null],
[1,[[1720,1,""]],119,null],
[2,[[229,1,"f2"]],0,[[["http://ejemplo.org/a",7,"",false],["https://[64:ff9b::7f00:1]/b",0,"",false],["https://ejemplo.org/c",9007199254740991,"ejemplo.org",true],["ipfs://bafybeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqabf3oclgtqy55fbzdia",1,"bafybeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqabf3oclgtqy55fbzdia",true]],"d23d7ba6d0f4956cea30c7ed4437a55c052e3fbe4d7c8fc77290eae4f877eac7","5ef899941c35b5c5c877f95639deb5fcaa640a640a6a710bc6f2a283d0e39986","dcc94474a1ac6e0ced926a423d3f091fd4d67b5e5a6125a696edcf17d454a0f8",809,"e1e2351f2b6a92105e27f1c98396daf42a393d618f9daf18d4fdd5ab4a069b74"]],
[2,[[229,1,"f2"]],0,[[["http://ejemplo.org/a",7,"",false],["https://[64:ff9b::7f00:1]/b",0,"",false],["https://ejemplo.org/c",9007199254740991,"ejemplo.org",true],["ipfs://bafybeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqabf3oclgtqy55fbzdia",1,"",false]],"d23d7ba6d0f4956cea30c7ed4437a55c052e3fbe4d7c8fc77290eae4f877eac7","5ef899941c35b5c5c877f95639deb5fcaa640a640a6a710bc6f2a283d0e39986","dcc94474a1ac6e0ced926a423d3f091fd4d67b5e5a6125a696edcf17d454a0f8",809,"e1e2351f2b6a92105e27f1c98396daf42a393d618f9daf18d4fdd5ab4a069b74"]],
[1,[[3660,436,""]],88,null],
[0,[[4092,4,""]],19,null],
[1,[[2396,1700,""]],70,null],
[2,[[370,1,"4f"]],0,[[["http://ejemplo.org/a",7,"",false],["https://[64:ff9b::7f00:1]/b",0,"",false],["https://ejemplo.org/c",9007199254740991,"ejemplo.org",true],["ipfs://bafybeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqabf3oclgtqy55fbzdia",1,"bafybeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqabf3oclgtqy55fbzdia",true]],"d23d7ba6d0f4956cea30c7ed4437a55c052e3fbe4d7c8fc77290eae4f877eac7","4d00c18e3a50f3204639b76e7298aba52c8db6d6bb34b4d7519704fd928afbf5","dcc94474a1ac6e0ced926a423d3f091fd4d67b5e5a6125a696edcf17d454a0f8",809,"e1e2351f2b6a92105e27f1c98396daf42a393d618f9daf18d4fdd5ab4a069b74"]],
[2,[[370,1,"4f"]],0,[[["http://ejemplo.org/a",7,"",false],["https://[64:ff9b::7f00:1]/b",0,"",false],["https://ejemplo.org/c",9007199254740991,"ejemplo.org",true],["ipfs://bafybeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqabf3oclgtqy55fbzdia",1,"",false]],"d23d7ba6d0f4956cea30c7ed4437a55c052e3fbe4d7c8fc77290eae4f877eac7","4d00c18e3a50f3204639b76e7298aba52c8db6d6bb34b4d7519704fd928afbf5","dcc94474a1ac6e0ced926a423d3f091fd4d67b5e5a6125a696edcf17d454a0f8",809,"e1e2351f2b6a92105e27f1c98396daf42a393d618f9daf18d4fdd5ab4a069b74"]],
[0,[[250,2,""]],147,null],
[2,[[367,3729,""]],64,null],
[1,[[2902,1,"58"]],0,[[[["https://ejemplo0.org/","x",400,""],0,"ejemplo0.org",true],[["https://ejemplo1.org/","x",401,""],1000,"ejemplo1.org",true],[["https://ejemplo2.org/","x",402,""],2000,"ejemplo2.org",true],[["https://ejemplo3.org/","x",403,""],3000,"ejemplo3.org",true],[["https://ejemplo4.org/","x",404,""],4000,"ejemplo4.org",true],[["https://ejemplo5.org/","x",405,""],5000,"ejemplo5.org",true],[["https://ejemplo6.org/","x",282,"Xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"],6000,"ejemplo6.org",true],[["https://ejemplo7.org/","x",407,""],7000,"ejemplo7.org",true]],"d23d7ba6d0f4956cea30c7ed4437a55c052e3fbe4d7c8fc77290eae4f877eac7","773656573906057e9a0062fe979bdcd837ea58ac565d3e748cc3635ef9765e49","dcc94474a1ac6e0ced926a423d3f091fd4d67b5e5a6125a696edcf17d454a0f8",809,"e1e2351f2b6a92105e27f1c98396daf42a393d618f9daf18d4fdd5ab4a069b74"]],
@ -699,34 +703,34 @@ const locatorVectorsJson = r'''
["","datekeys:quicknet:v1",9007199254740992,null,253,0,""],
["","datekeys:quicknet:v1",9007199254740991,null,0,103,"a7f179ee5f8f33a791434b38c038f444fc9c0a8a20d1f7e1b7119ef6645d9481"],
["","Datekeys:quicknet:v1",1000,null,253,0,""],
["","datekeys:other:v1",1000,null,0,83,"0eacb050625f98eb18a3525356f61e861698511d41d3647af0ed324eb78f2e4f"],
["","datekeys:other:v1",1000,null,254,0,""],
["","",0,null,253,0,""],
["a\tb","",0,"",253,0,""]
],
"open_info": [
["datekeys:quicknet:v1",1000,0,1000,0,[[["https://ejemplo.org/foto.jpg",3000,"ejemplo.org",true],["ipfs://bafybeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqabf3oclgtqy55fbzdi",0,"bafybeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqabf3oclgtqy55fbzdi",true]],"d23d7ba6d0f4956cea30c7ed4437a55c052e3fbe4d7c8fc77290eae4f877eac7","773656573906057e9a0062fe979bdcd837ea58ac565d3e748cc3635ef9765e49","dcc94474a1ac6e0ced926a423d3f091fd4d67b5e5a6125a696edcf17d454a0f8",809,"e1e2351f2b6a92105e27f1c98396daf42a393d618f9daf18d4fdd5ab4a069b74"]],
["datekeys:quicknet:v1",1000,null,1000,254,null],
["datekeys:other:v1",1000,0,1000,255,null],
["datekeys:quicknet:v1",1000,null,1000,255,null],
["datekeys:other:v1",1000,0,1000,256,null],
["datekeys:quicknet:v1",1001,1,1001,0,[[["https://ejemplo.org/foto.jpg",3000,"ejemplo.org",true],["ipfs://bafybeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqabf3oclgtqy55fbzdi",0,"bafybeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqabf3oclgtqy55fbzdi",true]],"d23d7ba6d0f4956cea30c7ed4437a55c052e3fbe4d7c8fc77290eae4f877eac7","773656573906057e9a0062fe979bdcd837ea58ac565d3e748cc3635ef9765e49","dcc94474a1ac6e0ced926a423d3f091fd4d67b5e5a6125a696edcf17d454a0f8",809,"e1e2351f2b6a92105e27f1c98396daf42a393d618f9daf18d4fdd5ab4a069b74"]],
["datekeys:quicknet:v1",1001,1,1000,167,null],
["datekeys:quicknet:v1",1000,1,1000,168,null],
["datekeys:quicknet:v1",2000,2,2000,0,[[["http://ejemplo.org/a",7,"",false],["https://[64:ff9b::7f00:1]/b",0,"",false],["https://ejemplo.org/c",9007199254740991,"ejemplo.org",true],["ipfs://bafybeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqabf3oclgtqy55fbzdia",1,"bafybeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqabf3oclgtqy55fbzdia",true]],"d23d7ba6d0f4956cea30c7ed4437a55c052e3fbe4d7c8fc77290eae4f877eac7","773656573906057e9a0062fe979bdcd837ea58ac565d3e748cc3635ef9765e49","dcc94474a1ac6e0ced926a423d3f091fd4d67b5e5a6125a696edcf17d454a0f8",809,"e1e2351f2b6a92105e27f1c98396daf42a393d618f9daf18d4fdd5ab4a069b74"]]
["datekeys:quicknet:v1",2000,2,2000,0,[[["http://ejemplo.org/a",7,"",false],["https://[64:ff9b::7f00:1]/b",0,"",false],["https://ejemplo.org/c",9007199254740991,"ejemplo.org",true],["ipfs://bafybeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqabf3oclgtqy55fbzdia",1,"",false]],"d23d7ba6d0f4956cea30c7ed4437a55c052e3fbe4d7c8fc77290eae4f877eac7","773656573906057e9a0062fe979bdcd837ea58ac565d3e748cc3635ef9765e49","dcc94474a1ac6e0ced926a423d3f091fd4d67b5e5a6125a696edcf17d454a0f8",809,"e1e2351f2b6a92105e27f1c98396daf42a393d618f9daf18d4fdd5ab4a069b74"]]
],
"parse": [
["datekeys.note",1,1,[],256,"","",0,null],
["datekeys.capsule",0,1,[],256,"","",0,null],
["datekeys.capsulE",1,1,[],256,"","",0,null],
["datekeys.note",1,1,[],257,"","",0,null],
["datekeys.capsule",0,1,[],257,"","",0,null],
["datekeys.capsulE",1,1,[],257,"","",0,null],
["datekeys.capsule",1,0,[[0,0,"a1017853646b315f65794a325a584a7a61573975496a6f784c434a755a58523362334a72496a6f695a4746305a57746c65584d3663585670593274755a585136646a45694c434a79623356755a4349364d5441774d4830"]],0,"","dk1_eyJ2ZXJzaW9uIjoxLCJuZXR3b3JrIjoiZGF0ZWtleXM6cXVpY2tuZXQ6djEiLCJyb3VuZCI6MTAwMH0",1000,null],
["datekeys.capsule",1,1,[[0,9,"a2"]],0,"","dk1_eyJ2ZXJzaW9uIjoxLCJuZXR3b3JrIjoiZGF0ZWtleXM6cXVpY2tuZXQ6djEiLCJyb3VuZCI6MTAwMH0",1000,"9b1872806ff868586a155403560bb4649bee05090c24a735c5b26d9d47d85e6c"],
["datekeys.capsule",1,0,[[0,0,"a100616e"]],3,"","",0,null],
["datekeys.capsule",1,0,[[0,0,"a200790400"],[0,0,"6e",1024],[0,0,"017853646b315f65794a325a584a7a61573975496a6f784c434a755a58523362334a72496a6f695a4746305a57746c65584d3663585670593274755a585136646a45694c434a79623356755a4349364d5441774d4830"]],0,"nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn","dk1_eyJ2ZXJzaW9uIjoxLCJuZXR3b3JrIjoiZGF0ZWtleXM6cXVpY2tuZXQ6djEiLCJyb3VuZCI6MTAwMH0",1000,null],
["datekeys.capsule",1,0,[[0,0,"a20063610962017853646b315f65794a325a584a7a61573975496a6f784c434a755a58523362334a72496a6f695a4746305a57746c65584d3663585670593274755a585136646a45694c434a79623356755a4349364d5441774d4830"]],5,"","",0,null],
["datekeys.capsule",1,0,[[0,0,"a20062fffe017853646b315f65794a325a584a7a61573975496a6f784c434a755a58523362334a72496a6f695a4746305a57746c65584d3663585670593274755a585136646a45694c434a79623356755a4349364d5441774d4830"]],260,"","",0,null],
["datekeys.capsule",1,2,[[87,4455,"00616e"]],262,"","",0,null],
["datekeys.capsule",1,0,[[0,0,"a20062fffe017853646b315f65794a325a584a7a61573975496a6f784c434a755a58523362334a72496a6f695a4746305a57746c65584d3663585670593274755a585136646a45694c434a79623356755a4349364d5441774d4830"]],261,"","",0,null],
["datekeys.capsule",1,2,[[87,4455,"00616e"]],263,"","",0,null],
["datekeys.capsule",1,2,[[87,4455,"034100"]],6,"","",0,null],
["datekeys.capsule",1,0,[[0,0,"a10160"]],4,"","",0,null],
["datekeys.capsule",1,0,[[0,0,"a1017854646b315f65794a325a584a7a61573975496a6f784c434a755a58523362334a72496a6f695a4746305a57746c65584d3663585670593274755a585136646a45694c434a79623356755a4349364d5441774d483041"]],4,"","",0,null],
["datekeys.capsule",1,0,[[0,0,"a101790401"],[0,0,"64",1025]],265,"","",0,null],
["datekeys.capsule",1,0,[[0,0,"a101790401"],[0,0,"64",1025]],266,"","",0,null],
["datekeys.capsule",1,0,[[0,0,"a1017853444b315f65794a325a584a7a61573975496a6f784c434a755a58523362334a72496a6f695a4746305a57746c65584d3663585670593274755a585136646a45694c434a79623356755a4349364d5441774d4830"]],4,"","",0,null],
["datekeys.capsule",1,0,[[0,0,"a1017854646b315f65794a325a584a7a61573975496a6f784c434a755a58523362334a72496a6f695a4746305a57746c65584d3663585670593274755a585136646a45694c434a79623356755a4349364d5441774d48303d"]],4,"","",0,null],
["datekeys.capsule",1,2,[[88,4454,"4100"]],1,"","",0,null],
@ -734,59 +738,59 @@ const locatorVectorsJson = r'''
["datekeys.capsule",1,4,[],1,"","",0,null],
["datekeys.capsule",1,2,[[89,4453,"01426167652d656e6372797074696f6e2e6f72672f76310a2d3e20746c6f636b203130303020353264623962613730653063633066366561663738303364643037343437613166353437373733356664336636363137393262613934363030633834653937310a6b4f67676e7651537537465679574f5a5337434f646b6d76795245736d7978412b312b77504e2b6c754775412b69566b38413362784f6a467147456d627631330a456f6d5152766f5a714334767263557744626d4d53574e79354d304e476a4b4f53544d366b2f73347071786c384838643830346b334e74386c435259684653480a364532654661736f34504d68534e3631724c6342534a514979566d6335667a54666a6978734f344a3535490a2d2d2d20764a6d45736d4d69377a49334939527a5a49514f416a3153305961737a6e584e4c77624943516844733538"]],1,"","",0,null],
["datekeys.capsule",1,1,[[0,199,"a2017853646b315f65794a325a584a7a61573975496a6f784c434a755a58523362334a72496a6f695a4746305a57746c65584d3663585670593274755a585136646a45694c434a79623356755a4349364d5441774d4830025911226167652d656e6372797074696f6e2e6f72672f76310a2d3e20746c6f636b2031303030"]],1,"","",0,null],
["datekeys.capsule",1,1,[[0,199,"a2017853646b315f65794a325a584a7a61573975496a6f784c434a755a58523362334a72496a6f695a4746305a57746c65584d3663585670593274755a585136646a45694c434a79623356755a4349364d5441774d4830025911636167652d656e6372797074696f6e2e6f72672f76310a2d3e20746c6f636b203130303020"],[199,0,"30",64]],0,"","dk1_eyJ2ZXJzaW9uIjoxLCJuZXR3b3JrIjoiZGF0ZWtleXM6cXVpY2tuZXQ6djEiLCJyb3VuZCI6MTAwMH0",1000,"872ce88bde5be954e9e3a768ee10edf54936f257b5d78f097e23fa809cc625ab"],
["datekeys.capsule",1,1,[[0,199,"a2017853646b315f65794a325a584a7a61573975496a6f784c434a755a58523362334a72496a6f695a4746305a57746c65584d3663585670593274755a585136646a45694c434a79623356755a4349364d5441774d4830025911636167652d656e6372797074696f6e2e6f72672f76310a2d3e20746c6f636b203130303020"],[199,0,"30",64]],269,"","",0,null],
["datekeys.capsule",1,1,[[0,129,"a2017853646b315f65794a325a584a7a61573975496a6f784c434a755a58523362334a72496a6f695a4746305a57746c65584d3663585670593274755a585136646a45694c434a79623356755a4349364d5441774d4830025911646167652d656e6372797074696f6e2e6f72672f76310a2d3e20746c6f636b20"]],1,"","",0,null],
["datekeys.capsule",1,1,[[0,120,"a2017853646b315f65794a325a584a7a61573975496a6f784c434a755a58523362334a72496a6f695a4746305a57746c65584d3663585670593274755a585136646a45694c434a79623356755a4349364d5441774d4830025912606167652d656e6372797074696f6e2e6f72672f76310a2d3e20746c6f636b203130303020353264623962613730653063633066366561663738303364643037343437613166353437373733356664336636363137393262613934363030633834653937310a6b4f67676e7651537537465679574f5a5337434f646b6d76795245736d7978412b312b77504e2b6c754775412b69566b38413362784f6a467147456d627631330a456f6d5152766f5a714334767263557744626d4d53574e79354d304e476a4b4f53544d366b2f73347071786c384838643830346b334e74386c435259684653480a364532654661736f34504d68534e3631724c6342534a514979566d6335667a54666a6978734f344a353549"]],1,"","",0,null],
["datekeys.capsule",1,1,[[344,4206,""]],267,"","",0,null],
["datekeys.capsule",1,1,[[344,4206,""]],270,"","",0,null],
["datekeys.capsule",1,1,[[338,1,"24"]],1,"","",0,null],
["datekeys.capsule",1,1,[[235,1,""]],267,"","",0,null],
["datekeys.capsule",1,1,[[553,3997,""]],267,"","",0,null],
["datekeys.capsule",1,1,[[584,3966,""]],267,"","",0,null],
["datekeys.capsule",1,1,[[235,1,""]],270,"","",0,null],
["datekeys.capsule",1,1,[[553,3997,""]],270,"","",0,null],
["datekeys.capsule",1,1,[[584,3966,""]],270,"","",0,null],
["datekeys.capsule",1,1,[[12,1,"24"]],4,"","",0,null],
["datekeys.capsule",1,1,[[391,1,""]],267,"","",0,null],
["datekeys.capsule",1,1,[[391,1,""]],270,"","",0,null],
["datekeys.capsule",1,1,[[425,1,"ec"]],0,"Cartas","dk1_eyJ2ZXJzaW9uIjoxLCJuZXR3b3JrIjoiZGF0ZWtleXM6cXVpY2tuZXQ6djEiLCJyb3VuZCI6MTAwMH0",1000,"b1c7080496ba18f4707589a3f4a145f27970cb4c1b8fabe4ba0576052c42b94a"],
["datekeys.capsule",1,1,[[413,1,""]],267,"","",0,null],
["datekeys.capsule",1,1,[[323,1,""]],267,"","",0,null],
["datekeys.capsule",1,1,[[131,4419,""]],267,"","",0,null],
["datekeys.capsule",1,1,[[96,1,""]],270,"","",0,null],
["datekeys.capsule",1,1,[[413,1,""]],270,"","",0,null],
["datekeys.capsule",1,1,[[323,1,""]],270,"","",0,null],
["datekeys.capsule",1,1,[[131,4419,""]],270,"","",0,null],
["datekeys.capsule",1,1,[[96,1,""]],274,"","",0,null],
["datekeys.capsule",1,1,[[328,1,"68"]],0,"Cartas","dk1_eyJ2ZXJzaW9uIjoxLCJuZXR3b3JrIjoiZGF0ZWtleXM6cXVpY2tuZXQ6djEiLCJyb3VuZCI6MTAwMH0",1000,"ba4913a2cb35d6aca1979d009d9d35f428c214a7c89c6d689216fa21381282c1"],
["datekeys.capsule",1,1,[[571,1,""]],267,"","",0,null],
["datekeys.capsule",1,1,[[353,4197,""]],267,"","",0,null],
["datekeys.capsule",1,1,[[571,1,""]],270,"","",0,null],
["datekeys.capsule",1,1,[[353,4197,""]],270,"","",0,null],
["datekeys.capsule",1,1,[[459,1,"1a"]],0,"Cartas","dk1_eyJ2ZXJzaW9uIjoxLCJuZXR3b3JrIjoiZGF0ZWtleXM6cXVpY2tuZXQ6djEiLCJyb3VuZCI6MTAwMH0",1000,"c2e247433e36d8c686ef163946b53fa8aa93c8cad85368165cef468a5993bddd"],
["datekeys.capsule",1,1,[[377,4173,""]],267,"","",0,null],
["datekeys.capsule",1,1,[[377,4173,""]],270,"","",0,null],
["datekeys.capsule",1,1,[[438,1,"64"]],0,"Cartas","dk1_eyJ2ZXJzaW9uIjoxLCJuZXR3b3JrIjoiZGF0ZWtleXM6cXVpY2tuZXQ6djEiLCJyb3VuZCI6MTAwMH0",1000,"7e9debc80af2e9e9a5e3037eba4d5cbac029640a8cfa210b9c6cc466ea9502d1"],
["datekeys.capsule",1,1,[[433,1,"95"]],0,"Cartas","dk1_eyJ2ZXJzaW9uIjoxLCJuZXR3b3JrIjoiZGF0ZWtleXM6cXVpY2tuZXQ6djEiLCJyb3VuZCI6MTAwMH0",1000,"8c29835772295c6c476ab558bf595cc1c1dfc15fb99974c2fc6f8ac3203e4d3a"],
["datekeys.capsule",1,1,[[21,4529,""]],268,"","",0,null],
["datekeys.capsule",1,1,[[347,1,""]],267,"","",0,null],
["datekeys.capsule",1,1,[[21,4529,""]],272,"","",0,null],
["datekeys.capsule",1,1,[[347,1,""]],270,"","",0,null],
["datekeys.capsule",1,1,[[541,1,"38"]],0,"Cartas","dk1_eyJ2ZXJzaW9uIjoxLCJuZXR3b3JrIjoiZGF0ZWtleXM6cXVpY2tuZXQ6djEiLCJyb3VuZCI6MTAwMH0",1000,"837c504759e590eb96d11eb6b7924f4bcda6bcc77069842d937712e5438d05a0"],
["datekeys.capsule",1,1,[[309,1,""]],267,"","",0,null],
["datekeys.capsule",1,1,[[309,1,""]],270,"","",0,null],
["datekeys.capsule",1,1,[[229,1,"7b"]],1,"","",0,null],
["datekeys.capsule",1,1,[[313,1,"30"]],0,"Cartas","dk1_eyJ2ZXJzaW9uIjoxLCJuZXR3b3JrIjoiZGF0ZWtleXM6cXVpY2tuZXQ6djEiLCJyb3VuZCI6MTAwMH0",1000,"be6a50ae605acf5b3d150ec3886e2c79a77f729bcc08f8a5bc7709d0b53d7114"],
["datekeys.capsule",1,1,[[36,1,"1a"]],4,"","",0,null],
["datekeys.capsule",1,1,[[102,4448,""]],267,"","",0,null],
["datekeys.capsule",1,1,[[102,4448,""]],270,"","",0,null],
["datekeys.capsule",1,1,[[275,1,"24"]],1,"","",0,null],
["datekeys.capsule",1,1,[[431,1,""]],267,"","",0,null],
["datekeys.capsule",1,1,[[22,1,""]],271,"","",0,null],
["datekeys.capsule",1,1,[[471,4079,""]],267,"","",0,null],
["datekeys.capsule",1,1,[[431,1,""]],270,"","",0,null],
["datekeys.capsule",1,1,[[22,1,""]],275,"","",0,null],
["datekeys.capsule",1,1,[[471,4079,""]],270,"","",0,null],
["datekeys.capsule",1,1,[[521,1,"ee"]],0,"Cartas","dk1_eyJ2ZXJzaW9uIjoxLCJuZXR3b3JrIjoiZGF0ZWtleXM6cXVpY2tuZXQ6djEiLCJyb3VuZCI6MTAwMH0",1000,"c369944cca2d97d9f3f03c39d0c295b973cbd761a0f5b38b06c30ad98a96f24e"],
["datekeys.capsule",1,1,[[22,1,"0a"]],4,"","",0,null],
["datekeys.capsule",1,1,[[300,1,"76"]],0,"Cartas","dk1_eyJ2ZXJzaW9uIjoxLCJuZXR3b3JrIjoiZGF0ZWtleXM6cXVpY2tuZXQ6djEiLCJyb3VuZCI6MTAwMH0",1000,"ec5addd718aac21e927fa4f200f9b991d1691778a425d412799d1fcbee858743"],
["datekeys.capsule",1,1,[[404,1,"69"]],0,"Cartas","dk1_eyJ2ZXJzaW9uIjoxLCJuZXR3b3JrIjoiZGF0ZWtleXM6cXVpY2tuZXQ6djEiLCJyb3VuZCI6MTAwMH0",1000,"2c579a396edf2ae61ebce991a3f1cb93de5c19ae3e76763faad88cf2fcca1706"],
["datekeys.capsule",1,1,[[217,1,"33"]],0,"Cartas","dk1_eyJ2ZXJzaW9uIjoxLCJuZXR3b3JrIjoiZGF0ZWtleXM6cXVpY2tuZXQ6djEiLCJyb3VuZCI6MTAwMH0",1000,"38f4f96e3136879691ae22a09cb187868737e6d48679dcac741fd6b95ff2ac34"],
["datekeys.capsule",1,1,[[398,1,""]],267,"","",0,null],
["datekeys.capsule",1,1,[[94,1,"b0"]],272,"","",0,null],
["datekeys.capsule",1,1,[[340,1,""]],267,"","",0,null],
["datekeys.capsule",1,1,[[398,1,""]],270,"","",0,null],
["datekeys.capsule",1,1,[[94,1,"b0"]],276,"","",0,null],
["datekeys.capsule",1,1,[[340,1,""]],270,"","",0,null],
["datekeys.capsule",1,1,[[391,1,"79"]],0,"Cartas","dk1_eyJ2ZXJzaW9uIjoxLCJuZXR3b3JrIjoiZGF0ZWtleXM6cXVpY2tuZXQ6djEiLCJyb3VuZCI6MTAwMH0",1000,"db7a6bff12e78067943259000919e1e3b3772fd57d029e66b1c54103e4b30bbf"]
],
"registry": [
["datekeys.capsule",1,0,[],273,0,274,0],
["datekeys.capsule",1,1,[],273,0,274,0],
["datekeys.capsule",1,2,[],273,0,274,0],
["datekeys.capsule",1,3,[],273,0,274,0],
["datekeys.capsule",1,4,[275],273,276,274,0],
["datekeys.capsule",1,5,[277],273,278,274,0],
["datekeys.capsule",1,-1,[279],273,280,274,280],
["datekeys.capsule",2,4,[],281,0,0,0]
["datekeys.capsule",1,0,[],277,0,278,0],
["datekeys.capsule",1,1,[],277,0,278,0],
["datekeys.capsule",1,2,[],277,0,278,0],
["datekeys.capsule",1,3,[],277,0,278,0],
["datekeys.capsule",1,4,[279],277,280,278,0],
["datekeys.capsule",1,5,[281],277,282,278,0],
["datekeys.capsule",1,-1,[283],277,284,278,284],
["datekeys.capsule",2,4,[],285,0,0,0]
]
}
''';

File diff suppressed because one or more lines are too long

@ -1,5 +1,5 @@
{
"spec": "0.11",
"spec": "0.14",
"generator": "tool/mutation_go_texts.go",
"description": "The text of the error of capsule.Open for every case of testdata/vectors/mutations.json, or ok for a capsule that opens, and its checks as [step, name, ok, detail, code]; go_error and go_step where Go and the corpus disagree. See the header of tool/mutation_go_texts.go.",
"cases": [

@ -1,5 +1,5 @@
{
"spec": "0.11",
"spec": "0.14",
"generator": "tool/open_go_vectors.go",
"source": "c531e936fa8188a4aab01575607cc85d4f5d4fa4",
"description": "capsule.Open of a .dkc, as edits of a fixture, given the release (null: none), or a source that fails with source_error (its text and its code, none for a plain error); the clock now; the registry of profiles, empty when registry is empty; the extensions known at (id, version) with valid data valid_data (testkit.KnownExtensions), or reject_all, a registry that knows every extension and rejects all data with that text; the age identities, the .dkk decoded before (dkk, with its material replaced by dkk_material) or the .dkk still encoded (dkk_file); a sink that fails at sink_fail (begin, create i, write i, close i or commit, with the text no and the call); an output that fails with disk full when output_fail; accept, refuse to refuse every verdict with not trusted; and author_keys, the author keys saved with their labels. The outcome: result (ok, refused, or the code), text, the checks as [step, name, ok, detail, code], the release requests, the state of the sink, the content (length and SHA-256) or the files ([path, size, SHA-256 of what the sink received]) of a capsule that opens, the verdicts of a capsule of format 3 that opens (signature, seal, lines, author_key and author_label of alg 1, sealed_at), and the unusable extensions of each object as [id, version, text].",

@ -1,5 +1,5 @@
{
"spec": "0.11",
"spec": "0.14",
"generator": "tool/open_go_vectors.go",
"source": "c531e936fa8188a4aab01575607cc85d4f5d4fa4",
"description": "HEAD_CBOR of a fixed seed, valid and broken in each layer of spec §69.1, through capsule.DecodeHead with no registry: the result, the code and the text; with_registry when the registry of the extensions a version 1 and org.example version 2 with data 01 (testkit.KnownExtensions) gives another. encode: capsule.EncodeHead of the decoded heads, their extensions reordered, repeated or in both arrays.",

@ -1,5 +1,5 @@
{
"spec": "0.11",
"spec": "0.14",
"generator": "tool/open_go_vectors.go",
"source": "c531e936fa8188a4aab01575607cc85d4f5d4fa4",
"description": "texts: the texts of the errors of capsule.Inspect, and results: for each mutation of testdata/vectors/inspect_differential.json, in its order, the index of its text in texts, -1 when steps 1 to 8 pass. views: the exact output of datekeys inspect -json (internal/inspectview) for time_only_extensions with another PUBLIC_HEADER, with the registry standard (extension.Standard), none, or reject_all, which knows every extension and rejects all data with not today.",

@ -1,5 +1,5 @@
{
"spec": "0.11",
"spec": "0.14",
"generator": "tool/open_go_vectors.go",
"source": "c531e936fa8188a4aab01575607cc85d4f5d4fa4",
"description": "The public note of spec §24.1: extension.CheckNote on the string of the bytes data; extension.Note and Header.UnusableNote of noncritical arrays (usable, text, unusable); and extension.Standard, in the order of check, on a note of version 1 with its bytes, absent data when empty: CheckNoncriticalIn of PUBLIC_HEADER (unusable, as [id, version, text]) and CheckWrite in its noncritical array (result and text).",

@ -15,7 +15,7 @@ const openRecordsJson = r'''
/// Part of test/vectors/open_cases.json: its cases on those fixtures.
const openCasesJson = r'''
{
"spec": "0.11",
"spec": "0.14",
"generator": "tool/open_go_vectors.go",
"source": "c531e936fa8188a4aab01575607cc85d4f5d4fa4",
"description": "Part of open_cases.json.",
@ -97,7 +97,7 @@ const openCasesJson = r'''
/// Part of test/vectors/open_heads.json.
const openHeadsJson = r'''
{
"spec": "0.11",
"spec": "0.14",
"generator": "tool/open_go_vectors.go",
"source": "c531e936fa8188a4aab01575607cc85d4f5d4fa4",
"description": "Part of open_heads.json.",
@ -166,7 +166,7 @@ const openHeadsJson = r'''
/// Part of test/vectors/open_notes.json.
const openNotesJson = r'''
{
"spec": "0.11",
"spec": "0.14",
"generator": "tool/open_go_vectors.go",
"source": "c531e936fa8188a4aab01575607cc85d4f5d4fa4",
"description": "Part of open_notes.json.",
@ -520,7 +520,7 @@ const openNotesJson = r'''
/// The views of test/vectors/open_inspect.json, and every sixth mutation of testdata/vectors/inspect_differential.json of those fixtures, with the text of Go.
const openInspectJson = r'''
{
"spec": "0.11",
"spec": "0.14",
"generator": "tool/open_go_vectors.go",
"source": "c531e936fa8188a4aab01575607cc85d4f5d4fa4",
"description": "Part of open_inspect.json.",

@ -5,7 +5,7 @@
/// Part of test/vectors/security_vectors.json.
const securityVectorsJson = r'''
{
"spec": "0.11",
"spec": "0.14",
"generator": "tool/security_go_vectors.go",
"description": "Part of test/vectors/security_vectors.json: every eighth evaluation.",
"contexts": [

@ -1,5 +1,5 @@
{
"spec": "0.11",
"spec": "0.14",
"generator": "tool/security_go_vectors.go",
"description": "The security area of format 3 as package capsule of the Go reference gives it at the draft v0.12: commitments (PayloadCommit, ControlCommit with decode_format and format, or the text of its error, HeadDigest, SignersDigest, AuthorMessage, AuthorCode as Go's string and its bytes, SigPart, SealSubject); encode (EncodeSecurity, EncodeSecurityWith, EncodeAuthorSignature, EncodeSeal); evaluate: EvaluateSecurityIn of SECURITY_CBOR (hex, parts as [hex, repeat], or a base with edits) in the context of the index, EvaluateSecurity when null: the verdicts, author_key and author_label of alg 1, lines as indices into texts, alg and seal_type as read, and cms, the parts that only the reader of CMS evaluates; lines: Verdicts.Lines and SealedAt of verdicts built here; holder: holderText of a name, or of UTF-16 code units, and a hash. See the header of tool/security_go_vectors.go.",
"contexts": [

@ -6,7 +6,7 @@
/// Part of test/vectors/securitycms_vectors.json.
const securityCmsVectorsJson = r'''
{
"spec": "0.11",
"spec": "0.14",
"generator": "tool/security_go_vectors.go",
"description": "Part of test/vectors/securitycms_vectors.json: its contexts and texts, its bases whole, and some of its cases, each built area as its hexadecimal.",
"contexts": [

@ -1,5 +1,5 @@
{
"spec": "0.11",
"spec": "0.14",
"generator": "tool/security_go_vectors.go",
"description": "Signatures of alg 2 and seals of seal_type 2 that this program makes, with keys of labels and the deterministic signatures of Go, as package capsule of the Go reference at the draft v0.12 evaluates them with EvaluateSecurityIn in the context of the index: the verdicts, the lines as indices into texts, alg and seal_type as read, cms, the detail of the signers and of a valid seal as the lines of security_vectors.json write it, sealed_at, and author_key of alg 1. An area is pieces (the hexadecimal of bytes, or the index of a chunk, each chunk itself pieces of the chunks before it), or a base edited in its target (value, the SignedData of key 2; signers, its SIGNERS; token, that of key 3) and written again with the encoders of capsule; sha256 is the first 8 bytes of the SHA-256 of the area. See the header of tool/security_go_vectors.go.",
"contexts": [

@ -0,0 +1,171 @@
// Generated by tool/tlock_steps_copy.dart from
// testdata/vectors/tlock_steps.json, for the tests that also run
// compiled to JavaScript, where no file can be read. Do not edit.
/// The text of testdata/vectors/tlock_steps.json.
const tlockStepsJson = r'''
{
"spec": "0.14",
"description": "Steps 10 and 11 of spec §63 for Quicknet, value by value, over published releases. Step 10: M = SHA-256(uint64_be(round)), H(M) the hash to G1 of RFC 9380 with the suite BLS12381G1_XMD:SHA-256_SSWU_RO_ and the DST dst, and e(H(M), public_key) = e(signature, G2). Step 11: a stanza body U || V || W built with the sigma and the file key of the vector; H2 = SHA-256(\"IBE-H2\" || e(signature, U))[:16], sigma = V XOR H2, H4 = SHA-256(\"IBE-H4\" || sigma)[:16], file_key = W XOR H4, and r = H3(sigma, file_key): h3_base = SHA-256(\"IBE-H3\" || sigma || file_key), then for i = 1, 2, ... d = SHA-256(uint16_le(i) || h3_base), its first byte shifted one bit to the right, until it is below the order of the group; r·G2 = U. Generated by the reference implementation and checked against drand, kyber, tlock and agewrap. See testdata/README.md.",
"profile": "datekeys:quicknet:v1",
"scheme": "bls-unchained-g1-rfc9380",
"chain_hash": "52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971",
"public_key": "83cf0f2896adee7eb8b5f01fcad3912212c437e0073e911fb90022d3e760183c8c4b450b6a0a6c3ac6a5776a2d1064510d1fec758c921cc22b0e17e63aaf4bcb5ed66304de9cf809bd274ca73bab4af5a6e9c76a4bc09e76eae8991ef5ece45a",
"dst": "BLS_SIG_BLS12381G1_XMD:SHA-256_SSWU_RO_NUL_",
"tags": {
"h2": "4942452d4832",
"h3": "4942452d4833",
"h4": "4942452d4834"
},
"vectors": [
{
"name": "round 1000, stanza 0",
"round": 1000,
"signature": "b44679b9a59af2ec876b1a6b1ad52ea9b1615fc3982b19576350f93447cb1125e342b73a8dd2bacbe47e4b6b63ed5e39",
"message": "f652498d092acd949bad74e40683bf3824fb817980504a0c7e6722cfc5a9c0a3",
"hash_to_g1": "8f5a32d53837b00fbc0ee31ce9966435a41c5188a80ce9934d3c80588b6ad6f643ebda1b83ef89e44da9ced6205cdecf",
"body": "a73eb63b9a766ebbd23e06daa313760b001502ab48de4976c98c1697ebd51907c2ab92306e4d04ee9f42bff92775ba6606f08479fbd58a3fb786c94a27bf924c67975f419d5b67b96080b4a3da776eddc762ce07af0a5b5a0965f64a9902f4d3f62867846361583f06a8978ae6876e0eb799ebe3cf0b0bf967921fc5e6eb85d9",
"u": "a73eb63b9a766ebbd23e06daa313760b001502ab48de4976c98c1697ebd51907c2ab92306e4d04ee9f42bff92775ba6606f08479fbd58a3fb786c94a27bf924c67975f419d5b67b96080b4a3da776eddc762ce07af0a5b5a0965f64a9902f4d3",
"v": "f62867846361583f06a8978ae6876e0e",
"w": "b799ebe3cf0b0bf967921fc5e6eb85d9",
"pairing": "13dc0e183d402040f68cb518c39c5fcfc61852058d0d58f962ec5649d3da484f62f8562cb4fa6b576d2882bac78ce474100a3086d82617f2b9ba844f6e2569e5b0c3c81ca94aa9ecda8909baabf16bfd4d95602b0ad3263aaaeb14748d41e9e30c811671230b41b54e5cce08f3d3ef671a411850c165dad83824fb91380554f5dd9ea3005738c83e264d58b3b28c275a0409076922ff12b9b1421d70c958c22a29da81a7df5f93a7d5f32d187e82a1f34ed60c01e9bb0685c0f773cb324b0e8118c5a8cee62b795b8fa7d5e820aa08003462a5521d70beabebb7f74022163286256eaeab18148d7caf9a0057fe37e6de0f10c412dd62f013e62a21971bae6d3957fd326aaa809348da278e812637343a20c942263da247497748aa5c39b945bd112fe3afbf5508117b48b1017931e9dfa97e3a9eaffef3add91ed62ec2814eb9063ffb64943e0b302efb12e3ff680d99199e068714b0c0d6d295a6019a6e325def3cd58c7c20c2196ba7fe28d67b9bf385764d81c63c02f6333d4fc5dbf5e1171913e06b904367571b8d2811f7288c18be3831d907ebc7f03ab6014282bcc362f1a3b0d12bbfc9cd9ba1d255254d64a216151c040975fd726c51fe191b3c675fc6ebc79b9a1f123e15059955761732f66cbb13c45868881fbbe08b21cf677551120e80ef555a5db93283f5b99714e997028eb1380e1a3db0bdc55d269f736e2b9f584c2661e460d3a6ce2db9a1aa902a02b16d5b9f634e96c5d615d3e1be0c232e13723d6f9b93686b1b9bee950ed45e729b3bd6d448badc0816fb8b9360bf28",
"h2": "c3d489f4c7c6a6962801cad91047eb95",
"sigma": "35fcee70a4a7fea92ea95d53f6c0859b",
"h4": "bd093650d9bd27e682b48bc3ba52a0aa",
"file_key": "0a90ddb316b62c1fe52694065cb92573",
"h3_base": "c8b1566b6f0ed7b6cfea5eebaa1a7291f77f50c80dfd8269e9b4f253fff23fe0",
"h3_tries": [
{
"i": 1,
"digest": "41fd905b124c321e66a781f9eec59842d08689c872f4eaada61c921f8b6e6a8e",
"shifted": "20fd905b124c321e66a781f9eec59842d08689c872f4eaada61c921f8b6e6a8e",
"accepted": true
}
],
"r": "20fd905b124c321e66a781f9eec59842d08689c872f4eaada61c921f8b6e6a8e"
},
{
"name": "round 1001, stanza 0",
"round": 1001,
"signature": "b33bf3667cbd5a82de3a24b4e0e9fe5513cc1a0e840368c6e31f5fcfa79bea03f73896b25883abf2853d10337fb8fa41",
"message": "ce43c3353a7ad7aac3408cad0bf921b6a7dda89be75d9cb2b3b5a152cefc8afd",
"hash_to_g1": "8dafa08d032514b04972cd9bca0c40226294bc9dc8b02d10ed4b3913554571e04f20d7eb05b74cddf72a9992995ac5bb",
"body": "ad4937a39b57f8c494817575bf3cac373ed629b3580d374953f08df5c59e00f76abbe58ec09704b544464975a843255307d45413ad277661ac6d361afa687bd40f2745fb9c4498882fbb91269350ab975fc1a1a83d2c5f7d127786779c01e55ee512d80ed32c46da0c915a5459244507444e2b3f156d72748fa2c3ee40120dee",
"u": "ad4937a39b57f8c494817575bf3cac373ed629b3580d374953f08df5c59e00f76abbe58ec09704b544464975a843255307d45413ad277661ac6d361afa687bd40f2745fb9c4498882fbb91269350ab975fc1a1a83d2c5f7d127786779c01e55e",
"v": "e512d80ed32c46da0c915a5459244507",
"w": "444e2b3f156d72748fa2c3ee40120dee",
"pairing": "06bf5fa844026aff0c454df2da4f46f769b6db78c68bdfdafacc1aee0d9d57b40603c0a043478a4785c635587896068701fcbc9ef9f489e53c2f30709136404cbb04c9b0ba0b74e26708f53735209f6f5cfa76fefff64a2db62726745db1693711a09a514fc2925ac383494d6882edb9d2c5143f9f2e8b2b25dfcaf1ac03ca6e9e0bfa989f3e1ebbe0a63345bfe1b9e40657b0fdb63c0646e2fef7f48e73861a364fbc944380af8e989e897a0037e54a1766086a1ea7c9457f47ff7521ac175d0e80ac41a06b949e12ac4c131354371f34318d9559bbdbdb8a9b7bd415b4b64542f240d4d3b69f350614fce76cbeb83b09457cc90c73da60247b929ca72602ba0e3c47653f6e798ffdac42f85039f2d43b817647536f369cea55812d08aa1ca80b9854d9b951ded8c1fa0053377711320de0ca459a84983ce49d68446a5d1c757afeffc896b146c2198b3a171854910d04fa8559d6018affc7c4e35760dc1ac4d90c83821e383ecdaa7ee3eda64e3ac4fa43648e7e821caddcbcabf3e34f5ea30e962c6aa7e6de1e72b3362311c5506607b180a79920c14961b9f8c850227bca1c0b59acffc7a79bf48bfde53fde6031185598646a15c7eb55df63e7fe8f930c6be0e8d6ee695608114f511c83a3c98b2e376cedc16b41c6c94acfb7180287d4007e4eeaf3bb6cd8bf67014302f47626346526358b3acec4cd9f7b083cdeed60c632c8007d0e4d88e252e6a3b8a955d216d6991a2893a56117cdebee0c78d7364f54f45313d472de5dd1e426b3483100107614137b08c38b7f139ab8adb05e33",
"h2": "d1c48e9d72ef4e29581947627078779e",
"sigma": "34d65693a1c308f354881d36295c3299",
"h4": "b05c539a1ce0d4b2f881e2a899bd648b",
"file_key": "f41278a5098da6c677232146d9af6965",
"h3_base": "f89b77b992969b10442252a826f0380716867ee3f2270cd6705b4ffbe474c727",
"h3_tries": [
{
"i": 1,
"digest": "85e7c45f27c75fa2571403fc7cd8222e0dfbdddd7842f85e814854c507abdfc6",
"shifted": "42e7c45f27c75fa2571403fc7cd8222e0dfbdddd7842f85e814854c507abdfc6",
"accepted": true
}
],
"r": "42e7c45f27c75fa2571403fc7cd8222e0dfbdddd7842f85e814854c507abdfc6"
},
{
"name": "round 1004, stanza 0",
"round": 1004,
"signature": "a40658b820c0f8c10207524179a2031ba9537688a0d04e4851b58026be9a341fee3b96fb48ffad28483d84b40a5864aa",
"message": "dfb0ecda8fd28db758bd0c580c0bb9397b56225bd50f076bac68460e68d0ea00",
"hash_to_g1": "895a4b04764f8964e42a056c23d7b34808895603f605ee0f749f8be419420b53a0ba5e01caab02e8afd7ff28c6cd771f",
"body": "97b8304c3e87868e549a6293d19d65481bdbcf7cf67b9d5e3d798ade332deb499648fe2f23931ab55b0911ccdc8839560f5a72325eedc7302420bd87bcafd7f27f2eadbc90523a295e5ab476b357ca91b9a8b5e45a4dac972f20b37e97e8945d96ce47d18a7e845031e28207606a7ea78a4f271ed5ed8d3ed9420fe99200396a",
"u": "97b8304c3e87868e549a6293d19d65481bdbcf7cf67b9d5e3d798ade332deb499648fe2f23931ab55b0911ccdc8839560f5a72325eedc7302420bd87bcafd7f27f2eadbc90523a295e5ab476b357ca91b9a8b5e45a4dac972f20b37e97e8945d",
"v": "96ce47d18a7e845031e28207606a7ea7",
"w": "8a4f271ed5ed8d3ed9420fe99200396a",
"pairing": "0b57e9394946ebc2e4ec7478308fe77ab5b509f00727d46dec4d8635bb7934b4c485f3408c974d45468c2363a768ee18172c3f56f94c6bea5f8658cfc79bc3cafdf3dc418134f4cea86e14b1c73ca85456cb56ac4438862d5093447e97afd795169452925b396bb07823cd1d4a5b9a7b58355170a713a0a14a3ff568a27f57743890c26387ef0f15c49057d8cc74857e0874d72f661e9cecd3b97443aaf64e0703ed453ff9ffb659070d81a40fd0c92ed1221d5d0767e0bb6e6d72c3979fe57619cc78dbd491b3629b21668beab4bdcf787ab581c62211f17db4a61d2ff5946178d1d29448c7bce8a664220bb2fd928d1926ddc1fa2d65f47a60bee3f1375a49cad2a5d0c5406f51ccf6d18e537b820da2112350f6a97b2fc76111b7ec8c0ae11484bd6d622de8b58cbb79ad193d285a49333040cdcf4aabd532cf5465248d4234b41a72614aabfe23479926e6b6635d003901ecd863d063befa706baba0b7aba385e7396b78a20f8e7738c7ec14e340b80e8cfeb5509e8bb47807a82fea6b6215a3f4ce9786623a283a4b07d5aa07fcf9636122a6dee64db8b4280c24e2e909bc791cc9d11adf6cacd82823fdf43873171d52f3d9bc035d3f9bb63eaaaa27e3109b7324f2828e6dc2ce78324bff9a92b9c569ab51ed714e70afd1687d5188f60e1ab87bd7db3ffedec49b52dd0a09909be3cc96156b82d0ab49adfd64c24faf9cd574d9c585829f3fd608c7df754a58045f1545128a0030459cc766fbaf636ce19be4d4537ac181cd9bd2da65cb93257b72984bcf0c74b19247d15c680fd278",
"h2": "ed9e2e9ca7679f40d9d5461808d3902d",
"sigma": "7b50694d2d191b10e837c41f68b9ee8a",
"h4": "8aa64ea323262cff566c987b5467ae3a",
"file_key": "00e969bdf6cba1c18f2e9792c6679750",
"h3_base": "cbf54def509294ab547c383ea065b02d2bec599d6a41f41b3083dad3ff7b2459",
"h3_tries": [
{
"i": 1,
"digest": "060304f06ac573eee1c4ed5b125d6f8ae7c9f154c60156c4e37de84ebc9846cb",
"shifted": "030304f06ac573eee1c4ed5b125d6f8ae7c9f154c60156c4e37de84ebc9846cb",
"accepted": true
}
],
"r": "030304f06ac573eee1c4ed5b125d6f8ae7c9f154c60156c4e37de84ebc9846cb"
},
{
"name": "round 2000, stanza 0",
"round": 2000,
"signature": "b6cb8f482a0b15d45936a4c4ea08e98a087e71787caee3f4d07a8a9843b1bc5423c6b3c22f446488b3137eaca799c77e",
"message": "597962656abdc948a536fcd5ba8405e6bd95b9763f4a4da0727e8c98689d52c2",
"hash_to_g1": "906dc77479bc9962a8ed67fd00ad6af2a6c8d109926fdd6b897fe77526b2531b544b5e8703de23748b6ae6172b9986f5",
"body": "ab73f3818b2170ec27e8c6ad89232453199c2ceb781e920fb8058947ade9a12daf99775f384f575daae76fb76c1bb40e00754fd1515534b2f1c315108a568bb7405a5829eba26e3a1ac08178e73ac13bca55a0ef7eeb8980d0a4424b84ac47ff04cbb545b21b4ebcc651055043dd6f7b216b730fe903e9c7824eadef6522c2d9",
"u": "ab73f3818b2170ec27e8c6ad89232453199c2ceb781e920fb8058947ade9a12daf99775f384f575daae76fb76c1bb40e00754fd1515534b2f1c315108a568bb7405a5829eba26e3a1ac08178e73ac13bca55a0ef7eeb8980d0a4424b84ac47ff",
"v": "04cbb545b21b4ebcc651055043dd6f7b",
"w": "216b730fe903e9c7824eadef6522c2d9",
"pairing": "07999e22e3e3e73a814ff2ff0329f87749396dc9b6a2e6f0520b01df4f73935cce76c3197164eb129f03b72675d05d8318f73d35d748b4fadc36cb7bff193e44bc30a795377a5faaae2649fc89df82539b177defcd3122e1ef461f869e22ab80165c6c07fbc3ed5752921287c8dc5177cbbf19c14b84fce0393d4cd2bd9dc8f569964e88d82cca5df637019bf6b3f9230ca4d83f519082c62919b1d5138326cd97af77bf54a8257c677f1162c603f181f0f74dbc5c4558ade7adf44d6689213804028a36cb0597d58a1a777bb187479ae7e69214f632a53fdb93c9580bf71d1cf91076830ca73bf548417e9729a53ad400a89f83721daa9e2a1b963b9cd2b9a6c68bd17b61039d08f4ff9962deef188b597cbf5855dcefc6e4192d4ad4984a2a05929fc3c0043f53f63bca31ae676883ca550ac47c06dad52a95366ccec9f03a2eb6c4fdb15df0238a991f4245a740b00b1762bb3c76709333e758be369616ea68929eadc0eee12b1f074707db5153d2b07fa99db5bff8f6ba04f318c9f4abf6175c1d5471c150ffd8e1cd83ed6e26c3eaa821aa4c4724dbfd644b0df28a80134c0fc2334e34c2b591a79b531b116abf1363314b98b21a669ca179bb7065336df05315a8885f32db74d56884c01ab37ecd0dfcde9b4d23a3481bd487d6e5f523089f89ed52d7e50a48a591306eea76b353ea2c63f14826b8a785ce9a7cafddd5b5d6d6a89773c2b24a178b6e6d3f1f2002d7c409b2c7312df81c21af3ba95ec8646e64ac240a43e6e8245f3ec2532a10ea917c0dac568cb468bad84562acf72c",
"h2": "0b214ea01f127a78f8af587331314ce0",
"sigma": "0feafbe5ad0934c43efe5d2372ec239b",
"h4": "5097513c5c6ad5a8e614205284b46f9a",
"file_key": "71fc2233b5693c6f645a8dbde196ad43",
"h3_base": "2a1ca2b9377eae364c9874c19450c74919f88bd0e4d05153fcadc373db2d3989",
"h3_tries": [
{
"i": 1,
"digest": "59d0a91dbc2ea95a7ded3610fd282f2c0286459e49fe275bce5185501df3a106",
"shifted": "2cd0a91dbc2ea95a7ded3610fd282f2c0286459e49fe275bce5185501df3a106",
"accepted": true
}
],
"r": "2cd0a91dbc2ea95a7ded3610fd282f2c0286459e49fe275bce5185501df3a106"
},
{
"name": "round 1000, stanza 111: H3 accepts its try 4",
"round": 1000,
"signature": "b44679b9a59af2ec876b1a6b1ad52ea9b1615fc3982b19576350f93447cb1125e342b73a8dd2bacbe47e4b6b63ed5e39",
"message": "f652498d092acd949bad74e40683bf3824fb817980504a0c7e6722cfc5a9c0a3",
"hash_to_g1": "8f5a32d53837b00fbc0ee31ce9966435a41c5188a80ce9934d3c80588b6ad6f643ebda1b83ef89e44da9ced6205cdecf",
"body": "b326f73120b5a037953e1b58da50d242e8766a4ade2ac5113685210dfe09d63a2ae1e02e8f1dab5214c68d9fd739e6450ccf379e9e47323e993ac94d91af16d4b38157af7bd098ece86f9d2ceb06b93da6d295e1b18a6eba255a95ed50c869d5f6c14db7259bc069fe1b69cb2d562349e6407fe52ab31aa27b7cc4c859564e33",
"u": "b326f73120b5a037953e1b58da50d242e8766a4ade2ac5113685210dfe09d63a2ae1e02e8f1dab5214c68d9fd739e6450ccf379e9e47323e993ac94d91af16d4b38157af7bd098ece86f9d2ceb06b93da6d295e1b18a6eba255a95ed50c869d5",
"v": "f6c14db7259bc069fe1b69cb2d562349",
"w": "e6407fe52ab31aa27b7cc4c859564e33",
"pairing": "00585d6ec0a2617f28a00b0455e9ea364ec343489aa7f67f046ba13fc40a800d032c89a0ca5cc33761a02c2de95383650ecf9bbbc77ce2322cd225e6775e7a8e39ad0ed6e3bca1213ff44e52bce0a629e5c69cdd380e0448969b253d12e2baa8131b9e81906e44795535bbf276371d6db833ff9e0c96b76ed960e18c9c8a2b9032880bfebc681f0802d0f00b4768317c0246c202f18c369b5fe659353ee0dd803aed4fd66c98b6402ed811ca348741efff0f88ed32fdd65070bda0a63b30dfcd0c24962dad0b5587f8fc39630d37aea45f50ef458c000884b9b51ee2599496aa61b7b916ed873c6c7f11ef1db2a41cb003df3d757e4f61e5c13beb19d0fd9ebbcb15559e6252bbc5d0faae267dc7f5b25f5f2b4e3295bc4d17b308553e28599911d75b66f3f1d5d6a2795cf9bf3f154654d8bd8e64bea438cecaddee75093cf5efc7579ac55e0b5a76ae767264df544a0fdd0e95b9310d24d7bbb3a4df3bc3ae3d251d3970e483c5d4b10870409c7620531cb9d41670835f2306ac0acdd7524312eeb7b9d83de7c623724eba86ea0a7b10bbc6efecf440681271c5c3d980a975637dd26c99f632e003a9f54045bcb1df0abca2ce0afe6bb1cd383fc34efb72ae0afa3db33ac715a371e3fdfe1e28385e775b5e19e1a49ff265ce2238483c342803dd1ae3f72ecd82f17aa1207fa1f32f2c9f89c38488a381d987e90810753462d7003210c6f66b8ff590055b143b553c0825f4bac496509f88698485173da385b2230f44275eb55a3da686e12680fcb175062007100161ed9bf6de51976739c3",
"h2": "2271ed3feb6223f3f21e7fcecb89f30b",
"sigma": "d4b0a088cef9e39a0c051605e6dfd042",
"h4": "085c839d518ebc5636d8642df86b6f2b",
"file_key": "ee1cfc787b3da6f44da4a0e5a13d2118",
"h3_base": "a5dd9d066f9fdd547d25616b65c9ea76e5da38392ca02853a20ebb2c7d01fc11",
"h3_tries": [
{
"i": 1,
"digest": "f647f4537bc552e6d82a22abbef3397f1adfbe51933df3fda8b60e9d927fd9a1",
"shifted": "7b47f4537bc552e6d82a22abbef3397f1adfbe51933df3fda8b60e9d927fd9a1",
"accepted": false
},
{
"i": 2,
"digest": "f20b12601c3bae738eea421aba70ccfb7df494791c004bf5f028972258c1d15a",
"shifted": "790b12601c3bae738eea421aba70ccfb7df494791c004bf5f028972258c1d15a",
"accepted": false
},
{
"i": 3,
"digest": "f45606605279cfaffabaadda379d52a5ae0aa5453447244b702b1588e7be4200",
"shifted": "7a5606605279cfaffabaadda379d52a5ae0aa5453447244b702b1588e7be4200",
"accepted": false
},
{
"i": 4,
"digest": "a495752b48f0bcd717b4e3846ed0501b4085621321ca846b2710d805d0790699",
"shifted": "5295752b48f0bcd717b4e3846ed0501b4085621321ca846b2710d805d0790699",
"accepted": true
}
],
"r": "5295752b48f0bcd717b4e3846ed0501b4085621321ca846b2710d805d0790699"
}
]
}
''';

121
testdata/README.md vendored

@ -1,7 +1,7 @@
# DateKeys test data
Official vectors, fixtures and corpora of the DateKeys Protocol Specification
v0.11 and of the draft v0.12, generated by the reference implementation.
v0.14, generated by the reference implementation.
Another implementation consumes them as they are: this file documents every
format, so that no Go code has to be read. The rules that decide each verdict
are in the specification; this file points to them, and states only what
@ -21,12 +21,12 @@ added since. The local gate (`scripts/check.sh`) and CI run it and fail if any
committed file changes: every file below is exactly what the implementation
computes today.
The `spec` field of every file is `"0.11"`, the version this module declares,
until the author approves the draft v0.12. What the draft changes, the texts
of the verdicts of a certificate and of a seal, the profile of a certificate
and the rules of the addresses and of the padding of a locator, is already in
the files: the verdicts and the lines of `security.json`, `security_cms.json`
and `mutations.json`, and the cases of `locator.json`, are those of the draft.
The `spec` field of every file is `"0.14"`, the version this module declares.
What v0.12 changes from v0.11, the texts of the verdicts of a certificate and
of a seal, the profile of a certificate and the rules of the addresses and of
the padding of a locator, is in the files: the verdicts and the lines of
`security.json`, `security_cms.json` and `mutations.json`, and the cases of
`locator.json`, are those of v0.12.
Conventions for every file:
@ -48,6 +48,7 @@ Conventions for every file:
| `vectors/dk1.json` | canonical `dk1_` strings, and rejected encodings with their code | §18, §19, §66 |
| `vectors/cbor.json` | the CBOR profile, and one block of vectors per schema, CONTROL_CBOR in the three formats | §58, CDDL |
| `vectors/tlock_ibe.json` | H2 of the tlock IBE: the serialization of an element of GT | §63 step 11 |
| `vectors/tlock_steps.json` | steps 10 and 11 for Quicknet value by value: the message of a round, its hash to G1, and the decryption of a tlock stanza with H2, H4, H3 and the file key | §63 steps 10 and 11 (v0.14) |
| `vectors/padding.json` | the padding of formats 2 and 3: P for each content length L, and the length of PAYLOAD_AGE | §29.1 |
| `vectors/paths.json` | the paths of a format 3 head: the rules of one entry, and those of the paths of a head | §29.5 |
| `vectors/path_fold.json` | the key of R7 of segments, and their NFD | §29.5, §29.5.1 |
@ -56,6 +57,7 @@ Conventions for every file:
| `vectors/security_cms.json` | security areas with a signature of `alg` 2 or a seal of `seal_type` 2, each with its context, verdicts, results and lines | §29.7, §29.10, §29.11 |
| `vectors/ed25519_strict.json` | Ed25519 signatures and the result of the strict profile of the author signature | §29.9 |
| `vectors/note.json` | the data of the public note and the result of its rules | §24.1, §29.6 |
| `vectors/resolved_ip.json` | the IP address a name of a locator resolves to, NAT64 included, and whether a reader may connect | §44.1 (v0.13) |
| `vectors/wordkey.json` | the key of words: the words of a text, what a writer refuses, and the identity the words derive | §38.1, §64 |
| `vectors/locator.json` | the extension `datekeys.capsule` of a `.dkk`, its envelope and its locator, and what a reader rejects and uses of them | §44.1, §64 |
| `vectors/mutations.json` | the mutation corpus: the 178 mutations of §64 and further cases | §63, §64 |
@ -310,6 +312,87 @@ serialization at once. The same 576 bytes with the twelve coordinates of Fp in
reverse order, c0 first at every level as `Fp12.toBytes` of `@noble/curves`
writes them, give `0118eea9d5971745f71e3c94926f1717` and another FK_TIME.
## `vectors/tlock_steps.json`
Steps 10 and 11 of spec §63 for Quicknet, every intermediate value written
out, over the published releases of rounds 1000, 1001, 1004 and 2000 (spec
v0.14: the paragraphs "Mensaje de ronda y hash a G1" and "H3 y H4" after the
flow).
```json
{
"spec": "0.14",
"description": "…",
"profile": "datekeys:quicknet:v1",
"scheme": "bls-unchained-g1-rfc9380",
"chain_hash": "52db…",
"public_key": "83cf…",
"dst": "BLS_SIG_BLS12381G1_XMD:SHA-256_SSWU_RO_NUL_",
"tags": { "h2": "4942452d4832", "h3": "4942452d4833", "h4": "4942452d4834" },
"vectors": [
{
"name": "round 1000, stanza 0",
"round": 1000,
"signature": "b446…",
"message": "f652…",
"hash_to_g1": "8f5a…",
"body": "a73e…", "u": "a73e…", "v": "f628…", "w": "b799…",
"pairing": "13dc…",
"h2": "…", "sigma": "…", "h4": "…", "file_key": "…",
"h3_base": "…",
"h3_tries": [ { "i": 1, "digest": "…", "shifted": "…", "accepted": true } ],
"r": "20fd…"
}
]
}
```
Every byte string is hex. The top-level fields are those of the pinned
profile (spec §12), the DST of the hash to G1 as text and the tags of H2, H3
and H4 as bytes: the ASCII of `IBE-H2`, `IBE-H3` and `IBE-H4`.
Step 10, the release:
- `signature`: the published signature of `round`, the release, compressed in
G1 (spec §12.2).
- `message`: M = SHA-256 of the round as 8 bytes big-endian, the message an
unchained drand scheme signs.
- `hash_to_g1`: H(M), hash_to_curve of RFC 9380 with the suite
`BLS12381G1_XMD:SHA-256_SSWU_RO_` and the DST `dst`, compressed. The
signature verifies: e(H(M), `public_key`) = e(`signature`, G2), with G2 the
generator of G2.
Step 11, one tlock stanza of the round:
- `body`: the stanza body U || V || W, 128 bytes, and `u`, `v` and `w` its
three parts: U compressed in G2, V and W of 16 bytes.
- `pairing`: e(`signature`, U), 576 bytes in the order of `tlock_ibe.json`.
- `h2`: SHA-256 of `IBE-H2` and `pairing`, truncated to 16 bytes.
- `sigma`: V XOR `h2`.
- `h4`: SHA-256 of `IBE-H4` and `sigma`, truncated to 16 bytes.
- `file_key`: W XOR `h4`, FK_TIME, the file key of OUTER_TIME_AGE.
- `h3_base`: SHA-256 of `IBE-H3`, `sigma` and `file_key`.
- `h3_tries`: the tries of H3, in order. Try `i` hashes the counter `i` as 2
bytes little-endian followed by `h3_base` (`digest`), then shifts the first
byte of the digest one bit to the right (`shifted`); the try is accepted
when `shifted`, read as a big-endian integer, is below the order r of the
groups (spec §12.2). Only the last try is accepted. The shift moves every
bit of the first byte; clearing only its top bit gives another r.
- `r`: the accepted `shifted`, the scalar of the check r·G2 = U.
The last vector is the first stanza of round 1000, in the order of the
generator, whose H3 needs at least three tries: it accepts its fourth, where
clearing the top bit would accept the second. A reader checks every value
in this order and the check r·G2 = U.
The generator chooses `sigma` and `file_key` per stanza, derives r, U, V and W
with its own H2, H3 and H4, and checks the result against the libraries the
reference uses: `message` against `DigestBeacon` of the drand scheme,
`hash_to_g1` against the pairing equation with the published signature, and
the body against `tlock.TimeUnlock`, `DecryptCCAonG2` of drand/kyber and the
tlock identity of `agewrap`, which give back `file_key` only if their H2, H3
and H4 are the ones written here.
## `vectors/padding.json`
The padding of the payload of a capsule of format 2 or 3, spec §29.1, where L
@ -457,7 +540,7 @@ in `security_cms.json`.
Security areas with an author signature of `alg` 2, a CMS signature with
certificates, or a time seal of `seal_type` 2, an RFC 3161 token: 135 cases,
each with the context of its capsule, the verdicts, the result of each signer
and the lines of the draft v0.12, §29.7, §29.10 and §29.11. They complete
and the lines of v0.12, §29.7, §29.10 and §29.11. They complete
`security.json`, whose areas have no valid signature or seal of these kinds.
The file is frozen: the certificates and the tokens are made once, with test
keys, so a second implementation reads them and must reach the same verdicts
@ -585,6 +668,28 @@ feed, a space at either end, U+202E, U+200B, a byte order mark, a
noncharacter, a byte that is not UTF-8 and the UTF-8 of a lone surrogate,
refused.
## `vectors/resolved_ip.json`
The IP address that the name of an https address of a locator resolves to,
which a reader checks on every connection (spec §44.1 of v0.13):
`ip`, `nat64`, the NAT64 prefix of the network that the reader knows, or ""
for none, and `result`, `ok`, or `error` with the text of the reference in
`error`.
```json
{ "name": "the well-known prefix with 192.168.1.10", "ip": "64:ff9b::c0a8:10a", "nat64": "", "result": "error", "error": "locator: an https address whose name resolves to 64:ff9b::c0a8:10a, an address of NAT64 that holds 192.168.1.10, an IP address that is not public" }
```
A public address is accepted. An address of NAT64 (RFC 6052) of
`64:ff9b::/96`, or of the prefix of the network, counts by the IPv4 address
it holds, at the positions of RFC 6052: the cases put a public one and one of
several blocks that are not public in each, and the prefix of the network in
each length of RFC 6052. A prefix of another length, with bits after its
length, outside `64:ff9b::/16` and the public IPv6 addresses, or of IPv4, is
refused. Among the addresses that are not public: IPv4-mapped, 6to4, Teredo,
link-local, unique local, loopback, and the local-use prefix of RFC 8215
without the prefix of the network.
## `vectors/wordkey.json`
The key of words of spec §38.1, the cases that §64 of v0.11 asks for, in

104
testdata/SOURCE.json vendored

@ -1,140 +1,142 @@
{
"module": "g.activething.com/go/DateKeys",
"commit": "084728d3f7294cd93f644a5f87176a20e2a5de6e",
"commit": "39b2033e3ccf54a91bda8d7e3ced39b26dbfa58c",
"files": {
"README.md": "3bd654992338f0450922da4907644eee20cf0792d2cea80fc26c5accec7e514c",
"README.md": "799d72ac1b30d8dc3769732712db40ad3c24ae6d58099280e14b39b3fdeb232c",
"fixtures/empty_payload.dkc": "871e9bf05b52bbae17f3adfbbf97b46e7f0e53aa8f57bcaa506e43f36f53a9d4",
"fixtures/empty_payload.inspect.json": "373e5d012b023ad58bbb54cbdffe0bed9e50c637438a4083ddb74d5414c59f59",
"fixtures/empty_payload.json": "588c2573d99b953d490e3d9caaa392b804398b1f91d4f95492a01dd5e7e1f8ba",
"fixtures/empty_payload.json": "6da4e8b868fe96c198730bd0d4416cd2133a4a601296519eca174200bce98b50",
"fixtures/empty_payload.plaintext": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
"fixtures/format2_empty_payload.dkc": "7aea2b5aa48b1a46053716f733d50fab9cd0b80b1be67631bcc06c5bb765dc21",
"fixtures/format2_empty_payload.inspect.json": "d0bb7356d3970986e6b197640f0b3b38abe9fabf1740b745171b358aa28903ff",
"fixtures/format2_empty_payload.json": "0ddce7b0888be7220d1de108d645cfec9fe15d2e33bc00180ae0a0f417a0f1a9",
"fixtures/format2_empty_payload.json": "46acca809abefca332fea81cc124b8506fbbb0655e66983cdf614f3c78c0e8a2",
"fixtures/format2_empty_payload.plaintext": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
"fixtures/format2_time_and_key_portable.dkc": "600892659fe4890223e895876275f656995d170fda42b07fb2bec0ca51ce4b43",
"fixtures/format2_time_and_key_portable.dkk": "095b7bc516a22bf0c2366f0af3cd48bfe857a2354d6e2a9b285278b95e450fe0",
"fixtures/format2_time_and_key_portable.dkk.json": "7365f2050bd124daf15b3c623254073389e47e43b13e09fc6e03e79b292ecf0a",
"fixtures/format2_time_and_key_portable.dkk.json": "e32128d0a1cba1fa1a6d8f5736728fe5d2342ac36efddfd8884cd5b256a369df",
"fixtures/format2_time_and_key_portable.inspect.json": "522c9a98e5911c86f5f24f278971cf7c7588f6c88aaede3dd1129ee4e042868a",
"fixtures/format2_time_and_key_portable.json": "203e39ef29d74a2f28fb7d8530e01869ece0fa8c8e2c86e81a758eca15f39268",
"fixtures/format2_time_and_key_portable.json": "20ce55ecb3d2aec77592dd56c1930f3f53594b83c8a881317460e01b5cae1a24",
"fixtures/format2_time_and_key_portable.plaintext": "937492203d207d6fe36161b8696bf1f05b8b4cc56d855c44853f4b76aad3a05b",
"fixtures/format2_time_and_key_recipients.dkc": "1a44fd8708c92e2e0a10cfcb1d864a71331ea9af25d97e1a42e969dc898959e3",
"fixtures/format2_time_and_key_recipients.dkk": "2ad99b1556086ec311d7f0b3bd3aaba05e75f45c4fa22490b0d5e8bb0b1a222e",
"fixtures/format2_time_and_key_recipients.dkk.json": "57edcc56c16ba7e17e6b7ba079688f04431967a90ce3592f065c838a0c9b2a35",
"fixtures/format2_time_and_key_recipients.dkk.json": "5223a3b01b6e0c8f9cb6244e4edb9eec0d5c2b90111b2f748f12f330431df920",
"fixtures/format2_time_and_key_recipients.inspect.json": "d975a9eddd45f5d59618ea2455d574d807e57daf08585e840d07986f261bf099",
"fixtures/format2_time_and_key_recipients.json": "2a1dd1fa810f0b76ccee04320061ffc664c744da1206d60dbb14e0ac01b9635a",
"fixtures/format2_time_and_key_recipients.json": "3f3b85f0b870867335bc3b0a820d6022e490904878d65a84984e347da2f49f9c",
"fixtures/format2_time_and_key_recipients.plaintext": "0e9fd50e98a85953aa9cf07a11ee3c62bb3d7622f344f1c6ce744d1ed111659f",
"fixtures/format2_time_and_key_sixteen.dkc": "7aaac5c18f216bf53df326ecc817179640a53408cf25dfd50488910a762dc381",
"fixtures/format2_time_and_key_sixteen.inspect.json": "492cd0b0dca0030df9332b098d22b4f6aa4adfb57d5540de5325e3e6d5aa3667",
"fixtures/format2_time_and_key_sixteen.json": "5686913ae6c4dd94fc90a96d28d2f7f7ef6fdd5213416d27c7fd85a423be1023",
"fixtures/format2_time_and_key_sixteen.json": "ef2b4107e9b24d350681a6c5f00476d7bbf987f65b6a1a2070255cc4b08b6308",
"fixtures/format2_time_and_key_sixteen.plaintext": "e5abfb7b5fdbf297277b6cc4729c15d85435e890b653c2e2342b7031ecd9eab9",
"fixtures/format2_time_only.dkc": "f5a40ac6b8a08a0c12db6114c2bca23522d6a77b512b509a217fb15f367813c4",
"fixtures/format2_time_only.inspect.json": "40a8683f5204c7b6369558e4775ae6bb6fed978097e9e660de64c06c167b043e",
"fixtures/format2_time_only.json": "db863e7480eae1e1a4df985aa0cfb8456de67a1f0f5a6bcb3dd5fadf2837eb06",
"fixtures/format2_time_only.json": "aa844c0b985cb6822a0ca4a2fa9acfa37260dfe3358336ee2735351a6c853648",
"fixtures/format2_time_only.plaintext": "53b8ee821fb7b678e89d4f93da1812339f6cc1ab83aac6ed1432db99df784be5",
"fixtures/format2_time_only_bloque256.dkc": "aae769c30d04920801d8b293d30864fbe223c9c9353ec2b4907a1ee1996e39f9",
"fixtures/format2_time_only_bloque256.inspect.json": "767766414ad547f0ba95b40059e14b62c81b5489a2afcbc683bf227334d61be7",
"fixtures/format2_time_only_bloque256.json": "9c7db52db560ec1203e811a214d3c6dd5324dac586331332f774a3fccc6ad515",
"fixtures/format2_time_only_bloque256.json": "63b9c57c6d4b8be71c584afa79584f47f6365677adcefe07db9c2162827df922",
"fixtures/format2_time_only_bloque256.plaintext": "53b8ee821fb7b678e89d4f93da1812339f6cc1ab83aac6ed1432db99df784be5",
"fixtures/format2_time_only_extensions.dkc": "fb406100d5703a2e888983b3175ed34a09a34469cc722256e5cf535dd728fbe9",
"fixtures/format2_time_only_extensions.inspect.json": "1595d793c1d35bfdaa36576b75f53d734a9e07c2a8a12036295dbaee7f5a7f5a",
"fixtures/format2_time_only_extensions.json": "5f48a438c8220951df7734fb4fd2172206827145597c43307d12514ce6c3c85a",
"fixtures/format2_time_only_extensions.json": "2f7f4664bc9845d6f976616b8347ae5bb0d0e380c5c1bc396d83b3e22e432c2f",
"fixtures/format2_time_only_extensions.plaintext": "1129768e195e2f1e50b7a6f926b6eebef120212c29b5642c8a662c503b2a9131",
"fixtures/format3_area_1024.dkc": "41ea2eed0293e4fef7f4a307b7f16aaf1339f5bf6f4ded7a6a9ae1aebeb0133c",
"fixtures/format3_area_1024.inspect.json": "06e6b347926242ae5540f16a053f6a3545743986989bc0be8c39918bce968686",
"fixtures/format3_area_1024.json": "d2722c99bf6c543a1eeb1fdd9cf57506d71b0a324b33458865b043698b7729d3",
"fixtures/format3_area_1024.json": "59a9e7d5575a57154d524ddeeba6cd84ac746da6831ba66588d7bb718953e3c3",
"fixtures/format3_area_1024.plaintext": "043830350a287cba1fd50f6c063f70a74209895ff0cf03147bb4e5ccdfc206b5",
"fixtures/format3_bloque256.dkc": "ff18444f434164ba8e7b26d38c76c7855dc6b0593b2fc8b4e9a95dbf9252d55d",
"fixtures/format3_bloque256.inspect.json": "d0007080da5ce079c6ffa3a56bf8ce519d2846a31cc1082fd027f401e4f7bade",
"fixtures/format3_bloque256.json": "9fe4131d6e108a8ed2206ae33ced33ed6ca770b7a0111748cf208fcdd4a916c4",
"fixtures/format3_bloque256.json": "71dd9668f9dd1121dbd86de46c6561b821bb0fd5b90135685d4c4744a02a1a06",
"fixtures/format3_bloque256.plaintext": "9ff2843e40bc1280dbfea8dce9386a42d06e8b43742c2cc6257540770cb53c73",
"fixtures/format3_comment_only.dkc": "7f98a89413f08655bbbab28b96585dfa6173c1705dd81a900deba2100d19f2ef",
"fixtures/format3_comment_only.inspect.json": "fb56eca8bf42c8c47fde4a1d6b2580fcff386f2f58b566820731dce388542196",
"fixtures/format3_comment_only.json": "8731bcb3641d7f99f63729e85f1e2960d3f38a6ac64bb3321369bfe3e21fa2b1",
"fixtures/format3_comment_only.json": "42136f5029312236554a12569e9eca36b1ce5651d7db9e20ef3cb5fba4553234",
"fixtures/format3_comment_only.plaintext": "bc5b05885e608f036d8a14fde8738a8c53b395b71c3bcee99c1eab37ea23e80e",
"fixtures/format3_note.dkc": "da1bee54231252a0fd98439e24588125c5521f6e5a2c6641b499e6b22192c0eb",
"fixtures/format3_note.inspect.json": "dcebb62407097c757bb62552be5d315155ba8a35dec175e95c3f6fddd6e81869",
"fixtures/format3_note.json": "b2778f8991c2ad9b464d0f45f495c94aae0da97a646df1ce401cf8847b9ce02c",
"fixtures/format3_note.json": "31eb7b8f64686e818ea9d621f9a1bba7b68c6781dee0919a66cd31e31f0eedec",
"fixtures/format3_note.plaintext": "0468737c5141be936f59d2823122e87661d4ae155a1df036b4cad1ea6620c17b",
"fixtures/format3_seal_unsupported.dkc": "ae3219fbdbd1de4cef6fade1a3fb3f6e5d5e2e8af54d9516b05f0a48136913ad",
"fixtures/format3_seal_unsupported.inspect.json": "b3a7a1038192394c1f844fed994011646f3e78d1cf311c18cb5c936249b95f14",
"fixtures/format3_seal_unsupported.json": "96e9338350ade00226b56e8461e54fbfdda1266de4e63e4c25eef6f84c96801a",
"fixtures/format3_seal_unsupported.json": "79d2204d7c769a54b98e3b023da6a241dadbee065142f29ffaab3fb9c0a549e8",
"fixtures/format3_seal_unsupported.plaintext": "0f865221d26545762712271faf835cb2e9980f8fb15c9d3b94fb6747cf16c1df",
"fixtures/format3_sealed.dkc": "dde5a072d8783227d28279d06d3d226a1fb967c766da626f889d1c6fd76ac9c7",
"fixtures/format3_sealed.inspect.json": "b984a0755332bad838025e47f8e917b9f18b9bb5c068c2d1ef0070db8e42849c",
"fixtures/format3_sealed.json": "acfec2917e798cd1e3f2b38e1ff4f6cee7474ca6b7684e739c8143b291fe91e2",
"fixtures/format3_sealed.json": "ffb93eff785a8bf045d3b6cbda0f8f25feb62337ccf90e7debb96fd1e9592e9f",
"fixtures/format3_sealed.plaintext": "aea0f5feb40acd81ca3b02dd21ea15510234da3ab52b374322f3206e7632d47b",
"fixtures/format3_security_v2.dkc": "3d02b39ace010d74604554e378d22fe5ce00cecd998c0f797d657b17620b8912",
"fixtures/format3_security_v2.inspect.json": "dba4d21f1d4e228a17c761bae9a4b8c5a91cd9c0123e3141d3782a43c139321e",
"fixtures/format3_security_v2.json": "78218ca96fdfe6629853c4b8826e2ba11ee010677e54169ba8286ff9d00c9d6a",
"fixtures/format3_security_v2.json": "72b980a6377ef0273ad2b82157851d37c9ba35da44b3bc6c75f13bf95ba6b3c7",
"fixtures/format3_security_v2.plaintext": "0c58ef40e4b1c7afde0f6e0a1f4ed7e3d45405757c5143a095f0c2b58042669f",
"fixtures/format3_signature_unsupported.dkc": "e8e3106d8d73bb7b845062e0fe42af21df7d7cd8f63c335cab8dedb3e690df31",
"fixtures/format3_signature_unsupported.inspect.json": "6db653db27604cb07e2cb2c23545fb68542c121e85002762f26c6d39e63bf00c",
"fixtures/format3_signature_unsupported.json": "427dd9201e57c2c6242722bc5b2882dd310225c40b883f9339cdd6c04f87b751",
"fixtures/format3_signature_unsupported.json": "44dacb87b9c170c5ed0b2d565cfb7542c1e1face2624f4c26a40bb4fcbe65810",
"fixtures/format3_signature_unsupported.plaintext": "9fe05e6b3a463371b33fc6a81b81d538e572789a8d03ace9f752a931f4ca4728",
"fixtures/format3_signed.dkc": "3c7d3c9e24c02853a0c7761b93bea1120b27fce396468d8d0f68e53aeb668c5e",
"fixtures/format3_signed.inspect.json": "7c37054d542869e766147350e2fa72695f209d39a03726757008e2c2291b0e97",
"fixtures/format3_signed.json": "9d602cda39ce124b604410101a63bd981d21677f9bebb4eda5e4dedbd93531bb",
"fixtures/format3_signed.json": "95e3161f90c84edb026c6d90c75e1f293646ac8bdfc73b03d76ce7ac6c2efaeb",
"fixtures/format3_signed.plaintext": "3de3ccab0ac74f95a76aa45c0f85e1749d4b4a051d87e81828eff6bf24372000",
"fixtures/format3_signed_cms.dkc": "d658f8d5ac2c5550c07b8f8fd6883b2f6dc02ceafc47d436ea02d8950b2548d2",
"fixtures/format3_signed_cms.inspect.json": "afadf530e8146687b25c03f26100ebff18e7f481e0ef09378816bad582270de5",
"fixtures/format3_signed_cms.json": "f05befb5fa9aafa2ee55fc7f3abe4832878b1950ae3b2e20915936ce20f12a9d",
"fixtures/format3_signed_cms.json": "8a6047ba60047462f41ebe2e52c5ab4c6e13c60cf0bebd478a5f1611d5e0b88a",
"fixtures/format3_signed_cms.plaintext": "31c35eeeee856277b605fe44203a8f4786bb8f591eda3b6ee58252df5b3cf2f0",
"fixtures/format3_single.dkc": "9f68664af8733255084be9036a100b75d27bd16106bf0acff94ce469dd1d1743",
"fixtures/format3_single.inspect.json": "7878da921c17aada50e00d5911ea97e8558633a1684fb96acbd00d6f1b117529",
"fixtures/format3_single.json": "c99a175287c9555b74e8ae813326f3d7cdce0692a0144ee8e47158775970bcd4",
"fixtures/format3_single.json": "45a497461b8128f0ec89cea43171b370cc5025592860c9f3fdd732a0000e7c0d",
"fixtures/format3_single.plaintext": "74f9dd84d07e95a31e6dc063bf65ce414197acf84aac445eabc76fa4e3f24936",
"fixtures/format3_time_and_key_portable.dkc": "680d29962e575689a31543df28433dae7737abd9a793e9cae92ef40920d09636",
"fixtures/format3_time_and_key_portable.dkk": "54cc64d849395234b3e093e47f432b72781ccc13f455c9ef394e3554ab566751",
"fixtures/format3_time_and_key_portable.dkk.json": "36d343d729d126990754be34f0f67c9faf1529b7d8946e6b34b4d0de5b46b744",
"fixtures/format3_time_and_key_portable.dkk.json": "388e05ce647fc9399fc5ce4fcb5478320ec340013135b0fc7eb8c5b238015466",
"fixtures/format3_time_and_key_portable.inspect.json": "f269af86f5bf84c22a1038fd78db146af93166150755eb1ca35cf15e224035b4",
"fixtures/format3_time_and_key_portable.json": "ca6623323ada21445c1c131cf278b060c2b22abc670f0889b30540f0abbb8dc6",
"fixtures/format3_time_and_key_portable.json": "6b2831efeec32d2a92301acfa20e74446bcdc7f446d0b9cde1d5d87fd5c6d4b5",
"fixtures/format3_time_and_key_portable.plaintext": "e6684cf607c102bfa4d6977742d5a7520b0e09483282181bd6d8f5f4ba5f7726",
"fixtures/format3_tree.dkc": "217f378faaf795f6a9c416b564fb8931bb2e896918aee870120fd14f9a5da7d1",
"fixtures/format3_tree.inspect.json": "643a9dfdc2d0c44b8a1636909c66ed81bfd8c50df2a4cad6566832a8e47ba938",
"fixtures/format3_tree.json": "1d11d2f12603542039ac6b396ffec69e92bde2689fd54dfc9ef800b6b9f7746b",
"fixtures/format3_tree.json": "93a0880b55fedff0e66167c71b89ee7ae595b033fbcab7484233025e5ac42eaa",
"fixtures/format3_tree.plaintext": "f69ac5f450966f7d0e9161aa37451d4260b194a750e3e132c02e8a15ba561cfa",
"fixtures/format3_unsigned.dkc": "317ab722ae3812a25ddd78b4c98c586363e5587c8d3634c881ce7c421af19168",
"fixtures/format3_unsigned.inspect.json": "2f52f7286d6bd4c846ddd63b10b4989b25d17501a989a2e9deb25e4db0859e1a",
"fixtures/format3_unsigned.json": "8ab91d2505d8c29eb09a5ac6060b16c48f5b5618e82ac8f28ecbe926df4ec009",
"fixtures/format3_unsigned.json": "6098828d2be7d2f5db4b7535895274136f4ad404dddaf8fe70cd855934412da4",
"fixtures/format3_unsigned.plaintext": "25527e5e2e1ce02056d4419fb89f7b0ce35e4920f93217f58dcf62a4377f8af5",
"fixtures/time_and_key_portable.dkc": "2e97878078bae6358037a9c264f379a3cbe839f767d69836b0343f35657b2972",
"fixtures/time_and_key_portable.dkk": "e528fa2c832c91119f0684bb9d6fb3c4c2d0d55183482890e7c4fe92f668426a",
"fixtures/time_and_key_portable.dkk.json": "b057c25c9950533c01122cb907a43242b7538a7d427f8fa3cfa34ab6dfb7e390",
"fixtures/time_and_key_portable.dkk.json": "fd98c997a7684e9a350c489bf6d0ff9e24e38ab8c1665cc203fa31a29fb47e6a",
"fixtures/time_and_key_portable.inspect.json": "238c1f8ca6a6bf69f20bf26f5676e89a0b07e83b4362628560fc2f7522a202c9",
"fixtures/time_and_key_portable.json": "26467c1b6feafde9b6b49742a87bdb648c1effff6ac99b824561566282ea60ba",
"fixtures/time_and_key_portable.json": "45a91d8ad99a5e1265de29af4130d0c1a7c3a0a7e6caeda7f758e6372c7e4c0f",
"fixtures/time_and_key_portable.plaintext": "937492203d207d6fe36161b8696bf1f05b8b4cc56d855c44853f4b76aad3a05b",
"fixtures/time_and_key_portable_extension.dkk": "0bf463a7c65627b7dda2234d728df89ec5b835816a2a37b91497d8fecc5ea548",
"fixtures/time_and_key_portable_extension.dkk.json": "89a96dd9dd1fe30187758d78211a6fbcb4b8cb7487e3a2f224e38874b246e834",
"fixtures/time_and_key_portable_extension.dkk.json": "5ca66340a242c4165f1febb0400dc52f0f47011e7befa8fa6c3b2c144bb6d3c0",
"fixtures/time_and_key_recipients.dkc": "69ac110380f5d768b5b6afaa157a50ed17d8ceccfbd4604ffa5b6da38539b635",
"fixtures/time_and_key_recipients.dkk": "19f6c47150c3194712d454f43c7392b7344e6b4e7b074d83e9ca5f563a8e072f",
"fixtures/time_and_key_recipients.dkk.json": "c3712a6afc1e0ad73615ec4329a0009261b32536fd630aff3b01f28b9384b6e9",
"fixtures/time_and_key_recipients.dkk.json": "c9e1a2f63b8e2218026e5a2591f7acf8b42c3803f837c38ce6dc878d3450d40a",
"fixtures/time_and_key_recipients.inspect.json": "4b32c63d18febe0772837fbcd75a0c971e31378bf799201b720a9d32bdcd8c2b",
"fixtures/time_and_key_recipients.json": "a00a49e7140fff35f253e42d13d221cfb339a2e59b7b53dbb3b8a32dd00cfe4b",
"fixtures/time_and_key_recipients.json": "db62a8647a1bfe098b05a7fe9f723f40da399d696c2bcd4a65547f7458670350",
"fixtures/time_and_key_recipients.plaintext": "0e9fd50e98a85953aa9cf07a11ee3c62bb3d7622f344f1c6ce744d1ed111659f",
"fixtures/time_only.dkc": "99e915810d595f1092700b728f5e5081d78efe83f5343e76325b1bcc2c33ccf2",
"fixtures/time_only.inspect.json": "a4d45f945d6ba6616c01e120ac1133785e5279fea7dcab706b5feee287be8884",
"fixtures/time_only.json": "cfb7a43154189692ef3a1f08e9a12b5855df1b95c10ae13e05935160a3f9aaaa",
"fixtures/time_only.json": "c7920af7a8afd5873e95363d1b2411715355263dcb6f87c11d3b4102f200fc1b",
"fixtures/time_only.plaintext": "53b8ee821fb7b678e89d4f93da1812339f6cc1ab83aac6ed1432db99df784be5",
"fixtures/time_only_extensions.dkc": "0446c9b73e267adcb24e5cc89afba2544a386ec9a050016e06517a4a57aa2085",
"fixtures/time_only_extensions.inspect.json": "6f957b028da8a4a495b5e951ced0b91e0678128dac4e962b02d024b9439a0ba1",
"fixtures/time_only_extensions.json": "c5b6b253c03a95a3878538d98c8114041042f8dce8dbbb382727651781f4a146",
"fixtures/time_only_extensions.json": "29eea35b3a3e157c6af442358058d71e5e947ad1cc7bd29b72a86c3c4d2f677b",
"fixtures/time_only_extensions.plaintext": "1129768e195e2f1e50b7a6f926b6eebef120212c29b5642c8a662c503b2a9131",
"vectors/cbor.json": "79d750994eafc4fa718b0997fbb0a70673dc08a129efcd7d0ddc2db922406913",
"vectors/dk1.json": "f5547be887d6ca405518636925018fdec22a5027009651705b07aec80151314a",
"vectors/ed25519_strict.json": "342d866584435b291832d34deb9ce17aef10d99db148b85443e39e9bed321d0a",
"vectors/head_schema.json": "3c7bcf57aa22943cd17005ea9ce426c0b3e7c365a0527a790b5e9e1973f9753f",
"vectors/inspect_differential.json": "e8c99d025ec761690e71ee0c6adfcfd5b680cdcb89024463d8ebbc24be6b0774",
"vectors/locator.json": "01370395ae53b363b5b0d0e2733fcb6fe0e20d7c64a5d20325ed3aa92beec859",
"vectors/mutations.json": "30719f97cba6e95fba0e077a5418cee50e216efd86080334c7d7e2d8c6dc247a",
"vectors/note.json": "d345861417b5fb8e3b1a56f39fdc58c7539cff85240496de3fd6edf7322a9ce2",
"vectors/padding.json": "53d71fc9679d6eda3ba7b7a15752927a1a5fe026bdbd7f93b0ce3569a6a4b22a",
"vectors/path_fold.json": "94c708bf04379984326f786ba1a954a94dc958fa06013c525e7f7a2c14f856bc",
"vectors/paths.json": "3466da7dd82d82c1c43fe956eb91e674065d159c9326e3bc0dcbbe2c6b774251",
"vectors/profile_quicknet.json": "c15ecb111635ecae2084da8511efbee133e97ff07c1c951658b036ce05b69781",
"vectors/quicknet_rounds.json": "0f11bf5c5da88b1e929bb39439001a3a1f8447a85a4b3a25296d40d71a261e50",
"vectors/security.json": "158df388fe881b75989e319eaadc88437b5031cd62f6c8cfc9cc421c3eacff89",
"vectors/security_cms.json": "1ef9c74f1998fc06ab459ab885e3654bf4375f5baa276ea2a1de3f08e64a32b4",
"vectors/tlock_ibe.json": "27e9d9ebac4f07700661d2b4c524b10d065c9698e9acc68baa3d2c01bdbb24f2",
"vectors/wordkey.json": "882593e1ed63cb5cfa6231a1bdc4060a04be5233db1a971d9dcbfff3031c071a"
"vectors/cbor.json": "b209674a9967657f9ea33ca0cc9d63e185c0007f192bfc6af182d7e97923d646",
"vectors/dk1.json": "d403ff60a5e1ecb9d21950ff4111e496462b367a08b536e3167952e245acb478",
"vectors/ed25519_strict.json": "daa4022006b0d8c1b6728c74b1abdc5c700979d5e9b5ea7e3966dae45c81c687",
"vectors/head_schema.json": "995a81cf9497a13fae8e22d04f405d4bc7daf5c48023085677ecd0cd8984adcb",
"vectors/inspect_differential.json": "97d9f0f47fb30d16373c52242e5ffa364256ff728177e5dce2fa9d532ba116d7",
"vectors/locator.json": "38f72731dd74db59253950c820316eed19281b9c63a23817d501dea3fbbd6ba9",
"vectors/mutations.json": "76d8d572ce5743ff56242d45d507124a1309d5871a701095c0e2cbcadd3bdfee",
"vectors/note.json": "a0e44b493d5d7c7548d727b79122dad0151c1598b0db6a358844e8b193635223",
"vectors/padding.json": "3555875043cc2961af43fbdb0b26eb198ce7822547d6d909b8e327511c732ed5",
"vectors/path_fold.json": "bd5db6c03d4ed4920c5da084ec0b8cfc584f6ace387b123c589c17449cb43896",
"vectors/paths.json": "50bdc57d6650143478e5f58421a6adf7511deacc35e3fc1d49d6b0f37d792fb9",
"vectors/profile_quicknet.json": "623d920e712e0b4eafdf85d4e3d363d81c33427c484964c4e12e5f695982b28f",
"vectors/quicknet_rounds.json": "beb38f35cda20be4b5dc17efeccd3ec82d676624a2b1f4030d2a317b618ce038",
"vectors/resolved_ip.json": "01c676cbdb815a3b0b0a2416f392a4b855f238f9378f3bf7efeae4a25ce50cdb",
"vectors/security.json": "7eb7dbce804c62ca8cc3f080ea192b2a7b717b5d4716d2d061dd06855d0818e6",
"vectors/security_cms.json": "139d9bf130f3932aa73cfe68f8d7ce7f728b2467b857732ff5404dd4b4e242d4",
"vectors/tlock_ibe.json": "37c07ec4f1806dfdbbcc5fe2b1c53a92695c6ba8702a6e9c1e7010d58ae936d9",
"vectors/tlock_steps.json": "d43ee8b71661803d21988266bf3fe00f3a36b41c74ebc1675b383f1323a87af1",
"vectors/wordkey.json": "c5241f306de01b1ae3437b8dfec7b2b117d1f305ebecae71c36d0957ff987e53"
}
}

@ -1,6 +1,6 @@
{
"description": "time_only capsule with an empty payload",
"spec": "0.11",
"spec": "0.14",
"format": 1,
"file": "empty_payload.dkc",
"sha256": "871e9bf05b52bbae17f3adfbbf97b46e7f0e53aa8f57bcaa506e43f36f53a9d4",

@ -1,6 +1,6 @@
{
"description": "format 2 time_only capsule with an empty content: L = 0, P = 256",
"spec": "0.11",
"spec": "0.14",
"format": 2,
"file": "format2_empty_payload.dkc",
"sha256": "7aea2b5aa48b1a46053716f733d50fab9cd0b80b1be67631bcc06c5bb765dc21",

@ -1,6 +1,6 @@
{
"description": "portable X25519 .dkk of format2_time_and_key_portable.dkc",
"spec": "0.11",
"spec": "0.14",
"file": "format2_time_and_key_portable.dkk",
"sha256": "095b7bc516a22bf0c2366f0af3cd48bfe857a2354d6e2a9b285278b95e450fe0",
"credential_id": "e3c7be83cbf1fbd6b115c96411b3bd01",

@ -1,6 +1,6 @@
{
"description": "format 2 time_and_key capsule with one credential, a portable .dkk, and 15 dummies",
"spec": "0.11",
"spec": "0.14",
"format": 2,
"file": "format2_time_and_key_portable.dkc",
"sha256": "600892659fe4890223e895876275f656995d170fda42b07fb2bec0ca51ce4b43",

@ -1,6 +1,6 @@
{
"description": "portable X25519 .dkk of format2_time_and_key_recipients.dkc",
"spec": "0.11",
"spec": "0.14",
"file": "format2_time_and_key_recipients.dkk",
"sha256": "2ad99b1556086ec311d7f0b3bd3aaba05e75f45c4fa22490b0d5e8bb0b1a222e",
"credential_id": "93cedf68421710e83908ec683b104436",

@ -1,6 +1,6 @@
{
"description": "format 2 time_and_key capsule for three known X25519 recipients and a portable .dkk, and 12 dummies",
"spec": "0.11",
"spec": "0.14",
"format": 2,
"file": "format2_time_and_key_recipients.dkc",
"sha256": "1a44fd8708c92e2e0a10cfcb1d864a71331ea9af25d97e1a42e969dc898959e3",

@ -1,6 +1,6 @@
{
"description": "format 2 time_and_key capsule for sixteen known X25519 recipients, without dummies",
"spec": "0.11",
"spec": "0.14",
"format": 2,
"file": "format2_time_and_key_sixteen.dkc",
"sha256": "7aaac5c18f216bf53df326ecc817179640a53408cf25dfd50488910a762dc381",

@ -1,6 +1,6 @@
{
"description": "format 2 time_only capsule, padding code 2 (reforzado): L = 78000, P = 79872, two STREAM chunks",
"spec": "0.11",
"spec": "0.14",
"format": 2,
"file": "format2_time_only.dkc",
"sha256": "f5a40ac6b8a08a0c12db6114c2bca23522d6a77b512b509a217fb15f367813c4",

@ -1,6 +1,6 @@
{
"description": "format 2 time_only capsule with the content of format2_time_only and padding code 1 (bloque256): L = 78000, P = 78080",
"spec": "0.11",
"spec": "0.14",
"format": 2,
"file": "format2_time_only_bloque256.dkc",
"sha256": "aae769c30d04920801d8b293d30864fbe223c9c9353ec2b4907a1ee1996e39f9",

@ -1,6 +1,6 @@
{
"description": "format 2 time_only capsule with a noncritical PUBLIC_HEADER extension and a noncritical CONTROL_CBOR extension",
"spec": "0.11",
"spec": "0.14",
"format": 2,
"file": "format2_time_only_extensions.dkc",
"sha256": "fb406100d5703a2e888983b3175ed34a09a34469cc722256e5cf535dd728fbe9",

@ -1,6 +1,6 @@
{
"description": "format 3 time_only capsule with a security area of 1024 bytes, as a later version may write it, holding the empty security",
"spec": "0.11",
"spec": "0.14",
"format": 3,
"file": "format3_area_1024.dkc",
"sha256": "41ea2eed0293e4fef7f4a307b7f16aaf1339f5bf6f4ded7a6a9ae1aebeb0133c",

@ -1,6 +1,6 @@
{
"description": "format 3 time_only capsule with padding code 1 (bloque256) and one file of 20000 bytes",
"spec": "0.11",
"spec": "0.14",
"format": 3,
"file": "format3_bloque256.dkc",
"sha256": "ff18444f434164ba8e7b26d38c76c7855dc6b0593b2fc8b4e9a95dbf9252d55d",

@ -1,6 +1,6 @@
{
"description": "format 3 time_only capsule with a comment of two lines, the second one with a TAB, a declared author and no files",
"spec": "0.11",
"spec": "0.14",
"format": 3,
"file": "format3_comment_only.dkc",
"sha256": "7f98a89413f08655bbbab28b96585dfa6173c1705dd81a900deba2100d19f2ef",

@ -1,6 +1,6 @@
{
"description": "format 3 time_only capsule with a single file, nota.txt, and the public note «Cartas del viaje a Lisboa» in the noncritical array of PUBLIC_HEADER (spec v0.11, §24.1)",
"spec": "0.11",
"spec": "0.14",
"format": 3,
"file": "format3_note.dkc",
"sha256": "da1bee54231252a0fd98439e24588125c5521f6e5a2c6641b499e6b22192c0eb",

@ -1,6 +1,6 @@
{
"description": "format 3 time_only capsule with an author-signature of alg 4294967295, as in format3_signature_unsupported, and a seal of seal_type 4294967295, reserved for tests, with a random token of 32 bytes: verdicts F1 and S1",
"spec": "0.11",
"spec": "0.14",
"format": 3,
"file": "format3_seal_unsupported.dkc",
"sha256": "ae3219fbdbd1de4cef6fade1a3fb3f6e5d5e2e8af54d9516b05f0a48136913ad",

@ -1,6 +1,6 @@
{
"description": "format 3 time_only capsule with a single file, nota.txt, signed with alg 1 by the test key of format3_signed and sealed with seal_type 2 by a test time-stamping authority before the round time: verdicts F4 and S4, with SEAL_SUBJECT and the token in the record",
"spec": "0.11",
"spec": "0.14",
"format": 3,
"file": "format3_sealed.dkc",
"sha256": "dde5a072d8783227d28279d06d3d226a1fb967c766da626f889d1c6fd76ac9c7",

@ -1,6 +1,6 @@
{
"description": "format 3 time_only capsule whose security is of version 2: verdict X",
"spec": "0.11",
"spec": "0.14",
"format": 3,
"file": "format3_security_v2.dkc",
"sha256": "3d02b39ace010d74604554e378d22fe5ce00cecd998c0f797d657b17620b8912",

@ -1,6 +1,6 @@
{
"description": "format 3 time_only capsule with an author-signature of alg 4294967295, a random key of 32 bytes and a random signature of 64: verdicts F1 and S0",
"spec": "0.11",
"spec": "0.14",
"format": 3,
"file": "format3_signature_unsupported.dkc",
"sha256": "e8e3106d8d73bb7b845062e0fe42af21df7d7cd8f63c335cab8dedb3e690df31",

@ -1,6 +1,6 @@
{
"description": "format 3 time_only capsule with a single file, nota.txt, signed with alg 1 by a test key whose seed the record gives: verdict F4, and the commitments and the message of the signature",
"spec": "0.11",
"spec": "0.14",
"format": 3,
"file": "format3_signed.dkc",
"sha256": "3c7d3c9e24c02853a0c7761b93bea1120b27fce396468d8d0f68e53aeb668c5e",

@ -1,6 +1,6 @@
{
"description": "format 3 time_only capsule with a single file, nota.txt, signed with alg 2 by two test certificates, an ECDSA P-256 one and an RSA 2048 one, each sealed by a test time-stamping authority before the round time: verdict F6, with the certificates, the commitments, SIGNERS and the result of each signer in the record",
"spec": "0.11",
"spec": "0.14",
"format": 3,
"file": "format3_signed_cms.dkc",
"sha256": "d658f8d5ac2c5550c07b8f8fd6883b2f6dc02ceafc47d436ea02d8950b2548d2",

@ -1,6 +1,6 @@
{
"description": "format 3 time_only capsule with a single file, nota.txt, with its mtime",
"spec": "0.11",
"spec": "0.14",
"format": 3,
"file": "format3_single.dkc",
"sha256": "9f68664af8733255084be9036a100b75d27bd16106bf0acff94ce469dd1d1743",

@ -1,6 +1,6 @@
{
"description": "portable X25519 .dkk of format3_time_and_key_portable.dkc",
"spec": "0.11",
"spec": "0.14",
"file": "format3_time_and_key_portable.dkk",
"sha256": "54cc64d849395234b3e093e47f432b72781ccc13f455c9ef394e3554ab566751",
"credential_id": "bdb483fba42daf0b409f44d23033f362",

@ -1,6 +1,6 @@
{
"description": "format 3 time_and_key capsule with one credential, a portable .dkk, and 15 dummies",
"spec": "0.11",
"spec": "0.14",
"format": 3,
"file": "format3_time_and_key_portable.dkc",
"sha256": "680d29962e575689a31543df28433dae7737abd9a793e9cae92ef40920d09636",

@ -1,6 +1,6 @@
{
"description": "format 3 time_only capsule with five files in three folders, one of them over two STREAM chunks and one without mtime, a comment of two lines and a declared author",
"spec": "0.11",
"spec": "0.14",
"format": 3,
"file": "format3_tree.dkc",
"sha256": "217f378faaf795f6a9c416b564fb8931bb2e896918aee870120fd14f9a5da7d1",

@ -1,6 +1,6 @@
{
"description": "format 3 time_only capsule with a single file, nota.txt, as format3_signed, without a signature: the area of 32 KiB of spec v0.11 holds the empty security, and P is the one of format3_signed",
"spec": "0.11",
"spec": "0.14",
"format": 3,
"file": "format3_unsigned.dkc",
"sha256": "317ab722ae3812a25ddd78b4c98c586363e5587c8d3634c881ce7c421af19168",

@ -1,6 +1,6 @@
{
"description": "portable X25519 .dkk of time_and_key_portable.dkc",
"spec": "0.11",
"spec": "0.14",
"file": "time_and_key_portable.dkk",
"sha256": "e528fa2c832c91119f0684bb9d6fb3c4c2d0d55183482890e7c4fe92f668426a",
"credential_id": "3955e944a3c60cfa1fd6485e9693c77d",

@ -1,6 +1,6 @@
{
"description": "time_and_key capsule whose only recipient is a portable .dkk",
"spec": "0.11",
"spec": "0.14",
"format": 1,
"file": "time_and_key_portable.dkc",
"sha256": "2e97878078bae6358037a9c264f379a3cbe839f767d69836b0343f35657b2972",

@ -1,6 +1,6 @@
{
"description": "portable X25519 .dkk of time_and_key_portable.dkc with a noncritical extension: the credential of time_and_key_portable.dkk re-issued with org.example.delivery",
"spec": "0.11",
"spec": "0.14",
"file": "time_and_key_portable_extension.dkk",
"sha256": "0bf463a7c65627b7dda2234d728df89ec5b835816a2a37b91497d8fecc5ea548",
"credential_id": "3955e944a3c60cfa1fd6485e9693c77d",

@ -1,6 +1,6 @@
{
"description": "portable X25519 .dkk of time_and_key_recipients.dkc",
"spec": "0.11",
"spec": "0.14",
"file": "time_and_key_recipients.dkk",
"sha256": "19f6c47150c3194712d454f43c7392b7344e6b4e7b074d83e9ca5f563a8e072f",
"credential_id": "b89292aedf6d05d584cec9a871ce8735",

@ -1,6 +1,6 @@
{
"description": "time_and_key capsule for two known X25519 recipients and a portable .dkk",
"spec": "0.11",
"spec": "0.14",
"format": 1,
"file": "time_and_key_recipients.dkc",
"sha256": "69ac110380f5d768b5b6afaa157a50ed17d8ceccfbd4604ffa5b6da38539b635",

@ -1,6 +1,6 @@
{
"description": "time_only capsule, two STREAM chunks, no extensions",
"spec": "0.11",
"spec": "0.14",
"format": 1,
"file": "time_only.dkc",
"sha256": "99e915810d595f1092700b728f5e5081d78efe83f5343e76325b1bcc2c33ccf2",

@ -1,6 +1,6 @@
{
"description": "time_only capsule with a noncritical PUBLIC_HEADER extension and a noncritical CONTROL_CBOR extension",
"spec": "0.11",
"spec": "0.14",
"format": 1,
"file": "time_only_extensions.dkc",
"sha256": "0446c9b73e267adcb24e5cc89afba2544a386ec9a050016e06517a4a57aa2085",

@ -1,5 +1,5 @@
{
"spec": "0.11",
"spec": "0.14",
"description": "CBOR profile of spec §58 and the schemas of spec/datekeys.cddl, generated by the reference implementation. accept and reject are walked as one data item of the profile with the limits of walk; schemas are decoded with the decoder of their schema. See testdata/README.md.",
"walk": {
"max_depth": 3,

@ -1,5 +1,5 @@
{
"spec": "0.11",
"spec": "0.14",
"description": "Canonical dk1_ strings and rejected encodings (spec §18, §19, §66), generated by the reference implementation.",
"vectors": [
{

@ -1,5 +1,5 @@
{
"spec": "0.11",
"spec": "0.14",
"description": "Ed25519 signatures and the result of the strict profile of the author signature (spec v0.11, §29.9), after the cases of «Taming the many EdDSAs»; stdlib is the result of crypto/ed25519 of Go, for the record. Generated by the reference implementation. See testdata/README.md.",
"vectors": [
{

@ -1,5 +1,5 @@
{
"spec": "0.11",
"spec": "0.14",
"description": "HEAD_CBOR of format 3 (spec §29.4 to §29.6) and the result of decoding it with no extension known, generated by the reference implementation: layer 2 (type tag and version), layer 3 (the CDDL with R1 and R8), then layer 4 in key order (spec §69.1). See testdata/README.md.",
"heads": [
{

@ -1,5 +1,5 @@
{
"spec": "0.11",
"spec": "0.14",
"description": "Differential corpus of the pre-unlock checks (spec §63 steps 1 to 8): deterministic mutations of the official .dkc fixtures with the verdict of the reference implementation. See testdata/README.md.",
"format": "Each mutation is bases[base].file (in testdata/fixtures) with its edits applied. An edit is [at, delete, insert]: the delete bytes at offset at of the base are replaced by the bytes of the hex string insert. The edits of one mutation refer to offsets of the unmodified base, are sorted by offset and do not overlap. result is the verdict of steps 1 to 8 of spec §63 (capsule.Inspect, the Quicknet profile pinned, no extension known, no network, no secret): ok, or the normative error code, with step the step that failed. kind names the generator of the mutation and is informative.",
"seed": 20260925,

@ -1,6 +1,6 @@
{
"description": "The extension datekeys.capsule of a .dkk and what it points to (spec v0.12, 44.1): an envelope of age with its header apart from its rest, the rest hidden in a host file, the locator sealed with tlock for round 1000, and the data of the extension. On the same envelope, what a reader rejects and what it uses (64): addresses, a locator with rejected and usable addresses, resources of the rest, data of the extension and plaintexts of the locator. Frozen. See testdata/README.md.",
"spec": "0.11",
"spec": "0.14",
"round": 1000,
"datekey": "dk1_eyJ2ZXJzaW9uIjoxLCJuZXR3b3JrIjoiZGF0ZWtleXM6cXVpY2tuZXQ6djEiLCJyb3VuZCI6MTAwMH0",
"note": "Cartas del viaje a Lisboa",

@ -1,5 +1,5 @@
{
"spec": "0.11",
"spec": "0.14",
"description": "Mutation corpus of spec §64 and further cases of capsule.TestMutationCorpus, generated by the reference implementation: each case is a .dkc and what the reader is given, with the normative error and the step of spec §63 at which capsule.Open fails. See testdata/README.md.",
"cases": [
{

@ -1,5 +1,5 @@
{
"spec": "0.11",
"spec": "0.14",
"description": "The data of the public note, datekeys.note version 1 in the noncritical array of PUBLIC_HEADER (spec §24.1): the text in UTF-8, from 1 to 1024 bytes, that meets the rules of the declared author of §29.6. See testdata/README.md.",
"notes": [
{

@ -1,5 +1,5 @@
{
"spec": "0.11",
"spec": "0.14",
"description": "Padding rules of the payload of a format 2 capsule (spec §29.1): for each content length L, P with code 1 (bloque256) and code 2 (reforzado), and the length of PAYLOAD_AGE for each. e, s and last_bits are informative. Generated by the reference implementation. See testdata/README.md.",
"l_max": 8936830510563328,
"vectors": [

@ -1,5 +1,5 @@
{
"spec": "0.11",
"spec": "0.14",
"description": "The key of R7 (spec §29.5) of segments, with the Unicode 18.0.0 tables of §29.5.1, generated by the reference implementation: nfd is NFD(segment) and key is NFD(fold(NFD(s'))), s' the segment without ZWNJ, ZWJ, VS15 and VS16. See testdata/README.md.",
"unicode_version": "18.0.0",
"tables_digest": "07cf5d54aea1cd13a3ecef14a06976cc49a3cdad755cf9bc10395178b93aeb07",

@ -1,5 +1,5 @@
{
"spec": "0.11",
"spec": "0.14",
"description": "Paths of a format 3 head (spec §29.5) with the Unicode 18.0.0 and best-fit tables of §29.5.1, generated by the reference implementation. paths: one path and the rules of one entry, R2 to R6c and R10; trees: the paths of a head, of 0 bytes each, and the result of decoding it. See testdata/README.md.",
"unicode_version": "18.0.0",
"tables_digest": "07cf5d54aea1cd13a3ecef14a06976cc49a3cdad755cf9bc10395178b93aeb07",

@ -1,5 +1,5 @@
{
"spec": "0.11",
"spec": "0.14",
"description": "Quicknet Provider Profile V1: exact Deterministic CBOR and profile_hash (spec §11, §12, §75 item 2), generated by the reference implementation.",
"profile_id": "datekeys:quicknet:v1",
"provider": "drand",

@ -1,5 +1,5 @@
{
"spec": "0.11",
"spec": "0.14",
"profile": "datekeys:quicknet:v1",
"description": "Quicknet date to round resolution (spec §15, §16, §65), generated by the reference implementation.",
"vectors": [

@ -0,0 +1,287 @@
{
"spec": "0.14",
"description": "The IP address that the name of an https address of a locator resolves to, and whether a reader may connect (spec v0.13, 44.1): a public address, or an address of NAT64 (RFC 6052) of 64:ff9b::/96 or of the NAT64 prefix of the network, whose IPv4 address inside is public. See testdata/README.md.",
"cases": [
{
"name": "a public IPv4 address",
"ip": "203.0.114.5",
"nat64": "",
"result": "ok"
},
{
"name": "a public IPv6 address",
"ip": "2a01:4f8::1",
"nat64": "",
"result": "ok"
},
{
"name": "a private IPv4 address",
"ip": "192.168.1.10",
"nat64": "",
"result": "error",
"error": "locator: an https address whose name resolves to 192.168.1.10, an IP address that is not public"
},
{
"name": "loopback",
"ip": "127.0.0.1",
"nat64": "",
"result": "error",
"error": "locator: an https address whose name resolves to 127.0.0.1, an IP address that is not public"
},
{
"name": "IPv6 loopback",
"ip": "::1",
"nat64": "",
"result": "error",
"error": "locator: an https address whose name resolves to ::1, an IP address that is not public"
},
{
"name": "an IPv6 link-local address",
"ip": "fe80::1",
"nat64": "",
"result": "error",
"error": "locator: an https address whose name resolves to fe80::1, an IP address that is not public"
},
{
"name": "an IPv6 unique local address",
"ip": "fd00::1",
"nat64": "",
"result": "error",
"error": "locator: an https address whose name resolves to fd00::1, an IP address that is not public"
},
{
"name": "an IPv4-mapped address of a public IPv4 address",
"ip": "::ffff:203.0.114.5",
"nat64": "",
"result": "error",
"error": "locator: an https address whose name resolves to ::ffff:203.0.114.5, an IP address that is not public"
},
{
"name": "6to4",
"ip": "2002:cb00:7205::1",
"nat64": "",
"result": "error",
"error": "locator: an https address whose name resolves to 2002:cb00:7205::1, an IP address that is not public"
},
{
"name": "Teredo",
"ip": "2001:0:cb00:7205::1",
"nat64": "",
"result": "error",
"error": "locator: an https address whose name resolves to 2001:0:cb00:7205::1, an IP address that is not public"
},
{
"name": "the well-known prefix with a public IPv4 address",
"ip": "64:ff9b::cb00:7205",
"nat64": "",
"result": "ok"
},
{
"name": "the well-known prefix with 8.8.8.8",
"ip": "64:ff9b::808:808",
"nat64": "",
"result": "ok"
},
{
"name": "the well-known prefix with an IPv4 address of 10.0.0.0/8",
"ip": "64:ff9b::a00:1",
"nat64": "",
"result": "error",
"error": "locator: an https address whose name resolves to 64:ff9b::a00:1, an address of NAT64 that holds 10.0.0.1, an IP address that is not public"
},
{
"name": "the well-known prefix with 192.168.1.10",
"ip": "64:ff9b::c0a8:10a",
"nat64": "",
"result": "error",
"error": "locator: an https address whose name resolves to 64:ff9b::c0a8:10a, an address of NAT64 that holds 192.168.1.10, an IP address that is not public"
},
{
"name": "the well-known prefix with loopback",
"ip": "64:ff9b::7f00:1",
"nat64": "",
"result": "error",
"error": "locator: an https address whose name resolves to 64:ff9b::7f00:1, an address of NAT64 that holds 127.0.0.1, an IP address that is not public"
},
{
"name": "the well-known prefix with 169.254.169.254",
"ip": "64:ff9b::a9fe:a9fe",
"nat64": "",
"result": "error",
"error": "locator: an https address whose name resolves to 64:ff9b::a9fe:a9fe, an address of NAT64 that holds 169.254.169.254, an IP address that is not public"
},
{
"name": "the well-known prefix with 100.64.0.1",
"ip": "64:ff9b::6440:1",
"nat64": "",
"result": "error",
"error": "locator: an https address whose name resolves to 64:ff9b::6440:1, an address of NAT64 that holds 100.64.0.1, an IP address that is not public"
},
{
"name": "the well-known prefix with 0.0.0.0",
"ip": "64:ff9b::",
"nat64": "",
"result": "error",
"error": "locator: an https address whose name resolves to 64:ff9b::, an address of NAT64 that holds 0.0.0.0, an IP address that is not public"
},
{
"name": "the well-known prefix with 255.255.255.255",
"ip": "64:ff9b::ffff:ffff",
"nat64": "",
"result": "error",
"error": "locator: an https address whose name resolves to 64:ff9b::ffff:ffff, an address of NAT64 that holds 255.255.255.255, an IP address that is not public"
},
{
"name": "the well-known prefix with a documentation address",
"ip": "64:ff9b::cb00:7105",
"nat64": "",
"result": "error",
"error": "locator: an https address whose name resolves to 64:ff9b::cb00:7105, an address of NAT64 that holds 203.0.113.5, an IP address that is not public"
},
{
"name": "an address of 64:ff9b::/16 outside 64:ff9b::/96",
"ip": "64:ff9b::1:cb00:7205",
"nat64": "",
"result": "error",
"error": "locator: an https address whose name resolves to 64:ff9b::1:cb00:7205, an IP address that is not public"
},
{
"name": "the local-use prefix of RFC 8215 without the prefix of the network",
"ip": "64:ff9b:1::cb00:7205",
"nat64": "",
"result": "error",
"error": "locator: an https address whose name resolves to 64:ff9b:1::cb00:7205, an IP address that is not public"
},
{
"name": "the well-known prefix, given as the prefix of the network",
"ip": "64:ff9b::cb00:7205",
"nat64": "64:ff9b::/96",
"result": "ok"
},
{
"name": "the well-known prefix with another prefix of the network",
"ip": "64:ff9b::cb00:7205",
"nat64": "64:ff9b:1::/48",
"result": "ok"
},
{
"name": "the local-use prefix of RFC 8215, /48",
"ip": "64:ff9b:1:cb00:72:500::",
"nat64": "64:ff9b:1::/48",
"result": "ok"
},
{
"name": "the local-use prefix, /48, with a private IPv4 address",
"ip": "64:ff9b:1:c0a8:1:a00::",
"nat64": "64:ff9b:1::/48",
"result": "error",
"error": "locator: an https address whose name resolves to 64:ff9b:1:c0a8:1:a00::, an address of NAT64 that holds 192.168.1.10, an IP address that is not public"
},
{
"name": "the local-use prefix, /48, with bits 64 to 71 set",
"ip": "64:ff9b:1:cb00:172:500::",
"nat64": "64:ff9b:1::/48",
"result": "error",
"error": "locator: an https address whose name resolves to 64:ff9b:1:cb00:172:500::, an address of the NAT64 prefix 64:ff9b:1::/48 whose bits 64 to 71 are not zero"
},
{
"name": "a public prefix of the network, /96",
"ip": "2a01:4f8:c0:64::cb00:7205",
"nat64": "2a01:4f8:c0:64::/96",
"result": "ok"
},
{
"name": "a public prefix of the network, /96, with a private IPv4 address",
"ip": "2a01:4f8:c0:64::c0a8:10a",
"nat64": "2a01:4f8:c0:64::/96",
"result": "error",
"error": "locator: an https address whose name resolves to 2a01:4f8:c0:64::c0a8:10a, an address of NAT64 that holds 192.168.1.10, an IP address that is not public"
},
{
"name": "a public prefix of the network, /96, with loopback",
"ip": "2a01:4f8:c0:64::7f00:1",
"nat64": "2a01:4f8:c0:64::/96",
"result": "error",
"error": "locator: an https address whose name resolves to 2a01:4f8:c0:64::7f00:1, an address of NAT64 that holds 127.0.0.1, an IP address that is not public"
},
{
"name": "a public prefix of the network, /32",
"ip": "2a01:4f8:cb00:7205::",
"nat64": "2a01:4f8::/32",
"result": "ok"
},
{
"name": "a public prefix of the network, /40",
"ip": "2a01:4f8:c0cb:72:5::",
"nat64": "2a01:4f8:c000::/40",
"result": "ok"
},
{
"name": "a public prefix of the network, /56",
"ip": "2a01:4f8:c0:64cb:0:7205::",
"nat64": "2a01:4f8:c0:6400::/56",
"result": "ok"
},
{
"name": "a public prefix of the network, /64",
"ip": "2a01:4f8:c0:64:cb:72:500:0",
"nat64": "2a01:4f8:c0:64::/64",
"result": "ok"
},
{
"name": "a public prefix of the network, /64, with a private IPv4 address",
"ip": "2a01:4f8:c0:64:c0:a801:a00:0",
"nat64": "2a01:4f8:c0:64::/64",
"result": "error",
"error": "locator: an https address whose name resolves to 2a01:4f8:c0:64:c0:a801:a00:0, an address of NAT64 that holds 192.168.1.10, an IP address that is not public"
},
{
"name": "a public address outside the prefix of the network",
"ip": "2a01:4f8::1",
"nat64": "64:ff9b:1::/48",
"result": "ok"
},
{
"name": "a prefix of the network of 80 bits",
"ip": "64:ff9b:1::cb00:7205",
"nat64": "64:ff9b:1::/80",
"result": "error",
"error": "locator: the NAT64 prefix 64:ff9b:1::/80 is not of 32, 40, 48, 56, 64 or 96 bits (RFC 6052)"
},
{
"name": "a link-local prefix of the network",
"ip": "fe80::cb00:7205",
"nat64": "fe80::/96",
"result": "error",
"error": "locator: the NAT64 prefix fe80::/96 is neither in 64:ff9b::/16 nor a public IPv6 prefix"
},
{
"name": "a unique local prefix of the network",
"ip": "fd00::cb00:7205",
"nat64": "fd00::/96",
"result": "error",
"error": "locator: the NAT64 prefix fd00::/96 is neither in 64:ff9b::/16 nor a public IPv6 prefix"
},
{
"name": "a prefix of the network of 2001:db8::/32",
"ip": "2001:db8::cb00:7205",
"nat64": "2001:db8::/96",
"result": "error",
"error": "locator: the NAT64 prefix 2001:db8::/96 is neither in 64:ff9b::/16 nor a public IPv6 prefix"
},
{
"name": "a prefix of the network with bits after its length",
"ip": "64:ff9b::cb00:7205",
"nat64": "64:ff9b::1/96",
"result": "error",
"error": "locator: the NAT64 prefix 64:ff9b::1/96 has bits set after its length"
},
{
"name": "an IPv4 prefix of the network",
"ip": "203.0.114.5",
"nat64": "203.0.114.0/24",
"result": "error",
"error": "locator: the NAT64 prefix 203.0.114.0/24 is not an IPv6 prefix"
}
]
}

@ -1,5 +1,5 @@
{
"spec": "0.11",
"spec": "0.14",
"description": "SECURITY_CBOR of format 3, exactly its SECURITY_LEN bytes, the verdicts of the signature and of the seal in the context of the file, and their lines (spec §29.3, §29.7, §29.9). See testdata/README.md.",
"context": {
"control_commit": "0101010101010101010101010101010101010101010101010101010101010101",

@ -1,6 +1,6 @@
{
"description": "SECURITY_CBOR with an author signature of alg 2 or a time seal of seal_type 2, the context of its capsule, and the verdicts, the result of each signer and the lines of spec v0.12 29.7, 29.10 and 29.11. Certificates and tokens are made once with test keys and the file is frozen. See testdata/README.md.",
"spec": "0.11",
"spec": "0.14",
"cases": [
{
"name": "alg 2: two signers, each sealed before the round time: F6",

@ -1,5 +1,5 @@
{
"spec": "0.11",
"spec": "0.14",
"description": "H2 of the IBE-CCA of tlock (spec §63 step 11): SHA-256 of \"IBE-H2\" and the 576 bytes of an element of GT, c1 before c0 at every level of the tower and each coordinate of Fp in 48 bytes big-endian (the order of kilic/bls12-381), truncated to 16 bytes. Generated by the reference implementation with drand/kyber-bls12381, the pairing of tlock.",
"vectors": [
{

@ -0,0 +1,164 @@
{
"spec": "0.14",
"description": "Steps 10 and 11 of spec §63 for Quicknet, value by value, over published releases. Step 10: M = SHA-256(uint64_be(round)), H(M) the hash to G1 of RFC 9380 with the suite BLS12381G1_XMD:SHA-256_SSWU_RO_ and the DST dst, and e(H(M), public_key) = e(signature, G2). Step 11: a stanza body U || V || W built with the sigma and the file key of the vector; H2 = SHA-256(\"IBE-H2\" || e(signature, U))[:16], sigma = V XOR H2, H4 = SHA-256(\"IBE-H4\" || sigma)[:16], file_key = W XOR H4, and r = H3(sigma, file_key): h3_base = SHA-256(\"IBE-H3\" || sigma || file_key), then for i = 1, 2, ... d = SHA-256(uint16_le(i) || h3_base), its first byte shifted one bit to the right, until it is below the order of the group; r·G2 = U. Generated by the reference implementation and checked against drand, kyber, tlock and agewrap. See testdata/README.md.",
"profile": "datekeys:quicknet:v1",
"scheme": "bls-unchained-g1-rfc9380",
"chain_hash": "52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971",
"public_key": "83cf0f2896adee7eb8b5f01fcad3912212c437e0073e911fb90022d3e760183c8c4b450b6a0a6c3ac6a5776a2d1064510d1fec758c921cc22b0e17e63aaf4bcb5ed66304de9cf809bd274ca73bab4af5a6e9c76a4bc09e76eae8991ef5ece45a",
"dst": "BLS_SIG_BLS12381G1_XMD:SHA-256_SSWU_RO_NUL_",
"tags": {
"h2": "4942452d4832",
"h3": "4942452d4833",
"h4": "4942452d4834"
},
"vectors": [
{
"name": "round 1000, stanza 0",
"round": 1000,
"signature": "b44679b9a59af2ec876b1a6b1ad52ea9b1615fc3982b19576350f93447cb1125e342b73a8dd2bacbe47e4b6b63ed5e39",
"message": "f652498d092acd949bad74e40683bf3824fb817980504a0c7e6722cfc5a9c0a3",
"hash_to_g1": "8f5a32d53837b00fbc0ee31ce9966435a41c5188a80ce9934d3c80588b6ad6f643ebda1b83ef89e44da9ced6205cdecf",
"body": "a73eb63b9a766ebbd23e06daa313760b001502ab48de4976c98c1697ebd51907c2ab92306e4d04ee9f42bff92775ba6606f08479fbd58a3fb786c94a27bf924c67975f419d5b67b96080b4a3da776eddc762ce07af0a5b5a0965f64a9902f4d3f62867846361583f06a8978ae6876e0eb799ebe3cf0b0bf967921fc5e6eb85d9",
"u": "a73eb63b9a766ebbd23e06daa313760b001502ab48de4976c98c1697ebd51907c2ab92306e4d04ee9f42bff92775ba6606f08479fbd58a3fb786c94a27bf924c67975f419d5b67b96080b4a3da776eddc762ce07af0a5b5a0965f64a9902f4d3",
"v": "f62867846361583f06a8978ae6876e0e",
"w": "b799ebe3cf0b0bf967921fc5e6eb85d9",
"pairing": "13dc0e183d402040f68cb518c39c5fcfc61852058d0d58f962ec5649d3da484f62f8562cb4fa6b576d2882bac78ce474100a3086d82617f2b9ba844f6e2569e5b0c3c81ca94aa9ecda8909baabf16bfd4d95602b0ad3263aaaeb14748d41e9e30c811671230b41b54e5cce08f3d3ef671a411850c165dad83824fb91380554f5dd9ea3005738c83e264d58b3b28c275a0409076922ff12b9b1421d70c958c22a29da81a7df5f93a7d5f32d187e82a1f34ed60c01e9bb0685c0f773cb324b0e8118c5a8cee62b795b8fa7d5e820aa08003462a5521d70beabebb7f74022163286256eaeab18148d7caf9a0057fe37e6de0f10c412dd62f013e62a21971bae6d3957fd326aaa809348da278e812637343a20c942263da247497748aa5c39b945bd112fe3afbf5508117b48b1017931e9dfa97e3a9eaffef3add91ed62ec2814eb9063ffb64943e0b302efb12e3ff680d99199e068714b0c0d6d295a6019a6e325def3cd58c7c20c2196ba7fe28d67b9bf385764d81c63c02f6333d4fc5dbf5e1171913e06b904367571b8d2811f7288c18be3831d907ebc7f03ab6014282bcc362f1a3b0d12bbfc9cd9ba1d255254d64a216151c040975fd726c51fe191b3c675fc6ebc79b9a1f123e15059955761732f66cbb13c45868881fbbe08b21cf677551120e80ef555a5db93283f5b99714e997028eb1380e1a3db0bdc55d269f736e2b9f584c2661e460d3a6ce2db9a1aa902a02b16d5b9f634e96c5d615d3e1be0c232e13723d6f9b93686b1b9bee950ed45e729b3bd6d448badc0816fb8b9360bf28",
"h2": "c3d489f4c7c6a6962801cad91047eb95",
"sigma": "35fcee70a4a7fea92ea95d53f6c0859b",
"h4": "bd093650d9bd27e682b48bc3ba52a0aa",
"file_key": "0a90ddb316b62c1fe52694065cb92573",
"h3_base": "c8b1566b6f0ed7b6cfea5eebaa1a7291f77f50c80dfd8269e9b4f253fff23fe0",
"h3_tries": [
{
"i": 1,
"digest": "41fd905b124c321e66a781f9eec59842d08689c872f4eaada61c921f8b6e6a8e",
"shifted": "20fd905b124c321e66a781f9eec59842d08689c872f4eaada61c921f8b6e6a8e",
"accepted": true
}
],
"r": "20fd905b124c321e66a781f9eec59842d08689c872f4eaada61c921f8b6e6a8e"
},
{
"name": "round 1001, stanza 0",
"round": 1001,
"signature": "b33bf3667cbd5a82de3a24b4e0e9fe5513cc1a0e840368c6e31f5fcfa79bea03f73896b25883abf2853d10337fb8fa41",
"message": "ce43c3353a7ad7aac3408cad0bf921b6a7dda89be75d9cb2b3b5a152cefc8afd",
"hash_to_g1": "8dafa08d032514b04972cd9bca0c40226294bc9dc8b02d10ed4b3913554571e04f20d7eb05b74cddf72a9992995ac5bb",
"body": "ad4937a39b57f8c494817575bf3cac373ed629b3580d374953f08df5c59e00f76abbe58ec09704b544464975a843255307d45413ad277661ac6d361afa687bd40f2745fb9c4498882fbb91269350ab975fc1a1a83d2c5f7d127786779c01e55ee512d80ed32c46da0c915a5459244507444e2b3f156d72748fa2c3ee40120dee",
"u": "ad4937a39b57f8c494817575bf3cac373ed629b3580d374953f08df5c59e00f76abbe58ec09704b544464975a843255307d45413ad277661ac6d361afa687bd40f2745fb9c4498882fbb91269350ab975fc1a1a83d2c5f7d127786779c01e55e",
"v": "e512d80ed32c46da0c915a5459244507",
"w": "444e2b3f156d72748fa2c3ee40120dee",
"pairing": "06bf5fa844026aff0c454df2da4f46f769b6db78c68bdfdafacc1aee0d9d57b40603c0a043478a4785c635587896068701fcbc9ef9f489e53c2f30709136404cbb04c9b0ba0b74e26708f53735209f6f5cfa76fefff64a2db62726745db1693711a09a514fc2925ac383494d6882edb9d2c5143f9f2e8b2b25dfcaf1ac03ca6e9e0bfa989f3e1ebbe0a63345bfe1b9e40657b0fdb63c0646e2fef7f48e73861a364fbc944380af8e989e897a0037e54a1766086a1ea7c9457f47ff7521ac175d0e80ac41a06b949e12ac4c131354371f34318d9559bbdbdb8a9b7bd415b4b64542f240d4d3b69f350614fce76cbeb83b09457cc90c73da60247b929ca72602ba0e3c47653f6e798ffdac42f85039f2d43b817647536f369cea55812d08aa1ca80b9854d9b951ded8c1fa0053377711320de0ca459a84983ce49d68446a5d1c757afeffc896b146c2198b3a171854910d04fa8559d6018affc7c4e35760dc1ac4d90c83821e383ecdaa7ee3eda64e3ac4fa43648e7e821caddcbcabf3e34f5ea30e962c6aa7e6de1e72b3362311c5506607b180a79920c14961b9f8c850227bca1c0b59acffc7a79bf48bfde53fde6031185598646a15c7eb55df63e7fe8f930c6be0e8d6ee695608114f511c83a3c98b2e376cedc16b41c6c94acfb7180287d4007e4eeaf3bb6cd8bf67014302f47626346526358b3acec4cd9f7b083cdeed60c632c8007d0e4d88e252e6a3b8a955d216d6991a2893a56117cdebee0c78d7364f54f45313d472de5dd1e426b3483100107614137b08c38b7f139ab8adb05e33",
"h2": "d1c48e9d72ef4e29581947627078779e",
"sigma": "34d65693a1c308f354881d36295c3299",
"h4": "b05c539a1ce0d4b2f881e2a899bd648b",
"file_key": "f41278a5098da6c677232146d9af6965",
"h3_base": "f89b77b992969b10442252a826f0380716867ee3f2270cd6705b4ffbe474c727",
"h3_tries": [
{
"i": 1,
"digest": "85e7c45f27c75fa2571403fc7cd8222e0dfbdddd7842f85e814854c507abdfc6",
"shifted": "42e7c45f27c75fa2571403fc7cd8222e0dfbdddd7842f85e814854c507abdfc6",
"accepted": true
}
],
"r": "42e7c45f27c75fa2571403fc7cd8222e0dfbdddd7842f85e814854c507abdfc6"
},
{
"name": "round 1004, stanza 0",
"round": 1004,
"signature": "a40658b820c0f8c10207524179a2031ba9537688a0d04e4851b58026be9a341fee3b96fb48ffad28483d84b40a5864aa",
"message": "dfb0ecda8fd28db758bd0c580c0bb9397b56225bd50f076bac68460e68d0ea00",
"hash_to_g1": "895a4b04764f8964e42a056c23d7b34808895603f605ee0f749f8be419420b53a0ba5e01caab02e8afd7ff28c6cd771f",
"body": "97b8304c3e87868e549a6293d19d65481bdbcf7cf67b9d5e3d798ade332deb499648fe2f23931ab55b0911ccdc8839560f5a72325eedc7302420bd87bcafd7f27f2eadbc90523a295e5ab476b357ca91b9a8b5e45a4dac972f20b37e97e8945d96ce47d18a7e845031e28207606a7ea78a4f271ed5ed8d3ed9420fe99200396a",
"u": "97b8304c3e87868e549a6293d19d65481bdbcf7cf67b9d5e3d798ade332deb499648fe2f23931ab55b0911ccdc8839560f5a72325eedc7302420bd87bcafd7f27f2eadbc90523a295e5ab476b357ca91b9a8b5e45a4dac972f20b37e97e8945d",
"v": "96ce47d18a7e845031e28207606a7ea7",
"w": "8a4f271ed5ed8d3ed9420fe99200396a",
"pairing": "0b57e9394946ebc2e4ec7478308fe77ab5b509f00727d46dec4d8635bb7934b4c485f3408c974d45468c2363a768ee18172c3f56f94c6bea5f8658cfc79bc3cafdf3dc418134f4cea86e14b1c73ca85456cb56ac4438862d5093447e97afd795169452925b396bb07823cd1d4a5b9a7b58355170a713a0a14a3ff568a27f57743890c26387ef0f15c49057d8cc74857e0874d72f661e9cecd3b97443aaf64e0703ed453ff9ffb659070d81a40fd0c92ed1221d5d0767e0bb6e6d72c3979fe57619cc78dbd491b3629b21668beab4bdcf787ab581c62211f17db4a61d2ff5946178d1d29448c7bce8a664220bb2fd928d1926ddc1fa2d65f47a60bee3f1375a49cad2a5d0c5406f51ccf6d18e537b820da2112350f6a97b2fc76111b7ec8c0ae11484bd6d622de8b58cbb79ad193d285a49333040cdcf4aabd532cf5465248d4234b41a72614aabfe23479926e6b6635d003901ecd863d063befa706baba0b7aba385e7396b78a20f8e7738c7ec14e340b80e8cfeb5509e8bb47807a82fea6b6215a3f4ce9786623a283a4b07d5aa07fcf9636122a6dee64db8b4280c24e2e909bc791cc9d11adf6cacd82823fdf43873171d52f3d9bc035d3f9bb63eaaaa27e3109b7324f2828e6dc2ce78324bff9a92b9c569ab51ed714e70afd1687d5188f60e1ab87bd7db3ffedec49b52dd0a09909be3cc96156b82d0ab49adfd64c24faf9cd574d9c585829f3fd608c7df754a58045f1545128a0030459cc766fbaf636ce19be4d4537ac181cd9bd2da65cb93257b72984bcf0c74b19247d15c680fd278",
"h2": "ed9e2e9ca7679f40d9d5461808d3902d",
"sigma": "7b50694d2d191b10e837c41f68b9ee8a",
"h4": "8aa64ea323262cff566c987b5467ae3a",
"file_key": "00e969bdf6cba1c18f2e9792c6679750",
"h3_base": "cbf54def509294ab547c383ea065b02d2bec599d6a41f41b3083dad3ff7b2459",
"h3_tries": [
{
"i": 1,
"digest": "060304f06ac573eee1c4ed5b125d6f8ae7c9f154c60156c4e37de84ebc9846cb",
"shifted": "030304f06ac573eee1c4ed5b125d6f8ae7c9f154c60156c4e37de84ebc9846cb",
"accepted": true
}
],
"r": "030304f06ac573eee1c4ed5b125d6f8ae7c9f154c60156c4e37de84ebc9846cb"
},
{
"name": "round 2000, stanza 0",
"round": 2000,
"signature": "b6cb8f482a0b15d45936a4c4ea08e98a087e71787caee3f4d07a8a9843b1bc5423c6b3c22f446488b3137eaca799c77e",
"message": "597962656abdc948a536fcd5ba8405e6bd95b9763f4a4da0727e8c98689d52c2",
"hash_to_g1": "906dc77479bc9962a8ed67fd00ad6af2a6c8d109926fdd6b897fe77526b2531b544b5e8703de23748b6ae6172b9986f5",
"body": "ab73f3818b2170ec27e8c6ad89232453199c2ceb781e920fb8058947ade9a12daf99775f384f575daae76fb76c1bb40e00754fd1515534b2f1c315108a568bb7405a5829eba26e3a1ac08178e73ac13bca55a0ef7eeb8980d0a4424b84ac47ff04cbb545b21b4ebcc651055043dd6f7b216b730fe903e9c7824eadef6522c2d9",
"u": "ab73f3818b2170ec27e8c6ad89232453199c2ceb781e920fb8058947ade9a12daf99775f384f575daae76fb76c1bb40e00754fd1515534b2f1c315108a568bb7405a5829eba26e3a1ac08178e73ac13bca55a0ef7eeb8980d0a4424b84ac47ff",
"v": "04cbb545b21b4ebcc651055043dd6f7b",
"w": "216b730fe903e9c7824eadef6522c2d9",
"pairing": "07999e22e3e3e73a814ff2ff0329f87749396dc9b6a2e6f0520b01df4f73935cce76c3197164eb129f03b72675d05d8318f73d35d748b4fadc36cb7bff193e44bc30a795377a5faaae2649fc89df82539b177defcd3122e1ef461f869e22ab80165c6c07fbc3ed5752921287c8dc5177cbbf19c14b84fce0393d4cd2bd9dc8f569964e88d82cca5df637019bf6b3f9230ca4d83f519082c62919b1d5138326cd97af77bf54a8257c677f1162c603f181f0f74dbc5c4558ade7adf44d6689213804028a36cb0597d58a1a777bb187479ae7e69214f632a53fdb93c9580bf71d1cf91076830ca73bf548417e9729a53ad400a89f83721daa9e2a1b963b9cd2b9a6c68bd17b61039d08f4ff9962deef188b597cbf5855dcefc6e4192d4ad4984a2a05929fc3c0043f53f63bca31ae676883ca550ac47c06dad52a95366ccec9f03a2eb6c4fdb15df0238a991f4245a740b00b1762bb3c76709333e758be369616ea68929eadc0eee12b1f074707db5153d2b07fa99db5bff8f6ba04f318c9f4abf6175c1d5471c150ffd8e1cd83ed6e26c3eaa821aa4c4724dbfd644b0df28a80134c0fc2334e34c2b591a79b531b116abf1363314b98b21a669ca179bb7065336df05315a8885f32db74d56884c01ab37ecd0dfcde9b4d23a3481bd487d6e5f523089f89ed52d7e50a48a591306eea76b353ea2c63f14826b8a785ce9a7cafddd5b5d6d6a89773c2b24a178b6e6d3f1f2002d7c409b2c7312df81c21af3ba95ec8646e64ac240a43e6e8245f3ec2532a10ea917c0dac568cb468bad84562acf72c",
"h2": "0b214ea01f127a78f8af587331314ce0",
"sigma": "0feafbe5ad0934c43efe5d2372ec239b",
"h4": "5097513c5c6ad5a8e614205284b46f9a",
"file_key": "71fc2233b5693c6f645a8dbde196ad43",
"h3_base": "2a1ca2b9377eae364c9874c19450c74919f88bd0e4d05153fcadc373db2d3989",
"h3_tries": [
{
"i": 1,
"digest": "59d0a91dbc2ea95a7ded3610fd282f2c0286459e49fe275bce5185501df3a106",
"shifted": "2cd0a91dbc2ea95a7ded3610fd282f2c0286459e49fe275bce5185501df3a106",
"accepted": true
}
],
"r": "2cd0a91dbc2ea95a7ded3610fd282f2c0286459e49fe275bce5185501df3a106"
},
{
"name": "round 1000, stanza 111: H3 accepts its try 4",
"round": 1000,
"signature": "b44679b9a59af2ec876b1a6b1ad52ea9b1615fc3982b19576350f93447cb1125e342b73a8dd2bacbe47e4b6b63ed5e39",
"message": "f652498d092acd949bad74e40683bf3824fb817980504a0c7e6722cfc5a9c0a3",
"hash_to_g1": "8f5a32d53837b00fbc0ee31ce9966435a41c5188a80ce9934d3c80588b6ad6f643ebda1b83ef89e44da9ced6205cdecf",
"body": "b326f73120b5a037953e1b58da50d242e8766a4ade2ac5113685210dfe09d63a2ae1e02e8f1dab5214c68d9fd739e6450ccf379e9e47323e993ac94d91af16d4b38157af7bd098ece86f9d2ceb06b93da6d295e1b18a6eba255a95ed50c869d5f6c14db7259bc069fe1b69cb2d562349e6407fe52ab31aa27b7cc4c859564e33",
"u": "b326f73120b5a037953e1b58da50d242e8766a4ade2ac5113685210dfe09d63a2ae1e02e8f1dab5214c68d9fd739e6450ccf379e9e47323e993ac94d91af16d4b38157af7bd098ece86f9d2ceb06b93da6d295e1b18a6eba255a95ed50c869d5",
"v": "f6c14db7259bc069fe1b69cb2d562349",
"w": "e6407fe52ab31aa27b7cc4c859564e33",
"pairing": "00585d6ec0a2617f28a00b0455e9ea364ec343489aa7f67f046ba13fc40a800d032c89a0ca5cc33761a02c2de95383650ecf9bbbc77ce2322cd225e6775e7a8e39ad0ed6e3bca1213ff44e52bce0a629e5c69cdd380e0448969b253d12e2baa8131b9e81906e44795535bbf276371d6db833ff9e0c96b76ed960e18c9c8a2b9032880bfebc681f0802d0f00b4768317c0246c202f18c369b5fe659353ee0dd803aed4fd66c98b6402ed811ca348741efff0f88ed32fdd65070bda0a63b30dfcd0c24962dad0b5587f8fc39630d37aea45f50ef458c000884b9b51ee2599496aa61b7b916ed873c6c7f11ef1db2a41cb003df3d757e4f61e5c13beb19d0fd9ebbcb15559e6252bbc5d0faae267dc7f5b25f5f2b4e3295bc4d17b308553e28599911d75b66f3f1d5d6a2795cf9bf3f154654d8bd8e64bea438cecaddee75093cf5efc7579ac55e0b5a76ae767264df544a0fdd0e95b9310d24d7bbb3a4df3bc3ae3d251d3970e483c5d4b10870409c7620531cb9d41670835f2306ac0acdd7524312eeb7b9d83de7c623724eba86ea0a7b10bbc6efecf440681271c5c3d980a975637dd26c99f632e003a9f54045bcb1df0abca2ce0afe6bb1cd383fc34efb72ae0afa3db33ac715a371e3fdfe1e28385e775b5e19e1a49ff265ce2238483c342803dd1ae3f72ecd82f17aa1207fa1f32f2c9f89c38488a381d987e90810753462d7003210c6f66b8ff590055b143b553c0825f4bac496509f88698485173da385b2230f44275eb55a3da686e12680fcb175062007100161ed9bf6de51976739c3",
"h2": "2271ed3feb6223f3f21e7fcecb89f30b",
"sigma": "d4b0a088cef9e39a0c051605e6dfd042",
"h4": "085c839d518ebc5636d8642df86b6f2b",
"file_key": "ee1cfc787b3da6f44da4a0e5a13d2118",
"h3_base": "a5dd9d066f9fdd547d25616b65c9ea76e5da38392ca02853a20ebb2c7d01fc11",
"h3_tries": [
{
"i": 1,
"digest": "f647f4537bc552e6d82a22abbef3397f1adfbe51933df3fda8b60e9d927fd9a1",
"shifted": "7b47f4537bc552e6d82a22abbef3397f1adfbe51933df3fda8b60e9d927fd9a1",
"accepted": false
},
{
"i": 2,
"digest": "f20b12601c3bae738eea421aba70ccfb7df494791c004bf5f028972258c1d15a",
"shifted": "790b12601c3bae738eea421aba70ccfb7df494791c004bf5f028972258c1d15a",
"accepted": false
},
{
"i": 3,
"digest": "f45606605279cfaffabaadda379d52a5ae0aa5453447244b702b1588e7be4200",
"shifted": "7a5606605279cfaffabaadda379d52a5ae0aa5453447244b702b1588e7be4200",
"accepted": false
},
{
"i": 4,
"digest": "a495752b48f0bcd717b4e3846ed0501b4085621321ca846b2710d805d0790699",
"shifted": "5295752b48f0bcd717b4e3846ed0501b4085621321ca846b2710d805d0790699",
"accepted": true
}
],
"r": "5295752b48f0bcd717b4e3846ed0501b4085621321ca846b2710d805d0790699"
}
]
}

@ -1,5 +1,5 @@
{
"spec": "0.11",
"spec": "0.14",
"description": "The key of words (spec §38.1): the words of a text, after NFD, without U+0300 to U+036F, in simple lower case of Unicode 18.0.0 and split by the spaces of the list; what a writer refuses; and the identity, PBKDF2-HMAC-SHA256 of 600000 rounds, for a chain hash, a round and a capsule_id. See testdata/README.md.",
"normalize": [
{

@ -0,0 +1,27 @@
// Writes test/vectors/tlock_steps.g.dart, the text of
// testdata/vectors/tlock_steps.json as a Dart constant, for
// test/tlock_steps_test.dart compiled to JavaScript, where no file can be
// read. test/tlock_steps_vm_test.dart checks that the copy is the file byte
// for byte. Run it after every sync of testdata/.
//
// dart run tool/tlock_steps_copy.dart
import 'dart:io';
void main() {
final root = File(Platform.script.toFilePath()).parent.parent;
final json = File('${root.path}/testdata/vectors/tlock_steps.json')
.readAsStringSync();
if (json.contains("'''")) {
throw StateError('tlock_steps.json holds three quotes');
}
File('${root.path}/test/vectors/tlock_steps.g.dart').writeAsStringSync(
'// Generated by tool/tlock_steps_copy.dart from\n'
'// testdata/vectors/tlock_steps.json, for the tests that also run\n'
'// compiled to JavaScript, where no file can be read. Do not edit.\n'
'\n'
'/// The text of testdata/vectors/tlock_steps.json.\n'
"const tlockStepsJson = r'''\n"
"$json''';\n",
);
}
Loading…
Cancel
Save

Powered by TurnKey Linux.