1 个不稳定版本
0.1.0 | 2021 年 9 月 27 日 |
---|
#4 在 #threema
52KB
1K SLoC
非官方的 Threema 协议 Rust 实现
这将是一个 Threema 消息 API 的库和工具,以使服务与非手机用户兼容(例如作为桌面应用程序或 Matrix 或 XMPP 的网桥)。账户注册需要官方移动应用程序或 Threema Store 中购买的许可证。请勿将其用作其付费 Threema 网关服务的替代品。
正在进行中。
- 将主程序拆分为库和示例
- 账户导入
- threema 安全
- id 备份
- 将独立二进制文件转换为库
- 基本的 threema 传输
- 登录
- 接收/发送帧
- 解码/编码框中消息
- 连接代理
- 连接断开时重新连接
- 保持活动回声
- 接收事件流
- 发送消息
- 处理确认
- 在连接断开时保持消息
- 目录 API
- 查找公钥 (
identity/<ID>
) -
身份/获取批量
- 注册(Python 中的 POC 完成)
- 自己的账户信息
identity/fetch_priv
- 链接电子邮件/电话
- 搜索联系人
- 功能掩码
- 撤销
- ...
- 查找公钥 (
- blob API
- 流式传输支持以减少内存并提供进度
- VOIP 信令:将任意 webrtc 提供的/响应的网桥连接到任何使用 webrtc 的其他网络将会很棒。
- 当可用时发布 crate
- 发布 rustoc
- 取消 tokio 化的 threema 协议传输(使其能够在没有大量依赖项和同步代码的情况下使用)
感谢
- Roland Schilling 和 Frieder Steinmetz,他们在 2016 年 33C3 上展示了精彩的协议概述(录音和幻灯片)并实现了 Go 实现
o3ma
- Threema 在 2020 年发布了他们的代码作为 开源
用法
当准备好时,这将是 threema_client
的 rust 库,并且将提供 API 文档。还可以使用大量的实验性二进制文件。
目前,账户以明文JSON格式保存,可以使用注册/加载程序生成。
示例 / 二进制文件
- 创建账户JSON
register.py
使用许可证密钥注册身份load_safe
:下载并解密Threema-Safe备份load_idbackup
:解密ID-Backup
- blob
getblob
获取(可选删除)Blobputblob
上传Blob
connect
:频繁变化的测试程序:连接到账户并打印消息- 计划:
chatwith
:与单个对等方/群组进行命令行聊天
许可证
由于我深入研究Threema for Android,此协议端口也采用GNU Affero General Public License v3许可。
Threema Protocol Library
Copyright (C) 2021 thejonny
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as
published by the Free Software Foundation, either version 3 of the
License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.
依赖项
~30–44MB
~483K SLoC