Python 导出时间戳';签署时间';来自asn1格式的签名数据

Python 导出时间戳';签署时间';来自asn1格式的签名数据,python,timestamp,asn1,asn1crypto,Python,Timestamp,Asn1,Asn1crypto,问题是:从signeddata导出时间戳(签名时间)? 我先核实我的签名。 我有一个asn1签名的数据要验证 import cryptography import OpenSSL from OpenSSL.crypto import * from asn1crypto import cms, util, x509, pem, tsp import os import sys import base64bs64 = base64.b64decode(response) content = cm

问题是:从signeddata导出时间戳(签名时间)? 我先核实我的签名。 我有一个asn1签名的数据要验证

import cryptography
import OpenSSL
from OpenSSL.crypto import *
from asn1crypto import cms, util, x509, pem, tsp
import os
import sys
import base64bs64 = base64.b64decode(response)  
content = cms.ContentInfo.load(bs64)                 
signed_data = content['content']
encap_content_info = signed_data['encap_content_info']
tst_info = encap_content_info['content']
pk = load_pkcs7_data(FILETYPE_ASN1,bs64)
signers = signed_data['signer_infos']
我想从签名数据导出时间戳

我使用以下代码:

att = cms.CMSAttribute.load(bs64)            
oid = att._oid_specs
st = oid['signing_time']
child = st._child_spec
alt = child._alternatives
另一种尝试:

time_Res = tsp.TimeStampedData.load(bs64)
time_content = time_Res['content']
但没有结果。我怎样才能解决这个问题


问题:我的问题是获取时间戳(签名时间)

输出
>签名时间:2015-06-03 05:55:12+00:00


显示所有属性

# signed_attrs.native == List of OrderedDict with keys 'type' and 'values'
for i, attr in enumerate(signed_attrs.native):
    print("[{}]:{}:\t{}".format(i, attr['type'], attr['values']))
f = [attr['values'] for attr in signed_attrs.native if attr['type'] == 'signing_time'][0]
print(f)
>>> [datetime.datetime(2015, 6, 3, 5, 55, 12, tzinfo=datetime.timezone.utc)]
输出

[0]:content_type:   ['data']
[1]:signing_time:   [datetime.datetime(2015, 6, 3, 5, 55, 12, tzinfo=datetime.timezone.utc)]
[2]:message_digest: [b'R\x88%G\x15[-PDh\x05$\xc8qZ\xccb(6\x17\xb7h\xee\xa1\x12\x90\x96O\x94\xae\xdby']
[3]:1.2.840.113549.1.9.15:  [OrderedDict([('0', OrderedDict([('0', '2.16.840.1.101.3.4.1.42')])), ... (omitted for brevity)]

按名称查找属性

# signed_attrs.native == List of OrderedDict with keys 'type' and 'values'
for i, attr in enumerate(signed_attrs.native):
    print("[{}]:{}:\t{}".format(i, attr['type'], attr['values']))
f = [attr['values'] for attr in signed_attrs.native if attr['type'] == 'signing_time'][0]
print(f)
>>> [datetime.datetime(2015, 6, 3, 5, 55, 12, tzinfo=datetime.timezone.utc)]

使用Python:3.5.3 asn1crypto:0.24.0进行测试

我的问题是获取时间戳(签名时间)。不是验证数据。注意!不,我没有。我的朋友,我想通过asn1crypto库从python中的签名数据导出签名时间(称为时间戳)。我不明白你坚持的理由。谢谢。非常感谢你。