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.

Π‘ΠΌΠΎΡ‚Ρ€ΠΈΡ‚Π΅ Ρ‚Π°ΠΊΠΆΠ΅

  • Phar::getSupportedSignatures() - ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ массив ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΡ‹Ρ… Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² подписи Π°Ρ€Ρ…ΠΈΠ²Π°
  • Phar::getSignature() - ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ MD5/SHA1/SHA256/SHA512/OpenSSL подпись Phar-Π°Ρ€Ρ…ΠΈΠ²Π°
οΌ‹Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΡ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ 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.