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" => "[email protected]", // keyed syntax
"From: HQ <[email protected]>", // indexed syntax
"Subject" => "Eyes only")
)) {
// message signed - send it!
exec(ini_get("sendmail_path") . " < signed.txt");
}
?>