Estoy tratando de firmar los paquetes zip antes de flashearlos en el recovery. Usando las claves de prueba de Google, el zip puede ser verificado y flasheado con éxito. Sin embargo, cuando intento firmar usando mis claves privadas, el proceso de firma es correcto pero la verificación siempre falla.
Primer método: Uso de keytool y jarsigner
Generación de claves privadas:
keytool -genkey -v -keystore test.keystore alias zippack -keyalg RSA -keysize 2048 -validity 1000
Firmando:
jarsigner -verbose -sigalg MD5withRSA -digestalg SHA1 -keystore test.keystore test.zip zippack
Resultado:
E: signature verification failed
Segundo método (a): Usando OpenSSL y SignApk.jar
Generación de claves privadas:
openssl genrsa -out key.pem 2048
openssl req -new -key key.pem -out request.pem
openssl x509 -req -days 9999 -in request.pem -signkey key.pem -out certificate.pem
openssl pkcs8 -topk8 -outform DER -in key.pem -inform PEM -out key.pk8 -nocrypt
Firmando:
java -jar -w signapk.jar certificate.pem key.pk8 test.zip test-signed.zip
Resultado:
E: failed to verify whole file signature
I: verify_file returned 1
E: signature verification failed
Segundo método (b): OpenSSL y SignApk.jar (cambios en los comandos)
Generación de claves privadas:
Same as above
Firmando:
java -jar signapk.jar certificate.pem key.pk8 test.zip test-signed.zip
Resultado:
E: signature verification failed
Eso es lo que hice. Los métodos anteriores funcionan para los APKs, pero no para los zips. ¿Alguien puede ayudar en esto? Gracias por adelantado.
P.D. He conseguido echar un vistazo al código fuente de la recuperación, y he encontrado que mis errores son generados por esta parte del código: https://github.com/CyanogenMod/android_bootable_recovery/blob/jellybean/verifier.c Tal vez pueda ayudar a responder.