Format 3, step 3: read capsule format 3 of spec v0.10
Syncs testdata with datekeys-go at the tag spec-v0.10 (cc35d2c) and
moves the reader to the DateKeys Protocol Specification v0.10. The
three capsule formats are read.
- framing: FORMAT_3, and isPadded for formats 2 and 3. control: schema
version 3, with the keys 6 and 7 of version 2. SPEC_VERSION is 0.10.
- open: OpenOptions.sink receives the files of a format 3 capsule
(sink.ts: Sink with begin, create, commit and abort, as capsule.Sink,
and MemorySink). Without one, open rejects with a TypeError right
after step 2, before any request, as ErrSinkRequired. Opened gains
head, verdicts, areaLen and unusableHeadExtensions.
- open3.ts: step 17 of format 3 in its substeps 17.2 to 17.8, as
openBody of the reference: a failure of age or a plaintext whose
length is not P prevails, the first failing substep decides, and the
codes other than ERR_INTEGRITY are reported only after reading
PAYLOAD_AGE to its end. Reads grow with the bytes received, never
with the lengths BODY declares. A failure of the sink is ERR_INTEGRITY
with its text, and the sink is aborted once after begin.
- The page: opener.ts opens the fixtures of format 3 into a
MemorySink; the open panel says that it does not deliver their files
yet, and the glosses of the steps name format 3. check-build.mjs
refuses to ship the heads, salts, comments and paths of the format 3
fixtures.
Tests: the 21 fixtures, format 3 laid out byte by byte from its record
and opened into a sink with its files and verdicts; the 209 cases of
the corpus from memory and from a Blob, with the code, the step and,
new, the exact text of capsule.Open, frozen by
scripts/mutation-go-texts.go in testing/mutation-texts.json, which
replays the corpus as internal/testkit does (its extension validator
texts included); the 5110 differential cases over 14 bases; paths,
path_fold, head_schema and security vectors; the control of schema
version 3 in cbor.json; and step 17 on crafted plaintexts sealed again
to I_PAYLOAD, whose texts capsule.Open gives on the same plaintexts.
ibe-vectors.json gains the nine format 3 fixtures from
scripts/ibe-go-vectors.go; the twelve before are unchanged.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
1 week ago
{
"spec" : "0.13" ,
Format 3, step 3: read capsule format 3 of spec v0.10
Syncs testdata with datekeys-go at the tag spec-v0.10 (cc35d2c) and
moves the reader to the DateKeys Protocol Specification v0.10. The
three capsule formats are read.
- framing: FORMAT_3, and isPadded for formats 2 and 3. control: schema
version 3, with the keys 6 and 7 of version 2. SPEC_VERSION is 0.10.
- open: OpenOptions.sink receives the files of a format 3 capsule
(sink.ts: Sink with begin, create, commit and abort, as capsule.Sink,
and MemorySink). Without one, open rejects with a TypeError right
after step 2, before any request, as ErrSinkRequired. Opened gains
head, verdicts, areaLen and unusableHeadExtensions.
- open3.ts: step 17 of format 3 in its substeps 17.2 to 17.8, as
openBody of the reference: a failure of age or a plaintext whose
length is not P prevails, the first failing substep decides, and the
codes other than ERR_INTEGRITY are reported only after reading
PAYLOAD_AGE to its end. Reads grow with the bytes received, never
with the lengths BODY declares. A failure of the sink is ERR_INTEGRITY
with its text, and the sink is aborted once after begin.
- The page: opener.ts opens the fixtures of format 3 into a
MemorySink; the open panel says that it does not deliver their files
yet, and the glosses of the steps name format 3. check-build.mjs
refuses to ship the heads, salts, comments and paths of the format 3
fixtures.
Tests: the 21 fixtures, format 3 laid out byte by byte from its record
and opened into a sink with its files and verdicts; the 209 cases of
the corpus from memory and from a Blob, with the code, the step and,
new, the exact text of capsule.Open, frozen by
scripts/mutation-go-texts.go in testing/mutation-texts.json, which
replays the corpus as internal/testkit does (its extension validator
texts included); the 5110 differential cases over 14 bases; paths,
path_fold, head_schema and security vectors; the control of schema
version 3 in cbor.json; and step 17 on crafted plaintexts sealed again
to I_PAYLOAD, whose texts capsule.Open gives on the same plaintexts.
ibe-vectors.json gains the nine format 3 fixtures from
scripts/ibe-go-vectors.go; the twelve before are unchanged.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
1 week ago
"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" : [
{
"name" : "no files and no comment" ,
"hex" : "a3006d646174656b6579732d6865616401010258200000000000000000000000000000000000000000000000000000000000000000" ,
"result" : "ok"
} ,
{
"name" : "a comment of one byte" ,
"hex" : "a4006d646174656b6579732d6865616401010258200000000000000000000000000000000000000000000000000000000000000000036161" ,
"result" : "ok"
} ,
{
"name" : "a comment with TAB and LF" ,
"hex" : "a4006d646174656b6579732d68656164010102582000000000000000000000000000000000000000000000000000000000000000000371486f6c61096d756e646f0a616469c3b373" ,
"result" : "ok"
} ,
{
"name" : "a comment with an emoji and VS16" ,
"hex" : "a4006d646174656b6579732d6865616401010258200000000000000000000000000000000000000000000000000000000000000000036ee29da4efb88f2070617261207469" ,
"result" : "ok"
} ,
{
"name" : "a declared author" ,
"hex" : "a4006d646174656b6579732d6865616401010258200000000000000000000000000000000000000000000000000000000000000000046a416e61204cc3b370657a" ,
"result" : "ok"
} ,
{
"name" : "one file of 0 bytes" ,
"hex" : "a4006d646174656b6579732d68656164010102582000000000000000000000000000000000000000000000000000000000000000000581a5006161010002000300045820e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" ,
"result" : "ok"
} ,
{
"name" : "a file with an mtime of 0" ,
"hex" : "a4006d646174656b6579732d68656164010102582000000000000000000000000000000000000000000000000000000000000000000581a6006161010002000300045820e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b8550500" ,
"result" : "ok"
} ,
{
"name" : "a file with the last mtime, 9999-12-31T23:59:59Z" ,
"hex" : "a4006d646174656b6579732d68656164010102582000000000000000000000000000000000000000000000000000000000000000000581a6006161010002000300045820e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855051b0000003afff4417f" ,
"result" : "ok"
} ,
{
"name" : "a comment of 16384 bytes" ,
"hex" : " a 4006 d 646174656 b 6579732 d 6865616401010258200000000000000000000000000000000000000000000000000000000000000000037940006161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616
"result" : "ok"
} ,
{
"name" : "a declared author of 256 bytes" ,
"hex" : "a4006d646174656b6579732d68656164010102582000000000000000000000000000000000000000000000000000000000000000000479010061616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161" ,
"result" : "ok"
} ,
{
"name" : "a path of 1024 bytes, five segments of 204" ,
"hex" : "a4006d646174656b6579732d68656164010102582000000000000000000000000000000000000000000000000000000000000000000581a5007904006161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161612f6262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262622f6363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363632f6464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464642f656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565010002000300045820e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" ,
"result" : "ok"
} ,
{
"name" : "a noncritical extension" ,
"hex" : "a4006d646174656b6579732d68656164010102582000000000000000000000000000000000000000000000000000000000000000000781a2006d6f72672e6578616d706c652e610101" ,
"result" : "ok"
} ,
{
"name" : "the type tag of CONTROL_CBOR" ,
"hex" : "a30070646174656b6579732d636f6e74726f6c01010258200000000000000000000000000000000000000000000000000000000000000000" ,
"result" : "ERR_NON_CANONICAL_CBOR"
} ,
{
"name" : "version 2" ,
"hex" : "a3006d646174656b6579732d6865616401020258200000000000000000000000000000000000000000000000000000000000000000" ,
"result" : "ERR_UNSUPPORTED_VERSION"
} ,
{
"name" : "version 0" ,
"hex" : "a3006d646174656b6579732d6865616401000258200000000000000000000000000000000000000000000000000000000000000000" ,
"result" : "ERR_UNSUPPORTED_VERSION"
} ,
{
"name" : "a byte string as the type tag" ,
"hex" : "a3004d646174656b6579732d6865616401010258200000000000000000000000000000000000000000000000000000000000000000" ,
"result" : "ERR_NON_CANONICAL_CBOR"
} ,
{
"name" : "no salt" ,
"hex" : "a2006d646174656b6579732d686561640101" ,
"result" : "ERR_NON_CANONICAL_CBOR"
} ,
{
"name" : "a salt of 31 bytes" ,
"hex" : "a3006d646174656b6579732d68656164010102581f00000000000000000000000000000000000000000000000000000000000000" ,
"result" : "ERR_NON_CANONICAL_CBOR"
} ,
{
"name" : "a salt as a text string" ,
"hex" : "a3006d646174656b6579732d6865616401010278206161616161616161616161616161616161616161616161616161616161616161" ,
"result" : "ERR_NON_CANONICAL_CBOR"
} ,
{
"name" : "an empty comment" ,
"hex" : "a4006d646174656b6579732d68656164010102582000000000000000000000000000000000000000000000000000000000000000000360" ,
"result" : "ERR_NON_CANONICAL_CBOR"
} ,
{
"name" : "a comment of 16385 bytes" ,
"hex" : " a 4006 d 646174656 b 6579732 d 6865616401010258200000000000000000000000000000000000000000000000000000000000000000037940016161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616
"result" : "ERR_NON_CANONICAL_CBOR"
} ,
{
"name" : "a comment as a byte string" ,
"hex" : "a4006d646174656b6579732d6865616401010258200000000000000000000000000000000000000000000000000000000000000000034161" ,
"result" : "ERR_NON_CANONICAL_CBOR"
} ,
{
"name" : "a comment that is not UTF-8" ,
"hex" : "a4006d646174656b6579732d6865616401010258200000000000000000000000000000000000000000000000000000000000000000036261ff" ,
"result" : "ERR_NON_CANONICAL_CBOR"
} ,
{
"name" : "an empty declared author" ,
"hex" : "a4006d646174656b6579732d68656164010102582000000000000000000000000000000000000000000000000000000000000000000460" ,
"result" : "ERR_NON_CANONICAL_CBOR"
} ,
{
"name" : "a declared author of 257 bytes" ,
"hex" : "a4006d646174656b6579732d6865616401010258200000000000000000000000000000000000000000000000000000000000000000047901016161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161" ,
"result" : "ERR_NON_CANONICAL_CBOR"
} ,
{
"name" : "an empty array of files" ,
"hex" : "a4006d646174656b6579732d68656164010102582000000000000000000000000000000000000000000000000000000000000000000580" ,
"result" : "ERR_NON_CANONICAL_CBOR"
} ,
{
"name" : "a file without its SHA-256" ,
"hex" : "a4006d646174656b6579732d68656164010102582000000000000000000000000000000000000000000000000000000000000000000581a4006161010002000300" ,
"result" : "ERR_NON_CANONICAL_CBOR"
} ,
{
"name" : "a file with a SHA-256 of 31 bytes" ,
"hex" : "a4006d646174656b6579732d68656164010102582000000000000000000000000000000000000000000000000000000000000000000581a500616101000200030004581f00000000000000000000000000000000000000000000000000000000000000" ,
"result" : "ERR_NON_CANONICAL_CBOR"
} ,
{
"name" : "a file with an unknown key 6" ,
"hex" : "a4006d646174656b6579732d68656164010102582000000000000000000000000000000000000000000000000000000000000000000581a6006161010002000300045820e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b8550600" ,
"result" : "ERR_NON_CANONICAL_CBOR"
} ,
{
"name" : "an empty path" ,
"hex" : "a4006d646174656b6579732d68656164010102582000000000000000000000000000000000000000000000000000000000000000000581a50060010002000300045820e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" ,
"result" : "ERR_NON_CANONICAL_CBOR"
} ,
{
"name" : "a path of 1025 bytes" ,
"hex" : "a4006d646174656b6579732d68656164010102582000000000000000000000000000000000000000000000000000000000000000000581a500790401612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f612f61010002000300045820e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" ,
"result" : "ERR_NON_CANONICAL_CBOR"
} ,
{
"name" : "a path that is not UTF-8" ,
"hex" : "a4006d646174656b6579732d68656164010102582000000000000000000000000000000000000000000000000000000000000000000581a5006261ff010002000300045820e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" ,
"result" : "ERR_NON_CANONICAL_CBOR"
} ,
{
"name" : "a size above L_MAX" ,
"hex" : "a4006d646174656b6579732d68656164010102582000000000000000000000000000000000000000000000000000000000000000000581a5006161011b001fc000000000010200031b001fc00000000001045820e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" ,
"result" : "ERR_NON_CANONICAL_CBOR"
} ,
{
"name" : "an mtime of 253402300800" ,
"hex" : "a4006d646174656b6579732d68656164010102582000000000000000000000000000000000000000000000000000000000000000000581a6006161010002000300045820e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855051b0000003afff44180" ,
"result" : "ERR_NON_CANONICAL_CBOR"
} ,
{
"name" : "an unknown key 8" ,
"hex" : "a4006d646174656b6579732d68656164010102582000000000000000000000000000000000000000000000000000000000000000000800" ,
"result" : "ERR_NON_CANONICAL_CBOR"
} ,
{
"name" : "keys out of order" ,
"hex" : "a4006d646174656b6579732d6865616401010361610258200000000000000000000000000000000000000000000000000000000000000000" ,
"result" : "ERR_NON_CANONICAL_CBOR"
} ,
{
"name" : "a byte more after the map" ,
"hex" : "a3006d646174656b6579732d686561640101025820000000000000000000000000000000000000000000000000000000000000000000" ,
"result" : "ERR_NON_CANONICAL_CBOR"
} ,
{
"name" : "paths b and a, in that order" ,
"hex" : "a4006d646174656b6579732d68656164010102582000000000000000000000000000000000000000000000000000000000000000000582a5006162010002000300045820e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855a5006161010002000300045820e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" ,
"result" : "ERR_NON_CANONICAL_CBOR"
} ,
{
"name" : "paths b/.. and a: R8 before R3" ,
"hex" : "a4006d646174656b6579732d68656164010102582000000000000000000000000000000000000000000000000000000000000000000582a50064622f2e2e010002000300045820e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855a5006161010002000300045820e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" ,
"result" : "ERR_NON_CANONICAL_CBOR"
} ,
{
"name" : "an empty array of critical extensions" ,
"hex" : "a4006d646174656b6579732d68656164010102582000000000000000000000000000000000000000000000000000000000000000000680" ,
"result" : "ERR_NON_CANONICAL_CBOR"
} ,
{
"name" : "a comment with U+202E" ,
"hex" : "a4006d646174656b6579732d6865616401010258200000000000000000000000000000000000000000000000000000000000000000036561e280ae62" ,
"result" : "ERR_HEAD_INVALID" ,
"detail" : "comment: text: bidirectional control U+202E"
} ,
{
"name" : "a comment with the tag U+E0041" ,
"hex" : "a4006d646174656b6579732d68656164010102582000000000000000000000000000000000000000000000000000000000000000000368486f6c61f3a08181" ,
"result" : "ERR_HEAD_INVALID" ,
"detail" : "comment: text: invisible U+E0041"
} ,
{
"name" : "a comment with tags that spell a text" ,
"hex" : "a4006d646174656b6579732d686561640101025820000000000000000000000000000000000000000000000000000000000000000003781c486f6c61f3a08189f3a08187f3a0818ef3a0818ff3a08192f3a08181" ,
"result" : "ERR_HEAD_INVALID" ,
"detail" : "comment: text: invisible U+E0049"
} ,
{
"name" : "a comment with VS16 after a letter" ,
"hex" : "a4006d646174656b6579732d6865616401010258200000000000000000000000000000000000000000000000000000000000000000036461efb88f" ,
"result" : "ERR_HEAD_INVALID" ,
"detail" : "comment: text: line 1: U+FE0F is not part of an emoji variation sequence"
} ,
{
"name" : "a comment with a run of variation selectors" ,
"hex" : "a4006d646174656b6579732d68656164010102582000000000000000000000000000000000000000000000000000000000000000000369e29da4efb88fefb88f" ,
"result" : "ERR_HEAD_INVALID" ,
"detail" : "comment: text: line 1: U+FE0F is not part of an emoji variation sequence"
} ,
{
"name" : "a comment with VS17" ,
"hex" : "a4006d646174656b6579732d68656164010102582000000000000000000000000000000000000000000000000000000000000000000368f09f9880f3a08480" ,
"result" : "ERR_HEAD_INVALID" ,
"detail" : "comment: text: invisible U+E0100"
} ,
{
"name" : "a comment with CR LF" ,
"hex" : "a4006d646174656b6579732d68656164010102582000000000000000000000000000000000000000000000000000000000000000000364610d0a62" ,
"result" : "ERR_HEAD_INVALID" ,
"detail" : "comment: text: control U+000D"
} ,
{
"name" : "a comment with ZWJ at the end of a line" ,
"hex" : "a4006d646174656b6579732d6865616401010258200000000000000000000000000000000000000000000000000000000000000000036661e2808d0a62" ,
"result" : "ERR_HEAD_INVALID" ,
"detail" : "comment: text: line 1: U+200D at the end"
} ,
{
"name" : "a declared author with LF" ,
"hex" : "a4006d646174656b6579732d6865616401010258200000000000000000000000000000000000000000000000000000000000000000046a416e610a4cc3b370657a" ,
"result" : "ERR_HEAD_INVALID" ,
"detail" : "declared author: text: control U+000A in the declared author"
} ,
{
"name" : "a declared author with TAB" ,
"hex" : "a4006d646174656b6579732d6865616401010258200000000000000000000000000000000000000000000000000000000000000000046a416e61094cc3b370657a" ,
"result" : "ERR_HEAD_INVALID" ,
"detail" : "declared author: text: control U+0009 in the declared author"
} ,
{
"name" : "a declared author with a leading space" ,
"hex" : "a4006d646174656b6579732d6865616401010258200000000000000000000000000000000000000000000000000000000000000000046420416e61" ,
"result" : "ERR_HEAD_INVALID" ,
"detail" : "declared author: text: the declared author starts or ends with U+0020"
} ,
{
"name" : "a declared author with U+200E" ,
"hex" : "a4006d646174656b6579732d6865616401010258200000000000000000000000000000000000000000000000000000000000000000046561e2808e62" ,
"result" : "ERR_HEAD_INVALID" ,
"detail" : "declared author: text: bidirectional control U+200E"
} ,
{
"name" : "path .." ,
"hex" : "a4006d646174656b6579732d68656164010102582000000000000000000000000000000000000000000000000000000000000000000581a500622e2e010002000300045820e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" ,
"result" : "ERR_HEAD_INVALID" ,
"detail" : "file 1: R3: segment 1: the segment is two dots"
} ,
{
"name" : "path /a" ,
"hex" : "a4006d646174656b6579732d68656164010102582000000000000000000000000000000000000000000000000000000000000000000581a500622f61010002000300045820e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" ,
"result" : "ERR_HEAD_INVALID" ,
"detail" : "file 1: R2: segment 1 is empty"
} ,
{
"name" : "path CON.txt" ,
"hex" : "a4006d646174656b6579732d68656164010102582000000000000000000000000000000000000000000000000000000000000000000581a50067434f4e2e747874010002000300045820e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" ,
"result" : "ERR_HEAD_INVALID" ,
"detail" : "file 1: R6: segment 1: CON is a reserved device name"
} ,
{
"name" : "path .datekeys-x" ,
"hex" : "a4006d646174656b6579732d68656164010102582000000000000000000000000000000000000000000000000000000000000000000581a5006b2e646174656b6579732d78010002000300045820e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" ,
"result" : "ERR_HEAD_INVALID" ,
"detail" : "file 1: R10: the first segment starts with \".datekeys-\""
} ,
{
"name" : "a first start that is not 0" ,
"hex" : "a4006d646174656b6579732d68656164010102582000000000000000000000000000000000000000000000000000000000000000000581a5006161010102010302045820e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" ,
"result" : "ERR_HEAD_INVALID" ,
"detail" : "file 1: start 1 is not 0, the end of the file before"
} ,
{
"name" : "end minus start that is not size" ,
"hex" : "a4006d646174656b6579732d68656164010102582000000000000000000000000000000000000000000000000000000000000000000581a5006161010202000301045820e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" ,
"result" : "ERR_HEAD_INVALID" ,
"detail" : "file 1: from start 0 to end 1 is not the size 2"
} ,
{
"name" : "a gap between two files" ,
"hex" : "a4006d646174656b6579732d68656164010102582000000000000000000000000000000000000000000000000000000000000000000582a5006161010102000301045820e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855a5006162010102020303045820e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" ,
"result" : "ERR_HEAD_INVALID" ,
"detail" : "file 2: start 2 is not 1, the end of the file before"
} ,
{
"name" : "paths A.txt and a.txt" ,
"hex" : "a4006d646174656b6579732d68656164010102582000000000000000000000000000000000000000000000000000000000000000000582a50065412e747874010002000300045820e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855a50065612e747874010002000300045820e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" ,
"result" : "ERR_HEAD_INVALID" ,
"detail" : "R7: path 2 collides with path 1 in segment 1"
} ,
{
"name" : "a comment and a path that break: the comment first" ,
"hex" : "a5006d646174656b6579732d6865616401010258200000000000000000000000000000000000000000000000000000000000000000036461e280ae0581a500622e2e010002000300045820e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" ,
"result" : "ERR_HEAD_INVALID" ,
"detail" : "comment: text: bidirectional control U+202E"
} ,
{
"name" : "a path that breaks and an unknown critical extension: the path first" ,
"hex" : "a5006d646174656b6579732d68656164010102582000000000000000000000000000000000000000000000000000000000000000000581a500622e2e010002000300045820e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b8550681a2006d6f72672e6578616d706c652e610101" ,
"result" : "ERR_HEAD_INVALID" ,
"detail" : "file 1: R3: segment 1: the segment is two dots"
} ,
{
"name" : "an unknown critical extension" ,
"hex" : "a4006d646174656b6579732d68656164010102582000000000000000000000000000000000000000000000000000000000000000000681a2006d6f72672e6578616d706c652e610101" ,
"result" : "ERR_EXTENSION_CRITICAL_UNKNOWN"
}
]
}