亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

如何正確使用Nodejs 的 c++ module 鏈接到 OpenSSL

 更新時間:2014年08月03日 09:43:19   投稿:hebedich  
這篇文章主要介紹了如何正確使用Nodejs 的 c++ module 鏈接到 OpenSSL,需要的朋友可以參考下

事情的起因是這樣的, 因為某些原因, 最近在寫 Nodejs 的 c++ module, 然后在js這邊調(diào)用。  網(wǎng)絡(luò)通信自然離不開ssl, 于是需要鏈接到Openssl的庫。

我們本來的期望是,需要用戶安裝有Openssl的運行庫, 然后我們的c++ module 動態(tài)鏈接到Openssl的so庫上來運行。

起初一切看起來還不錯,直到我們發(fā)現(xiàn)這個openssl的函數(shù)不能工作:

PKCS7_sign()
PKCS7_sign ( )
我們發(fā)現(xiàn):

如果我們的 c++ 模塊與Openssl庫動態(tài)鏈接的話, 編譯都沒問題. 但是運行會出現(xiàn): PKCS7_sign 符號無法找到的錯誤.
如果我們的 c++ 模塊與Openssl庫靜態(tài)鏈接的話, 編譯也沒問題, 但是運行時,調(diào)用這個函數(shù)的地方?jīng)]有效果, 這個函數(shù)返回值是 0. 按照文檔表示出現(xiàn)錯誤, 但是用 Openssl的函數(shù) ERR_get_error 獲取錯誤碼也是0. 表示沒有錯誤碼.
在linux上是這樣, 那在Mac上呢? 用Mac試了一下, 發(fā)現(xiàn)Mac沒有問題. 于是,想到這可能是Nodejs的一個bug. 然后就去 Nodejs 給它報了一個bug: [https://github.com/joyent/node/issues/8026][1]

同時, google上搜索了 nodejs linking to openssl 類似的關(guān)鍵字.

找到這樣幾篇文章:

https://github.com/TooTallNate/node-gyp/wiki/Linking-to-OpenSSL

https://github.com/joyent/node/issues/3915

http://serverfault.com/questions/338092/how-can-i-build-node-js-using-static-libssl-and-crypto-libraries

https://github.com/robhawkes/node-extension/issues/1

通過搜索, 我們發(fā)現(xiàn), 原來Nodejs自己也使用了Openssl 庫, 推測nodejs自己的crypto模塊也是使用Openssl lib實現(xiàn)的. 這點從Nodejs的源碼中就能發(fā)現(xiàn), 它包含了最新的Openssl的全部源碼.

其中寫上面第一篇文章: https://github.com/TooTallNate/node-gyp/wiki/Linking-to-OpenSSL 的那個帥哥是Nodejs的開發(fā)人員.

基本結(jié)論:

Nodejs 自己使用了Openssl
在Nodejs 0.6之前, Nodejs是動態(tài)鏈接到 Openssl 庫的. 而之后的版本都是靜態(tài)鏈接的.
這時發(fā)現(xiàn) Node 那邊已經(jīng)回復我的bug了: https://github.com/joyent/node/issues/8026

Node 解釋的原因:

Node 自己編譯之后, 把自己沒用到的符號清除, 所以我們在運行時就找不到符號了. 于是他們把這bug 修掉了. 保留了全部符號. 這導致 Node 的體積大了 400k.

感謝Node的快速回復, 不得不佩服Node的活躍程度. 贊.

相關(guān)文章

  • CentOS 安裝NodeJS V8.0.0的方法

    CentOS 安裝NodeJS V8.0.0的方法

    這篇文章主要介紹了CentOS 安裝NodeJS V8.0.0的方法,需要的朋友可以參考下
    2017-06-06
  • node中Express 動態(tài)設(shè)置端口的方法

    node中Express 動態(tài)設(shè)置端口的方法

    本篇文章主要介紹了node中Express 動態(tài)設(shè)置端口的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-08-08
  • 用NODE.JS中的流編寫工具是要注意的事項

    用NODE.JS中的流編寫工具是要注意的事項

    Nodejs讀寫流流的傳輸過程默認是以buffer的形式傳輸?shù)?除非你給他設(shè)置其他編碼形式, 小伙伴可以參考下。
    2016-03-03
  • node.js突破nginx防盜鏈機制,下載圖片案例分析

    node.js突破nginx防盜鏈機制,下載圖片案例分析

    這篇文章主要介紹了node.js突破nginx防盜鏈機制,下載圖片的方法,結(jié)合具體案例形式分析了防盜鏈的相關(guān)原理與node.js使用axios庫下載防盜鏈圖片的相關(guān)操作技巧,需要的朋友可以參考下
    2023-04-04
  • 學習Node.js模塊機制

    學習Node.js模塊機制

    這篇文章主要為大家詳細介紹了Node.js模塊機制,一篇關(guān)于Node.js模塊機制的學習筆記,感興趣的小伙伴們可以參考一下
    2016-10-10
  • Node.js事件的正確使用方法

    Node.js事件的正確使用方法

    這篇文章主要給大家介紹了關(guān)于Node.js事件的正確使用方法,文中通過示例代碼介紹的非常詳細,對大家學習或者使用Node.js具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧
    2019-04-04
  • 一步步教你利用Docker設(shè)置Node.js

    一步步教你利用Docker設(shè)置Node.js

    這篇文章主要介紹了利用Docker設(shè)置Node.js的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2018-11-11
  • node.js中的fs.readFileSync方法使用說明

    node.js中的fs.readFileSync方法使用說明

    這篇文章主要介紹了node.js中的fs.readFileSync方法使用說明,本文介紹了fs.readFileSync的方法說明、語法、接收參數(shù)、使用實例和實現(xiàn)源碼,需要的朋友可以參考下
    2014-12-12
  • npm一鍵安裝Python以及node-sass依賴環(huán)境的方法

    npm一鍵安裝Python以及node-sass依賴環(huán)境的方法

    Node-sass是一個庫,它將Node.js綁定到LibSass,下面這篇文章主要給大家介紹了關(guān)于npm一鍵安裝Python以及node-sass依賴環(huán)境的相關(guān)資料,文中還介紹了安裝node-sass報錯Python環(huán)境問題避坑指南,需要的朋友可以參考下
    2022-09-09
  • 詳解Node.js 中使用 ECDSA 簽名遇到的坑

    詳解Node.js 中使用 ECDSA 簽名遇到的坑

    這篇文章主要介紹了詳解Node.js 中使用 ECDSA 簽名遇到的坑,主要是使用 Node.js 的 Crypto 模塊無法校驗網(wǎng)絡(luò)傳輸過來的簽名結(jié)果,感興趣的小伙伴們可以參考一下
    2018-11-11

最新評論