【PHP8.x】openssl_cms_verify関数の使い方
openssl_cms_verify関数は、Cryptographic Message Syntax (CMS) 形式で署名されたデータの電子署名を検証する関数です。CMSは、電子署名や暗号化されたメッセージの構造を定義する国際的な標準規格です。この関数を利用すると、受け取ったデータが途中で改ざんされていないか(データの完全性)、そしてそのデータが本当に信頼できる署名者によって署名されたものか(署名者の真正性)を確認することができます。
具体的には、検証したいCMS署名データが格納されているファイルパスを指定します。さらに、署名を検証するために必要な証明書や、失効した証明書のリスト(CRL)が格納されたファイルパスをオプションで指定できます。検証の振る舞いを細かく制御するためのフラグも設定可能です。検証が成功した場合、この関数はブール値のtrue
を返し、元の署名されたデータを取り出すこともできます。検証に失敗した場合はfalse
を返します。
この関数は、ソフトウェアの配布におけるファイルの信頼性チェックや、セキュアな通信で送受信されるメッセージの真正性保証など、電子署名によってデータの信頼性をプログラムで確認する様々なシーンで重要な役割を果たします。システムエンジニアにとって、データのセキュリティと完全性を確保するための基本的なツールの一つと言えます。
基本的な使い方
構文(syntax)
<?php
openssl_cms_verify(
string $input_filename,
int $flags = 0,
?string $ca_info = null,
array $untrusted_certificates = [],
?string $certs_file = null,
?string $output_filename = null
): bool
引数(parameters)
string $input_filename, int $flags, ?string $certificates = null, array $ca_info = [], ?string $untrusted_certificates_filename = null, ?string $content = null, ?string $pk7 = null, ?string $sigfile = null, int $encoding = OPENSSL_CMS_BINARY
- string $input_filename: 検証するCMS(Cryptographic Message Syntax)データのファイルパス
- int $flags: 検証の動作を制御するフラグ
- ?string $certificates: 検証に使用する署名者の証明書(PEM形式)または証明書チェーン(PEM形式)のパス
- array $ca_info: CA(認証局)証明書のディレクトリパス、または個々のCA証明書(PEM形式)のパスの配列
- ?string $untrusted_certificates_filename: untrusted証明書(信頼されていない証明書)のファイルパス
- ?string $content: 検証するCMSデータのコンテンツ(バイナリデータ)
- ?string $pk7: 検証するPKCS#7データ(バイナリデータ)
- ?string $sigfile: 検証する署名ファイル(バイナリデータ)
- int $encoding = OPENSSL_CMS_BINARY: 入力データのエンコーディングを指定するフラグ
戻り値(return)
bool
openssl_cms_verify関数は、CMSメッセージの検証が成功した場合はtrueを、失敗した場合はfalseを返します。