在Google App Engine中编码PKCS7(python,passbook)

2024-06-01 04:32:35 发布

您现在位置:Python中文网/ 问答频道 /正文

这个问题与未来几天的NDA下的存折有关,但这是一个通用的PKCS7问题。在

我有一个.p12文件是从我的钥匙链导出的。我可以使用以下命令将其分为2个PEM

openssl pkcs12 -in "mycert.p12" -clcerts -nokeys -out certificate.pem
openssl pkcs12 -in "mycert.p12" -nocerts -out key.pem

下一步是使用此密钥和证书创建签名的PKCS7文件。使用openssl很容易做到:

^{pr2}$

问题是,假设我有证书和密钥,那么在googleappengine中实现这一点的最佳方法是什么?不幸的是,我对密码学有点陌生,但我一直在谷歌上搜索,找到了PyCrypto和keychar。在appengine上有没有一种可以接受的方法来完成这个任务,或者我需要写一些东西?有什么建议可以从哪个包开始?
我知道openssl在AppEngine上是不可用的,但是如果使用python2.7,PyCrypto是可用的,对吗?我也看到过有人让凯沙尔用它工作的帖子。但是,在给定密钥和证书的情况下,我还没有找到生成PKCS7编码数据的简单方法。在

提前感谢您的指导。在


Tags: 文件方法in密钥outpem证书openssl
1条回答
网友
1楼 · 发布于 2024-06-01 04:32:35

下面是一个使用来自https://github.com/devartis/passbook的m2加密的方法

def passwordCallback(*args, **kwds):
    return password

smime = SMIME.SMIME()
smime.load_key('key.pem', 'certificate.pem', callback=passwordCallback)        
pk7 = smime.sign(SMIME.BIO.MemoryBuffer(manifest), flags=SMIME.PKCS7_DETACHED | SMIME.PKCS7_BINARY)                
pem = SMIME.BIO.MemoryBuffer()
pk7.write(pem)
# convert pem to der
der = ''.join(l.strip() for l in pem.read().split('  -')[2].splitlines()).decode('base64')        

open('signature', 'w').write(der)

相关问题 更多 >