packages.xml之package标签的子标签cert解析

packages.xml 中package标签示例如下:

 <package name="com.example.test" codePath="/data/app/~~shHJXlKlpXVeozYUHQZ35Q==/com.example.test-x1Yixry59J04iqNRdfnkvg==" nativeLibraryPath="/data/app/~~shHJXlKlpXVeozYUHQZ35Q==/com.example.test-x1Yixry59J04iqNRdfnkvg==/lib" publicFlags="537444166" privateFlags="-1937764352" ft="185a5d49e88" it="185a5d4a268" ut="185a5d4a268" version="1" userId="10128">
        <sigs count="1" schemeVersion="2">
            <cert index="7" key="308202e4308201cc020101300d06092a864886f70d010105050030373116301406035504030c0d416e64726f69642044656275673110300e060355040a0c07416e64726f6964310b30090603550406130255533020170d3232313232393033333332315a180f32303532313232313033333332315a30373116301406035504030c0d416e64726f69642044656275673110300e060355040a0c07416e64726f6964310b300906035504061302555330820122300d06092a864886f70d01010105000382010f003082010a028201010080f20d934626ebee890bbcf39edfa349ec5a79420bf2063b0d15064354a10b9cf18944c1ec314ebc1b08d09d3e1f77c82b7302e2528bdf0095435cb5ad55bc8fb923f3db6740480da3c76a0bafdaf5fad0722cac649d8b4908059b8897ba4d3fb70632f89cff1cc26f615d0b302b329d4bd6dda57f21f46254e136b513fa721236421773c923e8f0ef32a553cfe7086a76be60843fda5925b292bf72aecb3bbe001167ce7da3c6c7be1da97455e3f2ce590fd5a1ed4cce054ad0e0e3d5dad8282a771d1c674f175bcdac6f7b356fc1118687b39b0de5061291c9997bd89041d482aff16397799edb8595dbd0f99ce40fd076da1c3e6da8e5f50a3e24dd715d510203010001300d06092a864886f70d0101050500038201010006d4807c0b0f404313e70c64e9883a4c22c6516ced5caa660f4e850283e0bfebb2e7fceb8822cd7119fe9f6512f55c4c3ac1c73c6e2b6271cdc002421e9b04be315558b1a4ab55d1cc3f5eca07a88ede92230d58a6c84edf6a3f139d3ca6a18ff52cce2d5f0698691fc00e1f609992811565a756f84f980096306001943cf29db91d6966fe9cbebdb91d310fb5251d9144cf989b67d2e9ab3bfbbaecb949d6bb2a549f00d415a3a5cb41fb40cbcf62723fb2b3e2d8cf2be20ab1d6d3842ff484cbe232082b04133c1a9133a1bcaa8a2e761897434a8a6098d30c1deeb0476410643001aa5c0aab82f294a84a55a90a4b6a60ccb3deef26e00f0db7e1ec670668" />
        </sigs>
        <proper-signing-keyset identifier="13" />
    </package>

开机解析:

Settings class :
readLPw 到 readPackageLPw 然后到 addPackageLPw 放入 mPackages。
对 sigs标签的解析是在 frameworks/base/services/core/java/com/android/server/pm/PackageSignatures.java 的 readXml 方法,然后调用 readCertsListXml 来获取到 cert 的key。
最终保存到PackageSignatures 的 mSigningDetails 变量中。

这个 PackageSignatures 是 PackageSetting的一个变量,也就是上这个PackageSignatures 是一个包的签名信息 。

下面我们就来分析 这个 PackageSetting 的变量的 signatures 是如何使用的?

PackageSetting 的变量的 signatures

在系统启动的时候,会对系统的app的安装文件计算签名,如果签名和packages.xml 中的不一致, 就会删除这个app。

ParsedPackage 是对一个包文件的 解析的结果 ,

parsedPackage.getSigningDetails() 保存了签名信息 。

这个信息是从哪里来的?
在 PackageManagerService的 collectCertificatesLI 方法里面得到一个apk的签名,它调用了以下接口:
ParsingPackageUtils.getSigningDetails(parsedPackage, skipVerify)

那接下来的问题就是一个apk的签名是怎么计算出来的 ?

待续 。

打印签名:
parsedPackage.getSigningDetails().signatures[0].toCharsString()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值