PHP Conference Nagoya 2025

PharData::setSignatureAlgorithm

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

PharData::setSignatureAlgorithmAssigne l'algorithme de signature d'un phar et l'applique

Description

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

Note:

Cette méthode nécessite que la variable de configuration INI phar.readonly soit définie à 0 pour fonctionner avec les objets Phar. Sinon, une exception PharException sera lançée.

Assigne l'algorithme de signature d'un phar et l'applique. L'algorithme de signature doit être Phar::MD5, Phar::SHA1, Phar::SHA256, Phar::SHA512, ou Phar::OPENSSL.

Liste de paramètres

algo

Un algorithme parmi Phar::MD5, Phar::SHA1, Phar::SHA256, Phar::SHA512, ou Phar::OPENSSL.

privateKey

Le contenue d'une clé privée OpenSSL, comme extraite depuis un certificat ou un fichier de clé OpenSSL :

<?php
$private
= openssl_get_privatekey(file_get_contents('private.pem'));
$pkey = '';
openssl_pkey_export($private, $pkey);
$p->setSignatureAlgorithm(Phar::OPENSSL, $pkey);
?>
Voir l'introduction Phar pour des consignes de nommage et de placement de fichier de clé publique.

Valeurs de retour

Aucune valeur n'est retournée.

Erreurs / Exceptions

Soulève une exception UnexpectedValueException pour beaucoup d'erreurs, une exception BadMethodCallException si l'appel est fait pour une archive phar basée sur tar ou sur zip, une exception PharException si des problèmes sont rencontrés lors de l'écriture des changements sur le disque.

Historique

Version Description
8.0.0 privateKey est désormais nullable.

Voir aussi

add a note

User Contributed Notes 1 note

up
3
obsidian[at-nospam]codebite[dot]net
13 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