ADR 0017's step 1, on libsodium (sodium 4.1.0+1, whose build hook compiles the libsodium 1.0.22 it ships: a C compiler and make wherever it builds): - Argon2id (64 MiB, 3 passes, kept with the account and never below that) makes a master key, which libsodium's KDF splits into SRP's secret (x) and the key-encryption key. - The account's X25519 and Ed25519 key pairs, their private halves wrapped with XChaCha20-Poly1305 under the KEK and under the recovery key, bound to their public keys. - A 24-word BIP-39 recovery phrase (the English list, MIT) and the recovery key derived from it. - Data keys sealed to the account with crypto_box_seal, bound to their IDs; content in ADR 0002's envelope, encrypted with a data key and signed with Ed25519 (detached), bound to a context the caller names. - Secrets in libsodium's guarded memory where its API takes them. - Tests: libsodium's Argon2id known answers, BIP-39's English vectors, round trips and every refusal. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
2.6 KiB
2.6 KiB
Licences
The repository's packages carry different licences, each package's full text in its
LICENSE file:
| Package | Licence | SPDX |
|---|---|---|
apps/learn/halkyon_learn_flutter, Learn's app |
GNU Affero General Public License, version 3 or any later version | AGPL-3.0-or-later |
apps/learn/halkyon_learn_client, generated from Learn's models |
GNU Affero General Public License, version 3 or any later version | AGPL-3.0-or-later |
apps/learn/halkyon_learn_server |
Server Side Public License, version 1 | SSPL-1.0 |
apps/learn/halkyon_learn_curator, turning dictionary downloads into dictionary files |
GNU Affero General Public License, version 3 or any later version | AGPL-3.0-or-later |
packages/halkyon_base_server, the Serverpod module every Halkyon server includes |
Server Side Public License, version 1 | SSPL-1.0 |
packages/halkyon_base_client, generated from the module's models, with SRP's client half |
GNU Affero General Public License, version 3 or any later version | AGPL-3.0-or-later |
packages/halkyon_app, packages/halkyon_ui |
GNU Affero General Public License, version 3 or any later version | AGPL-3.0-or-later |
packages/halkyon_keys, an account's keys on the device; BIP-39's English word list in it under the MIT License (BIP39-LICENSE) |
GNU Affero General Public License, version 3 or any later version | AGPL-3.0-or-later |
packages/halkyon_core, packages/halkyon_interop |
GNU Affero General Public License, version 3 or any later version, as halkyon_shared, where they began, licensed them | AGPL-3.0-or-later |
apps/todo/halkyon_todo_flutter, Todo's app |
GNU Affero General Public License, version 3 or any later version | AGPL-3.0-or-later |
apps/todo/halkyon_todo_client, generated from Todo's models |
GNU Affero General Public License, version 3 or any later version | AGPL-3.0-or-later |
apps/todo/halkyon_todo_server |
Server Side Public License, version 1 (decided 2026-10-19, as Learn's) | SSPL-1.0 |
The servers and the module build on Serverpod's core, which is under the SSPL, and so are under it too. The apps and the shared Flutter packages link only permissively licensed packages (Todo's icon is Lucide's, under the ISC licence, whose notice the app registers), and the client packages are generated from our own model definitions, so all of them are under the AGPL. The curator depends on neither a server nor Serverpod: Learn's server reads the files it writes, never its code.
Everything else in this repository (tooling, documentation, deployment files) is under
AGPL-3.0-or-later unless a file says otherwise.