= 4.0.6, PHP 5, PHP 7, PHP 8)openssl_pkcs7_sign — 對一個 S/MIME 消息進行簽名說明openssl_pkcs7_sign( string $infilename, string $o">

openssl_pkcs7_sign

(PHP 4 >= 4.0.6, PHP 5, PHP 7, PHP 8)

openssl_pkcs7_sign對一個 S/MIME 消息進行簽名

說明

openssl_pkcs7_sign(
    string $infilename,
    string $outfilename,
    mixed $signcert,
    mixed $privkey,
    array $headers,
    int $flags = PKCS7_DETACHED,
    string $extracerts = ?
): bool

openssl_pkcs7_sign()獲取名為infilename的文件內(nèi)容,并使用由signcertprivkey指定的證書和與之匹配的私鑰對其進行加密

參數(shù)

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");
}
?>