Skip to content

Commit

Permalink
git: Always use OpenSSL on win32
Browse files Browse the repository at this point in the history
By default, libssh2 uses Windows Cryptography Next Generation when targeting
win32. The wincng backend does not support ED25519, which is a widely-used
algorithm among git hosting services, and in some cases may be the only option
on remotes in certain configurations.

This change adds the feature `openssl-on-win32`, enabling the same one in
`libssh2-sys`, and enables it in the CI release flow, ensuring that release
builds are able to communicate with hosts using ED25519.

Fixes jj-vcs#3322
  • Loading branch information
HybridEidolon committed May 12, 2024
1 parent e3b3b55 commit 89fc574
Show file tree
Hide file tree
Showing 6 changed files with 14 additions and 2 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ jobs:
toolchain: stable
target: ${{ matrix.target }}
- name: Build release binary
run: cargo build --target ${{ matrix.target }} --verbose --release --features packaging,vendored-openssl
run: cargo build --target ${{ matrix.target }} --verbose --release --features packaging,openssl-on-win32,vendored-openssl
- name: Build archive
shell: bash
run: |
Expand Down
3 changes: 3 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0

### Fixed bugs

* When built with the `openssl-on-win32` feature, ED25519 host keys are supported
when connecting to Git+SSH remotes on Windows.

## [0.17.1] - 2024-05-07

### Fixed bugs
Expand Down
2 changes: 2 additions & 0 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,7 @@ indoc = "2.0.4"
insta = { version = "1.38.0", features = ["filters"] }
itertools = "0.12.1"
libc = { version = "0.2.154" }
libssh2-sys = { version = "0.3.0" }
maplit = "1.0.2"
minus = { version = "5.6.1", features = ["dynamic_output", "search"] }
num_cpus = "1.16.0"
Expand Down
4 changes: 4 additions & 0 deletions cli/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -89,6 +89,9 @@ unicode-width = { workspace = true }
[target.'cfg(unix)'.dependencies]
libc = { workspace = true }

[target.'cfg(windows)'.dependencies]
libssh2-sys = { workspace = true }

[dev-dependencies]
anyhow = { workspace = true }
assert_cmd = { workspace = true }
Expand All @@ -104,6 +107,7 @@ jj-cli = { path = ".", features = ["test-fakes"], default-features = false }
[features]
default = ["watchman"]
bench = ["dep:criterion"]
openssl-on-win32 = ["libssh2-sys/openssl-on-win32", "jj-lib/openssl-on-win32"]
packaging = []
test-fakes = ["jj-lib/testing"]
vendored-openssl = ["git2/vendored-openssl", "jj-lib/vendored-openssl"]
Expand Down
4 changes: 3 additions & 1 deletion lib/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,7 @@ hex = { workspace = true }
ignore = { workspace = true }
itertools = { workspace = true }
jj-lib-proc-macros = { workspace = true }
libssh2-sys = { workspace = true }
maplit = { workspace = true }
once_cell = { workspace = true }
pest = { workspace = true }
Expand Down Expand Up @@ -92,6 +93,7 @@ tokio = { workspace = true, features = ["full"] }

[features]
default = []
vendored-openssl = ["git2/vendored-openssl"]
openssl-on-win32 = ["libssh2-sys/openssl-on-win32"]
vendored-openssl = ["git2/vendored-openssl", "libssh2-sys/openssl-on-win32"]
watchman = ["dep:tokio", "dep:watchman_client"]
testing = []

0 comments on commit 89fc574

Please sign in to comment.