1 votes

Les clés privées ne peuvent pas être vérifiées lors de la récupération

J'essaie de signer des paquets zip avant de les flasher en récupération. En utilisant les clés de test de Google, le zip peut être vérifié et flashé avec succès. Cependant, lorsque j'essaie de signer en utilisant mes clés privées, le processus de signature est correct mais la vérification échoue toujours.

Première méthode : Utilisation de keytool et jarsigner

Génération de clés privées :

keytool -genkey -v -keystore test.keystore alias zippack -keyalg RSA -keysize 2048 -validity 1000

Signature :

jarsigner -verbose -sigalg MD5withRSA -digestalg SHA1 -keystore test.keystore test.zip zippack

Résultat :

E: signature verification failed

Deuxième méthode (a) : Utilisation d'OpenSSL et de SignApk.jar

Génération de clés privées :

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

Signature :

java -jar -w signapk.jar certificate.pem key.pk8 test.zip test-signed.zip

Résultat :

E: failed to verify whole file signature
I: verify_file returned 1
E: signature verification failed

Deuxième méthode (b) : OpenSSL et SignApk.jar (changements dans les commandes)

Génération de clés privées :

Same as above

Signature :

java -jar signapk.jar certificate.pem key.pk8 test.zip test-signed.zip

Résultat :

E: signature verification failed

C'est à peu près ce que j'ai fait. Les méthodes ci-dessus fonctionnent pour les APKs, mais pas pour les zips. Quelqu'un peut-il m'aider à ce sujet ? Merci d'avance.

P.S. J'ai réussi à jeter un coup d'œil au code source de la récupération, et j'ai constaté que mes erreurs sont générées par cette partie du code : https://github.com/CyanogenMod/android_bootable_recovery/blob/jellybean/verifier.c Peut-être que ça pourrait aider à répondre.

1voto

Matthew Read Points 50150

Dans les commentaires du code :

// ... Verify it matches one of the given public
// keys.

Vous ne pouvez pas utiliser n'importe quelle vieille signature, cela irait à l'encontre du but recherché. Les APK, d'autre part, sont destinés à être créés et distribués par n'importe qui et la signature est ostensiblement pour verificar la source plutôt que limite la source.

androidalle.com

AndroidAlle est une communauté de androiders où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X