一个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 code很有帮助.
你的公钥必须是DER格式,不幸的是PHP的OpenSSL扩展不能这样做,据我所知.我必须在命令行从我的私钥生成它:
openssl rsa -pubout -outform DER < extension_private_key.pem > extension_public_key.pub
更新:有一个PHP der2pem()函数available here,感谢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);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。