openssl_pkcs7_sign
(PHP 4 >= 4.0.6, PHP 5, PHP 7)
openssl_pkcs7_sign — S/MIME メッセージに署名する
説明
openssl_pkcs7_sign
( string $infilename
, string $outfilename
, mixed $signcert
, mixed $privkey
, array $headers
[, int $flags
= PKCS7_DETACHED
[, string $extracerts
]] ) : bool
openssl_pkcs7_sign() は
infilename
という名前のファイルの内容を取得し、
パラメータ signcert
と privkey
で
指定した証明書とそれに対応する秘密鍵を用いて署名します。
パラメータ
infilename
- デジタル署名したい入力ファイル
outfilename
- デジタル署名が書き出されるファイル
signcert
- The X.509 certificate used to digitally sign infilename. See Key/Certificate parameters for a list of valid values. infilename に電子署名するために使う X.509 証明書。 有効な値のリストは、 キー/証明書パラメータ を参照してください。
privkey
privkey
は、signcert に対応する秘密鍵です。 有効な値のリストは、 公開鍵/秘密鍵 のパラメータ を参照してください。headers
headers
は、ヘッダの配列です。このヘッダは、 署名された後でデータの前に付加されます (このパラメータの形式の詳細については openssl_pkcs7_encrypt() を参照ください)。flags
flags
を出力を変更するために使用することが可能です。 PKCS7 定数 を参照ください。extracerts
extracerts
には、 署名に含めるための他の一連の証明書を記述したファイル名を指定します。 これは、例えば送信者が使用した証明書を受信者が検証しやすくするために使用することが可能です。
返り値
成功した場合に true
を、失敗した場合に false
を返します。
例
例1 openssl_pkcs7_sign() の例
<?php// 受信者が送信者を確認できるように署名したいメッセージ$data = <<<EODYou have my authorization to spend $10,000 on dinner expenses.The CEOEOD;// ファイルにメッセージを保存$fp = fopen("msg.txt", "w");fwrite($fp, $data);fclose($fp);// 暗号化if (openssl_pkcs7_sign("msg.txt", "signed.txt", "file://mycert.pem", array("file://mycert.pem", "mypassphrase"), array("To" => "joes@example.com", // 連想配列の構文 "From: HQ <ceo@example.com>", // 添字配列の構文 "Subject" => "Eyes only") )) { // メッセージは署名されました。送信しましょう! exec(ini_get("sendmail_path") . " < signed.txt");}?>