(PHP 4 >= 4.0.6, PHP 5)
openssl_pkcs7_verify — überprüft die Unterschrift einer mit S/MIME unterschriebenen Nachricht
openssl_pkcs7_verify() liest die in der angegebenen Datei enthaltene S/MIME Nachricht und untersucht die digitale Signatur.
Pfad zur Datei.
Mit dem Parameter flags wird beeinflusst auf welche Art die Signatur verifiziert 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.
Der Parameter cainfo sollte sofern angegeben Informationen über die vertrauenswürdigen CA Zertifikate enthalten, die für den Ãberprüfungsprozess benutzt werden. Für weitere Informationen siehe Zertifikat Nachweis
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.
content ist der Name einer Datei die mit den verifizierten Daten gefüllt wird, jedoch ohne Signaturinformationen.
Gibt TRUE zurück wenn die Signatur verifiziert werden konnte, FALSE wenn die Signatur nicht korrekt ist (die Daten wurden verändert oder das signierende Zertifikat ist ungültig). Im Falle eines Fehlers wird -1 zurückgegeben.
Version | Beschreibung |
---|---|
5.1.0 | Der Parameter content wurde hinzugefügt. |
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):
<?php
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
);
?>