halkyon/packages/halkyon_keys/pubspec.yaml
Tizian 「ティツィアーン」 200a2df32f
feat(keys): passwords taken as RFC 8265's OpaqueString
Other spaces become a plain space and the text is composed (NFC) before
Argon2id, so a password typed on another system, accents composed or
not, unlocks the same keys; empty passwords and control characters are
refused. The normalisation (unorm_dart) is pinned exactly, as it must
never change once an account exists. ADR 0017 records both decisions.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
2026-10-22 18:11:10 +02:00

29 lines
1.1 KiB
YAML

name: halkyon_keys
description: >-
An account's keys on the device (ADR 0017): the password's Argon2id key and
what it splits into, the account's key pairs and their wrapping, the recovery
phrase, data keys sealed to the account, and content encrypted and signed in
ADR 0002's envelope. libsodium does every primitive.
version: 0.1.0
publish_to: none
resolution: workspace
environment:
sdk: ^3.13.0
dependencies:
# SHA-256, which BIP-39's checksum is made with.
crypto: ^3.0.7
# libsodium's API (Argon2id, X25519, Ed25519, XChaCha20-Poly1305, sealed
# boxes, the KDF), pinned exactly: what keys an account's data must never
# move by accident. Its build hook compiles libsodium 1.0.22 from the source
# it ships (no download; a C compiler and make on every machine that builds),
# which replaced sodium_libs's prebuilt binaries. 4.1.0+1, as 4.1.1 on needs
# code_assets 2, which Learn's mecab_for_dart (2.0.5) doesn't allow yet.
sodium: 4.1.0+1
# Unicode NFC for passwords (RFC 8265's OpaqueString), pinned exactly: a
# password's normalisation must never change once an account exists.
unorm_dart: 0.3.3
dev_dependencies:
test: ^1.31.1