VERIFICACIÓN DE FIRMA DTE
Uno de los procesos fundamentales en el proceso de facturación es la posibilidad de verificar los documentos electrónicos recepcionados en el procesos de intercambio de contribuyentes. Para lograr este proceso de verificación es necesario extraer la clave publica de la firma del documento. Por lo tanto la verificación de los DTEs se basa en documentos firmados.
Hola, tengo una duda ¿Es posible que la comprobación de firmas del XML falle solo por los espacios extras?
ResponderEliminarLa pregunta es porque transcribí este código para comprobar si es que tengo valido el DTE que he generado, pero sin embargo tu código me rechaza el DTE. Sospecho que falla la validación debido a la forma de manipular los XML porque estoy ignorando los espacios.
Gracias!
Efectivamente, si el documento xml (DTE) es modificado en su orden, se agregan espacios o se modifica la información de alguna forma la firma es invalidada.
EliminarMe costó, pero lo logré. Los espacios a la hora de firmar XML son un cacho. Gracias por la ayuda de nuevo, tú y tu blog me ha sacado de varios problemas en varias ocasiones.
EliminarSaludos!
Que bueno que la información te fue de utilidad. Ojo con los espacios je je je
EliminarHola. ¿Podrías, por favor, adjuntar el archivo DTE sobre el cual realizaste esta validación? Al igual que en el comentario anterior, intenté generar la validación pero no me resultó... sería de mucha utilidad contar con un DTE válido de ejemplo.
ResponderEliminarDe antemano, muchas gracias
Estimado
ResponderEliminarSupongo que para validar un set es lo mismo con un cambio en las constantes?
Hola Marcelo,
ResponderEliminarJunto con saludarte, he implementado tu función para validar la firma, y me da el siguiente error "Referencia a objeto no establecida como instancia de un objeto.", en la siguiente linea
"string Modulus = documento.SelectSingleNode(XPATH_MODULUS, ns).InnerText"
Si me pudieras guiarnos, te lo agradecería.
Eso significa que la función SelectSingleNode no encontró el nodo y te devolvió null. En ese caso debes hacer algo como esto:
EliminarXmlNode xMod = documento.SelectSingleNode(XPATH_MODULUS, ns);
if(xMod != null)
{
string Modulus = xMod.InnerText;
//...etc
}
Hola Marcelo,
ResponderEliminarJunto con saludarte, he implementado tu función para validar la firma, y me da el siguiente error "Referencia a objeto no establecida como instancia de un objeto.", en la siguiente linea
"string Modulus = documento.SelectSingleNode(XPATH_MODULUS, ns).InnerText"
Si me pudieras guiarnos, te lo agradecería.
Me encuentro con un problema, hay proveedores que firman los DTEs por separado y después los unen en el archivo EnvioDTE firmando el envío por separado.
ResponderEliminarAl verificar la firma global del documento EnvioDTE funciona, pero las firmas de los DTE no pasan la validación. Ahora. Si saco la información de namespace del archivo EnvioDTE las validaciones de los DTE pasan y la del documento EnvioDTE no funciona.
:O hay alguna especificación este caso que ayude a hacer la validacion de este tipo de archivos? Les ha pasado?
Complementando, también sirve :
ResponderEliminarXmlNode certificate = signature.GetElementsByTagName("X509Certificate")[0];
var dcert2 = new X509Certificate2(Convert.FromBase64String(certificate.InnerText));
signedXml.LoadXml(signature);
Amigos, holas... tengo una duda gigante,
ResponderEliminarestoy en proceso de muestras impresas y me arroja estos errores:
Error en CAF: Ha habido alguna alteracion en el CAF entregado por el SII.
Error Tecnico: TED - Firma invalida.
¿Alguien sabe a que se debe esto?, ¿cuales son los posibles errores que pueden existir?.
Espero respuestas, gracias
Estimado,
EliminarEl error se produce en dos etapas, cuando firmas el documento DTE(xml). Utilizas una logica para limpiar el nodo TED. Y la Segunda es cuando generas la representación del nodo ted. Debes limpiar y ordenar los datos de la misma forma. Si no es así te envía ese error.
Atte.
Marcelo Rojas Rojas