我正在开发一个 Firefox 扩展,我想为我的 beta 测试人员(不精通技术的人)提供自动更新。不幸的是,更新服务器不提供 HTTPS。根据关于签署更新的扩展开发指南,我必须签署我的 update.rdf 并在 install.rdf 中提供一个编码的公钥。
McCoy工具可以完成所有这些工作,但它是一个交互式 GUI 工具,我想使用 Ant 脚本自动执行扩展打包(因为这是一个更大的过程的一部分)。我找不到比下面更准确地描述签署 update.rdf 清单所发生的事情,而且 McCoy 的源代码是大量的 javascript。
医生说:
插件作者创建一个公共/私有 RSA 加密密钥对。密钥的公共部分经过 DER 编码,然后进行 base 64 编码,并作为 updateKey 条目添加到附加组件的 install.rdf 中。
(...)
粗略地说,更新信息被转换为字符串,然后使用 sha512 散列算法进行散列,并使用私钥对该散列进行签名。生成的数据经过 DER 编码,然后进行 base 64 编码,以作为签名条目包含在 update.rdf 中。
我不太了解 DER 编码,但它似乎需要一些参数。
所以会有人知道
- 使用预定义的密钥对签署 update.rdf 和 install.rdf 的完整算法,或 McCoy 的可编写脚本替代方案
- 像asn1coding这样的命令行工具是否足够
- 一个好的/简单的关于 DER 编码的开发者教程