2010-03-29 14 views
6

Estoy desarrollando una extensión de Firefox y me gustaría proporcionar una actualización automática a mis beta-testers (que no son conocedores de la tecnología). Lamentablemente, el servidor de actualización no proporciona HTTPS. De acuerdo con el Extension Developer Guide on signing updates, tengo que firmar mi update.rdf y proporcionar una clave pública codificada en el archivo install.rdf.Automatice la firma del manifiesto update.rdf para mi extensión de Firefox

Existe la herramienta McCoy en do all of this, pero es una herramienta de GUI interactiva y me gustaría automatizar el empaquetado de extensión con un script Ant (ya que esto es parte de un proceso mucho más grande). No puedo encontrar una descripción más precisa de lo que está sucediendo para firmar el manifiesto de la actualización .rdf que a continuación, y la fuente de McCoy es una gran cantidad de JavaScript.

El doctor dice:

El autor add-on crea un par de claves RSA de cifrado pública/privada. La parte pública de la clave está codificada DER y luego codificada en base 64 y agregada a install.rdf del complemento como una entrada updateKey.

(...)

En términos generales la información de actualización se convierte en una cadena, entonces hash utilizando un algoritmo de hash SHA512 y esto hash es firmado con la clave privada. Los datos resultantes están codificados con DER y luego codificados en base 64 para su inclusión en la actualización.rdf como una entrada de firma.

No conozco bien la codificación DER, pero parece que necesita algunos parámetros.

Así que cualquier persona sabría

  • o bien el algortihm completo a firmar el update.rdf y install.rdf usando un par de claves predefinidas, o una alternativa de secuencias de comandos a McCoy
  • si una herramienta de línea de comandos como asn1coding se suffise
  • una buena/desarrollador sencillo tutorial sobre la codificación DER

Respuesta

3

Las cosas han cambiado desde el año pasado:

bienvenida a uhura (y que se detallan en la página official MDC McCoy)

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

ventaja adicional es que se puede generar, copia de seguridad, mover sus propias claves criptográficas sin estar obligado a la base de datos de mozilla. El único inconveniente es: basado en Perl (qué tan doloroso es reparar las dependencias faltantes, con o sin CPAN)

Como nota al margen, casi había empezado a escribir mi propia secuencia de comandos basada en python, pero no pude encontrar ninguna libreta de firma RDF-aware ; o, en realidad, incluso las librerías que firman XML son basura para python (pero bueno, XML-DSig is inherently evil, ¿no?). ¿Por qué Mozilla eligió RDF para el manifiesto de extensión?

+1

en WinXP/Cygwin He cambiado la línea # 55 a nuestro $ tmp = catfile (curdir(), "update.rdf.mxtools. $$. Tmp"); en uhura bat –

+0

de hecho lo usamos en Linux!Por cierto, nos cansamos de firmar los archivos update.rdf y administrar la clave relacionada, por lo que nos movimos a HTTPS: //; hoy en día los certificados SSL son decentemente baratos ... – Stefano

+0

Ahora es 2015, y la construcción de complementos de Firefox todavía es un infierno absoluto. Estoy convencido de que * Mozilla * es malvado. – makhdumi

2

no está seguro de si ya encontrado solución, pero McCoy herramienta tiene un parche de línea de comandos.

+0

quieres decir http://hyperstruct.net/projects/spock? ese es el tipo de solución que estoy buscando, pero no se ha mantenido desde 2008 y no está empaquetada para Mac. –

Cuestiones relacionadas