openssl_pkcs7_verify

(PHP 4 >= 4.0.6, PHP 5, PHP 7, PHP 8)

openssl_pkcs7_verify验证 S/MIME 签名消息的签名

说明

openssl_pkcs7_verify(
    字符串 $input_filename,
    整数 $flags,
    ?字符串 $signers_certificates_filename = null,
    数组 $ca_info = [],
    ?字符串 $untrusted_certificates_filename = null,
    ?字符串 $content = null,
    ?字符串 $output_filename = null
): 布尔值|整数

openssl_pkcs7_verify() 读取给定文件中的 S/MIME 消息,并检查数字签名。

参数

input_filename

消息的路径。

flags

flags 可用于影响签名的验证方式 - 有关更多信息,请参见 PKCS7 常量

signers_certificates_filename

如果指定了 signers_certificates_filename,它应该是一个字符串,其中包含一个文件名的名称,该文件将保存签署消息的个人证书,以 PEM 格式存储。

ca_info

如果指定了 ca_info,它应该包含有关在验证过程中使用的可信 CA 证书的信息 - 有关此参数的更多信息,请参见 证书验证

untrusted_certificates_filename

如果指定了 untrusted_certificates_filename,它是一个包含一组证书的文件的名称,这些证书用作不受信任的 CA。

content

可以使用 content 指定一个文件名,该文件将填充已验证的数据,但签名信息已删除。

output_filename

返回值

如果签名已验证,则返回 true;如果签名不正确(消息已被篡改或签名证书无效),则返回 false;如果出现错误,则返回 -1。

变更日志

版本 说明
8.0.0 signers_certificates_filenameuntrusted_certificates_filenamecontentoutput_filename 现在可以为 null。
7.2.0 添加了 output_filename 参数。

注释

注意: 按照 RFC 2045 中的规定,input_filename 参数中的行长度不能超过 76 个字符。

添加注释

用户贡献的注释 1 个注释

11
reg1barclay at REMOVETHIS dot live dot it
5 年前
要使用 openssl_pkcs7_verify() 验证 .p7m 文件,您必须将其转换为 S/MIME 格式。例如...
<?php
function der2smime($file)
{
$to=<<<TXT
MIME-Version: 1.0
Content-Disposition: attachment; filename="smime.p7m"
Content-Type: application/x-pkcs7-mime; smime-type=signed-data; name="smime.p7m"
Content-Transfer-Encoding: base64
\n
TXT;
$from=file_get_contents($file);
$to.=chunk_split(base64_encode($from));
return
file_put_contents($file,$to);
}
?>
To Top