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锟斤拷锟侥硷拷锟斤拷锟捷o拷锟斤拷使锟斤拷锟斤拷signcert锟斤拷privkey指锟斤拷锟斤拷证锟斤拷锟斤拷锟街ワ拷锟斤拷私钥锟斤拷锟斤拷锟斤拷屑锟斤拷锟�

锟斤拷锟斤拷

infilename

锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟角╋拷锟斤拷锟斤拷锟斤拷锟斤拷募锟斤拷锟�

outfilename

锟斤拷写锟斤拷锟斤拷锟斤拷签锟斤拷锟斤拷锟侥硷拷锟斤拷

signcert

锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟侥硷拷锟斤拷锟斤拷锟斤拷锟斤拷签锟斤拷锟斤拷 X.509 证锟介,锟轿硷拷 锟斤拷钥/证锟斤拷锟斤拷锟�锟斤拷取锟斤拷锟斤拷锟叫憋拷

privkey

privkey锟角讹拷应signcert证锟斤拷锟剿皆匡拷锟� 锟轿硷拷 锟斤拷/私钥锟斤拷锟斤拷锟斤拷取锟斤拷锟斤拷锟叫憋拷

headers

headers锟斤拷一锟斤拷锟斤拷锟斤拷头锟斤拷息锟斤拷锟斤拷锟介,锟斤拷锟斤拷锟斤拷签锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷预锟饺讹拷锟斤拷锟捷斤拷锟斤拷预锟斤拷锟斤拷 (锟轿硷拷 openssl_pkcs7_encrypt() 锟斤拷取锟斤拷锟节该诧拷锟斤拷锟斤拷式锟侥革拷锟斤拷锟斤拷息)锟斤拷

flags

flags 锟斤拷锟斤拷锟斤拷锟斤拷锟侥憋拷锟斤拷锟� - 锟轿硷拷 PKCS7锟斤拷锟斤拷锟斤拷

extracerts

extracerts 指锟斤拷一锟斤拷锟侥硷拷锟斤拷锟斤拷锟狡o拷锟斤拷锟叫帮拷锟斤拷一锟介含锟斤拷签锟斤拷锟侥讹拷锟斤拷锟街わ拷椋拷锟叫┲わ拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷证锟斤拷使锟矫碉拷证锟介。

锟斤拷锟斤拷值

锟缴癸拷时锟斤拷锟斤拷 TRUE锟斤拷 锟斤拷锟斤拷锟斤拷失锟斤拷时锟斤拷锟斤拷 FALSE锟斤拷

锟斤拷锟斤拷

Example #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");
}
?>