6

Firefox 拡張機能を開発していますが、ベータ テスター (技術に詳しくない) に自動更新を提供したいと考えています。残念ながら、更新サーバーは HTTPS を提供していません。更新の署名に関する Extension Developer Guide によると、update.rdf に署名し、install.rdf でエンコードされた公開鍵を提供する必要があります。

これらすべてを実行するMcCoyツールがありますが、これはインタラクティブな GUI ツールであり、Ant スクリプトを使用して拡張機能のパッケージ化を自動化したいと考えています (これはより大きなプロセスの一部であるため)。update.rdf マニフェストに署名するために何が起こっているかについて、以下よりも正確な説明を見つけることができません。McCoy のソースは非常に多くの JavaScript です。

ドキュメントは次のように述べています。

アドオンの作成者は、公開/秘密の RSA 暗号化キー ペアを作成します。キーの公開部分は DER でエンコードされ、次に Base 64 でエンコードされ、アドオンの install.rdf に updateKey エントリとして追加されます。

(...)

大まかに言えば、更新情報は文字列に変換され、sha512 ハッシュ アルゴリズムを使用してハッシュされ、このハッシュは秘密鍵を使用して署名されます。結果のデータは、署名エントリとして update.rdf に含めるために DER でエンコードされ、次に base 64 でエンコードされます。

DERエンコーディングについてはよくわかりませんが、いくつかのパラメータが必要なようです。

だから誰でも知っているだろう

  • 定義済みの鍵ペアを使用して update.rdf と install.rdf に署名するための完全なアルゴリズム、または McCoy のスクリプト可能な代替手段のいずれか
  • asn1codingのようなコマンドライン ツールで十分かどうか
  • DER エンコーディングに関する優れた/簡単な開発者向けチュートリアル
4

2 に答える 2

3

昨年から状況が変わりました:

uhuraへようこそ ( MDC McCoyの公式ページにリストされています)

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

追加の利点は、mozilla の DB にバインドされることなく、独自の暗号鍵を生成、バックアップ、移動できることです。唯一の欠点は次のとおりです: Perl ベース (欠落している依存関係を修正するのは、CPAN の有無にかかわらず)

余談ですが、私は自分の Python ベースのスクリプトを書き始めようとしていましたが、RDF 対応の署名ライブラリを見つけることができませんでした。または、実際には、XML 署名ライブラリでさえ python にとってはくだらないものです (しかし、XML-DSig は本質的に悪ですよね)。Mozilla が拡張マニフェストに RDF を選んだのはなぜですか?

于 2011-02-02T14:30:28.220 に答える
2

すでに解決策が見つかったかどうかはわかりませんが、McCoy ツールにはコマンド ライン パッチがあります。

于 2010-05-01T02:31:15.360 に答える