Updated PHP Windows builds for Brotli security fix

PharData::setSignatureAlgorithm

(No version information available, might only be in Git)

PharData::setSignatureAlgorithm — Установить алгоритм подписания phar-архива и применение его

Описание

public function PharData::setSignatureAlgorithm(int $algo, ?string $privateKey = null): void

Замечание:

Для корректной работы метода с объектами Phar потребуется установить для директивы phar.readonly в файле php.ini значение 0, иначе метод выбросит исключение PharException.

Метод устанавливает и применяет алгоритм подписания phar-архива. Доступны следующие алгоритмы подписания: Phar::MD5, Phar::SHA1, Phar::SHA256, Phar::SHA512 и Phar::OPENSSL. (Алгортим PGP пока не поддерживается, вместо него применяется SHA-1.)

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

algo

Константа из следующего списка: Phar::MD5, Phar::SHA1, Phar::SHA256, Phar::SHA512 или Phar::OPENSSL

privateKey

Секретный ключ OpenSSL, извлечённый из сертификата, либо файл с ключом OpenSSL:

<?php

$p = new PharData('archive.tar');
$private = openssl_get_privatekey(file_get_contents('private.pem'));
$pkey = '';
openssl_pkey_export($private, $pkey);
$p->setSignatureAlgorithm(Phar::OPENSSL, $pkey);
Инструкции по именованию и размещению файла открытого ключа содержит раздел Введение в phar.

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

Функция не возвращает значения после выполнения.

Ошибки

Метод выбрасывает исключение UnexpectedValueException для большей части ошибок. Для архивов на основе zip или tar выбрасывает исключение BadMethodCallException. При ошибках записи на диск выбрасывает исключение PharException.

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

Версия Описание
8.0.0 Параметр privateKey теперь принимает значение null.

Смотрите также

+Добавить

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

up
3
obsidian[at-nospam]codebite[dot]net
15 years ago
As a note, the docs don't show the (optional) second parameter nor mention the existence of the Phar::OPENSSL class constant also available for use with this method.

To sign a phar with OpenSSL, for example...

<?php

$phar = new Phar('somephar.phar');
// ... add your files and such
$phar->setSignatureAlgorithm(Phar::OPENSSL, file_get_contents('private_key_here.pem'));
// ... do whatever else you want afterwards here ...
?>

Hope this proves useful to someone.
To Top