Автоматизируйте подпись манифеста update.rdf для моего расширения Firefox

Я разрабатываю расширение для Firefox, и я хотел бы обеспечить автоматическое обновление для моих бета-тестеров (которые не разбираются в технологиях). К сожалению, сервер обновлений не поддерживает HTTPS. Согласно Руководству разработчика расширений по подписанию обновлений, я должен подписать свое обновление. rdf и предоставьте закодированный открытый ключ в файле install.rdf.

Существует инструмент McCoy для делает все это, но это интерактивный инструмент с графическим интерфейсом, и я хотел бы автоматизировать упаковку расширений с помощью сценария Ant (так как этот является частью гораздо большего процесса). Я не могу найти более точного описания того, что происходит, чтобы подписать манифест update.rdf, чем ниже, а источник McCoy - это ужасно много javascript.

Док говорит:

Автор надстройки создает пару открытых/закрытых криптографических ключей RSA. Открытая часть ключа кодируется DER, а затем кодируется base 64 и добавляется в файл install.rdf надстройки как запись updateKey.

(...)

Грубо говоря, информация об обновлении преобразуется в строку, затем хэшируется с использованием алгоритма хеширования sha512, и этот хэш подписывается с использованием закрытого ключа. Результирующие данные кодируются DER, а затем кодируются по основанию 64 для включения в update.rdf в качестве записи подписи.

Я не очень хорошо разбираюсь в кодировании DER, но, похоже, ему нужны некоторые параметры.

Так кто-нибудь знает

  • либо полный алгоритм для подписи update.rdf и install.rdf с использованием предопределенной пары ключей, либо скриптовая альтернатива McCoy
  • достаточно ли инструмента командной строки, такого как asn1coding.
  • хороший/простой учебник для разработчиков по кодированию DER

person instanceof me    schedule 29.03.2010    source источник


Ответы (2)


Что-то изменилось с прошлого года:

добро пожаловать в uhura (и они перечислены на официальная страница MDC McCoy)

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

Дополнительным преимуществом является то, что вы можете генерировать, создавать резервные копии и перемещать свои собственные криптографические ключи без привязки к базе данных Mozilla. Единственный недостаток: основан на Perl (как больно исправлять отсутствующие зависимости, с CPAN или без него).

В качестве примечания: я почти начал писать свой собственный скрипт на основе Python, но не смог найти ни одной RDF-поддерживающей библиотеки для подписи; или, на самом деле, даже XML-библиотеки для подписи - дерьмо для python (но, эй, XML- DSig по своей природе зло, не так ли). Почему Mozilla выбрала RDF для манифеста расширения?

person Stefano    schedule 02.02.2011
comment
под WinXP/Cygwin я изменил строку #55 на нашу $tmp = catfile(curdir(), update.rdf.mxtools.$$.tmp); в летучей мыши ухура - person se_pavel; 23.06.2011
comment
действительно, мы используем его в Linux! Кстати, нам надоело подписывать файлы update.rdf и управлять соответствующим ключом, поэтому мы перешли на HTTPS://; в настоящее время сертификаты SSL прилично дешевы... - person Stefano; 24.06.2011
comment
Сейчас 2015 год, а создание дополнений для Firefox по-прежнему остается сущим адом. Я убежден, что Mozilla — это зло. - person makhdumi; 06.05.2015

не уверен, что вы уже нашли решение, но у инструмента McCoy есть патч для командной строки.

person Pablo    schedule 01.05.2010
comment
вы имеете в виду hyperstruct.net/projects/spock? это то решение, которое я ищу, но оно не поддерживается с 2008 года и не упаковано для Mac. - person instanceof me; 03.05.2010