Ограничить доступ для участников на уровне цепочки кодов фабрики - PullRequest
0 голосов
/ 07 ноября 2019

Я пытаюсь динамически ограничить доступ для членов на уровне цепочки кодов и обнаружил этот метод в учебнике"stub.GetCallerCertificate", но получаю ошибку.

Ошибка: stub.GetCallerCertificate undefined (тип shim.ChaincodeStubInterface не имеет поля или метода GetCallerCertificate)

Не могли бы вы рассказать, какую ошибку я допустил в коде, и, если возможно, предоставить несколько рабочих примеров для ограничения доступа к членамна уровне цепочки кодов (только для вызова транзакций, точно так же, как проверка на наличие msg.sender в надежности)?

Язык цепочки: Go

Код:

 xx, err1 := stub.GetCallerCertificate()
   if err1 != nil {
       matchLogger.Info(err1)
   }
   matchLogger.Info("Cert ----")
   matchLogger.Info(string(xx))

Ответы [ 2 ]

1 голос
/ 07 ноября 2019

GetCallerCertificate был, вероятно, API для ткани Hyperledger 0,6. В матрице Hyperledger V1 вы можете использовать вызов GetCreator для заглушки или использовать библиотеку ClientIdentity, на которую есть ссылка в этом разделе документации фабрики гиперледжеров.

Доступ на основе атрибутовКонтроль - это только один из способов контроля доступа. Вы можете сделать это другими способами, включая использование информации о сертификате, доступ к которой предоставляет библиотека cid.

0 голосов
/ 08 ноября 2019

Это пример, который я получил из node.js, он может вам помочь.

async function getInvokerID(stub) {
    let cid=new ClientIdentity(stub)
    let id = cid.getID(); // X509 Certificate invoker is in CN form
    console.log(id)
    let attributeValue=cid.getAttributeValue("attributeName")
    console.log(attributeValue)
    let CN = id.substring(id.indexOf("CN=") + 3, id.lastIndexOf("::"));
    return attributeValue;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...