# openssl_pkcs7_sign

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

openssl_pkcs7_sign — Signiert eine S/MIME-Nachricht

### Beschreibung

openssl_pkcs7_sign(
string `$input_filename`,
string `$output_filename`,
OpenSSLCertificate|string `$certificate`,
#[\SensitiveParameter] OpenSSLAsymmetricKey|OpenSSLCertificate|array|string `$private_key`,
?array `$headers`,
int `$flags` = `PKCS7_DETACHED`,
?string `$untrusted_certificates_filename` = `null`
): bool

Die Funktion openssl_pkcs7_sign() nimmt den Inhalt der durch `input_filename` angegebenen Datei und signiert ihn. Verwendet werden dafür das Zertifikat, angegeben durch `certificate`, und der dazugehörige private Schlüssel `private_key`.

### Parameter-Liste

`input_filename`

  Die Eingabedatei, die digital signiert werden soll.

`output_filename`

  Die Datei, in die die digitale Signatur geschrieben werden soll.

`certificate`

  Das X.509-Zertifikat, das für die digitale Signierung von `input_filename` verwendet werden soll. Gültige Werte sind dem Abschnitt Schlüssel/Zertifikat-Parameter zu entnehmen.

`private_key`

  `private_key` ist der private Schlüssel, der zu `certificate` gehört. Gültige Werte sind dem Abschnitt Öffentliche/Private Schlüssel-Parameter zu entnehmen.

`headers`

  `headers` ist ein Array aus Headern, die den Daten vorangestellt werden, nachdem diese signiert wurden (weitere Informationen über das Format dieses Parameters sind der Dokumentation zu openssl_pkcs7_encrypt() zu entnehmen).

`flags`

  `flags` kann zur Änderung der Ausgabe verwendet werden - siehe die PKCS7-Konstanten.

`untrusted_certificates_filename`

  `untrusted_certificates_filename` gibt den Namen einer Datei an, die ein oder mehrere extra Zertifikate enthält, die in die Signatur mit eingefügt werden. Das kann zum Beispiel als Hilfe für einen Empfänger dienen, das von Ihnen verwendete Zertifikat zu überprüfen.

### Rückgabewerte

Gibt bei Erfolg `true` zurück. Bei einem Fehler wird `false` zurückgegeben.

### Changelog

Version | Beschreibung
--- | ---
8.0.0 | `certificate` akzeptiert nun eine OpenSSLCertificate-Instanz; vorher wurde eine Ressource vom Typ `OpenSSL X.509 CSR` akzeptiert.
8.0.0 | `private_key` akzeptiert nun eine OpenSSLAsymmetricKey- oder OpenSSLCertificate-Instanz; vorher wurde eine Ressource vom Typ `OpenSSL-Schlüssel` oder `OpenSSL X.509 CSR` akzeptiert.

### Beispiele

Beispiel #1 openssl_pkcs7_sign()-Beispiel

`<?php
// Die Nachricht, die Sie signieren möchten, damit der Empfänger sicher
// sein kann, dass diese Nachricht von Ihnen stammt.
$data = <<<EOD
Sie haben meine Erlaubnis 10.000 EUR für Essen auszugeben.
Der CEO
EOD;
// Nachricht in einer Datei speichern
$fp = fopen("msg.txt", "w");
fwrite($fp, $data);
fclose($fp);
// Verschlüsseln
if (openssl_pkcs7_sign("msg.txt", "signed.txt", "mycert.pem",
array("file://mycert.pem", "mypassphrase"),
array("To" => "joes@example.com", // keyed syntax
"From: HQ <ceo@example.com>", // indexed syntax
"Subject" => "Eyes only")
)) {
// Nachricht signiert - abschicken!
exec(ini_get("sendmail_path") . " < signed.txt");
}
?>`
`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open