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 #3322
  • Loading branch information
HybridEidolon committed Apr 24, 2024
1 parent 988ca2b commit fb9ef1c
Show file tree
Hide file tree
Showing 6 changed files with 12 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 @@ -64,6 +64,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
literals. This means that `snapshot.max-new-file-size="1"` and
`snapshot.max-new-file-size=1` are now equivalent.

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

## [0.16.0] - 2024-04-03

### Deprecations
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.153" }
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
2 changes: 2 additions & 0 deletions cli/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,7 @@ hex = { workspace = true }
indexmap = { workspace = true }
itertools = { workspace = true }
jj-lib = { workspace = true }
libssh2-sys = { workspace = true }
maplit = { workspace = true }
minus = { workspace = true }
once_cell = { workspace = true }
Expand Down Expand Up @@ -104,6 +105,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 fb9ef1c

Please sign in to comment.