Пример #1
0
 //把member类型的证书加载到org下面的peer节点
 public override Task <RegistReply> Regist(RegistRequest request, ServerCallContext context)
 {
     try
     {
         if (_identityProvider.GetCAUserName() != request.Username ||
             _identityProvider.GetCAPassword() != request.Password)
         {
             return(Task.FromResult(new RegistReply()
             {
                 Status = false
             }));
         }
         //获取证书
         var ca = Newtonsoft.Json.JsonConvert.DeserializeObject <Certificate>(request.Certificate);
         //校验签名
         var rs = RSAHelper.VerifyData(_identityProvider.GetPublicKey(), ca.TBSCertificate, ca.SignatureValue);
         //如果是peer节点类型 则返回false
         //peer节点类型在组织加入通道的时候进行校验
         if (ca.TBSCertificate.CAType == CAType.Peer)
         {
             return(Task.FromResult(new RegistReply()
             {
                 Status = false,
                 Msg = "签名校验失败"
             }));
         }
         else
         {
             //把证书上链
             var caconfig = new OrgMemberConfig();
             caconfig.Name        = ca.TBSCertificate.Subject;
             caconfig.OrgId       = _identityProvider.GetPeerIdentity().OrgId;
             caconfig.Certificate = ca;
             var response = _invokeBLL.RegistMember(request.ChannelId, caconfig);
             return(Task.FromResult(new RegistReply()
             {
                 Status = true,
                 Msg = "注册成功!"
             }));
         }
     }
     catch (Exception ex)
     {
         _logger.LogError(ex, ex.Message);
         return(Task.FromResult(new RegistReply()
         {
             Status = false,
             Msg = ex.Message
         }));
     }
 }