Signed by hanna SSH key fingerprint: SHA256:4g9cWhkAAw8gwqhJUcVbSnGEvdGwklW+1Aa/fMUu59k
deny.toml +6 −5 docs/decisions.md +8 −8 deny.toml +6 −5 22 "Unicode-3.0" , 22 "Unicode-3.0" , 23 "Zlib" , 23 "Zlib" , 24 "CC0-1.0" , 24 "CC0-1.0" , 25 25 26 26 27 27 28 28 "Unicode-DFS-2016" , 29 "OpenSSL" , 29 "0BSD" , 30 "bzip2-1.0.6" , 30 ] 31 ] 31 confidence-threshold = 0.9 32 confidence-threshold = 0.9 32 33
docs/decisions.md +8 −8 477 ## 2026-07-25 — SSH via russh; the OpenSSL license is admitted for the crypto backend 477 ## 2026-07-25 — SSH via russh; the OpenSSL license is admitted for the crypto backend 478 478 479 **Decision:** `crates/ssh` uses `russh` 0.62 with its **default** crypto backend 479 **Decision:** `crates/ssh` uses `russh` 0.62 with its **default** crypto backend 480 `aws-lc-rs` (explicitly **not** `ring`). `deny.toml` gains the **`OpenSSL`** license, 480 `aws-lc-rs` (explicitly **not** `ring`). `deny.toml` gains three permissive 481 and `flake.nix` gains `cmake` (aws-lc-sys builds AWS-LC via cmake). 481 licenses its transitive tree needs — **`Unicode-DFS-2016`**, **`0BSD`**, and 482 **`bzip2-1.0.6`** — and `flake.nix` gains `cmake` (aws-lc-sys builds AWS-LC via 483 cmake). 482 484 483 **Alternatives:** the `ring` backend (also carries OpenSSL-family terms and is not 485 **Alternatives:** the `ring` backend (also carries OpenSSL-family terms and is not 484 allowlisted); not shipping SSH at all. 486 allowlisted); not shipping SSH at all. 485 487 486 **Rationale:** SSH is not optional for a git server (the DoD requires push over 488 **Rationale:** SSH is not optional for a git server (the DoD requires push over 487 SSH), the spec names russh, and russh cannot function without a crypto backend. 489 SSH), the spec names russh, and russh cannot function without a crypto backend. 488 Its only backends are `aws-lc-rs` (default) and `ring`; both pull the OpenSSL 490 `aws-lc-rs` is the default and keeps `ring` out. Its tree pulls a few extra 489 license into the SPDX graph, so *some* license admission is unavoidable to have SSH 491 permissive licenses (`Unicode-DFS-2016`, `0BSD`, `bzip2-1.0.6`), admitted because 490 at all. `aws-lc-rs` is the default and keeps `ring` out. Admitting `OpenSSL` — a 492 SSH is mandatory; all three are permissive. This is the one place the 491 permissive license — for the crypto backend is the minimal, contained concession, 493 otherwise-strict allowlist is widened, and it is scoped to the transport stack. 492 justified by SSH being mandatory. This is the one place the otherwise-strict 493 allowlist is widened, and it is scoped to the transport crypto. 494 494 495 **Implementation notes:** russh merged `russh-keys` into `russh::keys` and 495 **Implementation notes:** russh merged `russh-keys` into `russh::keys` and 496 re-exports `ssh-key` at a patch level distinct from the workspace's, so the two 496 re-exports `ssh-key` at a patch level distinct from the workspace's, so the two