FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour HOWTO. BorlandC y OpenSSL
Posts: 731
Joined: Fri Oct 07, 2005 07:42 AM
HOWTO. BorlandC y OpenSSL
Posted: Thu Feb 23, 2012 08:23 AM
-----------------------------------------------------------------------------------------
HOWTO.. COMO CREAR LA LIBRERIA OPENSSL y NO MORIR EN EL INTENTO
-----------------------------------------------------------------------------------------
1) Lo primero es bajarse el OpenSSL, el cogido la última 1.0.0.f, pero supongo que con la g funcionará igual, http://www.slproweb.com/download/Win32O ... 1_0_0g.exe
Ojo , coger el que es sobre 16 Megas.

2) Después tenemos que indicar a Harbour donde está la instalación del openssl;
set HB_WITH_OPENSSL=C:\openssl\include

3)El problema que se presenta es que si ahora intentamos generar la libreria openssl, /harbour/contrib/hbssl, la librería libeay32.lib, que
la genera a partir de la DLL, nos dará error a la hora de linkar.
La solución a este problema, gracias a Daniel Garcia, es hacer lo siguiente;
impdef libeay32.def libeay32.dll
El def que obtenemos, es similar a este;
Code (fw): Select all Collapse
LIBRARY     LIBEAY32.DLL

EXPORTS
    ACCESS_DESCRIPTION_free        @1994; ACCESS_DESCRIPTION_free
    ACCESS_DESCRIPTION_it          @2751; ACCESS_DESCRIPTION_it
    ACCESS_DESCRIPTION_new         @1925; ACCESS_DESCRIPTION_new
... ETC....


Lo tenemos que convertir a esto, fijate que solo tiene los _ delante
Code (fw): Select all Collapse
LIBRARY     LIBEAY32.DLL

EXPORTS
    _ACCESS_DESCRIPTION_free        @1994; ACCESS_DESCRIPTION_free
    _ACCESS_DESCRIPTION_it          @2751; ACCESS_DESCRIPTION_it
    _ACCESS_DESCRIPTION_new         @1925; ACCESS_DESCRIPTION_new
...ETC...


4) Una vez que tenemos el .DEF modificado, procederemos a crear la libreria;
implib libeay32.lib libeay32.def

Ahora esta libreria ya la tienes listas para usar sin problemas.
Esta es la única que da problema, parar usar openssl, veréis en el directorio las 4 librerías que necesitas más las dlls.
Solo tienes que coger la que hemos generado y sustituirla por la que genero Harbour.


Saludos
Saludos

Rafa Carmona ( rafa.thefullARROBAgmail.com___quitalineas__)
Posts: 1283
Joined: Fri Feb 10, 2006 02:34 PM
Re: HOWTO. BorlandC y OpenSSL
Posted: Thu Feb 23, 2012 08:42 AM

Gracias Rafa !!!

Salutacions, saludos, regards

"...programar es fácil, hacer programas es difícil..."

UT Page -> https://carles9000.github.io/
Forum UT -> https://discord.gg/bq8a9yGMWh
HIX -> https://github.com/carles9000/hix
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Re: HOWTO. BorlandC y OpenSSL
Posted: Thu Feb 23, 2012 09:01 AM

Rafa,

Muchas gracias! :-)

Puestos a pedir, podrias mostrarnos algún ejemplo sencillo de como lo estás usando ? gracias :-)

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 731
Joined: Fri Oct 07, 2005 07:42 AM
Re: HOWTO. BorlandC y OpenSSL
Posted: Thu Feb 23, 2012 09:35 AM
Buenas Antonio.
Estamos implementando para portugal la firma electronica, que es un hash sha1 que va asociada a la factura.
Estoy haciendo pruebas sobre ello, no tengo muy claro que hace que y como funciona, estoy mirando la ayuda en openssl para
averiguarlo, pero no es muy complicado de entender

Este ejemplo me lo proporciona Martin Gamez, muchas gracias desde aqui.

Code (fw): Select all Collapse
#include "hbssl.ch"

Function main(  )
   Local  cTx, signed, txt, sig , cString, privatekey

   cString := GetPrivateKey()  // Es una funcion que devuelve una clave privada.PEM
   cPassword := "este es mi password"  // Si nuestra clave privada tiene password
   SSL_INIT()

   cadorg  = "hola mundo"   // Cadena original
  
   co     := alltrim(cadorg)
   coutf8 := co            // SI necesitamos conversion a utf-8 , por poner un ejemplo.

   PrivateKey := EVP_PKEY_NEW()
   bio := BIO_new_mem_buf( cString )
   keyPtr := PEM_READ_BIO_RSAPRIVATEKEY( bio , cPassword )

   EVP_PKEY_ASSIGN_RSA(PrivateKey,keyPtr)

   ctx := EVP_MD_CTX_create()
   EVP_MD_CTX_init( ctx )
   signed := ""
   EVP_SignInit_ex(ctx,HB_EVP_MD_SHA1)   // Aqui tenemos SHA1 , hay algunos más
   EVP_SignUpdate(ctx, coutf8 )
   EVP_SignFinal(ctx, @signed, PrivateKey)
   sellodigital := HB_BASE64ENCODE(signed)
   EVP_cleanup()
   ? sellodigital

return sellodigital


Saludos
Saludos

