我正在尝试使用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?