//把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 })); } }