openssl_pkcs7_sign

(PHP 4 >= 4.0.6, PHP 5, PHP 7)

openssl_pkcs7_signS/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 という名前のファイルの内容を取得し、 パラメータ signcertprivkeyで 指定した証明書とそれに対応する秘密鍵を用いて署名します。

パラメータ

infilename

The input file you are intending to digitally sign.

outfilename

The file which the digital signature will be written to.

signcert

The X.509 certificate used to digitally sign infilename. See Key/Certificate parameters for a list of valid values.

privkey

privkey is the private key corresponding to signcert. See Public/Private Key parameters for a list of valid values.

headers

headers は、ヘッダの配列です。このヘッダは、 署名された後でデータの前に付加されます (このパラメータの形式の詳細については openssl_pkcs7_encrypt() を参照ください)。

flags

flags を出力を変更するために使用することが可能です。 PKCS7 定数 を参照ください。

extracerts

extracerts には、 署名に含めるための他の一連の証明書を記述したファイル名を指定します。 これは、例えば送信者が使用した証明書を受信者が検証しやすくするために使用することが可能です。

返り値

成功した場合に TRUE を、失敗した場合に FALSE を返します。

例1 openssl_pkcs7_sign() の例

<?php
// 受信者が送信者を確認できるように署名したいメッセージ
$data = <<<EOD

You have my authorization to spend $10,000 on dinner expenses.

The CEO
EOD;
// ファイルにメッセージを保存
$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" => "[email protected]"// 連想配列の構文
          
"From: HQ <[email protected]>"// 添字配列の構文
          
"Subject" => "Eyes only")
    )) {
    
// メッセージは署名されました。送信しましょう!
    
exec(ini_get("sendmail_path") . " < signed.txt");
}
?>