macos - mexico - licencia de programador apple
¿Cómo puedo construir un paquete de extensión de Safari desde la línea de comandos? (2)
Estas son las instrucciones de Omar Ismail, que omiten la necesidad de scripts de shell separados. Todo esto ocurrirá en un directorio safari/
, donde safari/appname.safariextension/
el directorio safari/appname.safariextension/
para convertirnos en la extensión safari/appname.safariextz
. Lo primero es firmar la extensión de manera oficial, con el Build Package
Extension Builder.
Configurar Xar:
1. Descargue y descomprima / untar https://github.com/downloads/mackyle/xar/xar-1.6.1.tar.gz en donde quiera que desee el ejecutable xar-1.6.1 (xar 1.6dev no admite el opciones que necesitamos)
2. en xar-1.6.1 /
./configure
make
sudo make install
sudo ln -s /full/path/to/xar-1.6.1/src/xar /usr/local/bin/xar161
Configura tus certificados:
1. en safari /
mkdir certs/
xar161 -f appname.safariextz --extract-certs certs/
2. Abra Keychain Access y exporte su certificado de desarrollador de Safari a safari / certs / certs.p12 (use una contraseña en blanco para certs.p12, y luego use la contraseña de su Mac para exportar el certificado)
3. en safari / certs /
openssl pkcs12 -in certs.p12 -nodes | openssl x509 -outform der -out cert.der
(same blank password)
openssl pkcs12 -in certs.p12 -nodes | openssl rsa -out key.pem
(same blank password)
openssl dgst -sign key.pem -binary < key.pem | wc -c > size.txt
Es posible que pueda obtener los certificados de certs/cert.p12
, y no necesite el paso --extract-certs
(y, por lo tanto, no necesite que la extensión se haya creado de manera oficial), pero no conozco a opensl lo suficientemente bien, y es Sólo para la configuración que necesita ese paso de todos modos.
Una vez configurado todo, para firmar la extensión:
En safari /
xar161 -czf appname.safariextz --distribution appname.safariextension/
xar161 --sign -f appname.safariextz --digestinfo-to-sign digest.dat --sig-size `cat certs/size.txt` --cert-loc certs/cert.der --cert-loc certs/cert01 --cert-loc certs/cert02
openssl rsautl -sign -inkey certs/key.pem -in digest.dat -out sig.dat
xar161 --inject-sig sig.dat -f appname.safariextz
rm -f sig.dat digest.dat
Esto fue todo en una MacBook Snow Leopard 2006, por lo que es posible que las cosas sean diferentes en una máquina que esté más actualizada.
En lugar de ir a Extension Builder> Build Package ... , me gustaría .safariextz
un paquete .safariextz
desde la carpeta MyExtension.safariextension
.
Sé que puedo descomprimir una extensión con xar -xf
. Sospecho que el camino de regreso involucra empaquetarlo con xar
, pero luego tendré que hacer la firma del código, lo que puede o no involucrar al codesign(1) .
Parece que hay una manera de parchear XAR con una opción de firma. http://code.google.com/p/xar/issues/detail?id=76#c0