函式名稱:openssl_cms_verify()
適用版本:PHP 5 >= 5.4.0, PHP 7
函式描述:openssl_cms_verify() 函式用於驗證 CMS 簽名。
用法: openssl_cms_verify( string $input_filename, int $flags, string $certificates [, array $ca_info [, string $untrusted_certificates [, string $content [, string $pk7 [, string $sigfile [, int $encoding ]]]]]] ) : bool
引數:
- $input_filename:輸入檔名,包含要驗證的 CMS 簽名
- $flags:可選引數,用於指定驗證選項的位掩碼。例如,使用 OPENSSL_CMS_NOINTERN 指定不驗證內部證書
- $certificates:包含用於驗證簽名的證書鏈的檔名。可以是一個單獨的證書檔案或包含多個證書的檔案。
- $ca_info:可選引數,用於指定證書頒發機構的附加資訊的檔名。
- $untrusted_certificates:可選引數,包含不受信任的證書的檔名。這些證書將被用於驗證簽名。
- $content:可選引數,包含簽名的原始內容的檔名。如果提供了此引數,則驗證過程將檢查簽名是否與原始內容匹配。
- $pk7:可選引數,包含 PKCS#7 格式簽名的檔名。如果提供了此引數,則驗證過程將使用該檔案中的簽名。
- $sigfile:可選引數,包含簽名的檔名。如果提供了此引數,則驗證過程將使用該檔案。
- $encoding:可選引數,指定簽名的編碼方式。預設為 PKCS7_BINARY。
返回值:如果驗證成功,則返回 true,否則返回 false。
示例:
$input_filename = 'signed_message.txt';
$flags = OPENSSL_CMS_NOINTERN;
$certificates = 'certificates.pem';
$ca_info = 'ca_info.pem';
$untrusted_certificates = 'untrusted_certificates.pem';
$content = 'original_content.txt';
$pk7 = 'signature.pk7';
$sigfile = 'signature.txt';
$encoding = PKCS7_BINARY;
if (openssl_cms_verify($input_filename, $flags, $certificates, $ca_info, $untrusted_certificates, $content, $pk7, $sigfile, $encoding)) {
echo "驗證成功!";
} else {
echo "驗證失敗!";
}
以上示例演示瞭如何使用 openssl_cms_verify() 函式驗證一個 CMS 簽名。首先,我們提供了要驗證的 CMS 簽名的檔名、驗證選項、用於驗證簽名的證書鏈檔名等引數。然後,使用 openssl_cms_verify() 函式進行驗證。如果驗證成功,則輸出 "驗證成功!",否則輸出 "驗證失敗!"。