firmar XML

HMG en Español

Moderator: Rathinagiri

User avatar
edufloriv
Posts: 168
Joined: Thu Nov 08, 2012 3:42 am
DBs Used: DBF, MariaDB
Location: PERU
Has thanked: 8 times
Been thanked: 6 times

firmar XML

Post by edufloriv » Wed Jul 31, 2019 3:25 pm

Saludos amigos,

Ya tengo armado mi .XML, la pregunta ahora es ¿ como lo firmo ? alguien tiene código de ejemplo por favor.

Cordiales saludos,

Eduardo Flores Rivas


LIMA - PERU

SvargasD
Posts: 4
Joined: Sat Mar 24, 2018 2:50 pm
DBs Used: DBF

Post by SvargasD » Wed Jul 31, 2019 11:04 pm

Hola Eduardo:

Desconozco el tema de facturación y timbrado en Perú, yo soy de México. Si fuera algo similar al tema de facturación que tenemos aquí, en teoría, tu tienes que mandar ese archivo XML a un proveedor externo autorizado por tu Hacienda en Perú, para que procese y firme dicho documento, por lo menos aquí así tenemos que hacerlo.

User avatar
edufloriv
Posts: 168
Joined: Thu Nov 08, 2012 3:42 am
DBs Used: DBF, MariaDB
Location: PERU
Has thanked: 8 times
Been thanked: 6 times

Post by edufloriv » Fri Aug 02, 2019 2:28 pm

Hola SvargasD

Gracias por responder amigo. Parece que acá funciona distinto, nosotros adquirimos un CERTIFICADO DIGITAL, un archivo con extensión .CER que es copiado en la computadora que firmará los XML

Este mismo archivo es enviado a SUNAT para que realice la verificación de lo que se envia.

Un programador de C# me pasó esta .DLL para realizar la firma, de casualidad sabes como puedo usarla dentro de HMG.

Nuevamente gracias por tu interés.


Cordiales saludos,
Attachments
firmaxml509.zip
(3.76 KiB) Downloaded 38 times

Eduardo Flores Rivas


LIMA - PERU

User avatar
danielmaximiliano
Posts: 2139
Joined: Fri Apr 09, 2010 4:53 pm
Location: Argentina
Has thanked: 155 times
Been thanked: 23 times
Contact:

Post by danielmaximiliano » Fri Aug 02, 2019 2:47 pm

Hola Edu:
Yo uso asi una funcion dentro de un DLL

Code: Select all

nHandler := CallDll32( "OpenComFiscal" , "WINFIS32.DLL" , 1 , 0 )
cuando tengo el manejador nHandler puedor enviar un ticket

Code: Select all

*----------------------------------------------------------------------------*
procedure ticket()
*----------------------------------------------------------------------------*
/* Envia Pago */
s :='D'+ SE +'Su Pago: '+ SE + LTRIM( STR( Imprime.Text_2.Value , 8, 2 ) ) + SE + 'T' + SE + '0'
nVentasError := CallDll32( "MandaPaqueteFiscal" , "WINFIS32.DLL" , nHandler , s )
alerror( nVentasError )
por lo que vi en Pascal / Delphi se usa asi

Code: Select all

function zfirmaxml(xmlsinfirmar,xmlfirmado,pathcertificado,clavecertificado:WideString):Integer; stdcall; external 'firmaxml509.dll';
No tengo correcto como enviar el argumento

Code: Select all

