Cita:
Empezado por CrazySoft
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.
|
Si deseas firmar si o si con OpenSSL puedes mirar el proyecto
https://projetoacbr.com.br/, allí lo tienen implementado y es open source ; en todo caso puedes adquirir la la librería de Chilkat y te "ahorras" toda la codificación; en todo caso están también las Secure Black Box
https://www.nsoftware.com/sbb/.
Saludos.