Specification 0.15: the release object, a release in hand and step 9.c
specVersion is 0.15 and testdata is synced with datekeys-go at 3c3e737
(branch v0.15): every file changes its spec field, mutations.json gains the
field source and four cases, and vectors/release.json and releases/ are new
(142 files).
release.dart, as provider of Go at 2eeca40, with its texts: encodeRelease
and decodeRelease of the release object (spec v0.15, 47.1) with the CBOR
profile of the library, its size first, then its type and version, then its
schema; parseRelease, which also reads drand's JSON with the rules of
encoding/json of Go for its three fields; verifyRelease checks the chain hash
a release names, ERR_PROFILE_MISMATCH, before its round and its signature;
ReleaseSupplier, EncodedRelease and supplyRelease, a release in the caller's
hand; and ReleaseArchive, the lookup of a local release archive (50), whose
failures are ERR_RELEASE_UNAVAILABLE at step 9.
open: OpenOptions.release takes a release in hand, exclusive with source. It
is not compared with the clock (step 9.c); Opened.clockBehind reports a clock
behind it, and the step 9 detail is Go's. Step 10 starts with the layers of
the object. A network source keeps its behaviour. Opened.release carries the
chain hash of the pinned profile.
Vectors: mutation_texts.json is regenerated with tool/mutation_go_texts.go,
which now replays each case with its source as testkit does: 149 cases
change only the detail of step 9 ("release supplied by the caller"), the
case "round not reached yet" now opens, and the four new cases are added.
release_vectors.json, the open vectors, and the formats, locator, security
and seal vectors come out the same at 3c3e737 but for their spec field.
tool/release_archive_go_texts.go writes the texts of provider.Archive on
edited archives; tool/release_copy.dart copies release.json, releases/ and
those texts to release.g.dart for the tests compiled to JavaScript.
errors_spec_test reads the spec at the commit of testdata/SOURCE.json rather
than at its tag.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2 days ago
// Generated by tool/release_copy.dart from
// testdata/vectors/release.json, testdata/releases/ and
// test/vectors/release_archive_texts.json, for the tests that also
// run compiled to JavaScript, where no file can be read. Do not edit.
/// The text of testdata/vectors/release.json.
const releaseJson = r'' '
{
" spec " : " 0.15 " ,
" description " : " The release object (spec v0.15, §47.1), and drand's JSON as the input of the caller, each checked against the pinned Quicknet profile and the round of a DateKey as step 10 of spec §63 checks a release that the caller supplies; and the lookups of a local release archive (spec v0.15, §50). See testdata/README.md. " ,
Specification 0.15: the release object, a release in hand and step 9.c
specVersion is 0.15 and testdata is synced with datekeys-go at 3c3e737
(branch v0.15): every file changes its spec field, mutations.json gains the
field source and four cases, and vectors/release.json and releases/ are new
(142 files).
release.dart, as provider of Go at 2eeca40, with its texts: encodeRelease
and decodeRelease of the release object (spec v0.15, 47.1) with the CBOR
profile of the library, its size first, then its type and version, then its
schema; parseRelease, which also reads drand's JSON with the rules of
encoding/json of Go for its three fields; verifyRelease checks the chain hash
a release names, ERR_PROFILE_MISMATCH, before its round and its signature;
ReleaseSupplier, EncodedRelease and supplyRelease, a release in the caller's
hand; and ReleaseArchive, the lookup of a local release archive (50), whose
failures are ERR_RELEASE_UNAVAILABLE at step 9.
open: OpenOptions.release takes a release in hand, exclusive with source. It
is not compared with the clock (step 9.c); Opened.clockBehind reports a clock
behind it, and the step 9 detail is Go's. Step 10 starts with the layers of
the object. A network source keeps its behaviour. Opened.release carries the
chain hash of the pinned profile.
Vectors: mutation_texts.json is regenerated with tool/mutation_go_texts.go,
which now replays each case with its source as testkit does: 149 cases
change only the detail of step 9 ("release supplied by the caller"), the
case "round not reached yet" now opens, and the four new cases are added.
release_vectors.json, the open vectors, and the formats, locator, security
and seal vectors come out the same at 3c3e737 but for their spec field.
tool/release_archive_go_texts.go writes the texts of provider.Archive on
edited archives; tool/release_copy.dart copies release.json, releases/ and
those texts to release.g.dart for the tests compiled to JavaScript.
errors_spec_test reads the spec at the commit of testdata/SOURCE.json rather
than at its tag.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2 days ago
" profile " : " datekeys:quicknet:v1 " ,
" objects " : [
{
" name " : " round 1000 " ,
" encoding " : " a50070646174656b6579732d72656c65617365010102582052db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971031903e8045830b44679b9a59af2ec876b1a6b1ad52ea9b1615fc3982b19576350f93447cb1125e342b73a8dd2bacbe47e4b6b63ed5e39 " ,
" round " : 1000 ,
" release " : {
" round " : 1000 ,
" signature " : " b44679b9a59af2ec876b1a6b1ad52ea9b1615fc3982b19576350f93447cb1125e342b73a8dd2bacbe47e4b6b63ed5e39 " ,
" chain_hash " : " 52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971 "
} ,
" result " : " ok "
} ,
{
" name " : " round 1001 " ,
" encoding " : " a50070646174656b6579732d72656c65617365010102582052db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971031903e9045830b33bf3667cbd5a82de3a24b4e0e9fe5513cc1a0e840368c6e31f5fcfa79bea03f73896b25883abf2853d10337fb8fa41 " ,
" round " : 1001 ,
" release " : {
" round " : 1001 ,
" signature " : " b33bf3667cbd5a82de3a24b4e0e9fe5513cc1a0e840368c6e31f5fcfa79bea03f73896b25883abf2853d10337fb8fa41 " ,
" chain_hash " : " 52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971 "
} ,
" result " : " ok "
} ,
{
" name " : " round 1004 " ,
" encoding " : " a50070646174656b6579732d72656c65617365010102582052db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971031903ec045830a40658b820c0f8c10207524179a2031ba9537688a0d04e4851b58026be9a341fee3b96fb48ffad28483d84b40a5864aa " ,
" round " : 1004 ,
" release " : {
" round " : 1004 ,
" signature " : " a40658b820c0f8c10207524179a2031ba9537688a0d04e4851b58026be9a341fee3b96fb48ffad28483d84b40a5864aa " ,
" chain_hash " : " 52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971 "
} ,
" result " : " ok "
} ,
{
" name " : " round 2000 " ,
" encoding " : " a50070646174656b6579732d72656c65617365010102582052db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971031907d0045830b6cb8f482a0b15d45936a4c4ea08e98a087e71787caee3f4d07a8a9843b1bc5423c6b3c22f446488b3137eaca799c77e " ,
" round " : 2000 ,
" release " : {
" round " : 2000 ,
" signature " : " b6cb8f482a0b15d45936a4c4ea08e98a087e71787caee3f4d07a8a9843b1bc5423c6b3c22f446488b3137eaca799c77e " ,
" chain_hash " : " 52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971 "
} ,
" result " : " ok "
} ,
{
" name " : " no byte " ,
" round " : 1000 ,
" result " : " ERR_NON_CANONICAL_CBOR " ,
" text " : " provider: release object of 0 bytes, outside 1..1024: ERR_NON_CANONICAL_CBOR "
} ,
{
" name " : " 1025 bytes: the object of round 1000 followed by zeros " ,
" encoding " : " a50070646174656b6579732d72656c65617365010102582052db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971031903e8045830b44679b9a59af2ec876b1a6b1ad52ea9b1615fc3982b19576350f93447cb1125e342b73a8dd2bacbe47e4b6b63ed5e390000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 " ,
" round " : 1000 ,
" result " : " ERR_NON_CANONICAL_CBOR " ,
" text " : " provider: release object of 1025 bytes, outside 1..1024: ERR_NON_CANONICAL_CBOR "
} ,
{
" name " : " 1025 bytes of an object of version 2: the size first " ,
" encoding " : " a20070646174656b6579732d72656c6561736501020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 " ,
" round " : 1000 ,
" result " : " ERR_NON_CANONICAL_CBOR " ,
" text " : " provider: release object of 1025 bytes, outside 1..1024: ERR_NON_CANONICAL_CBOR "
} ,
{
" name " : " type tag of the Provider Profile, version 2 " ,
" encoding " : " a5007819646174656b6579732d70726f76696465722d70726f66696c65010202582052db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971031903e8045830b44679b9a59af2ec876b1a6b1ad52ea9b1615fc3982b19576350f93447cb1125e342b73a8dd2bacbe47e4b6b63ed5e39 " ,
" round " : 1000 ,
" result " : " ERR_NON_CANONICAL_CBOR " ,
" text " : " provider: release object: codec: type \" datekeys-provider-profile \" , want \" datekeys-release \" : ERR_NON_CANONICAL_CBOR "
} ,
{
" name " : " type tag in upper case " ,
" encoding " : " a50070444154454b4559532d52454c45415345010102582052db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971031903e8045830b44679b9a59af2ec876b1a6b1ad52ea9b1615fc3982b19576350f93447cb1125e342b73a8dd2bacbe47e4b6b63ed5e39 " ,
" round " : 1000 ,
" result " : " ERR_NON_CANONICAL_CBOR " ,
" text " : " provider: release object: codec: type \" DATEKEYS-RELEASE \" , want \" datekeys-release \" : ERR_NON_CANONICAL_CBOR "
} ,
{
" name " : " version 2 " ,
" encoding " : " a50070646174656b6579732d72656c65617365010202582052db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971031903e8045830b44679b9a59af2ec876b1a6b1ad52ea9b1615fc3982b19576350f93447cb1125e342b73a8dd2bacbe47e4b6b63ed5e39 " ,
" round " : 1000 ,
" result " : " ERR_UNSUPPORTED_VERSION " ,
" text " : " provider: release object: codec: datekeys-release schema version 2, want 1: ERR_UNSUPPORTED_VERSION "
} ,
{
" name " : " version 2, an unknown key and another chain " ,
" encoding " : " a60070646174656b6579732d72656c65617365010202582052db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e970031903e8045830b44679b9a59af2ec876b1a6b1ad52ea9b1615fc3982b19576350f93447cb1125e342b73a8dd2bacbe47e4b6b63ed5e390500 " ,
" round " : 1000 ,
" result " : " ERR_UNSUPPORTED_VERSION " ,
" text " : " provider: release object: codec: datekeys-release schema version 2, want 1: ERR_UNSUPPORTED_VERSION "
} ,
{
" name " : " version 0 " ,
" encoding " : " a50070646174656b6579732d72656c65617365010002582052db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971031903e8045830b44679b9a59af2ec876b1a6b1ad52ea9b1615fc3982b19576350f93447cb1125e342b73a8dd2bacbe47e4b6b63ed5e39 " ,
" round " : 1000 ,
" result " : " ERR_UNSUPPORTED_VERSION " ,
" text " : " provider: release object: codec: datekeys-release schema version 0, want 1: ERR_UNSUPPORTED_VERSION "
} ,
{
" name " : " keys 0 and 1 swapped " ,
" encoding " : " a501010070646174656b6579732d72656c6561736502582052db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971031903e8045830b44679b9a59af2ec876b1a6b1ad52ea9b1615fc3982b19576350f93447cb1125e342b73a8dd2bacbe47e4b6b63ed5e39 " ,
" round " : 1000 ,
" result " : " ERR_NON_CANONICAL_CBOR " ,
" text " : " provider: release object: codec: offset 2: map key 1 where key 0 was expected: ERR_NON_CANONICAL_CBOR "
} ,
{
" name " : " a byte after the object " ,
" encoding " : " a50070646174656b6579732d72656c65617365010102582052db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971031903e8045830b44679b9a59af2ec876b1a6b1ad52ea9b1615fc3982b19576350f93447cb1125e342b73a8dd2bacbe47e4b6b63ed5e3900 " ,
" round " : 1000 ,
" result " : " ERR_NON_CANONICAL_CBOR " ,
" text " : " provider: release object: codec: offset 111: 1 trailing bytes: ERR_NON_CANONICAL_CBOR "
} ,
{
" name " : " without the signature " ,
" encoding " : " a40070646174656b6579732d72656c65617365010102582052db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971031903e8 " ,
" round " : 1000 ,
" result " : " ERR_NON_CANONICAL_CBOR " ,
" text " : " provider: release object: 4 keys, want all 5: ERR_NON_CANONICAL_CBOR "
} ,
{
" name " : " a key 5 " ,
" encoding " : " a60070646174656b6579732d72656c65617365010102582052db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971031903e8045830b44679b9a59af2ec876b1a6b1ad52ea9b1615fc3982b19576350f93447cb1125e342b73a8dd2bacbe47e4b6b63ed5e390500 " ,
" round " : 1000 ,
" result " : " ERR_NON_CANONICAL_CBOR " ,
" text " : " provider: release object: codec: offset 1: map of 6 entries, at most 5: ERR_NON_CANONICAL_CBOR "
} ,
{
" name " : " chain hash of 31 bytes " ,
" encoding " : " a50070646174656b6579732d72656c65617365010102581f52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e9031903e8045830b44679b9a59af2ec876b1a6b1ad52ea9b1615fc3982b19576350f93447cb1125e342b73a8dd2bacbe47e4b6b63ed5e39 " ,
" round " : 1000 ,
" result " : " ERR_NON_CANONICAL_CBOR " ,
" text " : " provider: release object: key 2: codec: offset 24: a byte string of 31 bytes outside 32..32: ERR_NON_CANONICAL_CBOR "
} ,
{
" name " : " chain hash as text " ,
" encoding " : " a50070646174656b6579732d72656c65617365010102784035326462396261373065306363306636656166373830336464303734343761316635343737373335666433663636313739326261393436303063383465393731031903e8045830b44679b9a59af2ec876b1a6b1ad52ea9b1615fc3982b19576350f93447cb1125e342b73a8dd2bacbe47e4b6b63ed5e39 " ,
" round " : 1000 ,
" result " : " ERR_NON_CANONICAL_CBOR " ,
" text " : " provider: release object: key 2: codec: offset 22: a text string where a byte string was expected: ERR_NON_CANONICAL_CBOR "
} ,
{
" name " : " round 0 " ,
" encoding " : " a50070646174656b6579732d72656c65617365010102582052db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e9710300045830b44679b9a59af2ec876b1a6b1ad52ea9b1615fc3982b19576350f93447cb1125e342b73a8dd2bacbe47e4b6b63ed5e39 " ,
" round " : 1000 ,
" result " : " ERR_NON_CANONICAL_CBOR " ,
" text " : " provider: release object: key 3: round 0: ERR_NON_CANONICAL_CBOR "
} ,
{
" name " : " round 2^53 " ,
" encoding " : " a50070646174656b6579732d72656c65617365010102582052db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971031b0020000000000000045830b44679b9a59af2ec876b1a6b1ad52ea9b1615fc3982b19576350f93447cb1125e342b73a8dd2bacbe47e4b6b63ed5e39 " ,
" round " : 1000 ,
" result " : " ERR_NON_CANONICAL_CBOR " ,
" text " : " provider: release object: key 3: codec: offset 66: unsigned integer 9007199254740992 above 9007199254740991: ERR_NON_CANONICAL_CBOR "
} ,
{
" name " : " round 1000 in four bytes " ,
" encoding " : " a50070646174656b6579732d72656c65617365010102582052db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971031a000003e8045830b44679b9a59af2ec876b1a6b1ad52ea9b1615fc3982b19576350f93447cb1125e342b73a8dd2bacbe47e4b6b63ed5e39 " ,
" round " : 1000 ,
" result " : " ERR_NON_CANONICAL_CBOR " ,
" text " : " provider: release object: key 3: codec: offset 57: 1000 is not in its shortest form (initial byte 0x1a): ERR_NON_CANONICAL_CBOR "
} ,
{
" name " : " signature of no byte " ,
" encoding " : " a50070646174656b6579732d72656c65617365010102582052db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971031903e80440 " ,
" round " : 1000 ,
" result " : " ERR_NON_CANONICAL_CBOR " ,
" text " : " provider: release object: key 4: codec: offset 62: a byte string of 0 bytes outside 1..96: ERR_NON_CANONICAL_CBOR "
} ,
{
" name " : " signature of 97 bytes " ,
" encoding " : " a50070646174656b6579732d72656c65617365010102582052db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971031903e8045861b44679b9a59af2ec876b1a6b1ad52ea9b1615fc3982b19576350f93447cb1125e342b73a8dd2bacbe47e4b6b63ed5e39b44679b9a59af2ec876b1a6b1ad52ea9b1615fc3982b19576350f93447cb1125e342b73a8dd2bacbe47e4b6b63ed5e3900 " ,
" round " : 1000 ,
" result " : " ERR_NON_CANONICAL_CBOR " ,
" text " : " provider: release object: key 4: codec: offset 63: a byte string of 97 bytes outside 1..96: ERR_NON_CANONICAL_CBOR "
} ,
{
" name " : " map of indefinite length " ,
" encoding " : " bf0070646174656b6579732d72656c65617365010102582052db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971031903e8045830b44679b9a59af2ec876b1a6b1ad52ea9b1615fc3982b19576350f93447cb1125e342b73a8dd2bacbe47e4b6b63ed5e39ff " ,
" round " : 1000 ,
" result " : " ERR_NON_CANONICAL_CBOR " ,
" text " : " provider: release object: codec: offset 0: indefinite length (initial byte 0xbf): ERR_NON_CANONICAL_CBOR "
} ,
{
" name " : " another chain " ,
" encoding " : " a50070646174656b6579732d72656c65617365010102582052db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e970031903e8045830b44679b9a59af2ec876b1a6b1ad52ea9b1615fc3982b19576350f93447cb1125e342b73a8dd2bacbe47e4b6b63ed5e39 " ,
" round " : 1000 ,
" release " : {
" round " : 1000 ,
" signature " : " b44679b9a59af2ec876b1a6b1ad52ea9b1615fc3982b19576350f93447cb1125e342b73a8dd2bacbe47e4b6b63ed5e39 " ,
" chain_hash " : " 52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e970 "
} ,
" result " : " ERR_PROFILE_MISMATCH " ,
" text " : " provider: release of chain 52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e970, the pinned profile datekeys:quicknet:v1 is chain 52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971: ERR_PROFILE_MISMATCH "
} ,
{
" name " : " another chain, another round and a signature of no point " ,
" encoding " : " a50070646174656b6579732d72656c65617365010102582052db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e970031903e9045830000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 " ,
" round " : 1000 ,
" release " : {
" round " : 1001 ,
" signature " : " 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 " ,
" chain_hash " : " 52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e970 "
} ,
" result " : " ERR_PROFILE_MISMATCH " ,
" text " : " provider: release of chain 52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e970, the pinned profile datekeys:quicknet:v1 is chain 52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971: ERR_PROFILE_MISMATCH "
} ,
{
" name " : " round 1001 for a DateKey of round 1000 " ,
" encoding " : " a50070646174656b6579732d72656c65617365010102582052db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971031903e9045830b33bf3667cbd5a82de3a24b4e0e9fe5513cc1a0e840368c6e31f5fcfa79bea03f73896b25883abf2853d10337fb8fa41 " ,
" round " : 1000 ,
" release " : {
" round " : 1001 ,
" signature " : " b33bf3667cbd5a82de3a24b4e0e9fe5513cc1a0e840368c6e31f5fcfa79bea03f73896b25883abf2853d10337fb8fa41 " ,
" chain_hash " : " 52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971 "
} ,
" result " : " ERR_ROUND_MISMATCH " ,
" text " : " provider: release for round 1001, expected 1000: ERR_ROUND_MISMATCH "
} ,
{
" name " : " another round and a signature of 47 bytes " ,
" encoding " : " a50070646174656b6579732d72656c65617365010102582052db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971031903e904582fb33bf3667cbd5a82de3a24b4e0e9fe5513cc1a0e840368c6e31f5fcfa79bea03f73896b25883abf2853d10337fb8fa " ,
" round " : 1000 ,
" release " : {
" round " : 1001 ,
" signature " : " b33bf3667cbd5a82de3a24b4e0e9fe5513cc1a0e840368c6e31f5fcfa79bea03f73896b25883abf2853d10337fb8fa " ,
" chain_hash " : " 52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971 "
} ,
" result " : " ERR_ROUND_MISMATCH " ,
" text " : " provider: release for round 1001, expected 1000: ERR_ROUND_MISMATCH "
} ,
{
" name " : " the signature of round 1001 as round 1000 " ,
" encoding " : " a50070646174656b6579732d72656c65617365010102582052db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971031903e8045830b33bf3667cbd5a82de3a24b4e0e9fe5513cc1a0e840368c6e31f5fcfa79bea03f73896b25883abf2853d10337fb8fa41 " ,
" round " : 1000 ,
" release " : {
" round " : 1000 ,
" signature " : " b33bf3667cbd5a82de3a24b4e0e9fe5513cc1a0e840368c6e31f5fcfa79bea03f73896b25883abf2853d10337fb8fa41 " ,
" chain_hash " : " 52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971 "
} ,
" result " : " ERR_RELEASE_INVALID " ,
" text " : " provider: the signature is not a canonical point encoding, or does not verify as the BLS signature of round 1000 under datekeys:quicknet:v1: ERR_RELEASE_INVALID "
} ,
{
" name " : " signature of 47 bytes " ,
" encoding " : " a50070646174656b6579732d72656c65617365010102582052db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971031903e804582fb44679b9a59af2ec876b1a6b1ad52ea9b1615fc3982b19576350f93447cb1125e342b73a8dd2bacbe47e4b6b63ed5e " ,
" round " : 1000 ,
" release " : {
" round " : 1000 ,
" signature " : " b44679b9a59af2ec876b1a6b1ad52ea9b1615fc3982b19576350f93447cb1125e342b73a8dd2bacbe47e4b6b63ed5e " ,
" chain_hash " : " 52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971 "
} ,
" result " : " ERR_RELEASE_INVALID " ,
" text " : " provider: signature is 47 bytes, bls-unchained-g1-rfc9380 uses 48: ERR_RELEASE_INVALID "
} ,
{
" name " : " signature of 96 bytes, the size of G2 " ,
" encoding " : " a50070646174656b6579732d72656c65617365010102582052db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971031903e8045860b44679b9a59af2ec876b1a6b1ad52ea9b1615fc3982b19576350f93447cb1125e342b73a8dd2bacbe47e4b6b63ed5e39b44679b9a59af2ec876b1a6b1ad52ea9b1615fc3982b19576350f93447cb1125e342b73a8dd2bacbe47e4b6b63ed5e39 " ,
" round " : 1000 ,
" release " : {
" round " : 1000 ,
" signature " : " b44679b9a59af2ec876b1a6b1ad52ea9b1615fc3982b19576350f93447cb1125e342b73a8dd2bacbe47e4b6b63ed5e39b44679b9a59af2ec876b1a6b1ad52ea9b1615fc3982b19576350f93447cb1125e342b73a8dd2bacbe47e4b6b63ed5e39 " ,
" chain_hash " : " 52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971 "
} ,
" result " : " ERR_RELEASE_INVALID " ,
" text " : " provider: signature is 96 bytes, bls-unchained-g1-rfc9380 uses 48: ERR_RELEASE_INVALID "
} ,
{
" name " : " signature of zeros " ,
" encoding " : " a50070646174656b6579732d72656c65617365010102582052db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971031903e8045830000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 " ,
" round " : 1000 ,
" release " : {
" round " : 1000 ,
" signature " : " 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 " ,
" chain_hash " : " 52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971 "
} ,
" result " : " ERR_RELEASE_INVALID " ,
" text " : " provider: the signature is not a canonical point encoding, or does not verify as the BLS signature of round 1000 under datekeys:quicknet:v1: ERR_RELEASE_INVALID "
} ,
{
" name " : " signature the point at infinity " ,
" encoding " : " a50070646174656b6579732d72656c65617365010102582052db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971031903e8045830c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 " ,
" round " : 1000 ,
" release " : {
" round " : 1000 ,
" signature " : " c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 " ,
" chain_hash " : " 52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971 "
} ,
" result " : " ERR_RELEASE_INVALID " ,
" text " : " provider: the signature is not a canonical point encoding, or does not verify as the BLS signature of round 1000 under datekeys:quicknet:v1: ERR_RELEASE_INVALID "
} ,
{
" name " : " signature with the infinity flag and a payload " ,
" encoding " : " a50070646174656b6579732d72656c65617365010102582052db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971031903e8045830d44679b9a59af2ec876b1a6b1ad52ea9b1615fc3982b19576350f93447cb1125e342b73a8dd2bacbe47e4b6b63ed5e39 " ,
" round " : 1000 ,
" release " : {
" round " : 1000 ,
" signature " : " d44679b9a59af2ec876b1a6b1ad52ea9b1615fc3982b19576350f93447cb1125e342b73a8dd2bacbe47e4b6b63ed5e39 " ,
" chain_hash " : " 52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971 "
} ,
" result " : " ERR_RELEASE_INVALID " ,
" text " : " provider: the signature is not a canonical point encoding, or does not verify as the BLS signature of round 1000 under datekeys:quicknet:v1: ERR_RELEASE_INVALID "
} ,
{
" name " : " signature negated " ,
" encoding " : " a50070646174656b6579732d72656c65617365010102582052db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971031903e8045830944679b9a59af2ec876b1a6b1ad52ea9b1615fc3982b19576350f93447cb1125e342b73a8dd2bacbe47e4b6b63ed5e39 " ,
" round " : 1000 ,
" release " : {
" round " : 1000 ,
" signature " : " 944679b9a59af2ec876b1a6b1ad52ea9b1615fc3982b19576350f93447cb1125e342b73a8dd2bacbe47e4b6b63ed5e39 " ,
" chain_hash " : " 52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971 "
} ,
" result " : " ERR_RELEASE_INVALID " ,
" text " : " provider: the signature is not a canonical point encoding, or does not verify as the BLS signature of round 1000 under datekeys:quicknet:v1: ERR_RELEASE_INVALID "
} ,
{
" name " : " signature of round 1004 with x + p " ,
" encoding " : " a50070646174656b6579732d72656c65617365010102582052db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971031903ec045830be076aa25a40df5b4d22f9f7bcedaff30dcac20d94556107b8e652c7b54b2a440ce796f9fa53ad28023c84b40a580f55 " ,
" round " : 1004 ,
" release " : {
" round " : 1004 ,
" signature " : " be076aa25a40df5b4d22f9f7bcedaff30dcac20d94556107b8e652c7b54b2a440ce796f9fa53ad28023c84b40a580f55 " ,
" chain_hash " : " 52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971 "
} ,
" result " : " ERR_RELEASE_INVALID " ,
" text " : " provider: the signature is not a canonical point encoding, or does not verify as the BLS signature of round 1004 under datekeys:quicknet:v1: ERR_RELEASE_INVALID "
}
] ,
" json " : [
{
" name " : " the answer of a relay, API v2 " ,
" input " : " { \" round \" :1000, \" signature \" : \" b44679b9a59af2ec876b1a6b1ad52ea9b1615fc3982b19576350f93447cb1125e342b73a8dd2bacbe47e4b6b63ed5e39 \" } " ,
" round " : 1000 ,
" release " : {
" round " : 1000 ,
" signature " : " b44679b9a59af2ec876b1a6b1ad52ea9b1615fc3982b19576350f93447cb1125e342b73a8dd2bacbe47e4b6b63ed5e39 "
} ,
" result " : " ok "
} ,
{
" name " : " with randomness, API v1 " ,
" input " : " { \" round \" :1000, \" randomness \" : \" fe290beca10872ef2fb164d2aa4442de4566183ec51c56ff3cd603d930e54fdd \" , \" signature \" : \" b44679b9a59af2ec876b1a6b1ad52ea9b1615fc3982b19576350f93447cb1125e342b73a8dd2bacbe47e4b6b63ed5e39 \" } " ,
" round " : 1000 ,
" release " : {
" round " : 1000 ,
" signature " : " b44679b9a59af2ec876b1a6b1ad52ea9b1615fc3982b19576350f93447cb1125e342b73a8dd2bacbe47e4b6b63ed5e39 "
} ,
" result " : " ok "
} ,
{
" name " : " spaces and a line feed before and after " ,
" input " : " \n { \" round \" : 1000, \" signature \" : \" B44679B9A59AF2EC876B1A6B1AD52EA9B1615FC3982B19576350F93447CB1125E342B73A8DD2BACBE47E4B6B63ED5E39 \" } \n " ,
" round " : 1000 ,
" release " : {
" round " : 1000 ,
" signature " : " b44679b9a59af2ec876b1a6b1ad52ea9b1615fc3982b19576350f93447cb1125e342b73a8dd2bacbe47e4b6b63ed5e39 "
} ,
" result " : " ok "
} ,
{
" name " : " randomness of another signature " ,
" input " : " { \" round \" :1000, \" randomness \" : \" b0a591ad1b9002cfc372ac6e30abd3da8d3088d4caae026961743474fb94235f \" , \" signature \" : \" b44679b9a59af2ec876b1a6b1ad52ea9b1615fc3982b19576350f93447cb1125e342b73a8dd2bacbe47e4b6b63ed5e39 \" } " ,
" round " : 1000 ,
" result " : " ERR_RELEASE_INVALID " ,
" text " : " provider: drand JSON: randomness does not match the signature: ERR_RELEASE_INVALID "
} ,
{
" name " : " without signature " ,
" input " : " { \" round \" :1000} " ,
" round " : 1000 ,
" result " : " ERR_RELEASE_INVALID " ,
" text " : " provider: drand JSON: malformed, or without round or signature: ERR_RELEASE_INVALID "
} ,
{
" name " : " without round " ,
" input " : " { \" signature \" : \" b44679b9a59af2ec876b1a6b1ad52ea9b1615fc3982b19576350f93447cb1125e342b73a8dd2bacbe47e4b6b63ed5e39 \" } " ,
" round " : 1000 ,
" result " : " ERR_RELEASE_INVALID " ,
" text " : " provider: drand JSON: malformed, or without round or signature: ERR_RELEASE_INVALID "
} ,
{
" name " : " signature not in hexadecimal " ,
" input " : " { \" round \" :1000, \" signature \" : \" b44679b9a59af2ec876b1a6b1ad52ea9b1615fc3982b19576350f93447cb1125e342b73a8dd2bacbe47e4b6b63ed5ezz \" } " ,
" round " : 1000 ,
" result " : " ERR_RELEASE_INVALID " ,
" text " : " provider: drand JSON: signature is not hex: ERR_RELEASE_INVALID "
} ,
{
" name " : " round as a string " ,
" input " : " { \" round \" : \" 1000 \" , \" signature \" : \" b44679b9a59af2ec876b1a6b1ad52ea9b1615fc3982b19576350f93447cb1125e342b73a8dd2bacbe47e4b6b63ed5e39 \" } " ,
" round " : 1000 ,
" result " : " ERR_RELEASE_INVALID " ,
" text " : " provider: drand JSON: malformed, or without round or signature: ERR_RELEASE_INVALID "
} ,
{
" name " : " not JSON " ,
" input " : " { \" round \" :1000, " ,
" round " : 1000 ,
" result " : " ERR_RELEASE_INVALID " ,
" text " : " provider: drand JSON: malformed, or without round or signature: ERR_RELEASE_INVALID "
} ,
{
" name " : " 8193 bytes " ,
" input " : " { \" round \" :1000, \" signature \" : \" b44679b9a59af2ec876b1a6b1ad52ea9b1615fc3982b19576350f93447cb1125e342b73a8dd2bacbe47e4b6b63ed5e39 \" }
" round " : 1000 ,
" result " : " ERR_RELEASE_INVALID " ,
" text " : " provider: drand JSON of 8193 bytes, larger than 8192: ERR_RELEASE_INVALID "
} ,
{
" name " : " round 1001 for a DateKey of round 1000 " ,
" input " : " { \" round \" :1001, \" signature \" : \" b33bf3667cbd5a82de3a24b4e0e9fe5513cc1a0e840368c6e31f5fcfa79bea03f73896b25883abf2853d10337fb8fa41 \" } " ,
" round " : 1000 ,
" release " : {
" round " : 1001 ,
" signature " : " b33bf3667cbd5a82de3a24b4e0e9fe5513cc1a0e840368c6e31f5fcfa79bea03f73896b25883abf2853d10337fb8fa41 "
} ,
" result " : " ERR_ROUND_MISMATCH " ,
" text " : " provider: release for round 1001, expected 1000: ERR_ROUND_MISMATCH "
} ,
{
" name " : " the signature of round 1001 as round 1000 " ,
" input " : " { \" round \" :1000, \" signature \" : \" b33bf3667cbd5a82de3a24b4e0e9fe5513cc1a0e840368c6e31f5fcfa79bea03f73896b25883abf2853d10337fb8fa41 \" } " ,
" round " : 1000 ,
" release " : {
" round " : 1000 ,
" signature " : " b33bf3667cbd5a82de3a24b4e0e9fe5513cc1a0e840368c6e31f5fcfa79bea03f73896b25883abf2853d10337fb8fa41 "
} ,
" result " : " ERR_RELEASE_INVALID " ,
" text " : " provider: the signature is not a canonical point encoding, or does not verify as the BLS signature of round 1000 under datekeys:quicknet:v1: ERR_RELEASE_INVALID "
}
] ,
" archive " : {
" file " : " releases/archive_1000_1004.bin " ,
" header " : " a5007818646174656b6579732d72656c656173652d61726368697665010102582052db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971031903e80405 " ,
" lookups " : [
{
" round " : 999 ,
" result " : " ERR_RELEASE_UNAVAILABLE "
} ,
{
" round " : 1000 ,
" encoding " : " a50070646174656b6579732d72656c65617365010102582052db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971031903e8045830b44679b9a59af2ec876b1a6b1ad52ea9b1615fc3982b19576350f93447cb1125e342b73a8dd2bacbe47e4b6b63ed5e39 " ,
" result " : " ok "
} ,
{
" round " : 1001 ,
" encoding " : " a50070646174656b6579732d72656c65617365010102582052db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971031903e9045830b33bf3667cbd5a82de3a24b4e0e9fe5513cc1a0e840368c6e31f5fcfa79bea03f73896b25883abf2853d10337fb8fa41 " ,
" result " : " ok "
} ,
{
" round " : 1002 ,
" result " : " ERR_RELEASE_UNAVAILABLE "
} ,
{
" round " : 1003 ,
" result " : " ERR_RELEASE_UNAVAILABLE "
} ,
{
" round " : 1004 ,
" encoding " : " a50070646174656b6579732d72656c65617365010102582052db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971031903ec045830a40658b820c0f8c10207524179a2031ba9537688a0d04e4851b58026be9a341fee3b96fb48ffad28483d84b40a5864aa " ,
" result " : " ok "
} ,
{
" round " : 1005 ,
" result " : " ERR_RELEASE_UNAVAILABLE "
}
]
}
}
''' ;
/// The files of testdata/releases/, by name, in hexadecimal.
const releaseFiles = {
' 1000.cbor ' : ' a50070646174656b6579732d72656c65617365010102582052db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971031903e8045830b44679b9a59af2ec876b1a6b1ad52ea9b1615fc3982b19576350f93447cb1125e342b73a8dd2bacbe47e4b6b63ed5e39 ' ,
' 1001.cbor ' : ' a50070646174656b6579732d72656c65617365010102582052db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971031903e9045830b33bf3667cbd5a82de3a24b4e0e9fe5513cc1a0e840368c6e31f5fcfa79bea03f73896b25883abf2853d10337fb8fa41 ' ,
' 1004.cbor ' : ' a50070646174656b6579732d72656c65617365010102582052db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971031903ec045830a40658b820c0f8c10207524179a2031ba9537688a0d04e4851b58026be9a341fee3b96fb48ffad28483d84b40a5864aa ' ,
' 2000.cbor ' : ' a50070646174656b6579732d72656c65617365010102582052db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971031907d0045830b6cb8f482a0b15d45936a4c4ea08e98a087e71787caee3f4d07a8a9843b1bc5423c6b3c22f446488b3137eaca799c77e ' ,
Specification 0.15: the release object, a release in hand and step 9.c
specVersion is 0.15 and testdata is synced with datekeys-go at 3c3e737
(branch v0.15): every file changes its spec field, mutations.json gains the
field source and four cases, and vectors/release.json and releases/ are new
(142 files).
release.dart, as provider of Go at 2eeca40, with its texts: encodeRelease
and decodeRelease of the release object (spec v0.15, 47.1) with the CBOR
profile of the library, its size first, then its type and version, then its
schema; parseRelease, which also reads drand's JSON with the rules of
encoding/json of Go for its three fields; verifyRelease checks the chain hash
a release names, ERR_PROFILE_MISMATCH, before its round and its signature;
ReleaseSupplier, EncodedRelease and supplyRelease, a release in the caller's
hand; and ReleaseArchive, the lookup of a local release archive (50), whose
failures are ERR_RELEASE_UNAVAILABLE at step 9.
open: OpenOptions.release takes a release in hand, exclusive with source. It
is not compared with the clock (step 9.c); Opened.clockBehind reports a clock
behind it, and the step 9 detail is Go's. Step 10 starts with the layers of
the object. A network source keeps its behaviour. Opened.release carries the
chain hash of the pinned profile.
Vectors: mutation_texts.json is regenerated with tool/mutation_go_texts.go,
which now replays each case with its source as testkit does: 149 cases
change only the detail of step 9 ("release supplied by the caller"), the
case "round not reached yet" now opens, and the four new cases are added.
release_vectors.json, the open vectors, and the formats, locator, security
and seal vectors come out the same at 3c3e737 but for their spec field.
tool/release_archive_go_texts.go writes the texts of provider.Archive on
edited archives; tool/release_copy.dart copies release.json, releases/ and
those texts to release.g.dart for the tests compiled to JavaScript.
errors_spec_test reads the spec at the commit of testdata/SOURCE.json rather
than at its tag.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2 days ago
' archive_1000_1004.bin ' : ' a5007818646174656b6579732d72656c656173652d61726368697665010102582052db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971031903e80405b44679b9a59af2ec876b1a6b1ad52ea9b1615fc3982b19576350f93447cb1125e342b73a8dd2bacbe47e4b6b63ed5e39b33bf3667cbd5a82de3a24b4e0e9fe5513cc1a0e840368c6e31f5fcfa79bea03f73896b25883abf2853d10337fb8fa41000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a40658b820c0f8c10207524179a2031ba9537688a0d04e4851b58026be9a341fee3b96fb48ffad28483d84b40a5864aa ' ,
} ;
/// The text of test/vectors/release_archive_texts.json.
const releaseArchiveTextsJson = r'' '
{
" cases " : [
{
" name " : " round 999 " ,
" bytes " : " a5007818646174656b6579732d72656c656173652d61726368697665010102582052db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971031903e80405b44679b9a59af2ec876b1a6b1ad52ea9b1615fc3982b19576350f93447cb1125e342b73a8dd2bacbe47e4b6b63ed5e39b33bf3667cbd5a82de3a24b4e0e9fe5513cc1a0e840368c6e31f5fcfa79bea03f73896b25883abf2853d10337fb8fa41000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a40658b820c0f8c10207524179a2031ba9537688a0d04e4851b58026be9a341fee3b96fb48ffad28483d84b40a5864aa " ,
" round " : 999 ,
" text " : " provider: release archive: round 999 is not in the archive, which holds 5 rounds from 1000: ERR_RELEASE_UNAVAILABLE "
} ,
{
" name " : " round 1002 " ,
" bytes " : " a5007818646174656b6579732d72656c656173652d61726368697665010102582052db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971031903e80405b44679b9a59af2ec876b1a6b1ad52ea9b1615fc3982b19576350f93447cb1125e342b73a8dd2bacbe47e4b6b63ed5e39b33bf3667cbd5a82de3a24b4e0e9fe5513cc1a0e840368c6e31f5fcfa79bea03f73896b25883abf2853d10337fb8fa41000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a40658b820c0f8c10207524179a2031ba9537688a0d04e4851b58026be9a341fee3b96fb48ffad28483d84b40a5864aa " ,
" round " : 1002 ,
" text " : " provider: release archive: round 1002 is missing: its entry is zeros: ERR_RELEASE_UNAVAILABLE "
} ,
{
" name " : " round 1005 " ,
" bytes " : " a5007818646174656b6579732d72656c656173652d61726368697665010102582052db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971031903e80405b44679b9a59af2ec876b1a6b1ad52ea9b1615fc3982b19576350f93447cb1125e342b73a8dd2bacbe47e4b6b63ed5e39b33bf3667cbd5a82de3a24b4e0e9fe5513cc1a0e840368c6e31f5fcfa79bea03f73896b25883abf2853d10337fb8fa41000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a40658b820c0f8c10207524179a2031ba9537688a0d04e4851b58026be9a341fee3b96fb48ffad28483d84b40a5864aa " ,
" round " : 1005 ,
" text " : " provider: release archive: round 1005 is not in the archive, which holds 5 rounds from 1000: ERR_RELEASE_UNAVAILABLE "
} ,
{
" name " : " another chain " ,
" bytes " : " a5007818646174656b6579732d72656c656173652d61726368697665010102582052db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e970031903e80405b44679b9a59af2ec876b1a6b1ad52ea9b1615fc3982b19576350f93447cb1125e342b73a8dd2bacbe47e4b6b63ed5e39b33bf3667cbd5a82de3a24b4e0e9fe5513cc1a0e840368c6e31f5fcfa79bea03f73896b25883abf2853d10337fb8fa41000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a40658b820c0f8c10207524179a2031ba9537688a0d04e4851b58026be9a341fee3b96fb48ffad28483d84b40a5864aa " ,
" round " : 1000 ,
" text " : " provider: release archive: archive of chain 52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e970, the pinned profile datekeys:quicknet:v1 is chain 52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971: ERR_RELEASE_UNAVAILABLE "
} ,
{
" name " : " a byte missing " ,
" bytes " : " a5007818646174656b6579732d72656c656173652d61726368697665010102582052db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971031903e80405b44679b9a59af2ec876b1a6b1ad52ea9b1615fc3982b19576350f93447cb1125e342b73a8dd2bacbe47e4b6b63ed5e39b33bf3667cbd5a82de3a24b4e0e9fe5513cc1a0e840368c6e31f5fcfa79bea03f73896b25883abf2853d10337fb8fa41000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a40658b820c0f8c10207524179a2031ba9537688a0d04e4851b58026be9a341fee3b96fb48ffad28483d84b40a5864 " ,
" round " : 1000 ,
" text " : " provider: release archive: 310 bytes, its header announces 5 rounds of 48 bytes: ERR_RELEASE_UNAVAILABLE "
} ,
{
" name " : " a byte more " ,
" bytes " : " a5007818646174656b6579732d72656c656173652d61726368697665010102582052db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971031903e80405b44679b9a59af2ec876b1a6b1ad52ea9b1615fc3982b19576350f93447cb1125e342b73a8dd2bacbe47e4b6b63ed5e39b33bf3667cbd5a82de3a24b4e0e9fe5513cc1a0e840368c6e31f5fcfa79bea03f73896b25883abf2853d10337fb8fa41000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a40658b820c0f8c10207524179a2031ba9537688a0d04e4851b58026be9a341fee3b96fb48ffad28483d84b40a5864aa00 " ,
" round " : 1000 ,
" text " : " provider: release archive: 312 bytes, its header announces 5 rounds of 48 bytes: ERR_RELEASE_UNAVAILABLE "
} ,
{
" name " : " empty " ,
" bytes " : " " ,
" round " : 1000 ,
" text " : " provider: release archive: not an archive of version 1: ERR_RELEASE_UNAVAILABLE "
} ,
{
" name " : " a release object " ,
" bytes " : " a50070646174656b6579732d72656c65617365010102582052db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971031903e8045830b44679b9a59af2ec876b1a6b1ad52ea9b1615fc3982b19576350f93447cb1125e342b73a8dd2bacbe47e4b6b63ed5e39 " ,
" round " : 1000 ,
" text " : " provider: release archive: not an archive of version 1: ERR_RELEASE_UNAVAILABLE "
} ,
{
" name " : " header version 2 " ,
" bytes " : " a5007818646174656b6579732d72656c656173652d61726368697665010202582052db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971031903e80405b44679b9a59af2ec876b1a6b1ad52ea9b1615fc3982b19576350f93447cb1125e342b73a8dd2bacbe47e4b6b63ed5e39b33bf3667cbd5a82de3a24b4e0e9fe5513cc1a0e840368c6e31f5fcfa79bea03f73896b25883abf2853d10337fb8fa41000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a40658b820c0f8c10207524179a2031ba9537688a0d04e4851b58026be9a341fee3b96fb48ffad28483d84b40a5864aa " ,
" round " : 1000 ,
" text " : " provider: release archive: not an archive of version 1: ERR_RELEASE_UNAVAILABLE "
} ,
{
" name " : " count 0 " ,
" bytes " : " a5007818646174656b6579732d72656c656173652d61726368697665010102582052db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971031903e80400b44679b9a59af2ec876b1a6b1ad52ea9b1615fc3982b19576350f93447cb1125e342b73a8dd2bacbe47e4b6b63ed5e39b33bf3667cbd5a82de3a24b4e0e9fe5513cc1a0e840368c6e31f5fcfa79bea03f73896b25883abf2853d10337fb8fa41000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a40658b820c0f8c10207524179a2031ba9537688a0d04e4851b58026be9a341fee3b96fb48ffad28483d84b40a5864aa " ,
" round " : 1000 ,
" text " : " provider: release archive: round 1000 is not in the archive, which holds 0 rounds from 1000: ERR_RELEASE_UNAVAILABLE "
} ,
{
" name " : " first round in four bytes " ,
" bytes " : " a5007818646174656b6579732d72656c656173652d61726368697665010102582052db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971031a000003e80405b44679b9a59af2ec876b1a6b1ad52ea9b1615fc3982b19576350f93447cb1125e342b73a8dd2bacbe47e4b6b63ed5e39b33bf3667cbd5a82de3a24b4e0e9fe5513cc1a0e840368c6e31f5fcfa79bea03f73896b25883abf2853d10337fb8fa41000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a40658b820c0f8c10207524179a2031ba9537688a0d04e4851b58026be9a341fee3b96fb48ffad28483d84b40a5864aa " ,
" round " : 1000 ,
" text " : " provider: release archive: its header does not decode: key 3: codec: offset 66: 1000 is not in its shortest form (initial byte 0x1a): ERR_NON_CANONICAL_CBOR: ERR_RELEASE_UNAVAILABLE "
} ,
{
" name " : " four keys " ,
" bytes " : " a4007818646174656b6579732d72656c656173652d61726368697665010102582052db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971b44679b9a59af2ec876b1a6b1ad52ea9b1615fc3982b19576350f93447cb1125e342b73a8dd2bacbe47e4b6b63ed5e39b33bf3667cbd5a82de3a24b4e0e9fe5513cc1a0e840368c6e31f5fcfa79bea03f73896b25883abf2853d10337fb8fa41000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a40658b820c0f8c10207524179a2031ba9537688a0d04e4851b58026be9a341fee3b96fb48ffad28483d84b40a5864aa " ,
" round " : 1000 ,
" text " : " provider: release archive: its header does not decode: 4 keys, want all 5: ERR_RELEASE_UNAVAILABLE "
} ,
{
" name " : " only the header " ,
" bytes " : " a5007818646174656b6579732d72656c656173652d61726368697665010102582052db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971031903e80405 " ,
" round " : 1000 ,
" text " : " provider: release archive: 71 bytes, its header announces 5 rounds of 48 bytes: ERR_RELEASE_UNAVAILABLE "
} ,
{
" name " : " count 6 and 6 entries " ,
" bytes " : " a5007818646174656b6579732d72656c656173652d61726368697665010102582052db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971031903e80406b44679b9a59af2ec876b1a6b1ad52ea9b1615fc3982b19576350f93447cb1125e342b73a8dd2bacbe47e4b6b63ed5e39b33bf3667cbd5a82de3a24b4e0e9fe5513cc1a0e840368c6e31f5fcfa79bea03f73896b25883abf2853d10337fb8fa41000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a40658b820c0f8c10207524179a2031ba9537688a0d04e4851b58026be9a341fee3b96fb48ffad28483d84b40a5864aa000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 " ,
" round " : 1005 ,
" text " : " provider: release archive: round 1005 is missing: its entry is zeros: ERR_RELEASE_UNAVAILABLE "
}
] ,
" generator " : " tool/release_archive_go_texts.go "
}
''' ;