CallDll32((xmlsinfirmar,xmlfirmado,pathcertificado,clavecertificado, 'firmaxml509.dll')
*´¨)
¸.·´¸.·*´¨) ¸.·*¨)
(¸.·´. (¸.·` *
.·`.HMG : It's magic !
(¸.·``··*

Saludos / Regards
DaNiElMaXiMiLiAnO

Whatsapp. : +54901169026142
Telegram Name : DaNiElMaXiMiLiAnO

User avatar
edufloriv
Posts: 168
Joined: Thu Nov 08, 2012 3:42 am
DBs Used: DBF, MariaDB
Location: PERU
Has thanked: 8 times
Been thanked: 6 times

Post by edufloriv » Wed Aug 21, 2019 11:03 pm

Hola DanielMaximialino,

Que gusto verte de nuevo por acá. Dime como resuelves tu el tema de la firma del .xml, usas una libreria externa ? o Harbour tiene forma de implementar de manera nativa la firma x509 ?

Te agradeceré me orientes al respecto. Si tienes código fuente de ejemplo mejor que mejor.

Prometo subir mi código para todos los que estén interesados en facturación electrónica acá en Perú (somos relativamente nuevos en tema de facturación electrónica en la región).

Saludos cordiales,

Eduardo Flores Rivas


LIMA - PERU

User avatar
danielmaximiliano
Posts: 2139
Joined: Fri Apr 09, 2010 4:53 pm
Location: Argentina
Has thanked: 155 times
Been thanked: 23 times
Contact:

Post by danielmaximiliano » Thu Aug 22, 2019 12:24 am

Hola Edu:
Hace años que no diseño y hago programas, mi principal trabajo es otro actualmente...30 años me dedique a la reparacion de equipos electronicos y telecomunicaciones.
como tambien estudie programacion me dedique como segundo oficio, puedo comprender como funciona esa DLL que te envio el proramador conocido tuyo si me envias como hace para enviarle los parametros en C# a dicha libreria...
un Abrazo
*´¨)
¸.·´¸.·*´¨) ¸.·*¨)
(¸.·´. (¸.·` *
.·`.HMG : It's magic !
(¸.·``··*

Saludos / Regards
DaNiElMaXiMiLiAnO

Whatsapp. : +54901169026142
Telegram Name : DaNiElMaXiMiLiAnO

martingz
Posts: 272
Joined: Wed Nov 18, 2009 11:14 pm
Location: Mexico
Has thanked: 17 times
Been thanked: 12 times

Post by martingz » Thu Aug 22, 2019 2:44 pm

Eduardo aca en mexico yo genero el xml el cua envio a mi pac, y el me regresa una repuesta que incluye informacion en un archivo Json, ahi viene mi UUID, y mis sellos de hacienda, yo los tomo y los inserto en el XML que genere , todo esto en HMG, nos e si sea tu caso, pero se ser asi, cuenta conmigo para ayudarte (aqui en Mexico nos dan un archivo .cer y un .key, con los que genero un sello y lo incluyo en el xml)



saludos

User avatar
edufloriv
Posts: 168
Joined: Thu Nov 08, 2012 3:42 am
DBs Used: DBF, MariaDB
Location: PERU
Has thanked: 8 times
Been thanked: 6 times

Post by edufloriv » Sat Aug 24, 2019 2:08 pm

Saludos amigos,

Acabo de encontrar un post en FiveWin en el que un usuario afirma que con HBSSL por si solo NO SE PUEDE FIRMAR UN XML !!

http://forums.fivetechsupport.com/viewt ... sl#p208370

El para lograrlo ha MODIFICADO la libreria HBSSL para lograr lo que estoy buscando una función de firma:

Code: Select all

/*
   hbmk2 tip4.prg hbssl.hbc

*/
#require "hbssl"
#include "hbssl.ch"

Function main(  )
Local ERROR
setmode(25,80)
clear


/*Posibles resultados de ERROR: 
         1: Sin Errores
         2: problema al leer archivo keyFile
         3: error al crear objeto RSA
         4: el keyFile es invalido
         5: problema al leer archivo certFile
         6: error al crear objeto X509
         7: el Key no se corresponde al Crt
         8: error al abrir fromSignFile
         9: error al crear objeto in
        10: error al crear objeto cms
        11: error al cerrar el objeto cms
        12: error al crear objeto out
        13: error al grabar el archivo toSignFile*/
SSL_INIT()
ERROR:=HB_SIGNFILE2( "TRA.XML", "CERT.CRT", "CERT.KEY", "TRA.TMP")  // <- AQUI ESTA EL OBJETIVO
if (ERROR!=1)
    ? ERROR
endif

return
Además explica que para que funcione las DLL de Open-SSL deberán estar en el mismo directorio de los ejecutables.

Yo la verdad no tengo experiencia recompilando las CONTRIB de Harbour, no sé si ya alguien lo ha realizado y tiene esta HBSSL compilada con las modificaciones.

Sería genial si esta función se incluyera por default en la distribución de HMG. :D

Esperando su valiosa ayuda.

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Greetings friends,

I just found a post in FiveWin in which a user affirms that with HBSSL alone, an XML CANNOT BE SIGNED!

http://forums.fivetechsupport.com/viewt ... sl#p208370

To achieve this, the HBSSL library has been MODIFIED to achieve what I am looking for a signature function:

Code: Select all

/*
   hbmk2 tip4.prg hbssl.hbc

*/
#require "hbssl"
#include "hbssl.ch"

Function main(  )
Local ERROR
setmode(25,80)
clear

/ * Possible ERROR results:
         1: No Errors
         2: problem reading keyFile file
         3: error creating RSA object
         4: the keyFile is invalid
         5: problem reading certFile file
         6: Error creating object X509
         7: The Key does not correspond to the Crt
         8: error opening fromSignFile
         9: Error creating object in
        10: error creating cms object
        11: error closing cms object
        12: error creating out object
        13: Error writing toSignFile file * /
SSL_INIT()
ERROR:=HB_SIGNFILE2( "TRA.XML", "CERT.CRT", "CERT.KEY", "TRA.TMP")  // <- HERE IS THE TARGET
if (ERROR!=1)
    ? ERROR
endif

return
It also explains that in order for the Open-SSL DLLs to work, they must be in the same directory as the executables.

I really have no experience recompiling the Harbor CONTRIBs, I don't know if anyone has already done it and has this HBSSL compiled with the modifications.

It would be great if this function were included by default in the HMG distribution. : D

Waiting for your valuable help.

Eduardo Flores Rivas


LIMA - PERU

martingz
Posts: 272
Joined: Wed Nov 18, 2009 11:14 pm
Location: Mexico
Has thanked: 17 times
Been thanked: 12 times

Post by martingz » Sat Aug 24, 2019 8:43 pm

Eduaro te envie un link de mega, ahi esta en el modulo de empresas como debes generar tu sello, ahi van los archivos necesarios, cualquier duda estoy a tus ordenes



saludos

User avatar
edufloriv
Posts: 168
Joined: Thu Nov 08, 2012 3:42 am
DBs Used: DBF, MariaDB
Location: PERU
Has thanked: 8 times
Been thanked: 6 times

Post by edufloriv » Mon Sep 09, 2019 10:12 pm

Saludos amigos,

Yo de nuevo con el mismo tema :roll:

Alguien me alcanzó una libreria para firmar los .XML de acuerdo a lo exigido por SUNAT acá en Perú, pero ya lo testie y no me genera el .XML firmado. Tampoco me lanza ningún error.

Tal vez alguien me pueda hechar una mano con esto. Remito el .zip con todos los archivos necesarios para el test.
XML-Signer.zip
(13.71 KiB) Downloaded 16 times

Cordiales saludos,

Eduardo Flores Rivas


LIMA - PERU

Post Reply