Repository navigation
feat(crypto): add native Rust encryption and a minimal local CLI - #245
Conversation
There was a problem hiding this comment.
Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.
An organization owner can choose the repository organization as the billing source for reviews requested by members with a paid Copilot license. Learn about Copilot code review billing.
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
|
The account paying for this security review has reached its Codex usage limits. The payer can check the Codex usage dashboard. For personal accounts, using credits requires enabling “Use credits for security reviews” in Code review settings. If you do not manage the paying account, contact this repository's admins. |
Why
Python currently owns recipient encryption. The Rust rewrite needs a small usable encryption path that can read existing files before native clients or the daemon can replace Python.
Changes
msg-cryptocrate withmsg-x25519-v1envelopes: X25519, HKDF-SHA256 and AES-256-GCM, using the same canonical header and authenticated data as Python.keygen,encryptanddecrypt. Keep private keys local, require safe key-file ownership/permissions, create outputs with mode 0600, reject symlinks and existing outputs, and authenticate before writing plaintext.--lockedfor builds, tests and Clippy.Validation
Locked Rust encryption CI passed on Rust 1.85 and Python 3.15:
The preceding issue-recovery regression run also passed. The PR workflows recheck the final review tree.
Migration boundary
This delivers the local encryption slice. Production
msgandmsgdremain Python; issuance, password-wrapped signing keys, remote keystore operations and the native daemon are still outstanding. The fixed migration checklist remains 5 completed / 6 remaining. No production entry point or deployment is changed.