函式名:openssl_pkcs7_verify()
適用版本:PHP 4 >= 4.0.6, PHP 5, PHP 7
函式描述:openssl_pkcs7_verify() 函式用於驗證數字簽名的 PKCS#7 格式的訊息。
用法: openssl_pkcs7_verify(string $filename, int $flags, string $outfilename [, array $cainfo [, string $extracerts [, string $content]]]) : mixed
引數:
- $filename:要驗證的 PKCS#7 格式的訊息的檔名。
- $flags:標誌,用於指定驗證的行為。可以是以下常量的按位或操作:OPENSSL_PKCS7_DETACHED、OPENSSL_PKCS7_TEXT、OPENSSL_PKCS7_NOINTERN、OPENSSL_PKCS7_NOVERIFY、OPENSSL_PKCS7_NOCHAIN、OPENSSL_PKCS7_NOCERTS、OPENSSL_PKCS7_NOATTR、OPENSSL_PKCS7_BINARY、OPENSSL_PKCS7_NOSIGS、OPENSSL_PKCS7_PARTIAL、OPENSSL_PKCS7_REUSE_DIGEST。
- $outfilename:輸出驗證結果的檔名。
- $cainfo:一個可選的 CA 證書檔案的路徑。它包含了一個或多個 CA 證書,用於驗證簽名。如果未提供,則使用系統預設的證書。
- $extracerts:一個可選的路徑,包含額外的證書鏈。這些證書將被新增到驗證鏈中。
- $content:可選引數,表示要驗證的訊息內容。
返回值: 成功時,返回 TRUE。如果驗證失敗,返回 FALSE。如果發生錯誤,返回 -1。
示例:
$filename = 'signed_message.p7s';
$outfilename = 'verification_result.txt';
$flags = OPENSSL_PKCS7_DETACHED | OPENSSL_PKCS7_NOVERIFY;
if (openssl_pkcs7_verify($filename, $flags, $outfilename)) {
echo "數字簽名驗證成功!";
} else {
echo "數字簽名驗證失敗!";
}
在以上示例中,我們使用 openssl_pkcs7_verify() 函式驗證了一個名為 "signed_message.p7s" 的 PKCS#7 格式的訊息的數字簽名。我們使用 OPENSSL_PKCS7_DETACHED 和 OPENSSL_PKCS7_NOVERIFY 標誌來指定驗證行為。驗證結果將寫入 "verification_result.txt" 檔案中。如果驗證成功,將輸出 "數字簽名驗證成功!",否則輸出 "數字簽名驗證失敗!"。