對一個 S/MIME 訊息進行簽名

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的檔案內容,並使用由signcertprivkey指定的證書和與之匹配的私鑰對其進行加密

參數

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

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *