PHP
加密 | Cryptography

openssl_pkcs7_sign

openssl_pkcs7_sign

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

openssl_pkcs7_sign — Sign an S/MIME message

描述

bool openssl_pkcs7_sign ( string $infilename , string $outfilename , mixed $signcert , mixed $privkey , array $headers [, int $flags = PKCS7_DETACHED [, string $extracerts ]] )

openssl_pkcs7_sign()获取名为文件的内容,infilename并使用由signcertprivkey参数指定的证书及其匹配的私钥对它们进行签名。

参数

infilename

您打算数字签名的输入文件。

outfilename

数字签名将被写入的文件。

signcert

用于数字签名infilename的X.509证书。请参阅密钥/证书参数以获取有效值列表。

privkey

privkey是signcert对应的私钥。请参阅公钥/私钥参数以获取有效值列表。

headers

headers 是一个标头数组,它在签名后会被添加到数据中(有关此参数格式的更多信息,请参阅openssl_pkcs7_encrypt())。

flags

flags可以用来改变输出 - 参见PKCS7常量。

extracerts

extracerts 指定包含一系列额外证书的文件的名称,这些证书要包含在签名中,例如可用于帮助收件人验证您使用的证书。

返回值

成功时返回TRUE或失败时返回FALSE

例子

示例#1 openssl_pkcs7_sign()示例

<?php // the message you want to sign so that recipient can be sure it was you that // sent it $data = <<<EOD You have my authorization to spend $10,000 on dinner expenses. The CEO EOD; // save message to file $fp = fopen("msg.txt", "w" fwrite($fp, $data fclose($fp // encrypt it if (openssl_pkcs7_sign("msg.txt", "signed.txt", "file://mycert.pem",     array("file://mycert.pem", "mypassphrase"),     array("To" => "joes@example.com", // keyed syntax           "From: HQ <ceo@example.com>", // indexed syntax           "Subject" => "Eyes only")     )) {     // message signed - send it!     exec(ini_get("sendmail_path") . " < signed.txt" } ?>

← openssl_pkcs7_encrypt

openssl_pkcs7_verify →