我正在尝试使用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格式的证书,这是我认为Apple提供的。有谁知道我做错了什么,或者能指出我正确的方向?感谢。
另外,我已经设置了我的GAE项目以使用最新版本的PyCrypto,我认为它是2.6。
使用Google App Engine进行GameCenter身份验证的过程非常麻烦。
答案 0 :(得分:0)
事实证明,原因是从Apple下载的文件实际上是X.509证书。必须先从此证书中提取公钥,然后才能使用它。这个答案在类似的帖子中得到了证明:
How do I use a X509 certificate with PyCrypto?
有关使用Google App Engine验证GameCenter用户的完整解决方案,请参阅此帖子中的回答:
How to authenticate the GKLocalPlayer on my 'third party server'?