Google

NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.7">

openssl_pkcs7_sign

(PHP 4 >= 4.0.6)

openssl_pkcs7_sign -- S/MIME メッセージにサインする

説明

bool openssl_pkcs7_sign ( string infilename, string outfilename, mixed signcert, mixed privkey, array headers [, long flags [, string extracertsfilename]])

警告

この関数は、 実験的なステータスにあります。これは、この関数の 動作、関数名、ここで書かれていること全てがPHPの将来のバージョンで予告 なく変更される可能性があることを意味します。注意を喚起するとともに自分 のリスクでこの関数を使用して下さい。

openssl_pkcs7_sign()は、 infilename という名前のファイルの内容につ いて、パラメータ signcert および privkey で指定した証明書と公開キーを用いて サインをします。 signcert and privkey

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

flags を出力を変更するために使用することが 可能です。PKCS7 定数 を参照下さい。これが指定されない場合、デフォルトの PKCS7_DETACHED になります。

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

例 1openssl_pkcs7_sign() の例

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

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

The CEO
HQ
EOD;
// ファイルにメッセージを保存
$fp = fopen("msg.txt", "w");
fwrite($fp, $data);
fclose($fp);
// 暗号化
if (openssl_pkcs7_sign("msg.txt", "signed.txt", "mycert.pem",
    array("mycert.pem", "mypassphrase"),
    array("To" => "joes@sales.com", // keyed syntax
          "From: HQ <ceo@sales.com>", // indexed syntax
          "Subject" => "Eyes only"))
{
    // メッセージはサインされました。送信しましょう!
    exec(ini_get("sendmail_path") . " < signed.txt");
}

注意 この関数は、PHP 4.0.6 で追加されました。