回滚Lua状态

我正在为POS开发工作框架。当程序完成时,它应该完全将前端事务(如屏幕布局和业务规则)与后端事务(如硬件管理)分离开来。

该框架将运行Lua脚本来控制POS的高级别,这比C语言更快地加速了开发周期。

这里的主要问题是EMV库执行EMV周期的所有繁琐工作,但会呈现一些回调来捕获交易金额、选择信用卡应用(借记卡、信用卡、代金券、其他)以及请求密码,以便开发人员可以创建一个在应用程序中有意义的布局屏幕。

我想让Lua开发人员访问这些回调。然而,由于该框架需要认证,我不能相信脚本编写者的诚实性,他不会滥用自己的位置来窃取客户的密码。

也就是说,在密码数字化阶段,我已经屏蔽了互联网连接库以及所有I/O和文件操作,但这远远不足以保护客户的密码。恶意开发人员可能会将捕获的密码保存在Lua环境本身中。

我想回滚在密码输入阶段对Lua状态所做的所有更改,这样开发人员将可以访问他的函数(如检测按键并将“*”连接到屏幕上的字段中的函数),但在此时期对任何变量所做的更改都将丢失。

我查看了(Clone a lua state)以获取答案。但我所看到的是,如果您需要克隆状态,则可能错误使用了API。克隆Lua状态正是我所需要的,因为我可以克隆状态以进行密码例程,然后放弃该状态并在预克隆状态上恢复程序。找到实现此目的的替代方式也是可以的,但我愿意听取其他想法...

点赞