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 →
本文档系腾讯云开发者社区成员共同维护,如有问题请联系 cloudcommunity@tencent.com