Buenas noches, tengo un un problema con la firma digital para la facturación electrónica en linea, no entiendo a que parte del XML se refiere en el punto 6 del proceso de firmado
https://siatinfo.impuestos.gob.bo/in.../firma-digital, genero la factura en XML hago el proceso de canonicalización del XML (c14n), tengo la llave privada y publica generada con OpenSSL a partir del certificado que me otorgan, no se de donde o en que parte esta la sección de la firma o a que se refiere
Este es el error que me devuelve al enviar la factura
Código:
<mensajesList>
<codigo>921</codigo>
<descripcion>EL FIRMADO DEL XML ES INCORRECTO: Validacion Signature, false,</descripcion>
</mensajesList>
Muchas gracias por su colaboración de antemano
Proceso de Firmado
A efectos de poder firmar un documento, es necesario disponer de una llave pública y una privada; tener implementado algoritmos de conversión a Base 64, canonicalización, SHA256 y RSA Sha256 V2 y seguir los siguientes pasos:- Aplicar el algoritmo de canonicalización al documento XML, es decir realizar un procesamiento que permita obtener su forma canónica o se normalice el documento original.
- Aplicara al resultado el algoritmo sha256 a objeto de obtener el HASH.
- Obtener una cadena aplicando al anterior HASH el algoritmo Base64.
- Adicionar las etiquetas de signature al XML.
- Agregar a la etiqueta Digest Value el valor obtenido en el paso 4.
- Tomar la sección de la firma y obtener un HASH del mismo aplicando el algoritmo SHA256.
- Encriptar el HASH obtenido utilizando el algoritmo RSA SHA256 con la llave privada.
- Aplicar a la cadena resultante el algoritmo Base64 para obtener una cadena.
- Adicionar a la etiqueta de Signature Value la cadena anterior.
- Finalmente colocar en la etiqueta X509 Certificate la llave publica.
- Devolver el XML firmado.