code: func (t *EncCC) EncrypterSigner(stub shim.ChaincodeStubInterface, args []string, encKey, sigKey []byte) pb.Response {
  	// create the encrypter/signer entity - we give it an ID, the bccsp instance and the keys
  	ent, err := entities.NewAES256EncrypterECDSASignerEntity("ID", t.bccspInst, encKey, sigKey)
  	if err != nil {
  		return shim.Error(fmt.Sprintf("entities.NewAES256EncrypterEntity failed, err %s", err))
  	}
  
  	if len(args) != 2 {
  		return shim.Error("Expected 2 parameters to function EncrypterSigner")
  	}
  
  	key := args[0]
  	cleartextValue := []byte(args[1])
  
  	// here, we sign cleartextValue, encrypt it and assign it to key
  	err = signEncryptAndPutState(stub, ent, key, cleartextValue)
  	if err != nil {
  		return shim.Error(fmt.Sprintf("signEncryptAndPutState failed, err %+v", err))
  	}
  
  	return shim.Success(nil)
  }
docs: // EncrypterSigner exposes how to write state to the ledger after having received keys for
  // encrypting (AES 256 bit key) and signing (X9.62/SECG curve over a 256 bit prime field) that has been provided to the chaincode through the
  // transient field