Questa non è una domanda su come firmare un file .apk. Voglio sapere cosa significa in realtà la firma e come è implementato.Come viene firmato un file .apk
All'interno del file .apk c'è la cartella META-INF e all'interno ci sono due file.
primo è CERT.SF contiene SHA1 hash per i vari componenti e si presenta così:
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=
C'è anche un file chiamato CERT.RSA. Presumo che sia la chiave pubblica per verificare la firma.
La mia domanda è, dove è memorizzata la firma per l'intero file .apk? E cosa è effettivamente firmato? Potrebbe essere sia di file
- .apk utilizzato come singolo oggetto binario e questo è firmata
- o CERT.SF è firmata contenente hash individuali per diversi componenti
Sarebbe anche molto meglio se puoi indicarmi la documentazione della procedura dettagliata di firma e verifica.
Martin, sto cercando di replicare l'ultimo passaggio (generando il file .RSA) utilizzando .NET. L'input per firmare, dovrei prenderlo che sono le voci del file nel file .SF (cioè 3 linee)? Questi dati dovrebbero essere codificati come UTF8 o Unicode? Non sono in grado di produrre lo stesso output (sebbene) simile allo strumento jarsigner per lo stesso certificato/dati. Qualsiasi suggerimento sarebbe d'aiuto! –