Page 1 of 1

HOWTO. BorlandC y OpenSSL

Posted: Thu Feb 23, 2012 8:23 am
by thefull
-----------------------------------------------------------------------------------------
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: Select all

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: Select all

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

Re: HOWTO. BorlandC y OpenSSL

Posted: Thu Feb 23, 2012 8:42 am
by Carles
Gracias Rafa !!!

Re: HOWTO. BorlandC y OpenSSL

Posted: Thu Feb 23, 2012 9:01 am
by Antonio Linares
Rafa,

Muchas gracias! :-)

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

Re: HOWTO. BorlandC y OpenSSL

Posted: Thu Feb 23, 2012 9:35 am
by thefull
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: Select all

#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

Re: HOWTO. BorlandC y OpenSSL

Posted: Fri Feb 24, 2012 12:56 am
by devtuxtla
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 ...

Re: HOWTO. BorlandC y OpenSSL

Posted: Fri Feb 24, 2012 11:47 am
by thefull
Lo siento, hace tiempo dejé de usar xHarbour, supongo que el procedimiento será igual

Re: HOWTO. BorlandC y OpenSSL

Posted: Fri Feb 28, 2014 1:57 pm
by elmoiquique
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

Re: HOWTO. BorlandC y OpenSSL

Posted: Thu Sep 29, 2016 2:09 pm
by horacio
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: Select all

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

Re: HOWTO. BorlandC y OpenSSL

Posted: Fri Sep 30, 2016 9:06 am
by Antonio Linares
Estas enlazando la librería hbssl.lib ?

Re: HOWTO. BorlandC y OpenSSL

Posted: Fri Sep 30, 2016 1:57 pm
by horacio
Antonio, he añadido esta librería pero obtengo los mismos errores.

Saludos

Re: HOWTO. BorlandC y OpenSSL

Posted: Fri Sep 30, 2016 4:44 pm
by Antonio Linares
Prueba tambien con hbssls.lib

Re: HOWTO. BorlandC y OpenSSL

Posted: Sat Oct 01, 2016 4:13 pm
by elmoiquique
lograste comñpilarla
horacio wrote:Antonio, he añadido esta librería pero obtengo los mismos errores.

Saludos

Re: HOWTO. BorlandC y OpenSSL

Posted: Sun Oct 02, 2016 1:47 pm
by horacio
No todavía, mañana en la oficina pruebo y comento

Saludos

Re: HOWTO. BorlandC y OpenSSL

Posted: Mon Oct 03, 2016 12:48 pm
by horacio
Antonio, obtengo los mismos errores incorporando la ibrería hbssls.lib. Gracias

Saludos