PHP
downloads | documentation | faq | getting help | mailing lists | reporting bugs | php.net sites | links | conferences | my php.net

search for in the

openssl_pkey_export_to_file> <openssl_pkcs7_sign
Last updated: Fri, 04 Jul 2008

view this page in

openssl_pkcs7_verify

(PHP 4 >= 4.0.6, PHP 5)

openssl_pkcs7_verify — Überprüft die Unterschrift einer mit S/MIME unterschriebenen Nachricht

Beschreibung

bool openssl_pkcs7_verify ( string $filename , int $flags [, string $outfilename [, array $cainfo [, string $extracerts ]]] )

Die Funktion openssl_pkcs7_verify() liest die S/MIME Nachricht, die in der Datei filename enthalten ist und untersucht die digitale Unterschrift. Ist die Unterschrift überprüft wird TRUE zurückgegeben, falls die Unterschrift nicht korrekt ist FALSE (die Nachricht wurde mit dem Zertifikat vermischt oder das unterzeichnende Zertifikat ist ungültig). Tritt ein Fehler auf wird -1 zurückgegeben.

Mit dem Parameter flags könnenn Sie die Art und Weise beeinflussen, wie die Unterschrift überprüft wird - für mehr Informationen siehe PKCS7 Konstanten.

Wird der Parameter outfilename angegeben, sollte dies eine Zeichenkette sein, die den Namen einer Datei enthält, in der das Zertifikat der unterzeichnenden Person im PEM Format gespeichert wird.

Wird der Parameter cainfo angegeben, sollten Informationen über die vertrauenswürdigen CA Zertifikate enthalten sein, die für den Überprüfungsprozess benutzt werden - für mehr Informationen zu diesem Parameter sollten Sie unter Zertifikat Nachweis nachschauen.

Wird der Parameter extracerts angegeben, ist es der Name einer Datei, die ein mehrere extra Zertifikate enthält, die als nicht vertrauenswürdige CAs genutzt werden.



add a note add a note User Contributed Notes
openssl_pkcs7_verify
hema
29-Sep-2006 02:39
As someone already mentioned in the previous comment it didn't work for me until I passed in that hidden sixth argument and also explicitly add the mime header into the $in_filename contents. (I am using PHP5)

 $data = file_get_contents($in_filename);

 file_put_contents($in_filename, "MIME-Version: 1.0\nContent-Disposition: attachment; filename=\"smime.p7m\"\nContent-Type: app
lication/x-pkcs7-mime; name=\"smime.p7m\"\nContent-Transfer-Encoding: base64\n\n$data");

 openssl_pkcs7_verify("$in_filename",
                              $flag,
                              "$out_filename.cert",
                              array($path_to_cert),
                              $path_to_cert,
                              $out_filename));
13-Feb-2006 04:59
There is a hidden sixth argument: string pointing to a file where the contents of the signed message should be saved.

It is very important for verifying signed and encrypted messages from MS Outlook which uses opaque signing. After decrypting of message you will get another MIME envelope like this:

MIME-Version: 1.0
Content-Disposition: attachment; filename="smime.p7m"
Content-Type: application/x-pkcs7-mime; smime-type=signed-data; name="smime.p7m"
Content-Transfer-Encoding: base64

MIIM/QYJ...

Even if you use base64_decode() you will not get decrypted message but PKCS #7 object.

BTW: How to create opaque signed message like from MS Outlook? Switch off PKCS7_DETACHED flag (the last 0 does it):
openssl_pkcs7_sign(
    "full_path_to_message_file",
    "full_path_where_to_store_signed_message_file",
    "file://full_path_to_my_public_certificate.pem",
    array("file://full_path_to_my_private_key.pem", "password"),
    array(),
    0
  );

openssl_pkey_export_to_file> <openssl_pkcs7_sign
Last updated: Fri, 04 Jul 2008
 
 
show source | credits | stats | sitemap | contact | advertising | mirror sites