Rafa Carmona ( rafa.thefullARROBAgmail.com___quitalineas__)
Posts: 392
Joined: Tue Jul 29, 2008 01:55 PM
Re: HOWTO. BorlandC y OpenSSL
Posted: Fri Feb 24, 2012 12:56 AM

Hola Rafa.

en realidad estoy muerto desde el inicio.

Preguntas:

1.- como genero la libreria para xHarbour ?

2.- podrias darnos un ejemplo de como generas la lib openssl ?

Seria un buen aporte el como se genera la lib para xharbour.

Gracias ...

Visite Chiapas, el paraiso de México.
Posts: 731
Joined: Fri Oct 07, 2005 07:42 AM
Re: HOWTO. BorlandC y OpenSSL
Posted: Fri Feb 24, 2012 11:47 AM

Lo siento, hace tiempo dejé de usar xHarbour, supongo que el procedimiento será igual

Saludos

Rafa Carmona ( rafa.thefullARROBAgmail.com___quitalineas__)
Posts: 336
Joined: Wed May 16, 2007 09:40 PM
Re: HOWTO. BorlandC y OpenSSL
Posted: Fri Feb 28, 2014 01:57 PM
devtuxtla wrote:Hola Rafa.

en realidad estoy muerto desde el inicio.

Preguntas:

1.- como genero la libreria para xHarbour ?

2.- podrias darnos un ejemplo de como generas la lib openssl ?

Seria un buen aporte el como se genera la lib para xharbour.

Gracias ...


Hola

lograste solucionar el tema de la firmar en xharbour
Fivewin-Xharbour 24.09, Iquique, Chile
Posts: 1364
Joined: Wed Jun 21, 2006 12:39 AM
Re: HOWTO. BorlandC y OpenSSL
Posted: Thu Sep 29, 2016 02:09 PM
Colegas, he generado la librería libeay32.lib, He tomado el código del ejemplo de Rafa en este post y al compilar me arroja estos errores

Code (fw): Select all Collapse
Turbo Incremental Link 5.69 Copyright (c) 1997-2005 Borland
Error: Unresolved external '_HB_FUN_GETPRIVATEKEY' referenced from C:\SSL\MAIN.OBJ
Error: Unresolved external '_HB_FUN_SSL_INIT' referenced from C:\SSL\MAIN.OBJ
Error: Unresolved external '_HB_FUN_EVP_PKEY_NEW' referenced from C:\SSL\MAIN.OBJ
Error: Unresolved external '_HB_FUN_BIO_NEW_MEM_BUF' referenced from C:\SSL\MAIN.OBJ
Error: Unresolved external '_HB_FUN_PEM_READ_BIO_RSAPRIVATEKEY' referenced from C:\SSL\MAIN.OBJ
Error: Unresolved external '_HB_FUN_EVP_PKEY_ASSIGN_RSA' referenced from C:\SSL\MAIN.OBJ
Error: Unresolved external '_HB_FUN_EVP_MD_CTX_CREATE' referenced from C:\SSL\MAIN.OBJ
Error: Unresolved external '_HB_FUN_EVP_MD_CTX_INIT' referenced from C:\SSL\MAIN.OBJ
Error: Unresolved external '_HB_FUN_EVP_SIGNINIT_EX' referenced from C:\SSL\MAIN.OBJ
Error: Unresolved external '_HB_FUN_EVP_SIGNUPDATE' referenced from C:\SSL\MAIN.OBJ
Error: Unresolved external '_HB_FUN_EVP_SIGNFINAL' referenced from C:\SSL\MAIN.OBJ
Error: Unresolved external '_HB_FUN_EVP_CLEANUP' referenced from C:\SSL\MAIN.OBJ
* Linking errors *


Alguna idea ? Muchísimas gracias

Saludos
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Re: HOWTO. BorlandC y OpenSSL
Posted: Fri Sep 30, 2016 09:06 AM

Estas enlazando la librería hbssl.lib ?

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 1364
Joined: Wed Jun 21, 2006 12:39 AM
Re: HOWTO. BorlandC y OpenSSL
Posted: Fri Sep 30, 2016 01:57 PM

Antonio, he añadido esta librería pero obtengo los mismos errores.

Saludos

Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Re: HOWTO. BorlandC y OpenSSL
Posted: Fri Sep 30, 2016 04:44 PM
Prueba tambien con hbssls.lib
regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 336
Joined: Wed May 16, 2007 09:40 PM
Re: HOWTO. BorlandC y OpenSSL
Posted: Sat Oct 01, 2016 04:13 PM
lograste comñpilarla
horacio wrote:Antonio, he añadido esta librería pero obtengo los mismos errores.

Saludos
Fivewin-Xharbour 24.09, Iquique, Chile
Posts: 1364
Joined: Wed Jun 21, 2006 12:39 AM
Re: HOWTO. BorlandC y OpenSSL
Posted: Sun Oct 02, 2016 01:47 PM

No todavía, mañana en la oficina pruebo y comento

Saludos

Posts: 1364
Joined: Wed Jun 21, 2006 12:39 AM
Re: HOWTO. BorlandC y OpenSSL
Posted: Mon Oct 03, 2016 12:48 PM

Antonio, obtengo los mismos errores incorporando la ibrería hbssls.lib. Gracias

Saludos

Continue the discussion