code: func (c *clientIdentityImpl) init() error {
  	signingID, err := c.getIdentity()
  	if err != nil {
  		return err
  	}
  	c.mspID = signingID.GetMspid()
  	idbytes := signingID.GetIdBytes()
  	block, _ := pem.Decode(idbytes)
  	if block == nil {
  		err := c.getAttributesFromIdemix()
  		if err != nil {
  			return errors.WithMessage(err, "identity bytes are neither X509 PEM format nor an idemix credential")
  		}
  		return nil
  	}
  	cert, err := x509.ParseCertificate(block.Bytes)
  	if err != nil {
  		return errors.WithMessage(err, "failed to parse certificate")
  	}
  	c.cert = cert
  	attrs, err := attrmgr.New().GetAttributesFromCert(cert)
  	if err != nil {
  		return errors.WithMessage(err, "failed to get attributes from the transaction invoker's certificate")
  	}
  	c.attrs = attrs
  	return nil
  }
docs: // Initialize the client