Repository navigation
Conversation
Quest-Claim: 8d18118f9d785329
Collaborator
Author
|
Closing: the maintainer dropped this quest on 2026-11-07 (let projects pull rind rather than send them patches). moq-dev/rind#471 deletes it with the others. (Written by Claude Opus 5.5 with high) |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Claims quest/m2/adoption/lemmy.md.
A port of LemmyNet/activitypub-federation-rust (the crate under Lemmy's federation) from the
rsacrate to rind is prepared and tested, with numbers. Nothing lands in rind; the upstream PR waits on the maintainer's go-ahead to post.Waiting
main(dd44ca3), runcargo buildto refreshCargo.lock, push to a fork, and open the PR with the text below. Check it's done when the PR URL is linked here.Upstream PR
Title: Use rind instead of the rsa crate for HTTP signatures
Body, ready to paste
Diff against LemmyNet/activitypub-federation-rust
dd44ca3(Cargo.lock omitted;cargo buildregenerates it)Validation
All on the port above, against
rsa0.9.10 (what apf pins):.woodpecker.yml: nightlycargo fmt --check,taplo format --check,cargo shear --deny-warnings,cargo clippy --all-targets --all-features(clean),cargo test --all-features(29 + 43 pass, including the hard-codedtest_signvector, so signatures are byte-identical),cargo doc --all-features, and bothlocal_federationexamples (actix-web, axum), which sign and verify between two local instances. WithRUSTDOCFLAGS=-Dwarnings, which their CI doesn't set,cargo docreports two broken intra-doc links in the IP-check code, outside this diff.rsa, 20 from rind, 5 from OpenSSL) load in both, sign byte-identically, and cross-verify. The only differences are 512-bit keys (rsatakes them, rind refuses) and 8192-bit keys (rsarefuses, rind takes them). Pleroma serves its PEM with a trailing blank line, and both refuse it, so that behavior is unchanged.main, patched to this apf, passescargo check --workspace --exclude lemmy_server --all-targets.lemmy_serveronly adds jemalloc, whose C build fails in this sandbox.quest gate --hostonnixos(Ryzen 9 5900XT, Zen 3). Numbers are in the PR text.Choices made without asking
verify::legacy::RSA_PKCS1_1024_SHA256(1024 to 8192 bits), not the 2048-bit default.rsa0.9 accepted anything up to 4096, so a 2048 floor could cut off old servers with 1024-bit keys. Every live key sampled is 2048 or 4096.pem-rfc74681.0, a new direct dependency but the same parserrsaused throughpkcs8/spki(0.7 there, with an unchangeddecode_vec), so PEM acceptance doesn't drift.zeroizeon the decoded PKCS#8 DER. The PEM string it comes from already sits unwiped in the caller's heap, so wiping the copy buys nothing; rind wipes theRsaKeyPairitself.Error::Otherprivately instead of throughFromimpls, keeping rind's types out of apf's public API so a rind major bump never forces an apf one.opt-level = 3override moves fromnum-bigint-digtorind. Without it, debug key generation is slower thanrsawith its override (275 vs 141 ms median); with it, 28 vs 193 ms.randmoves to dev-dependencies, since only the examples use it now, and cargo-shear flags it otherwise.Public API
rind: none. apf:
Errorloses itsFromimpls forrsa,pkcs8, andspkierrors (it's on 0.7.0 betas, and Lemmy uses none of them).Models
Size: M
Implementer: Claude Code, claude-opus-5-5, high effort
Review
Skipped: nothing lands in rind (the branch holds only the claim commit). The upstream diff gets its review on LemmyNet's PR.
Suggested follow-ups
rsais still in Lemmy's tree throughjsonwebtoken'srust_cryptofeature (lemmy_api_utils). rind-jsonwebtoken plugs into jsonwebtoken 11'sCryptoProvider, so a small Lemmy PR would droprsaand RUSTSEC-2023-0071 from Lemmy entirely.(Written by Claude Opus 5.5 with high)