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" : "format 3 time_only capsule with five files in three folders, one of them over two STREAM chunks and one without mtime, a comment of two lines and a declared author" ,
"spec" : "0.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
"format" : 3 ,
"file" : "format3_tree.dkc" ,
"sha256" : "217f378faaf795f6a9c416b564fb8931bb2e896918aee870120fd14f9a5da7d1" ,
"release" : {
"round" : 1001 ,
"signature" : "b33bf3667cbd5a82de3a24b4e0e9fe5513cc1a0e840368c6e31f5fcfa79bea03f73896b25883abf2853d10337fb8fa41"
} ,
"prelude" : "444b43310300000000000079000001ca" ,
"public_header" : "a5006a646174656b657963617001010250091119676ec081409c666846153ba7eb037853646b315f65794a325a584a7a61573975496a6f784c434a755a58523362334a72496a6f695a4746305a57746c65584d3663585670593274755a585136646a45694c434a79623356755a4349364d5441774d58300400" ,
"datekey" : "dk1_eyJ2ZXJzaW9uIjoxLCJuZXR3b3JrIjoiZGF0ZWtleXM6cXVpY2tuZXQ6djEiLCJyb3VuZCI6MTAwMX0" ,
"capsule_id" : "091119676ec081409c666846153ba7eb" ,
"access_policy" : "time_only" ,
"structure" : "time_only" ,
"unlock_at" : "2023-08-23T15:59:27Z" ,
"header_binding" : "a369edff0cde0c948ccf0be811991b5f466f3128e2d76ab5f2604741cbcd7eb9" ,
"outer_stanzas" : [
{
"type" : "tlock" ,
"args" : [
"1001" ,
"52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971"
]
}
] ,
"payload_stanzas" : [
{
"type" : "X25519" ,
"args" : [
"secFiYmnRb5jyjFfrsZs5TWl6ZQ4c6qwPoRK7yvMJAw"
]
}
] ,
"control_cbor" : "a60070646174656b6579732d636f6e74726f6c0103025820a369edff0cde0c948ccf0be811991b5f466f3128e2d76ab5f2604741cbcd7eb90358206084cf489493da67e85e71b3ef5c2e6e17db1a11795fce9be601c062db4f7c8d0648000000000001486e0702" ,
"payload_identity" : "6084cf489493da67e85e71b3ef5c2e6e17db1a11795fce9be601c062db4f7c8d" ,
"payload_length" : 84078 ,
"padding" : 2 ,
"padded_length" : 86016 ,
"plaintext_file" : "format3_tree.plaintext" ,
"plaintext_sha256" : "f69ac5f450966f7d0e9161aa37451d4260b194a750e3e132c02e8a15ba561cfa" ,
"area_len" : 512 ,
"security_cbor" : "a20071646174656b6579732d73656375726974790101" ,
"head_cbor" : "a6006d646174656b6579732d686561640101025820276d7d0418b5fe20dfa9a440c9cf6a259d041238433b44c1d331bfc25ff0bc3903782f5061726120616272697220656e2066616d696c69612e0a436f6e2063617269c3b16f2c20646573646520323032362e046a416e61204cc3b370657a0585a6006963617274612e747874011825020003182504582089f8d33bccb614f3928203cdc48da69b2c7e3eedddcc097d47977806077fb5c1051a6abcf9c0a5007818666f746f732f323032352f6174617264656365722e6a706701190bb802182503190bdd045820cc26b6f4c05b315883de7ca59eb990a56efaff70c6b8f366e900975804b27b18a60074666f746f732f323032352f706c6179612e6a7067011a0001388002190bdd031a0001445d0458205619f3e6974f07c51e71777064e0d46992144fe91f6218fb00ac2e7074555ed1051a6abba840a6006f666f746f732f6c65656d652e7478740116021a0001445d031a00014473045820cc5e54573bb1b57f0481843fe6c1bd7bebd236d73057220cc8dba732d9cf4700051a6abcf9c0a600746dc3ba736963612f63616e6369c3b36e2e747874010c021a00014473031a0001447f0458203e1453835def913b4b9ef720e11e5e2ac167a9af12b9f0a5417be8f84ded5e5a051a6abcf9c0" ,
"salt" : "276d7d0418b5fe20dfa9a440c9cf6a259d041238433b44c1d331bfc25ff0bc39" ,
"comment" : "Para abrir en familia.\nCon cariño, desde 2026." ,
"declared_author" : "Ana López" ,
"content_offset" : 1007 ,
"files" : [
{
"path" : "carta.txt" ,
"size" : 37 ,
"start" : 0 ,
"end" : 37 ,
"sha256" : "89f8d33bccb614f3928203cdc48da69b2c7e3eedddcc097d47977806077fb5c1" ,
"mtime" : 1790769600
} ,
{
"path" : "fotos/2025/atardecer.jpg" ,
"size" : 3000 ,
"start" : 37 ,
"end" : 3037 ,
"sha256" : "cc26b6f4c05b315883de7ca59eb990a56efaff70c6b8f366e900975804b27b18"
} ,
{
"path" : "fotos/2025/playa.jpg" ,
"size" : 80000 ,
"start" : 3037 ,
"end" : 83037 ,
"sha256" : "5619f3e6974f07c51e71777064e0d46992144fe91f6218fb00ac2e7074555ed1" ,
"mtime" : 1790683200
} ,
{
"path" : "fotos/leeme.txt" ,
"size" : 22 ,
"start" : 83037 ,
"end" : 83059 ,
"sha256" : "cc5e54573bb1b57f0481843fe6c1bd7bebd236d73057220cc8dba732d9cf4700" ,
"mtime" : 1790769600
} ,
{
"path" : "música/canción.txt" ,
"size" : 12 ,
"start" : 83059 ,
"end" : 83071 ,
"sha256" : "3e1453835def913b4b9ef720e11e5e2ac167a9af12b9f0a5417be8f84ded5e5a" ,
"mtime" : 1790769600
}
] ,
"verdicts" : {
"signature" : "F0" ,
"seal" : "S0" ,
"lines" : [
"Sin firma de autor."
]
} ,
"stages" : [
{
"step" : 1 ,
"name" : "parse DKC1" ,
"ok" : true
} ,
{
"step" : 2 ,
"name" : "prelude" ,
"ok" : true
} ,
{
"step" : 3 ,
"name" : "public header" ,
"ok" : true
} ,
{
"step" : 4 ,
"name" : "header validation" ,
"ok" : true
} ,
{
"step" : 5 ,
"name" : "sealed control structure" ,
"ok" : true
} ,
{
"step" : 6 ,
"name" : "payload structure" ,
"ok" : true
} ,
{
"step" : 7 ,
"name" : "condition" ,
"ok" : true
} ,
{
"step" : 8 ,
"name" : "tlock stanza" ,
"ok" : true
} ,
{
"step" : 9 ,
"name" : "release" ,
"ok" : true
} ,
{
"step" : 10 ,
"name" : "release verification" ,
"ok" : true
} ,
{
"step" : 11 ,
"name" : "open sealed control" ,
"ok" : true
} ,
{
"step" : 12 ,
"name" : "policy structure" ,
"ok" : true
} ,
{
"step" : 14 ,
"name" : "control" ,
"ok" : true
} ,
{
"step" : 15 ,
"name" : "header binding" ,
"ok" : true
} ,
{
"step" : 16 ,
"name" : "payload identity" ,
"ok" : true
} ,
{
"step" : 17 ,
"name" : "open payload" ,
"ok" : true
} ,
{
"step" : 18 ,
"name" : "commit" ,
"ok" : true
}
]
}