diff --git a/README.md b/README.md index 2122b733..3c33cbff 100644 --- a/README.md +++ b/README.md @@ -154,6 +154,8 @@ PC 端可控制和被控制,复用桌面界面与桌面墙;手机和平板 - [常见问题](docs/FAQ.md):连接失败、黑屏、系统权限、文件位置与构建问题。 - [提交问题或建议](https://github.com/kunkundi/crossdesk/issues):请提供两端系统、客户端版本、连接方式和可复现步骤。 +桌面端的 `CROSSDESK_UPDATE_PUBLIC_KEY` 是可选编译参数,用于验证应用内升级清单的 Ed25519 签名。不配置仍可正常编译、运行和检查版本,但更新只能手动下载;需要应用内自动安装更新时,须配置与发布私钥匹配的公钥。配置方式见 [更新公钥](docs/BUILD.md#update-public-key),密钥生成与发布流程见 [桌面端应用内升级](docs/UPDATER.md)。 + ## 支持 CrossDesk diff --git a/README_EN.md b/README_EN.md index bf7fe86d..c396b37a 100644 --- a/README_EN.md +++ b/README_EN.md @@ -154,6 +154,8 @@ Host your own signaling and TURN services, then enable them under **Settings → - [FAQ](docs/FAQ.md#english): connections, blank video, permissions, received files, and build issues. - [Report an issue or suggestion](https://github.com/kunkundi/crossdesk/issues): include both operating systems, client versions, connection mode, and reproduction steps. +The optional desktop build parameter `CROSSDESK_UPDATE_PUBLIC_KEY` verifies Ed25519 signatures on in-app update manifests. Without it, the app still builds, runs, and checks for new versions, but updates require manual download. In-app update installation requires a public key matching the release signing private key. See [Update public key](docs/BUILD_EN.md#update-public-key) for configuration and the [desktop updater guide](docs/UPDATER.md) (Chinese) for key generation and publishing. + ## Support CrossDesk diff --git a/docs/BUILD.md b/docs/BUILD.md index 89f4c0e1..bf8633e3 100644 --- a/docs/BUILD.md +++ b/docs/BUILD.md @@ -138,6 +138,7 @@ PipeWire 不属于强制运行时依赖:程序在运行时检测宿主系统 --USE_DRM=true/false: 在 Linux 上启用 DRM 捕获,默认不启用 --CROSSDESK_PORTABLE=true/false: 构建便携版本,默认不启用 --CROSSDESK_VERSION=xxx: 指定 CrossDesk 的版本 +--CROSSDESK_UPDATE_PUBLIC_KEY=xxx: 可选的 Ed25519 更新验签公钥,64 个小写十六进制字符;默认为空,不启用自动安装更新 --MINIRTC_ENABLE_AOM=true/false: 编译可选 libaom 后端,默认不启用;AV1 仍使用 SVT-AV1 / dav1d # 示例 @@ -150,6 +151,23 @@ xmake f --CROSSDESK_VERSION=1.4.3 --USE_CUDA=true xmake r crossdesk ``` + + +### 更新公钥(可选) + +`CROSSDESK_UPDATE_PUBLIC_KEY` 在编译时嵌入桌面客户端,用于验证升级清单的 Ed25519 签名。本地开发可以省略:程序仍可正常编译、运行和检查新版本,但只提供手动下载入口,不执行应用内自动安装。 + +需要应用内自动安装更新时,在对应平台的 `xmake f` 配置命令中加入此参数,再编译。例如,已完成平台配置后执行(将占位符替换为实际公钥): + +```sh +xmake f --CROSSDESK_UPDATE_PUBLIC_KEY="<64位小写十六进制公钥>" +xmake b crossdesk +``` + +也可以在构建前设置同名环境变量;Xmake 配置值优先于环境变量。公钥必须是 32 字节 Ed25519 公钥的十六进制表示,共 64 个小写字符;非空但格式不正确时,构建配置会报错。发布清单必须由对应私钥签名,并满足安装位置等升级条件;便携版始终使用手动下载。 + +GitHub Actions 构建从仓库 Actions variable `CROSSDESK_UPDATE_PUBLIC_KEY` 读取公钥。私钥仅供发布端签名使用,无需提供给普通构建。密钥生成、发布端配置及升级条件见 [桌面端应用内升级](UPDATER.md)。 + ## 无 CUDA 环境下的开发支持 对于**未安装 CUDA 环境的 Linux 开发者,如果希望编译后的成果物拥有硬件编解码能力**,这里提供了预配置的 [Ubuntu 20.04 兼容构建镜像](https://hub.docker.com/r/crossdesk/ubuntu20.04)。该镜像内置必要的构建依赖,可生成兼容 glibc 2.31 的两种 Linux 安装包。 diff --git a/docs/BUILD_EN.md b/docs/BUILD_EN.md index 7a7c21cf..43d7139b 100644 --- a/docs/BUILD_EN.md +++ b/docs/BUILD_EN.md @@ -144,6 +144,7 @@ enabled at build time) when it is unavailable. --USE_DRM=true/false: Enable DRM capture on Linux, disabled by default --CROSSDESK_PORTABLE=true/false: Build the portable variant, disabled by default --CROSSDESK_VERSION=xxx: Set the CrossDesk version +--CROSSDESK_UPDATE_PUBLIC_KEY=xxx: Optional Ed25519 update verification key, 64 lowercase hex characters; empty by default, disabling in-app update installation # Example xmake f --CROSSDESK_VERSION=1.4.3 --USE_CUDA=true @@ -155,6 +156,23 @@ Run: xmake r crossdesk ``` + + +### Update public key (optional) + +`CROSSDESK_UPDATE_PUBLIC_KEY` is embedded in the desktop client at build time to verify Ed25519 signatures on update manifests. Local development builds can omit it: the app still builds, runs, and checks for new versions, but only offers manual downloads without in-app update installation. + +For in-app update installation, add this option to your platform's `xmake f` configuration command before building. For example, after configuring the platform, run the following with the placeholder replaced by your actual public key: + +```sh +xmake f --CROSSDESK_UPDATE_PUBLIC_KEY="<64 lowercase hex characters>" +xmake b crossdesk +``` + +You can also set the environment variable with the same name before building; the Xmake configuration value takes precedence. The value must encode a 32-byte Ed25519 public key as 64 lowercase hexadecimal characters. A nonempty value with an invalid format fails build configuration. Update manifests must be signed with the matching private key, and the installation must meet the other updater requirements, including a supported installation location. Portable builds always use manual downloads. + +GitHub Actions builds read the key from the repository Actions variable `CROSSDESK_UPDATE_PUBLIC_KEY`. The private key is only needed for release signing, not ordinary builds. See the [desktop updater guide](UPDATER.md) (Chinese) for key generation, release configuration, and updater requirements. + ## Development Without CUDA Environment For **Linux developers who do not have a CUDA environment installed and want to enable hardware codec feature**, a preconfigured [Ubuntu 20.04 compatibility build image](https://hub.docker.com/r/crossdesk/ubuntu20.04) is provided.