Files
roro9stack/site/content/devlog/roro9stack-ota/update-file.svg
T
twislaandClaude Sonnet 5.5 6e54658ba4
Site / build (pull_request) Successful in 9s
Site: the devlog, the blog's roro9stack posts in the site's style; Devlog replaces Blog in the navigation
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
2026-10-06 20:51:33 +02:00

44 lines
3.0 KiB
XML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<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>