Skip to content

update: Sync bssh-russh fork with upstream russh 0.60.0#178

Merged
inureyes merged 1 commit into
mainfrom
update/bssh-russh-0.60
Apr 13, 2026
Merged

update: Sync bssh-russh fork with upstream russh 0.60.0#178
inureyes merged 1 commit into
mainfrom
update/bssh-russh-0.60

Conversation

@inureyes
Copy link
Copy Markdown
Member

Summary

Syncs our `bssh-russh` fork with upstream `warp-tech/russh` v0.60.0 and pulls in the RustCrypto migration the upstream already landed. This finally lets us reach rand 0.10 stable in the root crate.

Upstream deltas folded in

  • rand 0.9 → 0.10 (stable `rand_core 0.10.0`, replaces the `=0.10.0-rc-3` pin)
  • signature 2.2 → 3.0.0-rc.10
  • ed25519-dalek 2.0 → 3.0.0-pre.6
  • elliptic-curve 0.13 → 0.14.0-rc.28, p256/p384/p521 → 0.14.0-rc.7
  • ecdsa 0.16 → 0.17.0-rc.16
  • curve25519-dalek 4.1.3 → 5.0.0-pre.6
  • der 0.7 → 0.8, sec1 0.7 → 0.8
  • pkcs8 0.10 → 0.11.0-rc.11, pkcs5 0.7 → 0.8.0-rc.13
  • spki 0.7 → 0.8.0-rc.4
  • ml-kem 0.2.3 → 0.3.0-rc.1 (adds `module-lattice 0.2`)
  • num-bigint → `internal-russh-num-bigint 0.5.0` with `rand_0_10` feature
  • ssh-key 0.6.16 → 0.6.18
  • crypto-bigint 0.7.0-rc.28 (now explicit)
  • tokio 1.50.0 → 1.51.1

Root crate adjustments

  • `russh = { version = "0.60" }`, `rand = "0.10"`
  • Key-gen sites (`src/keygen/{ed25519,rsa}.rs`, `src/bin/bssh_server.rs`) now pass `&mut rand::rng()` — rand 0.10's thread RNG implements the new `rand_core 0.10` `CryptoRng` trait directly, so the previous `ssh_key::rand_core::OsRng` workaround is no longer needed.

Sync process

  • Ran `crates/bssh-russh/sync-upstream.sh 0.60.0`
  • Reapplied the `handle-data-fix.patch` PTY patch manually (the sync script's auto-apply can't resolve the target path — the patch header points at absolute `/tmp` paths — so it was applied with `patch src/server/session.rs patches/handle-data-fix.patch`)
  • Version bumped 0.59.0 → 0.60.0

Test plan

  • `cargo build` clean
  • `cargo clippy --all-targets` clean
  • `cargo test --lib` — 1193 passing (3 pre-existing keychain tests fail due to macOS keychain auth prompt)
  • Manual: interactive PTY session (regression check for the handle-data patch)
  • Note: `cargo test -p bssh-russh --lib` fails with unresolved `tempfile`/`env_logger` — pre-existing, fork is missing dev-dependencies for its embedded tests; not a regression of this PR

Runs crates/bssh-russh/sync-upstream.sh 0.60.0, applies our
handle-data-fix PTY patch on top, and bumps the fork's Cargo.toml
to match upstream 0.60.0's dependency floor. This pulls in the
RustCrypto migration upstream russh already completed:

- rand 0.9 -> 0.10 (stable rand_core 0.10.0, no more rc-3 pin)
- signature 2.2 -> 3.0.0-rc.10
- ed25519-dalek 2.0 -> 3.0.0-pre.6
- elliptic-curve 0.13 -> 0.14.0-rc.28, p256/p384/p521 0.14.0-rc.7
- ecdsa 0.16 -> 0.17.0-rc.16
- curve25519-dalek 4.1.3 -> 5.0.0-pre.6
- der 0.7 -> 0.8, sec1 0.7 -> 0.8
- pkcs8 0.10 -> 0.11.0-rc.11, pkcs5 0.7 -> 0.8.0-rc.13
- spki 0.7 -> 0.8.0-rc.4
- ml-kem 0.2.3 -> 0.3.0-rc.1 (adds module-lattice 0.2)
- num-bigint -> internal-russh-num-bigint 0.5.0 with rand_0_10 feature
- ssh-key 0.6.16 -> 0.6.18
- crypto-bigint 0.7.0-rc.28 (added explicit)
- tokio 1.50.0 -> 1.51.1

Root crate: bssh-russh version bump 0.59 -> 0.60, rand 0.9 -> 0.10.
Key-generation sites now use rand::rng() (rand 0.10's thread RNG which
implements the new rand_core 0.10 CryptoRng trait directly), replacing
the ssh_key::rand_core::OsRng workaround.

PTY fix patch reapplied cleanly to the new session.rs. The sync-upstream
script couldn't auto-resolve the target path (patch header uses absolute
/tmp paths) so it was applied manually with 'patch src/server/session.rs'.

bssh-russh lib tests were broken before and after this sync (missing
dev-dependencies for tempfile/env_logger/etc) — pre-existing and out of
scope here. Root crate: 1193 lib tests pass, clippy clean.
@inureyes inureyes added the type:dependency Dependency updates label Apr 13, 2026
@inureyes inureyes merged commit 508aa3f into main Apr 13, 2026
1 check passed
@inureyes inureyes deleted the update/bssh-russh-0.60 branch April 13, 2026 05:32
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

type:dependency Dependency updates

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant