array ( 0 => 'index.php', 1 => 'PHP Manual', ), 'head' => array ( 0 => 'UTF-8', 1 => 'es', ), 'this' => array ( 0 => 'function.openssl-sign.php', 1 => 'openssl_sign', ), 'up' => array ( 0 => 'ref.openssl.php', 1 => 'Funciones de OpenSSL', ), 'prev' => array ( 0 => 'function.openssl-seal.php', 1 => 'openssl_seal', ), 'next' => array ( 0 => 'function.openssl-spki-export-challenge.php', 1 => 'openssl_spki_export_challenge', ), 'alternatives' => array ( ), 'source' => array ( 'lang' => 'es', 'path' => 'reference/openssl/functions/openssl-sign.xml', ), ); $setup["toc"] = $TOC; $setup["toc_deprecated"] = $TOC_DEPRECATED; $setup["parents"] = $PARENTS; manual_setup($setup); ?>
(PHP 4 >= 4.0.4, PHP 5, PHP 7, PHP 8)
openssl_sign — Genera una firma
$data
,&$signature
,$priv_key_id
,$signature_alg
= OPENSSL_ALGO_SHA1
openssl_sign() computa una firma para la información
data
especificada, generando una firma digital
criptográfica usando la clave privada asociada con
priv_key_id
. Observe que la información misma no
está encriptada.
data
El string de datos que se quieren firmar.
signature
Si la llamada tuvo éxito, la firma es devuelta en
signature
.
priv_key_id
resource - una clave, devuelta por openssl_get_privatekey()
string - una clave con formato PEM
signature_alg
int - uno de estos Algoritmos de firma.
string - un string válido devuelto por openssl_get_md_methods(); p.ej., "sha256WithRSAEncryption" o "sha384".
Ejemplo #1 Ejemplo de openssl_sign()
<?php
// se asume que $datos contiene la información que se va a firmar
// obtener la clave privada desde el fichero y prepararla
$pkeyid = openssl_pkey_get_private("file://src/openssl-0.9.6/demos/sign/key.pem");
// computar la firma
openssl_sign($datos, $firma, $pkeyid);
// liberar la clave de la memoria
openssl_free_key($pkeyid);
?>
Ejemplo #2 Ejemplo de openssl_sign()
<?php
// datos que se quieren firmar
$datos = 'mis datos';
// crear unas claves pública y privada nuevas
$new_key_pair = openssl_pkey_new(array(
"private_key_bits" => 2048,
"private_key_type" => OPENSSL_KEYTYPE_RSA,
));
openssl_pkey_export($new_key_pair, $private_key_pem);
$details = openssl_pkey_get_details($new_key_pair);
$public_key_pem = $details['key'];
// crear la firma
openssl_sign($datos, $firma, $private_key_pem, OPENSSL_ALGO_SHA256);
// guardar para después
file_put_contents('private_key.pem', $private_key_pem);
file_put_contents('public_key.pem', $public_key_pem);
file_put_contents('signature.dat', $firma);
// comprobar la firma
$r = openssl_verify($datos, $firma, $public_key_pem, "sha256WithRSAEncryption");
var_dump($r);
?>