5

PHPでcrxファイルを生成できるようにしたいです。

crx ファイルは、追加のヘッダーを含む zip ファイルであり、このヘッダーの作成方法がわかりません。事前に生成された pem ファイルを使用すると crx ファイルを作成できますが、これによりすべての crx ファイルが同じ拡張子 ID を持つことになり、これは適切ではありません。これまでに得たものへのリンクを次に示します.....
http://valorsolo.com/index.php?page=Viewing%20Message&id=1472&pagenum=2#1500

これが Python で行われたのに役立つ場合は、ここに詳細についての優れたブログ投稿があります....
http://blog.roomanna.com/12-12-2010/packaging-chrome-extensions
といくつかのリンク件名の他のコードへ.....
http://code.google.com/chrome/extensions/crx.html
http://code.google.com/p/crx-packaging/source/browse/trunk/ packer.py
https://github.com/bellbind/crxmake-python/blob/master/crxmake.py
http://www.curetheitch.com/projects/buildcrx/

4

3 に答える 3

3

このルビコードは役に立ちました。

公開鍵は DER 形式である必要がありますが、残念ながら、私の知る限り、PHP の OpenSSL 拡張機能ではそれができません。コマンドラインで秘密鍵から生成する必要がありました。

openssl rsa -pubout -outform DER < extension_private_key.pem > extension_public_key.pub

更新: PHP der2pem() 関数がここで利用可能です。指摘してくれた tutuDajuju に感謝します。

それが完了したら、.crx ファイルのビルドは非常に簡単です。

# make a SHA1 signature using our private key
$pk = openssl_pkey_get_private(file_get_contents('extension_private_key.pem'));
openssl_sign(file_get_contents('extension.zip'), $signature, $pk, 'sha1');
openssl_free_key($pk);

# decode the public key
$key = base64_decode(file_get_contents('extension_public_key.pub'));

# .crx package format:
#
#   magic number               char(4)
#   crx format ver             byte(4)
#   pub key lenth              byte(4)
#   signature length           byte(4)
#   public key                 string
#   signature                  string
#   package contents, zipped   string
#
# see http://code.google.com/chrome/extensions/crx.html
#
$fh = fopen('extension.crx', 'wb');
fwrite($fh, 'Cr24');                             // extension file magic number
fwrite($fh, pack('V', 2));                       // crx format version
fwrite($fh, pack('V', strlen($key)));            // public key length
fwrite($fh, pack('V', strlen($signature)));      // signature length
fwrite($fh, $key);                               // public key
fwrite($fh, $signature);                         // signature
fwrite($fh, file_get_contents('extension.zip')); // package contents, zipped
fclose($fh);
于 2011-04-07T19:17:02.997 に答える
2

CRX 形式については、ドキュメント ページhttp://code.google.com/chrome/extensions/crx.htmlで詳しく説明されています。

そのファイルの最後に、Ruby と Bash の例があります。お使いの言語 (PHP) の形式に従ってください。

于 2011-02-17T03:33:06.927 に答える
2

実用的な PHP ソリューションを使用できます: https://github.com/andyps/crxbuild プロジェクトとコマンド ライン スクリプトに含めることができる PHP クラスがあります。

于 2013-11-16T11:44:19.650 に答える