函數(shù)名:openssl_pkcs7_sign()
適用版本:PHP 4 >= 4.0.6, PHP 5, PHP 7
用法:openssl_pkcs7_sign()函數(shù)用于創(chuàng)建一個PKCS#7數(shù)字簽名。
語法: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]] )
參數(shù):
- $input_filename:輸入文件的路徑,需要被簽名的文件。
- $output_filename:輸出文件的路徑,簽名后的文件。
- $certificate:簽名者的證書,可以是文件路徑或者一個包含證書的字符串。
- $private_key:簽名者的私鑰,可以是文件路徑或者一個包含私鑰的字符串。
- $headers:簽名的頭部信息,一個關聯(lián)數(shù)組。
- $flags:可選參數(shù),指定簽名的標志。默認為PKCS7_DETACHED,表示生成一個獨立的簽名。
- $untrusted_certificates_filename:可選參數(shù),包含不可信任證書的文件路徑。
返回值:成功時返回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()函數(shù)對輸入文件data.txt進行簽名,并將簽名后的文件保存為signed_data.txt。簽名者的證書和私鑰分別為certificate.pem和private_key.pem。我們還指定了一些簽名的頭部信息,包括Content-Type和Content-Disposition。如果簽名成功,輸出"文件簽名成功!";否則輸出"文件簽名失??!"。