Cómo utilizar el módulo Nodejs c++ para vincular correctamente OpenSSL_node.js
Esperábamos que el usuario tuviera instalada la biblioteca de tiempo de ejecución de Openssl y luego nuestro módulo de C++ se vinculara dinámicamente a la biblioteca de Openssl para ejecutarse.
Todo parecía estar bien al principio, hasta que descubrimos que esta función de openssl no funciona:
PKCS7_sign()
PKCS7_sign ( )
Encontramos:
Si vinculamos dinámicamente el módulo c++ a la biblioteca openssl, se compila sin problemas. Sin embargo, cuando lo ejecutamos, obtuvimos el error: No se encontró el símbolo PKCS7_sign.
Si vinculamos estáticamente nuestro módulo c++ a la biblioteca openssl, se compila sin problemas, pero en tiempo de ejecución, no tiene ningún efecto sobre dónde se llama a la función. La función devuelve 0. Según la documentación, esto significa que ocurrió un error, pero usar la función Openssl ERR_get_error para obtener el código de error también es 0.
Esto es cierto en Linux, pero ¿qué pasa en Mac? Lo probé en mi Mac y funcionó bien. Entonces creo que esto podría ser un error en Nodejs. Fui a Nodejs para informar de un error: [/joyent/node/issues/8026][1]
Mientras tanto, busqué en Google palabras clave similares que vincularan nodejs con openssl.
Encontré estos artículos:
/TooTallNate/node-gyp/wiki/Linking-to-OpenSSL
/joyent/node/issues/3915
p>/questions/338092/¿cómo-puedo-construir-openssl?puedo-construir-node-js-usando-libssl-estático-y-cripto-bibliotecas
/ robhawkes /node-extension/issues/1
A través de la búsqueda, descubrimos que el propio Nodejs utiliza la biblioteca Openssl. Descubrimos que el propio Nodejs utiliza la biblioteca Openssl y que el propio módulo de cifrado de Nodejs también se puede implementar utilizando la biblioteca Openssl. Esto se puede ver en el código fuente de Nodejs, que contiene el código fuente más reciente de Openssl.
El autor del primer artículo anterior: /TooTallNate/node-gyp/wiki/Linking-to-OpenSSL es un desarrollador de Nodejs.
Conclusión básica:
Nodejs usa Openssl por sí solo
Antes de Nodejs 0.6, Nodejs se vinculaba dinámicamente a la biblioteca Openssl. A partir de ese momento, comienza a vincularse estáticamente.
Entonces me di cuenta de que Node había respondido a mi error: /joyent/node/issues/8026
Node explicó el motivo:
Node se compilará solo y elimine los símbolos no utilizados para que no podamos encontrarlos en tiempo de ejecución. Entonces arreglaron el error. Mantuvieron todos los símbolos.
Gracias Node por la rápida respuesta, tengo que admirar lo activo que es Node. Gracias.
Gracias Node por la rápida respuesta.