code: func GetIdemixMspConfig(dir string, ID string) (*msp.MSPConfig, error) {
  	ipkBytes, err := readFile(filepath.Join(dir, IdemixConfigDirMsp, IdemixConfigFileIssuerPublicKey))
  	if err != nil {
  		return nil, errors.Wrapf(err, "failed to read issuer public key file")
  	}
  
  	revocationPkBytes, err := readFile(filepath.Join(dir, IdemixConfigDirMsp, IdemixConfigFileRevocationPublicKey))
  	if err != nil {
  		return nil, errors.Wrapf(err, "failed to read revocation public key file")
  	}
  
  	idemixConfig := &msp.IdemixMSPConfig{
  		Name:         ID,
  		Ipk:          ipkBytes,
  		RevocationPk: revocationPkBytes,
  	}
  
  	signerBytes, err := readFile(filepath.Join(dir, IdemixConfigDirUser, IdemixConfigFileSigner))
  	if err == nil {
  		signerConfig := &msp.IdemixMSPSignerConfig{}
  		err = proto.Unmarshal(signerBytes, signerConfig)
  		if err != nil {
  			return nil, err
  		}
  		idemixConfig.Signer = signerConfig
  	}
  
  	confBytes, err := proto.Marshal(idemixConfig)
  	if err != nil {
  		return nil, err
  	}
  
  	return &msp.MSPConfig{Config: confBytes, Type: int32(IDEMIX)}, nil
  }
docs: // GetIdemixMspConfig returns the configuration for the Idemix MSP