簡體   English   中英

使用PHP創建Google Chrome Crx文件

[英]Create Google Chrome Crx file with PHP

我希望能夠使用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/

這個ruby代碼很有幫助。

你的公鑰必須是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);

您可以使用有效的PHP解決方案: https//github.com/andyps/crxbuild您可以在項目和命令行腳本中包含一個PHP類。

CRX格式在文檔頁面中有詳細描述: http//code.google.com/chrome/extensions/crx.html

Ruby和Bash的文件末尾有一些例子。 遵循您的語言格式(PHP)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM