2010-03-29 8 views
6

Sto sviluppando un'estensione firefox e vorrei fornire un aggiornamento automatico ai miei beta-tester (che non sono esperti di tecnologia). Sfortunatamente, il server di aggiornamento non fornisce HTTPS. Secondo lo Extension Developer Guide on signing updates, devo firmare il mio update.rdf e fornire una chiave pubblica codificata nel file install.rdf.Automatizza la firma di update.rdf manifest per la mia estensione firefox

C'è lo strumento McCoy su do all of this, ma è uno strumento GUI interattivo e mi piacerebbe automatizzare la confezione dell'estensione utilizzando uno script Ant (poiché questo è parte di un processo molto più grande). Non riesco a trovare una descrizione più precisa di ciò che sta accadendo per firmare l'update.rdf manifest di seguito, e la fonte McCoy è un sacco di javascript.

Il dottore dice:

L'autore add-on crea una RSA coppia di chiavi crittografiche pubblica/privata. La parte pubblica della chiave è codificata da DER e quindi codificata in base 64 e aggiunta al file install.rdf del componente aggiuntivo come voce updateKey.

(...)

In parole povere le informazioni di aggiornamento viene convertito in una stringa, quindi hash utilizzando un algoritmo di hashing SHA512 e questo hash è firmato con la chiave privata. I dati risultanti sono codificati con DER e quindi codificati in base 64 per essere inclusi nell'aggiornamento.rdf come una voce di firma.

Non conosco bene la codifica DER, ma sembra che abbia bisogno di alcuni parametri.

Così qualcuno dovrebbe sapere

  • sia l'algoritmo desiderato completo di firmare l'update.rdf e install.rdf utilizzando una coppia di chiavi predefinito, o un script alternativa al McCoy
  • sia uno strumento da riga di comando come asn1coding sarà suffise
  • una buona/semplice tutorial sviluppatore codifica DER

risposta

3

Le cose si sono mosse dallo scorso anno:

benvenuto a uhura (e sono elencati nella pagina official MDC McCoy)

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

Ulteriori vantaggio è che si può generare, il backup, spostare le chiavi crittografiche senza essere vincolato al DB di Mozilla. L'unico inconveniente è: Perl based (quanto doloroso correggere dipendenze mancanti, con o senza CPAN)

Come nota a margine, avevo quasi iniziato a scrivere il mio script basato su Python, ma non ho trovato alcuna lib di firma RDF-aware ; o, in realtà, anche le librerie di firma XML sono crap per Python (ma hey, XML-DSig is inherently evil, non è vero). Perché Mozilla ha scelto RDF per l'estensione manifest?

+1

sotto WinXP/Cygwin Ho cambiato la riga n. 55 a il nostro $ tmp = catfile (curdir(), "update.rdf.mxtools. $$. Tmp"); in uhura bat –

+0

anzi lo usiamo su linux!btw, ci siamo stufati di firmare i file update.rdf e di gestire la chiave correlata, quindi ci siamo spostati su HTTPS: //; al giorno d'oggi i certificati SSL sono decentemente economici ... – Stefano

+0

È ora il 2015 e la costruzione di addon di Firefox è ancora un inferno. Sono convinto che * Mozilla * sia malvagio. – makhdumi

2

non è sicuro se si già trovato soluzione, ma strumento di McCoy ha una patch riga di comando.

+0

intendi http://hyperstruct.net/projects/spock? questo è il tipo di soluzione che sto cercando, ma non è stato mantenuto dal 2008 e non è stato confezionato per il Mac. –