10 个不稳定版本 (4 个破坏性更新)
0.9.0 | 2022年9月27日 |
---|---|
0.8.0-rc.2 | 2022年2月17日 |
0.7.0 | 2021年2月15日 |
0.6.0 | 2018年9月6日 |
0.5.0-beta.3 | 2018年6月1日 |
#3 in #e2e
每月69 次下载
350KB
7K SLoC
saltyrtc-client-rs
异步 SaltyRTC 客户端实现,适用于 Rust。
⚠️ 注意: SaltyRTC 客户端库处于维护模式。它们仍将接收错误修复和常规维护,但如果您想开始使用这些库,请做好在某个时间点接管维护的准备。(如果您有兴趣维护这些库,请告诉我们,我们的电子邮件在 README 中的“安全”部分。)
SaltyRTC 是一个端到端加密的信令协议。它允许您自由选择一系列信令任务,例如设置 WebRTC 或 ORTC 点对点连接,或使用基于 WebSocket 的信令服务器作为中继。SaltyRTC 对所有可行的新和自定义信令任务都完全开放。
测试
设置
集成测试目前期望一个 SaltyRTC 服务器 实例在 localhost:8765
上运行。
首先,为 localhost 创建一个测试证书。
openssl req \
-newkey rsa:1024 \
-x509 \
-nodes \
-keyout saltyrtc.key \
-new \
-out saltyrtc.crt \
-subj /CN=localhost \
-reqexts SAN \
-extensions SAN \
-config <(cat /etc/ssl/openssl.cnf \
<(printf '[SAN]\nsubjectAltName=DNS:localhost')) \
-sha256 \
-days 1825
创建带有依赖项的 Python 虚拟环境
python3 -m virtualenv venv
venv/bin/pip install saltyrtc.server[logging]
最后,使用以下测试永久密钥启动服务器
export SALTYRTC_SERVER_PERMANENT_KEY=0919b266ce1855419e4066fc076b39855e728768e3afa773105edd2e37037c20 # Public: 09a59a5fa6b45cb07638a3a6e347ce563a948b756fd22f9527465f7c79c2a864
venv/bin/saltyrtc-server -v 5 serve -p 8765 \
-sc saltyrtc.crt -sk saltyrtc.key \
-k $SALTYRTC_SERVER_PERMANENT_KEY
在运行客户端测试之前,将 saltyrtc.crt
文件符号链接到您的 saltyrtc-client-rs
目录。
单元测试
要运行测试套件
cargo test
模糊测试
要运行模糊测试,首先安装 cargo-fuzz
cargo install cargo-fuzz
然后针对目标运行模糊器
cargo +nightly fuzz run <target>
您可以使用 cargo fuzz list
列出所有目标。
示例客户端
在 examples/chat/main.rs
中有一个示例聊天客户端。您可以将其作为发起者或响应者调用。请注意,您需要在系统上安装 libncurses 才能使聊天示例正常工作。
如果您以发起者的身份启动聊天,信令路径和身份验证令牌将随机生成并打印出来
$ cargo run --example chat -- initiator
INFO:saltyrtc_client::crypto: Generating new key pair
INFO:saltyrtc_client::crypto: Generating new auth token
******************************
Connecting as Initiator
Signaling path: f637d7fff53defe8db111b17b2c445f7888a83c13dc40d7ff8449f700910f01f
Auth token: 0e94b54a49e4ec7f4398ec9bec5d4359cca810f7eca31704e6c0afadd54a7818
To connect with a peer:
cargo run --example chat -- responder \
--path f637d7fff53defe8db111b17b2c445f7888a83c13dc40d7ff8449f700910f01f \
--auth-token 0e94b54a49e4ec7f4398ec9bec5d4359cca810f7eca31704e6c0afadd54a7818
******************************
INFO:saltyrtc_client: Connected to server as Initiator
...
只需将命令复制到输出后半部分的其他终端中,即可作为响应者连接到发起者。
要查看所有选项,请使用以下命令:cargo run --example chat -- initiator --help
和 cargo run --example chat -- responder --help
。
聊天示例将日志记录到名为 chat.<角色>.log
的文件中。
注意:当前测试期望有一个运行在 localhost:8765
的 SaltyRTC 服务器 实例。
Msgpack 调试
如果您启用了 msgpack-debugging
编译标志,您将获得所有解码消息的直接 msgpack 分析 URL,这些消息在您的 TRACE
级别日志中。
cargo build --features 'msgpack-debugging'
您可以在编译时使用 MSGPACK_DEBUG_URL
环境变量来自定义该 URL 前缀。这是默认 URL
MSGPACK_DEBUG_URL='https://msgpack.dbrgn.ch/#base64='
发布签名
发布提交和标签使用 Threema 签名密钥 (E7ADD9914E260E8B35DFB50665FDE935573ACDA6
)签名。
FFI
您可以在本源存储库的 ffi
子目录中找到 C FFI 绑定。
注意:当前的 FFI 绑定不完整,并由 rust-lang/rust#36342 阻塞。
依赖项修补
以下是在 Cargo.toml
中的推荐修补程序,用于解决传递依赖中的问题
[patch.crates-io]
traitobject = { git = "https://github.com/philip-peterson/destructure_traitobject", rev = "d49b0af9087b3b7848d19d5baae43948ebc7fb9d" }
许可证
根据您的选择,许可方式如下
- Apache License,版本 2.0(《LICENSE-APACHE》或 https://apache.ac.cn/licenses/LICENSE-2.0》)
- MIT 许可证(《LICENSE-MIT》或 http://opensource.org/licenses/MIT》)。
贡献
除非您明确表示,否则您提交的任何有意包含在本作品中的贡献,根据 Apache-2.0 许可证定义,应按上述方式双许可,而无需任何附加条款或条件。
依赖项
~13–24MB
~370K SLoC