Funciones de OpenSSL
PHP Manual

openssl_sign

(PHP 4 >= 4.0.4, PHP 5)

openssl_signGenera una firma

Descripción

bool openssl_sign ( string $data , string &$signature , mixed $priv_key_id [, mixed $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.

Parámetros

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".

Valores devueltos

Devuelve TRUE en caso de éxito o FALSE en caso de error.

Historial de cambios

Versión Descripción
5.0.0 Se añadió el parámetro signature_alg.

Ejemplos

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_pemOPENSSL_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);
?>

Ver también


Funciones de OpenSSL
PHP Manual