2010-03-29 9 views
6

Zajmuję się rozszerzeniem firefox i chciałbym zapewnić automatyczną aktualizację moim beta-testerom (którzy nie znają się na technologii). Niestety serwer aktualizacji nie zapewnia protokołu HTTPS. Zgodnie z Extension Developer Guide on signing updates, muszę podpisać mój update.rdf i dostarczyć zakodowany klucz publiczny w pliku install.rdf.Zautomatyzuj podpis manifestu update.rdf dla mojego rozszerzenia firefox

Istnieje narzędzie McCoy do do all of this, ale jest to interaktywne narzędzie GUI i chciałbym zautomatyzować opakowanie rozszerzeń za pomocą skryptu Ant (ponieważ jest to część znacznie większego procesu). Nie mogę znaleźć dokładniejszego opisu tego, co się dzieje, aby podpisać manifest update.rdf niż poniżej, a źródło McCoya to bardzo dużo javascriptu.

Doc mówi:

Add-on autor tworzy publicznego/prywatnego RSA kryptograficzny parę kluczy. Publiczna część klucza jest zakodowana w DER, a następnie w podstawie 64 zakodowana i dodana do install.rdf dodatku jako wpis updateKey.

(...)

Ogólnie rzecz biorąc informacje o aktualizacji jest konwertowany na ciąg znaków, a następnie zakodowane przy użyciu algorytmu SHA512 mieszaja a ten skrót jest podpisany przy użyciu klucza prywatnego. Wynikowe dane są zakodowane DER, a następnie 64-literowe kodowane w celu włączenia do update.rdf jako wpis do podpisu.

Nie wiem dobrze o kodowaniu DER, ale wygląda na to, że potrzebuje pewnych parametrów.

Więc ktoś wie

  • albo pełny algortihm do podpisania update.rdf i install.rdf użyciu predefiniowanego parę kluczy, albo skrypty alternatywę dla McCoya
  • , czy narzędzia wiersza polecenia jak asn1coding będzie suffise
  • dobry/prosty samouczek deweloper na kodowaniu DER

Odpowiedz

3

miejsca zostały przeniesione od zeszłego roku:

zapraszamy do uhura (i są one wymienione na stronie official MDC McCoy)

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

Dodatkową zaletą jest to, że można wygenerować, kopia zapasowa, przenieść swoje własne klucze kryptograficzne bez bycia związanym z DB Mozilli. Jedyną wadą jest: oparta na Perlu (jak bolesne jest rozwiązywanie brakujących zależności, z lub bez CPAN).

Na marginesie, prawie zacząłem pisać własny skrypt oparty na pythonie, ale nie mogłem znaleźć żadnej biblioteki do podpisywania RDF ; lub faktycznie nawet biblioteki podpisujące XML są bzdurą dla Pythona (ale hej, XML-DSig is inherently evil, czy nie jest). Dlaczego Mozilla wybrała RDF dla manifestu rozszerzenia?

+1

pod WinXP/Cygwin Zmieniłem wiersz # 55 na nasz $ tmp = catfile (curdir(), "update.rdf.mxtools. $$. Tmp"); w uhura bat –

+0

rzeczywiście używamy go na Linuksie!btw, mieliśmy dość podpisywania plików update.rdf i zarządzania powiązanym kluczem, więc przeszliśmy do HTTPS: //; obecnie certyfikaty SSL są przyzwoicie tanie ... – Stefano

+0

Jest teraz 2015, a tworzenie dodatków do Firefoksa to wciąż piekło. Jestem przekonany, że * Mozilla * jest zła. – makhdumi

2

nie wiem, czy już znalazł rozwiązanie, ale narzędzie McCoy ma łatkę wiersza poleceń.

+0

masz na myśli http://hyperstruct.net/projects/spock? to jest rodzaj rozwiązania, którego szukam, ale nie jest on utrzymywany od 2008 roku i nie jest spakowany dla mac. –