运行Hyperledger Fabric项目时无法读取未定义的属性“曲线”

时间:2019-01-30 05:59:31

标签: node.js reactjs mongodb blockchain

Cannot read property 'curve' of undefined
    at Object.KEYUTIL.getKey (/home/quolam-002/Documents/Hyperledger_Fabric proejct/fabric-samples/vytalconnect2/node_modules/fabric-client/node_modules/jsrsasign/lib/jsrsasign.js:247:10379)
    at CryptoSuite_ECDSA_AES.getKey (/home/quolam-002/Documents/Hyperledger_Fabric proejct/fabric-samples/vytalconnect2/node_modules/fabric-client/lib/impl/CryptoSuite_ECDSA_AES.js:206:27)

5 个答案:

答案 0 :(得分:1)

这是由于证书无效/过期所致。

您可以删除已经存在的证书。拆除网络,然后使用presents。例如fabcar的startfabric.sh脚本重新启动网络。

答案 1 :(得分:0)

这可能是由于您使用的证书无效,您可以通过以下方式检查证书的有效性

  1. ssldecoder
  2. sslshopper

有关更多信息,请关注此中等文章Link

答案 2 :(得分:0)

这是证书的问题,

如果您遵循织物样本(https://github.com/hyperledger/fabric-samples/tree/release-1.4/balance-transfer)的余额转移示例,则

  1. 首先删除fabric-client-kv- *文件夹

  2. 再次运行runApp.sh和testAPIs.sh脚本

其他

  1. 寻找放置注册用户证书的文件夹
  2. 删除该文件夹
  3. 拆除网络(停止并删除所有正在运行的容器)
  4. 重新注册并在网络中注册用户。

问题原因:-

客户端对象中的曲线关键点的值未定义

  _cryptoSuite: 
   CryptoSuite_ECDSA_AES {
     _keySize: 256,
     _hashAlgo: 'SHA2',
     _cryptoKeyStore: 
      CryptoKeyStore {
        logger: [Object],
        _store: null,
        _storeConfig: [Object],
        _getKeyStore: [Function] },
     _curveName: 'secp256r1',
     _ecdsaCurve: 
      PresetCurve {
        curve: undefined,
        g: <EC Point x: 6b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c296 y: 4fe342e2fe1a7f9b8ee7eb4a7c0f9e162bce33576b315ececbb6406837bf51f5>,
        n: <BN: ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632551>,
        hash: [Object] },
     _hashFunction: [Function],
     _hashOutputSize: 32,
     _ecdsa:   ...

答案 3 :(得分:0)

1. look for the folder where enrolled user certificates are placed
2. delete that folder
3. Tear down the network (stop and remove all the running containers )
4. Again Register and enroll users in the network.

上面的故障排除步骤也解决了我的错误中的错误。

答案 4 :(得分:0)

此错误的原因是,一旦网络重新启动,您的ECDSA密钥可能会在一定时间后删除。如在balance-transfer示例中通过API注册/注册时,在/artifacts/client-org1.yaml中配置的加密存储路径被设置为/tmp/fabric-client-kv-org1。您可以尝试将路径更新为/tmp以外的路径,以便在重新启动后持续存在。这对我有用。

简单删除fabric-client-kv-*目录在短期内可能有效,但从长远来看可能不适合,尤其是在生产环境中。