code: func signedByAnyOfGivenRole(role msp.MSPRole_MSPRoleType, ids []string) *cb.SignaturePolicyEnvelope {
  	// we create an array of principals, one principal
  	// per application MSP defined on this chain
  	sort.Strings(ids)
  	principals := make([]*msp.MSPPrincipal, len(ids))
  	sigspolicy := make([]*cb.SignaturePolicy, len(ids))
  	for i, id := range ids {
  		principals[i] = &msp.MSPPrincipal{
  			PrincipalClassification: msp.MSPPrincipal_ROLE,
  			Principal:               utils.MarshalOrPanic(&msp.MSPRole{Role: role, MspIdentifier: id})}
  		sigspolicy[i] = SignedBy(int32(i))
  	}
  
  	// create the policy: it requires exactly 1 signature from any of the principals
  	p := &cb.SignaturePolicyEnvelope{
  		Version:    0,
  		Rule:       NOutOf(1, sigspolicy),
  		Identities: principals,
  	}
  
  	return p
  }
docs: //wrapper for generating "any of a given role" type policies