Google App Engine 上可以进行 PKCS7 签名吗?

Wes*_*ing 5 google-app-engine passbook pkcs#7

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

我花了将近一个星期的时间进行研究和尝试,但没有成功。

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

openssl smime -binary -sign -certfile WWDR.pem -signer certificate.pem -inkey key.pem -in manifest.json -out signature -outform DER 
Run Code Online (Sandbox Code Playgroud)

我还可以在本地 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()
Run Code Online (Sandbox Code Playgroud)

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

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

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

我正在向任何能够在 GAE 上成功创建 PKCS7 签名的人寻求指导。如果您能给我指出一个纯 python 库或任何其他解决方案,我将非常感激。

否则,我觉得我已经达到了 GAE 的极限,并将寻求将我的应用程序转移到另一个平台。令我有点惊讶的是,事情竟然如此困难,而且考虑到数据安全的重要性,GAE 不支持 openssl 库;看来他们并没有认真提供一个网络应用程序服务来提供对基础之外的任何内容的支持。除非(希望)我错过了显而易见的事情。

谢谢你的帮助!