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.keymyfile.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.pubmyfile.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 算法生成的私钥字节串

PQMagic | 联系我们
Copyright © Post-Quantum Magic Project. This site uses Just the Docs, a documentation theme for Jekyll.