函式名:openssl_pkcs7_sign()
適用版本:PHP 4 >= 4.0.6, PHP 5, PHP 7
用法:openssl_pkcs7_sign()函式用於建立一個PKCS#7數字簽名。
語法:bool openssl_pkcs7_sign(string $input_filename, string $output_filename, mixed $certificate, mixed $private_key, array $headers [, int $flags = PKCS7_DETACHED [, string $untrusted_certificates_filename]] )
引數:
- $input_filename:輸入檔案的路徑,需要被簽名的檔案。
- $output_filename:輸出檔案的路徑,簽名後的檔案。
- $certificate:簽名者的證書,可以是檔案路徑或者一個包含證書的字串。
- $private_key:簽名者的私鑰,可以是檔案路徑或者一個包含私鑰的字串。
- $headers:簽名的頭部資訊,一個關聯陣列。
- $flags:可選引數,指定簽名的標誌。預設為PKCS7_DETACHED,表示生成一個獨立的簽名。
- $untrusted_certificates_filename:可選引數,包含不可信任證書的檔案路徑。
返回值:成功時返回true,失敗時返回false。
示例:
$input_file = 'data.txt';
$output_file = 'signed_data.txt';
$certificate = 'certificate.pem';
$private_key = 'private_key.pem';
$headers = array(
'Content-Type' => 'text/plain',
'Content-Disposition' => 'attachment; filename="data.txt"'
);
if (openssl_pkcs7_sign($input_file, $output_file, $certificate, $private_key, $headers)) {
echo '檔案簽名成功!';
} else {
echo '檔案簽名失敗!';
}
以上示例中,我們使用openssl_pkcs7_sign()函式對輸入檔案data.txt進行簽名,並將簽名後的檔案儲存為signed_data.txt。簽名者的證書和私鑰分別為certificate.pem和private_key.pem。我們還指定了一些簽名的頭部資訊,包括Content-Type和Content-Disposition。如果簽名成功,輸出"檔案簽名成功!";否則輸出"檔案簽名失敗!"。