= 4.0.6, PHP 5, PHP 7, PHP 8)openssl_pkcs7_sign — 對一個 S/MIME 消息進行簽名說明openssl_pkcs7_sign( string $infilename, string $o">
(PHP 4 >= 4.0.6, PHP 5, PHP 7, PHP 8)
openssl_pkcs7_sign — 對一個 S/MIME 消息進行簽名
$infilename
,$outfilename
,$signcert
,$privkey
,$headers
,$flags
= PKCS7_DETACHED,$extracerts
= ?
openssl_pkcs7_sign()獲取名為infilename
的文件內(nèi)容,并使用由signcert
和privkey
指定的證書和與之匹配的私鑰對其進行加密
infilename
你打算用來進行數(shù)字簽名的輸入文件。
outfilename
將寫入數(shù)字簽名的文件。
signcert
用來對輸入文件進行數(shù)字簽名的 X.509 證書,參見 密鑰/證書參數(shù)獲取可用列表。
privkey
privkey
是對應signcert證書的私鑰。
參見 公/私鑰參數(shù)獲取可用列表。
headers
headers
是一個包含頭信息的數(shù)組,在它被簽名后,它將被預先對數(shù)據(jù)進行預處理 (參見
openssl_pkcs7_encrypt() 獲取關(guān)于該參數(shù)格式的更多信息)。
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");
}
?>