首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >节点RSA和Firebase函数--为什么错误: DSO支持routines:win32_load:无法加载?

节点RSA和Firebase函数--为什么错误: DSO支持routines:win32_load:无法加载?
EN

Stack Overflow用户
提问于 2022-05-03 13:19:51
回答 1查看 483关注 0票数 0

我在firebase函数中使用node-rsa包,但是当我运行模拟器测试该函数时,我得到以下错误:

错误:错误:25078067:DSO支持在(C:\Users\XXX\Desktop\work\XXX\functions\node_modules\node-rsa\src\schemes\pkcs1.js:154:27) at

Sign.sign (节点:/crypto/sig:131:29)上不加载共享库

我不知道从这里到哪里去,也不知道如何解决这个问题。这里是我的firebase云功能:

代码语言:javascript
复制
import NodeRSA from 'node-rsa'
import * as functions from 'firebase-functions'

const keyData = {
  consumerId: '<ID REMOVED>',
  privateKey: `-----BEGIN RSA PRIVATE KEY-----
  <PRIVATE KEY REMOVED>
  -----END RSA PRIVATE KEY-----`,
  keyVer: 1
  //   impactId: "YOUR IMPACT AFFILIATE ID" // not required
}

const generateWalmartHeaders = () => {
  const { privateKey, consumerId, keyVer } = keyData
  const hashList = {
    'WM_CONSUMER.ID': consumerId,
    'WM_CONSUMER.INTIMESTAMP': Date.now().toString(),
    'WM_SEC.KEY_VERSION': keyVer
  }

  const sortedHashString = `${hashList['WM_CONSUMER.ID']}\n${hashList['WM_CONSUMER.INTIMESTAMP']}\n${hashList['WM_SEC.KEY_VERSION']}\n`
  const signer = new NodeRSA(privateKey, 'pkcs1')
  const signature = signer.sign(sortedHashString)
  const signatureEnc = signature.toString('base64')

  return {
    'WM_SEC.AUTH_SIGNATURE': signatureEnc,
    'WM_CONSUMER.INTIMESTAMP': hashList['WM_CONSUMER.INTIMESTAMP'],
    'WM_CONSUMER.ID': hashList['WM_CONSUMER.ID'],
    'WM_SEC.KEY_VERSION': hashList['WM_SEC.KEY_VERSION']
  }
}

export const getProductById = functions.https.onRequest(async (req, res) => {
  const options = {
    method: 'GET',
    headers: generateWalmartHeaders()
  }

  try {
    const response = await fetch(
      `https://developer.api.walmart.com/api-proxy/service/affil/product/v2/items/4837473`,
      options
    )
    const product = await response.json()
    console.log('product?', product)
    res.send(product)
  } catch (error) {
    console.log('error in walmartjs', error)
    res.status(500).send(error)
  }
})

有人知道我为什么会犯这个错误吗?

EN

回答 1

Stack Overflow用户

发布于 2022-05-04 14:19:04

您不应该将-----BEGIN RSA PRIVATE KEY----------END RSA PRIVATE KEY-----这2行复制为私钥的一部分。

请删除这两行作为私钥的一部分。

致以敬意,

菲多斯

IOSupport

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72100029

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档