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" : "The key of R7 (spec §29.5) of segments, with the Unicode 18.0.0 tables of §29.5.1, generated by the reference implementation: nfd is NFD(segment) and key is NFD(fold(NFD(s'))), s' the segment without ZWNJ, ZWJ, VS15 and VS16. See testdata/README.md." ,
"unicode_version" : "18.0.0" ,
Key of words v2: salted with capsule_id, lowered with Unicode 18.0.0
As the spec v0.11 draft decides after its review (38.1), and as the Go
reference does from 2213b8c:
- dkc/wordkey.ts replaces inspector/wordkey.ts. The salt carries the
capsule_id too, so the same words give another key in each capsule;
the words are lowered with the new LOWERCASE table of pathrule.ts,
loaded on demand; checkWords refuses controls, invisible and
unassigned code points and counts only different words of three
letters or more, with the errors of Go. New vector of 38.1.
- encryptFiles takes the words and derives their key once it has drawn
capsule_id; the creator passes them, and the opener salts them with
the capsule_id of the capsule.
- /create asks for the words twice and shows how they are kept; the form
checks them with the tables of the platform, and the writer again with
those of Unicode 18.0.0.
- The tables, regenerated with the lower case, and testdata synced from
2213b8c; the frozen texts of Go for the invalid options, updated.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
1 week ago
"tables_digest" : "07cf5d54aea1cd13a3ecef14a06976cc49a3cdad755cf9bc10395178b93aeb07" ,
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
"keys" : [
{
"name" : "ASCII capitals" ,
"segment" : "A.txt" ,
"nfd" : "A.txt" ,
"key" : "a.txt"
} ,
{
"name" : "sharp s, entry F" ,
"segment" : "Straße" ,
"nfd" : "Straße" ,
"key" : "strasse"
} ,
{
"name" : "capital sharp s" ,
"segment" : "ẞ" ,
"nfd" : "ẞ" ,
"key" : "ss"
} ,
{
"name" : "the Kelvin sign, a singleton decomposition" ,
"segment" : "K " ,
"nfd" : "K" ,
"key" : "k"
} ,
{
"name" : "the Angstrom sign" ,
"segment" : "Å" ,
"nfd" : "Å" ,
"key" : "å"
} ,
{
"name" : "dotless i, the extra folding of NTFS" ,
"segment" : "ı " ,
"nfd" : "ı " ,
"key" : "i"
} ,
{
"name" : "capital I with a dot, entry F" ,
"segment" : "İ" ,
"nfd" : "İ" ,
"key" : "i̇"
} ,
{
"name" : "precomposed e acute" ,
"segment" : "é" ,
"nfd" : "é" ,
"key" : "é"
} ,
{
"name" : "decomposed e acute" ,
"segment" : "é" ,
"nfd" : "é" ,
"key" : "é"
} ,
{
"name" : "final sigma" ,
"segment" : "ς" ,
"nfd" : "ς" ,
"key" : "σ "
} ,
{
"name" : "U+0390, recursive decomposition" ,
"segment" : "ΐ" ,
"nfd" : "ΐ" ,
"key" : "ΐ"
} ,
{
"name" : "a Cherokee small letter folds to the capital" ,
"segment" : "ꭰ" ,
"nfd" : "ꭰ" ,
"key" : "Ꭰ "
} ,
{
"name" : "a Cherokee capital stays" ,
"segment" : "Ꭰ " ,
"nfd" : "Ꭰ " ,
"key" : "Ꭰ "
} ,
{
"name" : "ligature ff, entry F" ,
"segment" : "ff" ,
"nfd" : "ff" ,
"key" : "ff"
} ,
{
"name" : "DZ with caron, titlecase" ,
"segment" : "Dž" ,
"nfd" : "Dž" ,
"key" : "dž"
} ,
{
"name" : "Hangul syllable with a final jamo" ,
"segment" : "한" ,
"nfd" : "한" ,
"key" : "한"
} ,
{
"name" : "canonical order of two marks" ,
"segment" : "ạ́" ,
"nfd" : "ạ́" ,
"key" : "ạ́"
} ,
{
"name" : "ZWJ between marks is dropped before NFD" ,
"segment" : "á ̣" ,
"nfd" : "á ̣" ,
"key" : "ạ́"
} ,
{
"name" : "ZWNJ is dropped" ,
"segment" : "a b" ,
"nfd" : "a b" ,
"key" : "ab"
} ,
{
"name" : "VS16 and ZWJ of the rainbow flag are dropped" ,
"segment" : "🏳️🌈" ,
"nfd" : "🏳️🌈" ,
"key" : "🏳🌈"
} ,
{
"name" : "a reserved prefix, compared by its key" ,
"segment" : ".DateKeys-X" ,
"nfd" : ".DateKeys-X" ,
"key" : ".datekeys-x"
} ,
{
"name" : "full-width letters fold, not to ASCII" ,
"segment" : "C O N " ,
"nfd" : "C O N " ,
"key" : "c o n "
}
]
}