Sze*_*eri 20 android code-signing
这不是关于如何签署.apk文件的问题.我想知道签名实际意味着什么以及如何实施.
在.apk文件里面有META-INF文件夹,里面有两个文件.
第一个是CERT.SF包含各种组件的SHA1哈希,如下所示:
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=
Run Code Online (Sandbox Code Playgroud)
还有一个名为CERT.RSA的文件.我认为这是验证签名的公钥.
我的问题是,整个.apk文件的签名存储在哪里?实际上签了什么?它可能是
如果您能够向我指出详细签名和验证过程的文档,那也会好得多.
小智 24
事实上,这不是一个特定的Android问题,而是一般的Java问题,但无论如何我都会发布一个答案......
首先:只签署XXX.SF文件; 这意味着XXX.SF文件中提到的所有文件都是"间接"签名的,因为XXX.SF包含它们的哈希值.事实上,所有不在"Meta-Inf"中的文件都应该有哈希值!整个.apk存档未签名.
XXX.SF文件或多或少是MANIFEST.MF文件的副本.有一行"SHA1-Digest-Manifest"是"MANIFEST.MF"本身的SHA-1哈希值; "SHA1-Digest"行不包含文件的哈希值,而是Manifest.MF文件中树对应行的哈希值,如下所示:
SHA1("名称:文件名"+ CR + LF +"SHA1-Digest:"+ SHA1(file_content)+ CR + LF + CR + LF)
XXX.DSA/.RSA的文件格式与S/MIME电子邮件签名(对于XXX.SF的内容)相同,但数据不是base64编码的,也不使用标题/尾部行."openssl smime -sign -outform DER"将创建此格式.
可以使用多个证书对ZIP文件进行签名.在这种情况下,将存在多对(XXX.SF/.RSA,YYY.SF/.RSA,...).
| 归档时间: |
|
| 查看次数: |
12935 次 |
| 最近记录: |