8 votes

Le schéma de signature APK v4 ne peut pas être vérifié avec apksigner

J'essaie le Schéma de signature APK v4 introduite dans Android 11. J'utilise le apksigner de l'Android Sdk et il semble fonctionner correctement : il signe le .apk et génère le fichier .idsig comme prévu :

$ apksigner sign -v --ks ~/keystore.jks --ks-key-alias testkey app.apk
Keystore password for signer #1:
Signed

$ ls
app.apk  app.apk.idsig

Cependant, lorsque j'utilise le même outil apksigner pour vérifier la signature, le résultat est le suivant :

$ apksigner verify -v ./app.apk
Verifies
Verified using v1 scheme (JAR signing): true
Verified using v2 scheme (APK Signature Scheme v2): true
Verified using v3 scheme (APK Signature Scheme v3): true
Verified using v4 scheme (APK Signature Scheme v4): false
Verified for SourceStamp: false
Number of signers: 1
WARNING: META-INF/com/android/build/gradle/app-metadata.properties not protected by signature. Unauthorized modifications to this JAR entry will not be detected. Delete or move the entry outside of META-INF/.
... # and a bunch of other v1-related warnings

Il vérifie donc avec succès sur la base de APK Signature Scheme v3 et ne prend pas du tout en compte le .idsig (la modification du fichier .idsig n'affecte pas le résultat de la vérification). J'attends Verified using v4 scheme (APK Signature Scheme v4): d'être également true .

Est-ce que j'ai manqué quelque chose ?

9voto

pr0nin Points 353

Le schéma de signature APK v4 est un "format de signature détaché", ce qui signifie que la signature est enregistrée dans un fichier séparé.

Pour apksigner, vous devez spécifier ce fichier de signature détaché à l'aide du paramètre non documenté -v4-signature-file <idsig file> .

Donc la commande complète pour vérifier un APK avec une signature détachée v4 est :

apksigner verify -v -v4-signature-file <idsig file> <apk file>

La version actuelle d'apksigner semble ne pas avoir cette option dans le texte d'aide de la commande, mais je suis sûr que j'avais au moins une version qui la mentionnait déjà (je ne la trouve pas pour le moment).

Le paramètre est par exemple mentionné dans le document code source de apksigner

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