S/MIME メッセージに署名する

# 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`

  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" => "joes@example.com", // 連想配列の構文
"From: HQ <ceo@example.com>", // 添字配列の構文
"Subject" => "Eyes only")
)) {
// メッセージは署名されました。送信しましょう!
exec(ini_get("sendmail_path") . " < signed.txt");
}
?>`