7 个版本
| 0.1.2 | 2024年7月4日 |
|---|---|
| 0.1.1 | 2023年11月5日 |
| 0.1.0 | 2023年10月23日 |
| 0.1.0-a.3 | 2023年9月16日 |
#250 in 密码学
110 每月下载量
61KB
1.5K SLoC
zipsign
一个用于使用 ed25519 签名密钥对 .zip 和 .tar.gz 文件进行签名和验证的工具。
安装
cargo install zipsign
或
cargo install --git https://github.com/Kijewski/zipsign
示例
-
.zip
# Generate key pair: $ zipsign gen-key priv.key pub.key # ZIP a file and list the content of the ZIP file: $ zip Cargo.lock.zip Cargo.lock $ unzip -l Cargo.lock.zip Cargo.lock # Sign the ZIP file: $ zipsign sign zip Cargo.lock.zip priv.key $ unzip -l Cargo.lock.zip Cargo.lock # Verify that the generated signature is valid: $ zipsign verify zip Cargo.lock.zip pub.key OK -
.tar
# Generate key pair: $ zipsign gen-key priv.key pub.key # TAR a file and list the content of the ZIP file: $ tar czf Cargo.lock.tgz Cargo.lock $ tar tzf Cargo.lock.tgz Cargo.lock # Sign the .tar.gz file: $ zipsign sign tar Cargo.lock.tgz priv.key $ tar tzf Cargo.lock.tgz Cargo.lock # Verify that the generated signature is valid: $ zipsign verify tar Cargo.lock.tgz pub.key OK
生成密钥
用法:zipsign gen-key <PRIVATE_KEY> <VERIFYING_KEY>
参数
PRIVATE_KEY:要创建的私钥文件VERIFYING_KEY:验证密钥(公钥)文件要创建
选项
-e,--extract:不创建新的密钥对,但从私钥中提取公钥-f,--force:如果存在则覆盖输出文件
签名 .zip 或 .tar.gz 文件
用法:zipsign sign [zip|tar] [-o <OUTPUT>] <INPUT> <KEYS>...
子命令
zip:签名 .zip 文件tar:签名 .tar.gz 文件
选项
-o,--output <OUTPUT>:要生成的签名文件(如果省略,则覆盖输入)-c,--context <CONTEXT>:用于对输入进行盐化的任意字符串,默认为输入文件的文件名-f,--force:如果存在则覆盖输出文件
参数
<INPUT>:待签名输入文件<KEYS>...:包含私钥的一个或多个文件
验证签名
用法:zipsign verify [zip|tar] <INPUT>
子命令
zip:验证签名的.zip文件tar:验证签名的.tar.gz文件
选项
-c,--context <CONTEXT>:用于加盐输入的任意字符串,默认为<INPUT>的文件名-q,--quiet:如果验证成功则不输出“OK”
参数
<INPUT>:签名的.zip或.tar.gz文件<KEYS>...:包含验证密钥的一个或多个文件
移除签名
用法:zipsign unsign [zip|tar] [-o <OUTPUT>] <INPUT>
子命令
zip:从.zip文件中移除签名tar:从.tar.gz文件中移除签名
参数
<INPUT>:签名的.zip或.tar.gz文件
选项
-o,--output <OUTPUT>:要生成的未签名文件(如果省略,则覆盖输入文件)-f,--force:如果存在则覆盖输出文件
它是如何工作的?
使用ed25519ph使用一个或多个私钥对文件进行签名。签名透明地存储在数据旁边。
对于.tar.gz文件,签名被编码为base64字符串。该字符串作为GZIP文件的注释封装,并将该GZIP文件附加到输入文档。这是因为多个GZIP文件可以自由连接。
对于.zip文件,签名被附加到输入文档的开头。这是因为只要在之后修复所有相对地址,ZIP文件可以与任何数据连接。这个特性被用于例如自解压ZIP文件。
依赖关系
~5-15MB
~198K SLoC