Public Access
Site / build (pull_request) Successful in 9s
Seven posts imported into site/content/devlog/ with their text unchanged, links between them pointing to /devlog/, and shortcodes (sign, cast, steps, asides, folded sections, diagrams, captions) restyled in the site's palette. The 17 inline SVG diagrams carried <style> blocks and style attributes the site's Content-Security-Policy refuses: their rules moved to devlog-diagrams.css, and a diagram's minimum width is a class. An Atom feed at /devlog/atom.xml. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01EhqxQ49eCju4CzKYNjZzwT
44 lines
3.0 KiB
XML
44 lines
3.0 KiB
XML
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 760 196" role="img" aria-label="The Update File: a 160-byte header, then the firmware image. Bytes 0 to 79 are signed: the magic RORO-OTA, the format, the header size, the image size, the image's SHA-256 and the version. Then the signature's length, the signature itself, and reserved bytes up to 160. The signature is ECDSA P-256 over the SHA-256 of bytes 0 to 79, checked before anything is written. The image follows, hashed while it is written, and must match the hash in bytes 16 to 47.">
|
||
<g font-family="JetBrains Mono, ui-monospace, monospace" fill="currentColor">
|
||
<text x="16" y="22" font-size="13" font-weight="600">Update File (.ota)</text>
|
||
<text x="16" y="40" font-size="11" class="uf-dim">a 160-byte header, little-endian, then the image</text>
|
||
|
||
<rect class="uf-signed" x="16" y="72" width="380" height="40" rx="4"/>
|
||
<rect class="uf-cell" x="16" y="72" width="64" height="40"/>
|
||
<rect class="uf-cell" x="80" y="72" width="40" height="40"/>
|
||
<rect class="uf-cell" x="120" y="72" width="40" height="40"/>
|
||
<rect class="uf-cell" x="160" y="72" width="52" height="40"/>
|
||
<rect class="uf-cell" x="212" y="72" width="100" height="40"/>
|
||
<rect class="uf-cell" x="312" y="72" width="84" height="40"/>
|
||
<rect class="uf-cell" x="396" y="72" width="40" height="40"/>
|
||
<rect class="uf-cell" x="436" y="72" width="92" height="40"/>
|
||
<rect class="uf-cell" x="528" y="72" width="32" height="40"/>
|
||
<rect class="uf-image" x="560" y="72" width="184" height="40"/>
|
||
|
||
<g font-size="10" text-anchor="middle">
|
||
<text x="48" y="96">RORO-OTA</text>
|
||
<text x="100" y="96">fmt</text>
|
||
<text x="140" y="96">hdr</text>
|
||
<text x="186" y="96">size</text>
|
||
<text x="262" y="96">image SHA-256</text>
|
||
<text x="354" y="96">version</text>
|
||
<text x="416" y="96">len</text>
|
||
<text x="482" y="96">signature</text>
|
||
<text x="544" y="96">0…</text>
|
||
<text x="652" y="96">the image, ~1.6 MB</text>
|
||
</g>
|
||
<g font-size="10" class="uf-dim" text-anchor="middle">
|
||
<text x="16" y="64">0</text><text x="80" y="64">8</text><text x="120" y="64">10</text><text x="160" y="64">12</text>
|
||
<text x="212" y="64">16</text><text x="312" y="64">48</text><text x="396" y="64">80</text><text x="436" y="64">82</text>
|
||
<text x="528" y="64">154</text><text x="560" y="64">160</text>
|
||
</g>
|
||
|
||
<path d="M16 120 V128 H396 V120" fill="none" stroke="var(--accent)" stroke-width="1.5"/>
|
||
<text x="206" y="150" font-size="11" text-anchor="middle" class="uf-hot">signed: ECDSA P-256 over SHA-256(bytes 0–79)</text>
|
||
<text x="206" y="168" font-size="11" text-anchor="middle" class="uf-dim">checked before a single byte is written</text>
|
||
<path d="M560 120 V128 H744 V120" fill="none" stroke="currentColor" stroke-opacity=".5" stroke-width="1.5"/>
|
||
<text x="652" y="150" font-size="11" text-anchor="middle" class="uf-dim">hashed while it's written;</text>
|
||
<text x="652" y="168" font-size="11" text-anchor="middle" class="uf-dim">must match bytes 16–47</text>
|
||
</g>
|
||
</svg>
|