No se trata de cómo firmar un archivo .apk. Quiero saber qué significa realmente la firma y cómo se implementa.Cómo se firman los archivos .apk
Dentro del archivo .apk hay una carpeta META-INF y dentro hay dos archivos.
El primero es CERT.SF contiene hashes SHA1 para varios componentes y se ve así:
Name: res/layout/main.xml
SHA1-Digest: Cox/T8fN1X9Hv4VqjH9YKqc/MsM=
Name: AndroidManifest.xml
SHA1-Digest: wZ418H9Aix1LNch3ci7c+cHyuZc=
Name: resources.arsc
SHA1-Digest: P+uoRrpFyVW6P3Wf+4vuR2ZSuXY=
Name: classes.dex
SHA1-Digest: cN3zXtGii9zuTOkBqDTLymeMZQI=
También hay un archivo llamado CERT.RSA. Supongo que es la clave pública para verificar la firma.
Mi pregunta es, ¿dónde se almacena la firma de todo el archivo .apk? Y lo que en realidad está firmado? Podría ser cualquiera de los archivos
- .apk utilizado como un único objeto binario y esto está firmado
- o CERT.SF está firmado que contiene claves individuales para los diferentes componentes
Sería también mucho mejor si puede dirigirme hacia la documentación del proceso detallado de firma y verificación.
Martin, estoy tratando de replicar el último paso (generar el archivo .RSA) usando .NET. La entrada para firmar, ¿debo considerar que son las entradas de archivo en el archivo .SF (es decir, 3 líneas)? ¿Deberían estos datos estar codificados como UTF8 o Unicode? No puedo producir la misma salida (aunque) similar a la herramienta jarsigner para el mismo certificado/datos. ¡Cualquier pista ayudaría! –