Inicio  |  Timbrado  |  1.4 Sello
La LCO fue actualizada por última vez el 31/ene/2023

1.4. Sello digital o firma electrónica

El sello digital es el resultado de firmar la cadena original que se obtiene de la factura electrónica, expresada en base64, en la cual viene información codificada que está asociada al emisor de la factura electrónica (o cualquier otro CFD) y a los datos de la misma. Ya que el sello es generado con los datos de la factura, cualquier cambio en ésta se notará dando como resultado un sello o firma diferente. Este sello digital permitirá acreditar la autoría del comprobante fiscal digital (CFD) que usted emita, y de esta manera sus clientes sabrán que usted fue el autor de dicho comprobante digital.

Pasos y elementos necesarios para generar el Sello

  • 1.-   Obtener la "Cadena Original" del CFD. Más.
  • 2.-   Firmar "Cadena Original", esto se puede llevar a cabo en 2 pasos por separado ó en un solo paso conjunto Más.
  • 3.-   El resultado de la firma es en binario, por lo tanto, el último paso es codificarlo en base64 Más.
  • El resultado de aplicar base64 a la firma es el Sello o Firma digital.

IMPORTANTE: existen librerías que hacen el proceso de cifrado SHA256 y Firma con RSA en el mismo paso. Como se muestra en el DIAGRAMA

Ejemplo de sello digital:

sello="f0Tb/489LdeGja/SeZWWe/FnFcH6fo08Vj5MeO67pEPg81bWvSRYaaf2OSD9TV10aoKFh+VpIrOBgj6bsx6sg+ UBByzb5iE6HxsSTSLT9GanGDi4Gw27t1KnGkeV915YsU58SBg4Er7H0vIw0XOBD5+d6YvNiwMZ2UBB5u20U75ekJKDQ9N oEY87DwumJTjtPtEYblyCs9aolVgPXHvr7SfZJZa1Rq0XUEVvsjfrSXrgP6FXWdpSDlUQRhTogamgrGHy5MXrfcPa+PUg p12zw3X31knyzFavOHyuqVLD9BnmrbY4Hj7jyzniFOj77tJ5HtthiGYro2AE08aBEJzmog=="

Paso 1.- Cadena Original

Se obtiene la cadena original de la factura electrónica. CadenaOriginal

Paso 2.- Firmar Cadena Original

Elementos necesarios para el firmado o sellado de comprobantes fiscales digitales:

Este proceso se puede llevar a cabo de 2 diferentes maneras:

  • A) Firmar y codificar la cadena original en un solo paso (algunas librerias lo manejan de esta manera)
  • B) Primero codificar la cadena original y después firmar con RSA

A) Primer paso

Se inicializa un objeto que maneje el algoritmo de firma RSA con digestión SHA-256 de entrada. Usualmente se manda llamar con algunas variantes como: "SHA256withRSA",

b) Segundo paso

1. SHA-256 - Calcular la digestión SHA-256 (es un algoritmo de digestión o resumen) de la cadena original, producirá una salida resumen de 160 bits (20 bytes) de un mensaje que puede tener un tamaño máximo de 264 bits, esta es generalmente una secuencia binaria de bytes pero se puede representar en hexadecimal como una cadena de caracteres.

Ejemplo:

cec1b8fcc73c121ac59df2dd1307476d9a7d4d67

Nota: esta es solo una representación, internamente se debe tratar como un arreglo de 20 bytes.

Para comprobar el SHA-256 se puede usar openssl y xsltproc desde linea de comandos.

  • Linux: Ya estan instaladas las herramientas por defecto.
  • Windows:

    Para ejecutar estas herramientas en linea de comandos se tiene que actualizar la variable de entorno PATH con la ubicación de el directorio bin de cada herramienta necesaria ó extraer los archivos que vienen en el directorio bin de cada herramienta y ponerlos en el mismo lugar y solo agregar esa ruta al PATH:

    C:\> PATH=%PATH%;C:\xsltproc_bin_files;C:\OpenSSL-Win32\bin

Finalmente ejecute el comando:

xsltproc cadenaoriginal_3_3.xslt Factura_BS.xml | openssl dgst -sha256

2. RSA - Programáticamente hablando, se carga el archivo .KEY del CSD o FIEL en un objeto que maneja el algoritmo RSA, una vez hecho esto, solo se firman los bytes de la digestión del SHA256.

Paso 3.- Aplicar Base64

El resultado de firmar la "cadena original" con RSA es binario, por lo tanto tiene que codificarse en base64 para poder ponerla en el atributo de "sello" de la factura electronica.

Diagrama de procesos para obtener el Sello

Diagrama de procesos para firmar o sellar una factura electronica o cualquier otro comprobante fiscal digital (CFD)

Herramientas

Generador de sellos digitales

Herramienta generador de sellos digitales - Esta herramienta obtiene la cadena original de la factura electrónica (archivo con extensión XML) y la firma con el certificado, el resultado es el sello en base64.

Datos de salida:
  • Sello.
  • Cadena Original.
  • Digestión correspondiente a la versión de CFD representado en hexadecimal aplicado a la cadena original.

Verificador de sello digital (verificador de firma)

Esta herramienta carga una factura electrónica y válida la firma, si se agrega el .CER con el que fue generada la firma se intentará validar con éste. Si no se agrega el archivo .CER pero el CFD contiene el atributo "certificado" y no está vacío se validará con éste.

Nota: Puede omitirse el archivo "Certificado" si éste se encuentra en el XML.

Datos de contacto
comments powered by Disqus