#protocols #verifying #reference #verification #arguments #polyproto

bin+lib stimmgabel

用于验证协议其他实现的 polyproto 参考测试实现

2 个版本 (1 个稳定版本)

1.0.0 2024年5月15日
0.1.0 2024年1月19日

#189 in 测试

MPL-2.0 许可证

24KB
393

stimmgabel

polyproto 命令行工具实现,用于验证协议的其他实现。

动机

在实现协议时,确保所有方面都正确可能很困难——尤其是当协议是新的且没有很多实现可供比较时。Stimmgabel(德语为“调音叉”)是一个命令行工具,用作其他 polyproto 实现的验证工具。

由于这是一个二进制文件而不是库,因此可以通过调用二进制文件并使用所需参数在各种编程语言中直接使用它。

安装

发布页面 下载最新版本。或者,使用 Rust 工具链,您可以克隆此存储库并自行构建二进制文件。

获取二进制文件后,您可以从命令行执行它

stimmgabel --help

解释输出

如果验证成功,程序将以状态码 0 退出。任何其他退出码都表示在验证过程中出现错误。退出码被编码为位标志,其中位按以下方式设置

错误 位标志
GARBLED_INPUT(不可读的输入) 1 << 0
INVALID_INPUT(可读,但错误的输入) 1 << 1
CONSTRAINT_VIOLATION(未满足验证标准) 1 << 2
BAD_SIGNATURE(签名不匹配数据) 1 << 3
BAD_PUBLIC_KEY(公钥不匹配签名或公钥弱/差) 1 << 4

验证消息

polyproto 没有指定消息的特定格式。对于此验证实现,当传递要验证的消息时,使用以下格式

{
    "message": "Any string",
    "signature": "Base64 encoded signature",
    "public_key": "Base64 encoded public key of the sender"
}

允许最小化 JSON,并且键的顺序不重要。

加密和安全

polyproto 没有指定签名算法。为了使两个实现兼容,它们必须提供一组重叠的签名算法。Stimmgabel 仅支持 ED25519,使用 ed25519-dalek crate,因为 ED25519 是目前 polyproto 推荐的签名算法。

![重要] 该存储库的加密技术,包括密钥和算法,仅用于测试目的。它使用ed25519-dalek crate实现polyproto,并使用ED25519作为签名算法。有关ed25519-dalek crate的安全保证信息,请参阅更多信息。该软件尚未接受安全审计。无法保证其安全性。

依赖项

~9–23MB
~280K SLoC