我正试图编写客户端数字时间戳程序,却一直在创建时间戳请求(.tsr)文件
以下是.tsr文件解码后的实际格式(基于RFC3161)
Sequence:
field-0=1
field-1=Sequence:
field-0=Sequence:
field-0=2.16.840.1.101.3.4.2.3
field-1=
field-1=0x899ca19e19047eb08841d0ed0e8fa19b504927fafc126e5b7f100de56549ccab4d66fe92db70aa5d99e276c1c39a21cc0166e037406a0d1644dc2103181d86f6
我使用pyasn1模块复制格式并获得以下内容(在将其编码为.tsr之前)
TimeStampReq:
version=1
messageImprint=MessageImprint:
hashAlgorithm=AlgorithmIdentifier:
algorithm=2.16.840.1.101.3.4.2.3
hashedMessage=0x899ca19e19047eb08841d0ed0e8fa19b504927fafc126e5b7f100de56549ccab4d66fe92db70aa5d99e276c1c39a21cc0166e037406a0d1644dc2103181d86f6
nonce=5580318124348686814
这是我写的代码,它给出了后一种格式
"""
Timestamp request class
"""
from pyasn1.type import univ, namedtype, namedval, tag
from pyasn1_modules.rfc2459 import Extensions, AlgorithmIdentifier
class MessageImprint(univ.Sequence):
"""
A message imprint as defined per IETF RFC 3161
"""
componentType = namedtype.NamedTypes(
namedtype.NamedType('hashAlgorithm', AlgorithmIdentifier()),
namedtype.NamedType('hashedMessage', univ.OctetString())
)
class TSAPolicyId(univ.ObjectIdentifier):
pass
class TimeStampReq(univ.Sequence):
"""
A timestamp request as defined per IETF RFC 3161
"""
componentType = namedtype.NamedTypes(
namedtype.NamedType('version', univ.Integer(1)),
namedtype.NamedType('messageImprint', MessageImprint()),
namedtype.OptionalNamedType('reqPolicy', TSAPolicyId()),
namedtype.OptionalNamedType('nonce', univ.Integer()),
namedtype.DefaultedNamedType('certReq', univ.Boolean(False)),
namedtype.OptionalNamedType('extensions', Extensions().subtype(
implicitTag=tag.Tag(tag.tagClassUniversal, tag.tagFormatSimple, 0)
))
)
tagSet = univ.Sequence.tagSet.tagImplicitly(
tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 0))
为了创建正确格式的.tsr文件,我必须做些什么
我终于明白了,这其实是个愚蠢的问题
第一个字段不使用任何ASN.1格式进行解码,所有字段区域都未命名
第二个我用我在第一个地方写的TimeStampReq格式解码它,因此所有字段都被命名
相关问题 更多 >
编程相关推荐