openssl_pkcs7_sign
(PHP 4 >= 4.0.6, PHP 5, PHP 7, PHP 8)
openssl_pkcs7_sign — 對一個 S/MIME 訊息進行簽名
說明
openssl_pkcs7_sign(
string
string
mixed
mixed
array
int
string
): bool
string
$infilename
,string
$outfilename
,mixed
$signcert
,mixed
$privkey
,array
$headers
,int
$flags
= PKCS7_DETACHED,string
$extracerts
= ?): bool
openssl_pkcs7_sign()獲取名為infilename
的檔案內容,並使用由signcert
和privkey
指定的證書和與之匹配的私鑰對其進行加密
參數
-
infilename
-
你打算用來進行數字簽名的輸入檔案。
-
outfilename
-
將寫入數字簽名的檔案。
-
signcert
-
用來對輸入檔案進行數字簽名的 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");
}
?>