una colaboracion para una correcta obtencion de una cadena GZIP y Hash256

282 views
Skip to first unread message

Marcelo Barberis

unread,
Nov 1, 2021, 11:54:04 PM11/1/21
to publicesvfoxpro
Hola buenas noches, les comento, estoy en el proceso de generar procesos para la emision correcta facturacion electronica que en nuestro pais bolivia se llama facturacion en linea y para los procesos de compresion nos han dado a la tarea de trabajar con GZIP y para el cifrado usamos SHA 256 o creo que seria igual a HASH 256 para lo siguiente tengo que hacer 3 cosas para llega con exito a mi objetivo que se me cumple cerca del 01 de diciembre y como ya he probado de varias formas y no encuentra nada de documentacion en la web como ser un ejemplo como para poder enternder como funciona. Tengo que realizar esto:


En este es para etapas 4 y 6
https://siatinfo.impuestos.gob.bo/index.php/facturacion-en-linea/autorizacion-de-sistemas/pruebas-para-la-autorizacion-del-sistema-de-facturacion/fase-i-pruebas

1.- Comprimir el archivo XML en formato GZIP, con algunas consultas que hize me dice que va contra el contenido del XML que vendria a ser una factura, el mismo que debe ser enviado en la etiqueta <Archivo>?</Archivo>, esto es un WebService, lo que se muestra en esta imagen

Sin título.jpg

Ahora yo en mis archivos que dispongo y buscando informacion en la web aparece una funcion GZIP dentro de una FLL foxcrypto y lo ejecuto asi en vfp

LPARAMETERS lcArcXML

tcBinary = FILETOSTR(lcArcXML)
tnDeflateLevel = 15 && este parametro no entiendo que es, cualquier valor que pongo no me modifica el contenido pero si no lo pongo me genera un error

lcGenerar_GZIP = Gzip(tcBinary, tnDeflateLevel)

y el resultado se ve en esta pantalla, en el cuadro de la izquierda esta el resultado de la compresion y en el cuadro de la derecha usando esta funcion me devuelve su contenido original 
THIS.XML_Generado_GZIP.Value = lcGenerar_GZIP
THIS.GUNZIP_Cifrado.Value = Gunzip(lcGenerar_GZIP)

hash1.jpg

Mi consulta es la siguiente, segun mi entender creo no estar equivocado, yo creo que es inviable pasar como parametro en la etiqueta <Archivo>?</Archivo> del WebService toda esta cadena que se ve en el cuadro de la izquierda, porque es demasiada larga y contiene multilinea.
Alguien podria segun su conocimiento decirme como seria una cadena generada con GZIP, esta es la documentacion que nos pasan

valida.jpg

junto con esta 
valida1.jpg

en el punto 
2.- Con el Hash256 es similar la interpretacion todo poniendo en contexto a lo que yo estoy haciendo. Yo usando una FLL vfpencryption.fll que contien una funcion sha256 hash256, pero recibiendo como parametro la cadena larga y de muchas lineas generadas con GZIP pero obtengo este resultado

hash2.jpg
El hash256 sha256 esta en el cuadro de la derecha, y la consulta igual a la anterior, yo creo que no se deberia pasar como parametro a un WebService algo asi, es hacer notar que debo pasar de la siguiente manera: en la etiqueta <HashArchivo>?</HashArchivo> Se refiere a la cadena obtenida a partir de la Aplicacion SHA 256 a la cadena <Archivo>?</Archivo>

valida.jpg

valida1.jpg

y el ultimo punto
3.- realizar un proceso para empaquetar 500 facturas en XML y empaquetarlas en un contenedor TAR (paquete.tar)
Comprimir con GZIP al archivo del contenedor TAR (ejemplo Paquete.tar.gz), el mismo que debe ser enviado en la etiqueta <Archivo>?</Archivo>

valida.jpg

Yo por ejemplo probando con los datos que le comente que creaba por ejemplo una cadena muy larga de GZIP y Hash256, la respuesta del WS fue este

xml1.jpg
Desde ya muchas gracias si pueden dejarme algun comentario que me ayude de generar una cadena correcta tanto de GZIP o SHA 256

--
Marcelo Barberis Gutierrez
Sistemas Informaticos
Villa Montes - Bolivia
Telef.: +591-76830544

Gonzalo Mariscal

unread,
Nov 2, 2021, 3:05:22 PM11/2/21
to Comunidad de Visual Foxpro en Español
debes convertir a base64 para que desaparezcan esos caracteres ilegibles (binarios)
Reply all
Reply to author
Forward
0 new messages