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