ner*_*doc 10 python import gnupg pgp
我想(PGP/GPG)签署python代码.是的,我已经阅读过这个以及许多其他关于保护和混淆 python代码的网站 - 这一切都不是我想要的.我不想混淆代码.我希望客户和用户能够看到代码,他们可以修改代码,复制代码并进行衍生工作,我希望将软件置于GPLv3下.但我想拥有"已签名"的插件,因此在执行过程中它们可能会受到信任.
这在Python中可行吗?检查gpg签名后我可以导入库吗?什么是容易的:检查文件的gpg签名,然后通过导入加载,否则引发异常.但这只适用于单文件导入,而不是目录python模块.
很明显,如果客户在程序中更改了GPG密钥,或者在检查算法中自己删除了一些行,则一切都消失了 - 但这不是问题.他可以做任何他想做的事 - 但这很愚蠢.他想要的是值得信赖.我想让他通过将其复制到"插件"目录中来添加第三方插件,并让程序检查插件的"可信度" - 然后导入它.(所以他可以运行没有签名的插件,但是他有自己的风险.)
Python的import机制已经提供了实现您想要的所需的所有工具.您可以安装不同类型的import挂钩以支持您想要的内容.
特别是你可能会发现安装元路径钩子很方便,它会搜索"已签名的模块"并返回一个Loader能够从这个签名格式执行导入的东西.
签名插件的一种非常简单方便的格式是zip包含以下内容的存档:
通过这种方式:
zip存档并根据需要进行修改.zip档案的导入已在zipimport模块中实施.这意味着您不必从头开始重写加载器.实际上,如果你想将钩子的代码减少到最小,你只需要验证签名,然后将zip存档的路径添加到sys.path,因为python已经处理了从zip存档的导入,即使没有明确使用zipimport.
使用这种设计,您只需安装这些挂钩,然后您就可以import将插件视为正常模块,并且验证等将自动完成.
| 归档时间: |
|
| 查看次数: |
3624 次 |
| 最近记录: |