将ASN.1值表示法解析为Python对象或JSON,而不需要其ASN.1模式。
asn1vnparser的Python项目详细描述
asn1vnparser
将ASN.1值表示法解析为Python对象或JSON,而不需要其ASN.1模式。在
- 免费软件:麻省理工学院许可证
- 文档:https://asn1vnparser.readthedocs.io。在
特点
- 将ASN.1值表示法解析为Python对象或JSON字符串
- 不需要ASN.1架构
限制
- 由于不使用模式知识,可能会误判ASN.1类型;请参阅类型转换部分。在
- 不支持某些ASN.1类型和语法;请参阅语法.py. 在
类型转换
asn1vnparser执行以下类型转换:
ASN.1 Type | Python Type | JSON Type | Example (ASN.1 -> Python) |
---|---|---|---|
NULL | None | null | NULL -> None |
BOOLEAN | bool | True/False | TRUE -> True |
INTEGER | int | number (int) | 3 -> 3 |
REAL | float | number (real) | 0.1 -> 0.1 |
BIT STRING (^1) | bitarray.bitarray | string (e.g. “010101”) | ‘010101’B -> bitarray.bitarray(‘010101’) |
OCTET STRING (^1) | bytes | string (e.g. “0123ab”) | ‘0123AB’H -> b’x01x23xab’ |
cstring (PrintableString, etc.) | str | string | “foobar” -> ‘foobar’ |
ENUMERATED | str | string | any-identifier -> ‘any-identifier’ |
CHOICE | Dict[str, Any] | {“string”: (any JSON object)} | alt1 : 123 -> {‘alt1’: 123} |
Open Type (e.g. type field) | Dict[str, Any] | {“String”: (any JSON object)} | Type1 : 123 -> {‘Type1’: 123} |
empty SEQUENCE or SEQUENCE OF | {} (empty dict) | {} (empty object) | {} -> {}, [] -> {} |
SEQUENCE | dict | object | {f1 val, f2 1} -> {‘f1’: ‘val’, ‘f2’: 1} |
SEQUENCE OF | list | array | [1, 2, 3] -> [1, 2, 3] |
OBJECT IDENTIFIER | List[int] | array of number (int) | {1 2 3} -> [1, 2, 3] |
(^1)CONTAINING (some_value)被简单地解释为(some_value),例如:
{ field1 123, field2 CONTAINING { field2-1 TRUE, field2-2 FALSE } }
解析为以下Python对象:
^{pr2}$学分
此包是用Cookiecutter和audreyr/cookiecutter-pypackage项目模板创建的。在
历史
0.2.0(2019-10-02)
新功能
- 值或值赋值的部分解析(parse_all选项)
>>>parse_asn1_value(..."alt1: enum1\n---this is remaining string---",...as_json=True,...parse_all=False)# as_json('{"alt1": "enum1"}','\n---this is remaining string---')
- 分析多个值分配
>>>parse_asn1_value_assignments(...'value1 INTEGER ::= 1\nvalue2 Type2 ::= the-value')[{'value_name':'value1','type_name':'INTEGER','value':1},{'value_name':'value2','type_name':'Type2','value':'the-value'}]
错误修复
- 当给定--json选项时,CLI不再崩溃。在
0.1.0(2019-09-29)
- PyPI的第一个版本。在
- 项目
标签: