6

我正在开发一个 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 编码的开发者教程
4

2 回答 2

3

自去年以来,情况发生了变化:

欢迎来到uhura (他们在MDC McCoy 官方页面上列出)

uhura -k signature.key yourextension.xpi http://yourupdateurl

另一个优点是您可以生成、备份、移动自己的加密密钥,而无需绑定到 mozilla 的数据库。唯一的缺点是:基于 Perl(无论有没有 CPAN,修复缺失的依赖项是多么痛苦)

附带说明一下,我几乎已经开始编写自己的基于 python 的脚本,但找不到任何 RDF 感知签名库;或者,实际上,甚至 XML 签名库对于 python 来说都是垃圾(但是,嘿,XML-DSig 本质上是邪恶的,不是吗)。为什么 Mozilla 选择 RDF 作为扩展清单?

于 2011-02-02T14:30:28.220 回答
2

不确定您是否已经找到解决方案,但 McCoy 工具有一个命令行补丁。

于 2010-05-01T02:31:15.360 回答