Skip to content

update: sync russh/russh-sftp forks to upstream and unify ssh-key#207

Merged
inureyes merged 1 commit into
mainfrom
update/sync-russh-forks-upstream
May 25, 2026
Merged

update: sync russh/russh-sftp forks to upstream and unify ssh-key#207
inureyes merged 1 commit into
mainfrom
update/sync-russh-forks-upstream

Conversation

@inureyes
Copy link
Copy Markdown
Member

Summary

Syncs both vendored russh forks to their latest upstream releases and collapses the duplicate ssh-key version, using the established sync-upstream.sh + patches workflow.

bssh-russh → russh 0.61.1 (was 0.60.3)

Vendored source replaced with upstream 0.61.1, bringing the new RustCrypto generation: sha2/sha1 0.11, hmac 0.13, aes 0.9, cbc 0.2, ctr 0.10, digest 0.11, pbkdf2 0.13, ssh-key 0.7.0-rc.10, ssh-encoding 0.3.0-rc.9. These could not be bumped standalone — russh's source targets the old cipher 0.4 / digest 0.10 API and upstream migrated the whole cohort in 0.61. The PTY Handle::data() drain fix is re-ported onto the new server/session.rs (confirmed it is still not upstream in 0.61.1, so the fork remains necessary), three patches now merged upstream are removed (channel-write-ordering, agent-frame-length-cap, sha1-mac-exclude) leaving only handle-data-fix.patch, and we add [lib] name = "russh" plus a PTY regression test in tests/pty_handle_data.rs.

bssh-russh-sftp → russh-sftp 2.3.0 (was 2.1.2)

Vendored source replaced with upstream 2.3.0; the pipelined File I/O helpers (write_all_pipelined / read_to_writer_pipelined) are re-applied on top, and bssh's SFTP server is adapted to the 2.3.0 Handler::Error change (Into<StatusReply>, which now also carries the human-readable error message).

bssh crate

ssh-key is unified to =0.7.0-rc.10 so the workspace resolves a single ssh-key version instead of 0.6 and 0.7-rc side by side; the russh/russh-sftp dependency requirements are bumped, argon2's std feature is enabled (restores rand_core's OsRng), and transitive deps are refreshed via cargo update.

Tooling & docs

Both forks' create-patch.sh are now self-contained (clone upstream, correct patch names, graceful fallback where upstream publishes no git tags), sync-upstream.sh applies every patches/*.patch with upstream-detection, and both fork READMEs are rewritten for the new versions.

Tests

  • cargo fmt --check — clean
  • cargo clippy -- -D warnings — clean
  • cargo test --lib — 1233 passed
  • cargo test --tests -- --skip integration_test — 318 passed
  • cargo test -p bssh-russh — 143 + PTY regression test passed

Follow-up

bssh-russh 0.61.1 and bssh-russh-sftp 2.3.0 are published to crates.io after merge (forks publish before the bssh crate).

Sync bssh-russh to upstream russh 0.61.1 (was 0.60.3): brings the new RustCrypto generation (sha2/sha1 0.11, hmac 0.13, aes 0.9, cbc 0.2, ctr 0.10, digest 0.11, pbkdf2 0.13, ssh-key 0.7.0-rc.10, ssh-encoding 0.3.0-rc.9). The PTY Handle::data() drain fix is re-ported onto the new server/session.rs, and three patches now merged upstream (channel-write-ordering, agent-frame-length-cap, sha1-mac-exclude) are removed so only handle-data-fix.patch remains. Adds [lib] name = "russh" so vendored doctests resolve, a clippy lints allow for the one vendored style lint, and a PTY regression test in tests/pty_handle_data.rs.

Sync bssh-russh-sftp to upstream russh-sftp 2.3.0 (was 2.1.2): the pipelined File I/O helpers (write_all_pipelined / read_to_writer_pipelined) are re-applied on top of 2.3.0, and bssh's SFTP server is adapted to the 2.3.0 Handler::Error change (Into<StatusReply>, which now also carries the error message).

Unify ssh-key to =0.7.0-rc.10 in the bssh crate so the workspace resolves a single ssh-key version instead of 0.6 and 0.7-rc side by side; bump the russh/russh-sftp dependency requirements, enable argon2's std feature (restores rand_core OsRng), and refresh transitive deps via cargo update.

Make both forks' create-patch.sh self-contained (clone upstream, correct patch names, graceful fallback where upstream publishes no tags), generalize sync-upstream.sh to apply every patches/*.patch with upstream-detection, and rewrite both fork READMEs for the new versions.
@inureyes inureyes added type:dependency Dependency updates status:review Under review labels May 25, 2026
@inureyes inureyes merged commit 3bcd56f into main May 25, 2026
2 checks passed
@inureyes inureyes deleted the update/sync-russh-forks-upstream branch May 25, 2026 07:54
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

status:review Under review type:dependency Dependency updates

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant