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
{
Specification 0.14, approved: SPEC_VERSION 0.14, testdata at spec-v0.14, one drand scheme and tlock_steps.json
- SPEC_VERSION 0.14; testdata synced from datekeys-go at 39b2033
(spec-v0.14), which adds vectors/tlock_steps.json;
testing/mutation-texts.json regenerated with Go: only its spec field
changes.
- Decision 8: validateProfile admits only bls-unchained-g1-rfc9380, with
its public key in G2, in the order and with the texts of Go's
validateDrand at c041fa3; any other drand scheme fails with
ERR_UNKNOWN_PROFILE before the key and the chain hash.
- vectors.test.ts walks tlock_steps.json value by value with the code of
ibe.ts, release.ts and bls12381.ts, with its negative checks, and the
testdata guard requires it. ibe.ts exports h3Base, h3Try and hashToG1,
which h3, the encryption and release.ts now use.
- The comment of h3 said the top bit is cleared: the first byte is
shifted one bit to the right, as kyber does.
- README and CHANGELOG.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
1 day ago
"spec" : "0.14" ,
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"
}
]
}