PHP Conference Nagoya 2025

openssl_pkcs7_verify

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

openssl_pkcs7_verifyПроверяет подпись S/MIME-сообщения

Описание

openssl_pkcs7_verify(
    string $input_filename,
    int $flags,
    ?string $signers_certificates_filename = null,
    array $ca_info = [],
    ?string $untrusted_certificates_filename = null,
    ?string $content = null,
    ?string $output_filename = null
): bool|int

Функция openssl_pkcs7_verify() читает S/MIME-сообщение из файла и проверяет цифровую подпись сообщения.

Список параметров

input_filename

Путь к файлу с сообщением.

flags

Параметр flags влияет на способ проверки подписи. Дополнительную информацию о флагах даёт раздел «Константы-флаги структур PKCS7».

signers_certificates_filename

Параметр signers_certificates_filename принимает строку с именем файла, в котором хранятся PEM-сертификаты лиц, которые подписали сообщения.

ca_info

Параметр ca_info принимает информацию о сертификатах доверенных центров сертификации, которые функция будет использовать для проверки подписи. Дополнительную информацию об этом параметре даёт раздел «Проверка сертификата».

untrusted_certificates_filename

Параметр untrusted_certificates_filename принимает название файла, который содержит набор сертификатов, которые функция будет использовать как сертификаты недоверенных центров сертификации.

content

Параметр content принимает имя файла, в который функция запишет содержимое данных, которые проверила, но с удалённой информацией о подписи.

output_filename

Возвращаемые значения

Функция возвращает true, если проверила подпись, false, если подпись неправильная — сообщение подделали или сертификат подписи недействителен, и -1, если возникла ошибка.

Список изменений

Версия Описание
8.0.0 Параметры signers_certificates_filename, untrusted_certificates_filename, content и output_filename теперь принимают значение null.
7.2.0 Добавили параметр output_filename.

Примечания

Замечание: Как указывает стандарт RFC 2045, длина строки параметра input_filename не должна превышать 76 символов.

Добавить

Примечания пользователей 1 note

up
11
reg1barclay at REMOVETHIS dot live dot it
6 years ago
To verify a .p7m file with openssl_pkcs7_verify() you must convert it to S/MIME format. For example...
<?php
function der2smime($file)
{
$to=<<<TXT
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
\n
TXT;
$from=file_get_contents($file);
$to.=chunk_split(base64_encode($from));
return
file_put_contents($file,$to);
}
?>
To Top