PQSign
PQSign(Post Quantum Sign)是一个使用后量子密码算法 Aigis-sig 对文件做签名/验签的工具。
PQSign 基于 PQMagic 高性能后量子密码算法库以及 sm3sum 实现。参考 Minisign 的设计思路。
View on Gitee Download Source Code
编译
git clone --recursive https://gitee.com/pqcrypto/pqsign.git
cd pqsign
mkdir build
cd build
cmake ..
make
在 build/bin
目录会生成 pqsign
可执行程序。
使用
生成公私钥对
./pqsign -G
执行命令后在当前目录会生成 pqsign.pub
公钥文件和 pqsign.key
私钥文件。
可以进一步指定生成公私钥对的文件名:
./pqsign -G -p mypubkey.pub -k myseckey.key
对文件签名
./pqsign -S myfile.txt
执行命令后会使用当前目录下的私钥文件 pqsign.key
对 myfile.txt
文件进行签名,并在当前目录生成签名文件 myfile.txt.pqsig
。
可以进一步指定私钥文件名和生成的签名文件:
./pqsign -S myfile.txt -k myseckey.key -x mysigfile.sig
该操作将使用 myseckey.key
私钥文件对 myfile.txt
进行签名,生成签名文件 mysigfile.sig
。
对文件验签名
./pqsign -V myfile.txt
执行命令后会使用当前目录下的公钥文件 pqsign.pub
对 myfile.txt
文件和其对应的签名文件 myfile.txt.pqsig
进行验签。
可以进一步指定公钥文件和签名文件:
./pqsign -V myfile.txt -p mypubkey.pub -x mysigfile.sig
该操作将使用 mypubkey.pub
公钥文件对文件 myfile.txt
和签名文件 mysigfile.sig
进行验签。
- 对文件的签名和验签过程,使用文件的 SM3 校验值(checksum)作为输入。
- 文件的 SM3 校验值(checksum)由 pqsign 工具在签名/验签前使用 sm3sum 计算得到。
文件格式
签名文件格式
base64( 算法名称 || 签名字节串 || 签名长度 )
- 算法名称:长度为12字节的字符串,不足12字节高地址补0
- pqsign 中算法名称为
Aigis-sig
- 签名字节串:
Aigis-sig
算法签名后得到的字节串- 签名长度:
size_t
类型的数据,记录签名的长度
公钥文件格式
base64( 算法名称 || 公钥字节串 )
- 算法名称:长度为12字节的字符串,不足12字节高地址补0
- pqsign 中算法名称为
Aigis-sig
- 公钥字节串:
Aigis-sig
算法生成的公钥字节串
私钥文件格式
base64( 算法名称 || 私钥字节串 )
- 算法名称:长度为12字节的字符串,不足12字节高地址补0
- pqsign 中算法名称为
Aigis-sig
- 公钥字节串:
Aigis-sig
算法生成的私钥字节串