是否可以在Google App Engine上签署PKCS7?

时间:2014-05-08 20:38:03

标签: google-app-engine passbook pkcs#7

我需要使用在Google App Engine(GAE)上运行的Python应用程序为某些数据创建PKCS7签名。更具体地说,我正在尝试创建Apple Passbook通行证清单的PKCS7签名; Passbook通行证要求PKCS7签名文件存在,以便成为完整有效的通行证。

我花了将近一个星期的时间研究并试图无济于事。

我可以使用openssl命令行在我的本地PC上成功创建签名:

openssl smime -binary -sign -certfile WWDR.pem -signer certificate.pem -inkey key.pem -in manifest.json -out signature -outform DER 

我还可以在我的本地PC上使用M2Crypto库成功创建签名:

from M2Crypto import BIO, SMIME, X509

s = SMIME.SMIME()
s.load_key('identity.pem')         # my certificate and private key

x509 = X509.load_cert('WWDR.pem')  # Apple's intermediate certificate
sk = X509.X509_Stack()
sk.push(x509)
s.set_x509_stack(sk)

p7 = s.sign(bio_manifest, SMIME.PKCS7_DETACHED | SMIME.PKCS7_BINARY)
pkcs7_buffer = BIO.MemoryBuffer()
p7.write_der(pkcs7_buffer)

f = open('signature', 'w')
f.write(pkcs7_buffer.read())
f.close()

但是,M2Crypto是OpenSSL的包装器,GAE不支持。

GAE支持pycrypto库,但似乎该库不支持PKCS7签名。

我也看过tlslite,这是一个纯python实现,因此应该在GAE上支持,但它似乎也不支持PKCS7签名。

我正在寻找能够在GAE上成功创建PKCS7签名的任何人的指导。如果你能指出我的纯python库或任何其他解决方案,我真的很感激。

否则,我觉得我已经达到GAE的可能范围,并且希望将我的应用程序移动到另一个平台。我有点大惊小怪,鉴于数据安全的重要性,GAE不支持openssl库;看起来他们并不认真提供一个Web应用程序服务,该服务为基础知识之外的任何事情提供支持。除非(希望)我错过了显而易见的事情。

感谢您的帮助!

0 个答案:

没有答案