8 votos

El esquema de firma APK v4 no puede ser verificado con apksigner

Estoy probando el Esquema de firma APK v4 introducido en Android 11. Uso el apksigner del Sdk de Android y parece funcionar bien: firma el .apk y genera el archivo .idsig como se espera:

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

$ ls
app.apk  app.apk.idsig

Sin embargo, cuando utilizo la misma herramienta apksigner para verificar la firma, sale lo siguiente:

$ 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

Así que verifica con éxito basándose en el APK Signature Scheme v3 y no tiene en cuenta el .idsig en absoluto (modificar el archivo .idsig no afecta al resultado de la verificación). Espero que Verified using v4 scheme (APK Signature Scheme v4): para ser también true .

¿Me estoy perdiendo algo?

9voto

pr0nin Puntos 353

El esquema de firma de APK v4 es un "formato de firma independiente", lo que significa que la firma se guarda en un archivo separado.

Para apksigner tienes que especificar este archivo de firma separado usando el parámetro no documentado -v4-signature-file <idsig file> .

Así que el comando completo para verificar un APK con firma desprendida v4 es:

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

La versión actual de apksigner parece que echa de menos esta opción en el texto de ayuda del comando, pero estoy seguro de que había al menos una versión que ya lo mencionaba (no la encuentro en este momento).

El parámetro se menciona, por ejemplo, en el código fuente de apksigner

PreguntAndroid.com

PreguntAndroid es una comunidad de usuarios de Android en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X