openssl_pkcs7_sign
openssl_pkcs7_sign
(PHP 4 >= 4.0.6, PHP 5, PHP 7)
openssl_pkcs7_sign — Sign an S/MIME message
描述
bool openssl_pkcs7_sign ( string $infilename , string $outfilename , mixed $signcert , mixed $privkey , array $headers [, int $flags = PKCS7_DETACHED [, string $extracerts ]] )
openssl_pkcs7_sign()
获取名为文件的内容,infilename
并使用由signcert
和privkey
参数指定的证书及其匹配的私钥对它们进行签名。
参数
infilename
您打算数字签名的输入文件。
outfilename
数字签名将被写入的文件。
signcert
用于数字签名infilename的X.509证书。请参阅密钥/证书参数以获取有效值列表。
privkey
privkey
是signcert对应的私钥。请参阅公钥/私钥参数以获取有效值列表。
headers
headers
是一个标头数组,它在签名后会被添加到数据中(有关此参数格式的更多信息,请参阅openssl_pkcs7_encrypt())。
flags
flags
可以用来改变输出 - 参见PKCS7常量。
extracerts
extracerts
指定包含一系列额外证书的文件的名称,这些证书要包含在签名中,例如可用于帮助收件人验证您使用的证书。
返回值
成功时返回TRUE
或失败时返回FALSE
。
例子
示例#1 openssl_pkcs7_sign()示例
<?php
// the message you want to sign so that recipient can be sure it was you that
// sent it
$data = <<<EOD
You have my authorization to spend $10,000 on dinner expenses.
The CEO
EOD;
// save message to file
$fp = fopen("msg.txt", "w"
fwrite($fp, $data
fclose($fp
// encrypt it
if (openssl_pkcs7_sign("msg.txt", "signed.txt", "file://mycert.pem",
array("file://mycert.pem", "mypassphrase"),
array("To" => "joes@example.com", // keyed syntax
"From: HQ <ceo@example.com>", // indexed syntax
"Subject" => "Eyes only")
)) {
// message signed - send it!
exec(ini_get("sendmail_path") . " < signed.txt"
}
?>
← openssl_pkcs7_encrypt
openssl_pkcs7_verify →