Probablement vous devez envisager de tirer parti de l'API GetCreator
pour extraire le certificat du client qui a créé la proposition de transaction. Une fois que vous obtiendrez un certificat, vous pouvez implémenter la fonctionnalité désirée, par exemple:
Seuls les utilisateurs admin pouvoir créer et allouer de nouvelles billes
Utilisateurs (Amy, Alice, Ava de cet exemple) devrait être autorisés à transférer les billes dont ils sont propriétaires
Voici l'exemple de certificat dans desirialize chaincode:
func (*smartContract) Invoke(stub shim.ChaincodeStubInterface) peer.Response {
fmt.Println("Invoke")
serializedID, _ := stub.GetCreator()
sId := &msp.SerializedIdentity{}
err := proto.Unmarshal(serializedID, sId)
if err != nil {
return shim.Error(fmt.Sprintf("Could not deserialize a SerializedIdentity, err %s", err))
}
bl, _ := pem.Decode(sId.IdBytes)
if bl == nil {
return shim.Error(fmt.Sprintf("Could not decode the PEM structure"))
}
cert, err := x509.ParseCertificate(bl.Bytes)
if err != nil {
return shim.Error(fmt.Sprintf("ParseCertificate failed %s", err))
}
fmt.Println(cert)
return shim.Success(nil)
}