デモ · 静的ライブラリ

クライアントを向けられるライブラリ

実在しないゲーム、homebrew、チートセットを、このサイトと一緒に Lantern の静的ライブラリとして配信しています。自分のサーバーなしでクライアントを試せます。

収録内容

Nintendo Switch、New 3DS、PS Vita、Android 向けの架空のゲームと、その情報、専用に描いたアートワーク。Switch、3DS、Linux 向けの homebrew(うち 2 本は署名付き)。Switch の形式のチートセット。ゲーム、スタジオ、人物はすべて架空です。

ファイルは数バイトのテキストによる代替品で、homebrew のアーカイブには README しか入っていません。どれもソフトウェアではなく、インストールも実行もできません。

クライアントを向ける

このアドレスをクライアントに渡してください。クライアントはまずサイトに /.well-known/lantern を問い合わせ、見つからないので lantern.json を読みます。static を含むハンドシェイク(仕様の § 21)、複数のページに出会えるよう 4 件ずつのページ、そして SHA-256 で示される各ファイルです。

https://lantern.boreale.dev/demo/

lantern.json · v1/apps/switch/pages/1.json · v1/titles/switch/0100ABCD00010000.json

適合性テストスイートがこのサイトのビルドごとに検査し、Lantern Static に到達しています:

python3 conformance/run.py --static https://lantern.boreale.dev/demo/
…
Levels reached (SPEC.md § 17, draft 0.6): Lantern Static

ブラウザーから

このサイトを配信する GitHub Pages は、すべてのファイルに Access-Control-Allow-Origin: * を付けて応答します。別のサイトのページから fetch() で読めます。認証情報も独自ヘッダーも付けずに要求してください(Lantern-Platform も不要です。静的ライブラリのプラットフォームはパスに含まれます)。付けるとブラウザーが先にプリフライト要求を送り、GitHub Pages はそれに応答しません。

const hello = await (await fetch("https://lantern.boreale.dev/demo/lantern.json")).json();

ハンドシェイクとファイルにトラッキングは一切ありません。訪問を数えるのはこのサイトのページだけです。 プライバシー

罠入りの版

その隣に、クライアントを試すため、わざと壊した静的ライブラリを置いています。それぞれ欠陥は一つです。SHA-256 と合わないファイル、フォルダーやプラットフォームのルートの外に出るマニフェスト、より新しいスキーマ、大きすぎる・深すぎる文書、検証できない署名、小位数の鍵。どれもクライアントがすべきことを示し、適合性テストスイートはすべてを拒否します。