首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在pyasn1中添加标记项的更简单方法

在pyasn1中添加标记项的更简单方法
EN

Stack Overflow用户
提问于 2015-07-22 03:49:55
回答 1查看 206关注 0票数 1

我发现在pyasn1中添加显式标记项的最佳方法是.明确地给它们加上标签。但这看上去过于冗长:

代码语言:javascript
复制
cert['tbsCertificate']['extensions'] = rfc2459.Extensions().subtype(explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 3))

是否有任何方法可以生成一个空值,该值不需要指定标记就可以放进像extensions这样的地方?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-08-02 07:22:07

有更简单的方法。约定是,如果不将任何组件分配给复杂pyASN.1类型的组件,则该组件将被实例化,但不会有任何值。

代码语言:javascript
复制
>>> cert = rfc2459.Certificate()
>>> print cert.prettyPrint()
Certificate:
>>> cert['tbsCertificate'] = None
>>> print cert.prettyPrint()
Certificate:
 tbsCertificate=TBSCertificate:
>>> cert['tbsCertificate']['extensions'] = None
>>> print cert.prettyPrint()
Certificate:
 tbsCertificate=TBSCertificate:
  extensions=Extensions:
>>> cert['tbsCertificate']['extensions'][0] = None
>>> print cert.prettyPrint()
Certificate:
 tbsCertificate=TBSCertificate:
  extensions=Extensions:
   Extension:
>>> cert['tbsCertificate']['extensions'][0]['extnID'] = '1.3.5.4.3.2'
>>> cert['tbsCertificate']['extensions'][0]['extnValue'] = '\x00\x00'
>>> print cert.prettyPrint()
Certificate:
 tbsCertificate=TBSCertificate:
  extensions=Extensions:
   Extension:
    extnID=1.3.5.4.3.2
    extnValue=0x0000
>>> 

这实际上允许您从Python内置或其他pyasn1对象中分步骤构建复合pyasn1对象,而不必重复其类型规范。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31553535

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档