Сегодня я столкнулся с проблемой, когда создавал новую тему для Chrome. Как вы, возможно, знаете, Chrome использует «новый» формат файла, называемый CRX, для управления плагинами и темами. Это простой zip-файл, но немного измененный:
"Cr24" + ключик + подпись + zipFile
И тут возникает проблема. Есть только два создателя CRX, написанные на Ruby или Python. Я не слишком хорошо знаю ни один из этих языков (хотя и имел некоторый базовый опыт работы с Python, но в основном с PyS60), поэтому я хотел бы попросить вас помочь мне преобразовать это приложение на Python в код C #, который не зависит от внешних программ .
Кроме того, вот источник crxmake.py:
#!/usr/bin/python
# Cribbed from http://github.com/Constellation/crxmake/blob/master/lib/crxmake.rb
# and http://src.chromium.org/viewvc/chrome/trunk/src/chrome/tools/extensions/chromium_extension.py?revision=14872&content-type=text/plain&pathrev=14872
# from: http://grack.com/blog/2009/11/09/packing-chrome-extensions-in-python/
import sys
from array import *
from subprocess import *
import os
import tempfile
def main(argv):
arg0,dir,key,output = argv
# zip up the directory
input = dir + ".zip"
if not os.path.exists(input):
os.system("cd %(dir)s; zip -r ../%(input)s . -x '.svn/*'" % locals())
else:
print "'%s' already exists using it" % input
# Sign the zip file with the private key in PEM format
signature = Popen(["openssl", "sha1", "-sign", key, input], stdout=PIPE).stdout.read();
# Convert the PEM key to DER (and extract the public form) for inclusion in the CRX header
derkey = Popen(["openssl", "rsa", "-pubout", "-inform", "PEM", "-outform", "DER", "-in", key], stdout=PIPE).stdout.read();
out=open(output, "wb");
out.write("Cr24") # Extension file magic number
header = array("l");
header.append(2); # Version 2
header.append(len(derkey));
header.append(len(signature));
header.tofile(out);
out.write(derkey)
out.write(signature)
out.write(open(input).read())
os.unlink(input)
print "Done."
if __name__ == '__main__':
main(sys.argv)
Пожалуйста, не могли бы вы помочь мне?