andreygrin/xades-tools

使用XAdES对文件、XML内容进行签名并验证签名

1.0.0 2024-09-24 07:38 UTC

This package is auto-updated.

Last update: 2024-09-24 07:42:58 UTC


README

更新版本,包括证书序列号和颁发者详细信息

API

签名

use XadesTools\CertificateFactory;
use XadesTools\Signature;
$cert = CertificateFactory::string(
    $privateKeyContents, // .pem
    $certificateContents, // .crt
    $parivateKeyPassword // string
);

$this->signer = new Signature($cert);
$this->signer->signXml('xmlContent') // returns signature, you should add it to the xml file the way you need to have it there.

验证,内容提取

use XadesTools\Verification;
$xades = new Verification();
$result = $xades->verifyFile($pathToXadesFile);
if ($result) {
    $content = $res->content; // binary content or plain text for xml files
    $signTime = $res->dateSigned; // DateTime object
    $signingSubject = $res->signingSubject; // array
} else {
    // Signature does not match signed content
}

命令行使用

签名文件

php bin/sign.php file cert pass [embed] [load-content]

在哪里

  • file - 我们想要签名的文件的路径。签名将在同一文件夹中创建,扩展名为 .XAdES
  • cert - PKCS#12格式(.p12)的证书 - 包含私钥
  • pass - p12文件的密码
  • embed - 如果为true,签名将嵌入给定文件
  • load-content - 将文件内容加载到变量中并将其作为嵌入对象进行签名

结果在 file.XAdES 中,位于给定 file 的同一目录中

验证

php src/verify.php file [verbose]

在哪里

  • file 是 .XAdES 文件的路径
  • verbose 如果为true,则打印关于签名时间的附加信息
  • load-content - 将文件内容加载到变量中并将其作为嵌入对象进行验证(不能依赖于磁盘上的文件)

验证给定XAdES文件中的内容,如果一切通过,则打印 OK,否则打印错误信息。

从XAdES文件中提取文件

php src/extract.php file output

在哪里

  • file 是包含嵌入对象的 .XAdES 文件的路径
  • output 输出文件的路径