Files
LibreLedger/banks/tsb.svg
T
LibrePortal 2cffc3ab07 Start LibreLedger: an encrypted money ledger that stores only ciphertext
LibreLedger is a single-person money ledger. The browser encrypts
everything (PBKDF2-HMAC-SHA256 with 250k iterations, then AES-256-GCM),
and a small standard-library Python server stores only the resulting
{v, salt, iv, ct} blob. Ledger files from the earlier Money Ledger version
open unchanged.

- On plain http to a LAN or VPN address, where browsers hide Web Crypto,
  the app switches to vendored @noble/hashes and @noble/ciphers 2.2.0 and
  says so on the lock screen. tests/crypto-interop.test.mjs shows both
  paths read each other's files.
- The server hands out only the app's own files, sends a self-only CSP,
  nosniff, frame denial and no-referrer, checks the shape of each blob,
  refuses cross-site writes and writes atomically. It keeps the last 10
  backups plus one per day for 30 days.
- The container runs that server from a digest-pinned python alpine
  image, as an unprivileged user, with its data in /data and a health
  check on /api/health.

Assisted-by: Claude Opus 5 <noreply@anthropic.com>
2026-09-17 01:17:16 +01:00

10 lines
3.3 KiB
XML

<svg xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg" width="500" height="181.82" viewBox="0 0 121 44" fill="none">
<path fill-rule="evenodd" clip-rule="evenodd" d="M44.1028 22C44.1028 34.1505 34.2295 44 22.0514 44C9.87248 44 0 34.1505 0 22C0 9.84947 9.87248 0 22.0514 0C34.2295 0 44.1028 9.84947 44.1028 22Z" fill="#00A8E1"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M31.0981 14.1781H24.3201V33.8462H19.6417V14.1781H13.0047V10.1538H31.0981V14.1781Z" fill="white"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M121 22C121 34.1505 111.127 44 98.949 44C86.7703 44 76.8972 34.1505 76.8972 22C76.8972 9.84947 86.7703 0 98.949 0C111.127 0 121 9.84947 121 22Z" fill="#001887"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M95.8729 23.0044V30.0136H99.994C102.549 30.0136 103.238 30.0136 104.352 29.2079C104.943 28.7726 105.402 27.8673 105.402 26.7251C105.408 26.1062 105.262 25.4949 104.976 24.9485C103.927 23.0376 101.502 23.0029 100.026 23.0029L95.8729 23.0044ZM95.8729 13.775V19.6812H97.2094C98.4268 19.6812 99.305 19.6812 99.8296 19.6481C100.911 19.6481 101.994 19.6141 102.781 19.1811C104.103 18.5645 104.686 16.9677 104.084 15.6141C103.853 15.0939 103.465 14.6625 102.978 14.3823C102.058 13.8452 101.6 13.8105 98.4547 13.7765L95.8729 13.775ZM91.5981 10.1538H99.697C102.778 10.187 103.599 10.2225 104.717 10.5559C107.071 11.242 108.689 13.4516 108.672 15.9575C108.672 16.9978 108.456 18.2736 107.799 19.1796C107.081 20.1528 106.162 20.6544 104.909 20.8929C107.466 21.3598 109.692 23.4783 109.692 27.1357C109.692 29.8531 108.515 32.2671 105.736 33.2766C104.261 33.8122 103.115 33.8462 100.494 33.8462H91.5981V10.1538Z" fill="white"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M82.5514 22C82.5514 34.1505 72.6783 44 60.5004 44C48.3217 44 38.4486 34.1505 38.4486 22C38.4486 9.84947 48.3217 0 60.5004 0C72.6783 0 82.5514 9.84947 82.5514 22Z" fill="#0051B4"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M41.2757 32.7851C43.0758 29.5982 44.1028 25.9188 44.1028 22C44.1028 18.0812 43.0758 14.4018 41.2757 11.2149C39.4756 14.4018 38.4486 18.0812 38.4486 22C38.4486 25.9188 39.4756 29.5982 41.2757 32.7851Z" fill="#003974"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M79.7243 32.7851C81.5244 29.5983 82.5514 25.9188 82.5514 22C82.5514 18.0812 81.5244 14.4018 79.7243 11.2149C77.9242 14.4018 76.8972 18.0812 76.8972 22C76.8972 25.9188 77.9242 29.5983 79.7243 32.7851Z" fill="#131B33"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M62.8098 19.7949L60.4826 19.2601C58.4394 18.8578 56.3334 18.4555 56.3334 16.4441C56.3334 14.6412 58.3108 13.5676 60.5758 13.5676C63.9989 13.5676 65.5007 15.6767 66.2935 16.8898L69.6359 14.087C68.0305 11.867 65.517 9.58974 60.8013 9.58974C55.5037 9.58974 51.898 12.4646 51.898 16.9417C51.898 20.8522 54.674 22.2916 55.696 22.7295C56.3977 23.031 57.0988 23.1985 58.5319 23.5682L61.245 24.1681C63.2875 24.6719 63.3496 24.7061 63.862 24.9053C64.5653 25.2076 65.5547 25.7401 65.5547 27.2523C65.5547 28.0561 65.2648 29.2599 63.6395 29.9629C62.8401 30.2985 62.0119 30.3644 61.2147 30.3644C56.7002 30.3644 54.9469 27.9243 54.3205 26.9314L50.8878 29.6738C52.5813 32.4045 55.0578 33.4184 56.5212 33.8734C57.8323 34.2408 59.1848 34.4214 60.5418 34.4097C65.3262 34.4097 70.1121 32.2332 70.1121 26.8182C70.1166 21.7707 65.8446 20.4646 62.8098 19.7949Z" fill="white"/>
</svg>