我需要使用在 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 …Run Code Online (Sandbox Code Playgroud)