众所周知,manifest.mf包含以base64编码的用于apk中所有文件的sha1摘要,cert.sf包含manifest.mf文件及其所有项的sha1摘要,cert.rsa包含cert.sf文件的签名和证书。
问题是:
为什么不直接在manifest.mf上签名并将签名保存在cert.rsa中呢?
最佳答案
apk保护链是(rsa dsa ec)->.sf->manifest.mf->每个受完整性保护的jar条目的内容。
根据Android官方页面[网站][1]
.sf文件包含META-INF/manifest.mf的整个文件摘要和META-INF/manifest.mf的每个部分的摘要。已验证manifest.mf的整个文件摘要。如果失败,则改为验证每个manifest.mf节的摘要。
因此,添加cert.sf以提供用于签名验证的回退机制。