amigos, aca dejo unas rutinas para la utilizacion de firma digital
Declaración de funciones
public function getPublica( $file = null ){
if(!file)
return false;
$fp = fopen($file , "r");
$txtpublica = fread($fp, 8192);
fclose($fp);
return $txtpublica;
}
public function getPrivada($file = null){
if(!file)
return false;
$fp = fopen($file , "r");
$txtprivada = fread($fp, 8192);
fclose($fp);
return $txtprivada;
}
public function getFirma($file = null){
if(!file)
return false;
$fp = fopen($file, "r");
$txtfirma = fread($fp, 8192);
fclose($fp);
return $txtfirma;
}
Funcion para conformar firma
public function encripta( $datos ){
//datos contiene los nodos concatenados
//estos nodos son definidos con contraparte
$llavePrivada = $this->getPrivada( "private.key");
openssl_sign( $datos , $result ,$llavePrivada , OPENSSL_ALGO_MD5 );
$result = base64_encode( $result );
return $result;
}
funcion para comprobar firma digital
function desencripta($datos, $firma ){
$llave = $this->getPublica( "publica.key" );
$base64 = base64_decode( $firma );
if(openssl_verify ($datos , $base64 , $llave , OPENSSL_ALGO_MD5 ) )
return TRUE;
return FALSE;
}