错误:尚未将加密套件分配给此客户端

时间:2019-05-09 11:31:11

标签: hyperledger-fabric

我已经下载了 hyperledger-fabric v2.0 织物样本存储库,启动了网络,然后通过fabtoken示例,一切似乎都可以正常工作。

当我尝试修改fabtoken示例以支持为默认组织创建其他用户时,问题开始了。我正在通过遵循Node SDK的How to use a common connection profile教程,尝试向网络上的组织注册新用户。但是, initCredentialStores()方法似乎没有初始化 Client.js 文件的 crypto_suite 字段,因此我得到了 错误:当我尝试调用 client.getCertificateAuthority()方法时,尚未将加密套件分配给该客户端

我尝试通过凭据存储的初始化( initCredentialStores()方法)进行调试。调用 const crypto_suite = BaseClient.newCryptoSuite(); 时似乎出现了问题,但是我无法确定错误的根本原因。

RegiserNewUser函数:

async function registerNewUser(client, caService, admin, uname){
    await client.setUserContext(admin, true);

    client.loadFromConfig('/home/todorovic/fabric-samples/basic-network/connection.yaml');
    client.loadFromConfig('/home/todorovic/fabric-samples/basic-network/org1.yaml')
    client.initCredentialStores().then(_ => {console.log('zavrsio init');});

    const ca_client = client.getCertificateAuthority();
    ca_client.register({enrollmentID: uname, affiliation: 'Org1'}, admin)
    .then((secret) => 
        {return client.setUserContext({username: uname, password: secret});
    });

}

connection.yaml保持不变,而我添加的Org1.yaml文件如下所示:

name: "Org1 Client"
version: "1.0"

client:
  organization: Org1
  credentialStore:
    path: "/tmp/hfc-cvs/org1"
    cryptoStore:
      path: "/tmp/hfc-cvs/org1"

1 个答案:

答案 0 :(得分:0)

您需要在示例中更改此行

client.initCredentialStores().then(_ => {console.log('zavrsio init');});

await client.initCredentialStores();

否则,在您的代码尝试获取证书颁发机构之前,将不会初始化凭据存储。