code: func (vscc *Validator) checkInstantiationPolicy(chainName string, env *common.Envelope, instantiationPolicy []byte, payl *common.Payload) commonerrors.TxValidationError {
  	// get the signature header
  	shdr, err := utils.GetSignatureHeader(payl.Header.SignatureHeader)
  	if err != nil {
  		return policyErr(err)
  	}
  
  	// construct signed data we can evaluate the instantiation policy against
  	sd := []*common.SignedData{{
  		Data:      env.Payload,
  		Identity:  shdr.Creator,
  		Signature: env.Signature,
  	}}
  	err = vscc.policyEvaluator.Evaluate(instantiationPolicy, sd)
  	if err != nil {
  		return policyErr(fmt.Errorf("chaincode instantiation policy violated, error %s", err))
  	}
  	return nil
  }
docs: // checkInstantiationPolicy evaluates an instantiation policy against a signed proposal