在Google App Engine上使用PyCrypto从GameCenter导入公钥



我正在尝试使用Apple记录的方法验证远程服务器上的GameCenter播放器:

GKLocalPlayer generateIdentityVerificationSignatureWithCompletionHandler:

在iOS上调用此方法会返回指向此文件的链接(此文件位置相当静态,您可以下载它以查看其内容):

https://sandbox.gc.apple.com/public-key/gc-sb.cer

此文件包含必须在服务器上下载的公钥,才能开始本地 GameCenter 玩家的验证过程。

我正在为我的项目使用Google App Engine,这限制了我使用PyCrypto库。 我正在尝试使用这些调用导入此文件(为清楚起见,我在此处直接使用文件名):

from Crypto.PublicKey import RSA 
apple_cert = urllib2.urlopen("https://sandbox.gc.apple.com/public-key/gc-sb.cer").read()
rsakey = RSA.importKey(apple_cert) 

不幸的是,此操作失败并显示以下消息:

raise ValueError("RSA key format is not supported")

据我了解,PyCrypto期待一个DER格式的证书,我认为这是苹果提供的。 有谁知道我做错了什么,或者可以指出我正确的方向? 谢谢。

此外,我已经将我的 GAE 项目设置为使用最新版本的 PyCrypto,我认为是 2.6。

事实证明,让GameCenter身份验证与Google App Engine一起工作的过程非常麻烦。

事实证明,原因是因为从Apple下载的文件实际上是X.509证书。 必须先从此证书中提取公钥,然后才能使用它。 这个答案在类似的帖子中得到了证明:

如何将 X509 证书与 PyCrypto 一起使用?

有关使用Google App Engine验证GameCenter用户的完整解决方案,请参阅我在这篇文章中的回答:

如何在我的"第三方服务器"上验证GKLocalPlayer?

相关内容

  • 没有找到相关文章

最新更新