code: func (rc *Client) CreateConfigSignatureData(signer msp.SigningIdentity, channelConfigPath string) (signatureHeaderData resource.ConfigSignatureData, e error) {
  	chConfig, err := readChConfigData(channelConfigPath)
  	if err != nil {
  		e = err
  		return
  	}
  	sigCtx := contextImpl.Client{
  		SigningIdentity: signer,
  		Providers:       rc.ctx,
  	}
  
  	return resource.GetConfigSignatureData(&sigCtx, chConfig)
  }
docs: // CreateConfigSignatureData will prepare a SignatureHeader and the full signing []byte (signingBytes) to be used for signing a Channel Config
  // 	Once SigningBytes have been signed externally (signing signatureHeaderData.SigningBytes using an external tool like OpenSSL), do the following:
  //  1. create a common.ConfigSignature{} instance
  //  2. assign its SignatureHeader field with the returned field 'signatureHeaderData.signatureHeader'
  //  3. assign its Signature field with the generated signature of 'signatureHeaderData.signingBytes' from the external tool
  //  Then use WithConfigSignatures() option to pass this new instance for channel updates