verificación de una firma electrónica desde un xml
Publicado: Mié Dic 07, 2011 2:25 pm
Hola a todos, antes que nada agradecer por toda la información que aquí se ha publicado puesto que me ha sido bastante útil.
Actualmente ya cuento con un sitio de facturación electrónica CFDi y estoy programando un modulo en php donde mis proveedores subirán las facturas que me han emitido (archivos xml), lo que tengo que hacer es verificar la integridad de las facturas que allí se suban, eso de integridad me esta dando dolor de cabeza, puesto que aún no sé todo lo que tengo que analizar y validar, mi jefe me pidió que inicialmente verificara que la firma electrónica del xml fuera correcta y que con eso estaríamos seguros que la información contenida en el xml no ha sido alterada, la verdad tengo mis dudas sobre si eso es cierto.
he estado leyendo que con openssl se puede validar si la firma electronica es correcta, pero no sé como hacerlo, por el momento extraigo la cadena original y el certificado que viene dentro del xml, pero no sé como utilizarlos, he leido que puedo utilizar la función openssl_verify(), la he utilizado pero sin éxito.
Les dejo un pequeño código que he utilizado en php. Esta recibe según yo la cadena original ($data) y el certificado (extraído del xml), aún no sé que debe llevar el parametro $signature, pero la función marca esta alerta "Warning: openssl_verify() [function.openssl-verify]: supplied key param cannot be coerced into a public key in"
Espero que alguien me pueda orientar en como hacer para validar la firma electrónica y que otras cosas debería hacer para verificar la integridad de las facturas.
Gracias
Actualmente ya cuento con un sitio de facturación electrónica CFDi y estoy programando un modulo en php donde mis proveedores subirán las facturas que me han emitido (archivos xml), lo que tengo que hacer es verificar la integridad de las facturas que allí se suban, eso de integridad me esta dando dolor de cabeza, puesto que aún no sé todo lo que tengo que analizar y validar, mi jefe me pidió que inicialmente verificara que la firma electrónica del xml fuera correcta y que con eso estaríamos seguros que la información contenida en el xml no ha sido alterada, la verdad tengo mis dudas sobre si eso es cierto.
he estado leyendo que con openssl se puede validar si la firma electronica es correcta, pero no sé como hacerlo, por el momento extraigo la cadena original y el certificado que viene dentro del xml, pero no sé como utilizarlos, he leido que puedo utilizar la función openssl_verify(), la he utilizado pero sin éxito.
Les dejo un pequeño código que he utilizado en php. Esta recibe según yo la cadena original ($data) y el certificado (extraído del xml), aún no sé que debe llevar el parametro $signature, pero la función marca esta alerta "Warning: openssl_verify() [function.openssl-verify]: supplied key param cannot be coerced into a public key in"
Espero que alguien me pueda orientar en como hacer para validar la firma electrónica y que otras cosas debería hacer para verificar la integridad de las facturas.
Código: Seleccionar todo
<?php
$dada = cadena original del xml
$signature = ???
$cert = certificado extraído del xml
$ok = openssl_verify($data, $signature, $cert);
if ($ok == 1) {
echo "good";
} elseif ($ok == 0) {
echo "bad";
} else {
echo "ugly, error checking signature";
}
?>