PHP 8.5.0 Alpha 1 available for testing

PharData::setSignatureAlgorithm

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

PharData::setSignatureAlgorithmAsigna el algoritmo de firma de un phar y lo aplica

Descripción

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

Nota:

Este método requiere que la opción de php.ini phar.readonly esté establecida a 0 para que trabaje con objetos Phar. De otra manera, se lanzará una excepción de tipo PharException.

Asigna el algoritmo de firma de un phar y lo aplica. El algoritmo de firma debe ser Phar::MD5, Phar::SHA1, Phar::SHA256, Phar::SHA512, o Phar::OPENSSL.

Parámetros

algo

Un algoritmo entre Phar::MD5, Phar::SHA1, Phar::SHA256, Phar::SHA512, o Phar::OPENSSL.

privateKey

El contenido de una clave privada OpenSSL, como extraída desde un certificado o un fichero de clave OpenSSL:

<?php
$private
= openssl_get_privatekey(file_get_contents('private.pem'));
$pkey = '';
openssl_pkey_export($private, $pkey);
$p->setSignatureAlgorithm(Phar::OPENSSL, $pkey);
?>
Ver la introducción Phar para consignas de nombramiento y ubicación de ficheros de clave pública.

Valores devueltos

No devuelve ningún valor.

Errores/Excepciones

Levanta una excepción UnexpectedValueException para muchos errores, una excepción BadMethodCallException si la llamada se realiza para un archivo phar basado en tar o en zip, una excepción PharException si se encuentran problemas al escribir los cambios en el disco.

Historial de cambios

Versión Descripción
8.0.0 privateKey ahora es nullable.

Ver también

add a note

User Contributed Notes 1 note

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