函数名称:openssl_cms_verify()
适用版本:PHP 5 >= 5.4.0, PHP 7
函数描述:openssl_cms_verify() 函数用于验证 CMS 签名。
用法: openssl_cms_verify( string $input_filename, int $flags, string $certificates [, array $ca_info [, string $untrusted_certificates [, string $content [, string $pk7 [, string $sigfile [, int $encoding ]]]]]] ) : bool
参数:
- $input_filename:输入文件名,包含要验证的 CMS 签名
- $flags:可选参数,用于指定验证选项的位掩码。例如,使用 OPENSSL_CMS_NOINTERN 指定不验证内部证书
- $certificates:包含用于验证签名的证书链的文件名。可以是一个单独的证书文件或包含多个证书的文件。
- $ca_info:可选参数,用于指定证书颁发机构的附加信息的文件名。
- $untrusted_certificates:可选参数,包含不受信任的证书的文件名。这些证书将被用于验证签名。
- $content:可选参数,包含签名的原始内容的文件名。如果提供了此参数,则验证过程将检查签名是否与原始内容匹配。
- $pk7:可选参数,包含 PKCS#7 格式签名的文件名。如果提供了此参数,则验证过程将使用该文件中的签名。
- $sigfile:可选参数,包含签名的文件名。如果提供了此参数,则验证过程将使用该文件。
- $encoding:可选参数,指定签名的编码方式。默认为 PKCS7_BINARY。
返回值:如果验证成功,则返回 true,否则返回 false。
示例:
$input_filename = 'signed_message.txt';
$flags = OPENSSL_CMS_NOINTERN;
$certificates = 'certificates.pem';
$ca_info = 'ca_info.pem';
$untrusted_certificates = 'untrusted_certificates.pem';
$content = 'original_content.txt';
$pk7 = 'signature.pk7';
$sigfile = 'signature.txt';
$encoding = PKCS7_BINARY;
if (openssl_cms_verify($input_filename, $flags, $certificates, $ca_info, $untrusted_certificates, $content, $pk7, $sigfile, $encoding)) {
echo "验证成功!";
} else {
echo "验证失败!";
}
以上示例演示了如何使用 openssl_cms_verify() 函数验证一个 CMS 签名。首先,我们提供了要验证的 CMS 签名的文件名、验证选项、用于验证签名的证书链文件名等参数。然后,使用 openssl_cms_verify() 函数进行验证。如果验证成功,则输出 "验证成功!",否则输出 "验证失败!"。