何时从服务器返回LICENSED_OLD_KEY?

时间:2011-07-04 15:31:46

标签: google-play code-signing license-key android-lvl

documentation for application licensingLICENSED_OLD_KEY描述为:

  

该应用程序已获得用户许可,但有一个更新的应用程序版本可用不同的密钥签名。

另一方面,documentation for signing strategies说:

  

如果您在不使用匹配证书的情况下签署新版本,则还需要为应用程序分配不同的软件包名称 - 在这种情况下,用户将新版本安装为全新的应用程序。

由于应用程序是通过其软件包名称标识的,因此这似乎表示您无法更改已发布应用程序的签名密钥。 (相反,您可以更改密钥和包,但随后它将被市场视为新的应用程序。)

我无法想到可以收到LICENSED_OLD_KEY响应的情况。我错过了什么吗?

1 个答案:

答案 0 :(得分:3)

documentation表示LICENSED_OLD_KEY

  

...可以表明已安装的应用程序版本使用的密钥对无效或受损。

看起来这个代码是在私钥被泄露或者不再受信任的情况下添加的。由于当前的IPC机制甚至不知道在客户端使用了哪个公钥,我猜想整个包名都被污染了。这个想法是,在这种情况下,应用程序应该要求用户升级到没有被污染的新版本,并且应该已经存在。由于这次升级需要切换到一个全新的不同软件包,如何做到这一点尚不清楚。我的猜测是此时此机制尚未真正使用,因此获取此代码的可能性非常接近于零。在官方LVL库的当前版本中,此代码的处理方式与正常LICENSED响应的处理方式相同。

P.S。另请注意,您混淆用于签署应用程序的密钥对和用于LVL服务的密钥对。这两者完全不同且无关。有趣的是,对于后一个密钥对,您甚至根本不了解私钥。您可以从发布者控制台获得自己的预生成公钥(每个开发人员一个),这就是您所能得到的。