我正在用electron.js编写一个加密货币的轻量级钱包。实际上,到目前为止,我只是使用纯node.js作为逻辑。所有与加密相关的东西都在electron.js应用程序的主进程中处理,我刚刚计算出crypto!=crypto && openssl!= boringssl,因此一些函数的行为与最初的node.js crypto模块不同。这现在正在破坏我的代码。
所以我现在的问题是,如何将node.js中的“原始”加密模块与我正在使用的所有依赖模块(如electron main进程中的create-hash)一起使用?
2条答案
按热度按时间w6mmgewl1#
令人高兴的是,唯一的问题是“ripemd160”的快捷方式“rpmd160”在node.js上工作,但在electron上不工作,只需用完整术语替换快捷方式,现在一切都正常了。
tgabmvqs2#
我想建立在OP的答案之上,因为我正在努力解决一个非常相似的问题,他自己的答案引导我找到了一个解决方案,但一开始并不清楚如何解决。
错误
我还尝试将加密货币库合并到Electronjs中,并收到以下错误:
错误的来源是Electronjs用Google Chromium团队的BorringSSL库替换了Node.js本地加密模块,后者来自OpenSSL。This GitHub Issue向我提示了这一事实。
修复
查看这个错误,可以看到ripemd 160被调用了。通过挖掘依赖项,我找到了create-hash npm library。在我的原始代码中,我调用了以下代码行:
return createHash('rmd160').update(buffer).digest()
我可以通过将
rmd160
替换为ripemd160
来修复这个问题,因此该行如下所示:return createHash('ripemd160').update(buffer).digest()
就是这样!那一行修改使库可以在Electronjs中与BorringSSL一起工作。