一个极其简单的工具,用于签名文件并验证签名。
Minisign 是一个用于签名文件并验证签名的工具。它的设计目标是:
Minisign 使用 Ed25519 公钥签名系统,签名体积小且速度快。
如需完整文档,请参阅 Minisign 文档 网站或随附的手册页。
Minisign 可通过多种软件包管理器安装:
| 平台 | 命令 |
|---|---|
| macOS (Homebrew) | brew install minisign |
| Windows (Scoop) | scoop install minisign |
| Windows (Chocolatey) | choco install minisign |
依赖:
编译选项:
zig build -Doptimize=ReleaseSmall
zig build -Doptimize=ReleaseSmall -Dstatic
zig build -Doptimize=ReleaseSmall -Dwithout-libsodium
生成的二进制文件位于 zig-out/bin/minisign。
如需更快执行,代价是二进制体积更大,可将上述任意命令中的 ReleaseSmall 替换为 ReleaseFast。
依赖:
编译:
mkdir build
cd build
cmake ..
make
make install # with appropriate permissions
静态二进制的替代配置:
cmake -D STATIC_LIBSODIUM=1 ..
或:
cmake -D BUILD_STATIC_EXECUTABLES=1 ..
minisign -G
这将创建:
minisign.pub)minisign.key)minisign -S -m file.txt
这将创建名为 file.txt.minisig 的签名文件。
若要添加一条可被验证的可信注释:
minisign -S -m file.txt -t "Trusted comment here"
minisign -Vm file.txt -p minisign.pub
或直接使用公钥:
minisign -Vm file.txt -P RWQf6LRCGA9i53mlYecO4IzT51TGPpvWucNSCh1CBM0QTaLn73Y7GFO3
本项目提供的 tarball 包和预编译二进制文件可以使用以下公钥进行验证:
RWQf6LRCGA9i53mlYecO4IzT51TGPpvWucNSCh1CBM0QTaLn73Y7GFO3
Minisign 以 Docker 镜像形式提供:
docker run -i --rm jedisct1/minisign
首次生成密钥并随后签名本地文件的示例:
docker run -i --rm -v .:/minisign jedisct1/minisign \
-s minisign.key -G
docker run -i --rm -v .:/minisign jedisct1/minisign \
-s minisign.key -S -m files_to_sign
-s minisign.key 将创建并使用私钥;公钥将被命名为 minisign.pub。
重要提示:请创建备份,且不要提交或分享生成的私钥文件 minisign.key。
使用 Docker 镜像验证签名的示例:
docker run -i --rm -v .:/minisign jedisct1/minisign \
-Vm file_to_verify -p minisign.pub
如果已生成默认名称,可以省略 -p minisign.pub。
该镜像可以使用以下 cosign 公钥进行验证:
-----BEGIN PUBLIC KEY-----
MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAExjZWrlc6c58W7ZzmQnx6mugty99C
OQTDtJeciX9LF9hEbs1J1fzZHRdRhV4OTqcq0jTW9PXnrSSZlk1fbkE/5w==
-----END PUBLIC KEY-----
Minisign 与 signify(OpenBSD 签名工具)兼容。使用 signify 创建的签名可以用 minisign 验证,反之亦然。
除非 libsodium 在编译时定义了 ED25519_NONDETERMINISTIC 宏,否则此实现使用确定性签名。该宏会向 EdDSA nonce 的计算中加入随机噪声。
其他实现可以选择默认使用非确定性签名。它们仍将与使用确定性签名的实现完全互操作。
minizign 现在是推荐的实现。新功能将在此实现中添加。
其他工具和库: