Parses ASN.1 value notation into a Python object or JSON without requiring its ASN.1 schema.
Project description
asn1vnparser
Parses ASN.1 value notation into a Python object or JSON without requiring its ASN.1 schema.
Free software: ISC license
Documentation: https://asn1vnparser.readthedocs.io.
Features
Parsing ASN.1 value notation into a Python object, or a JSON string
No ASN.1 Schema Required
Limitations
Since Knowledge of schema is not used, misdetection of ASN.1 types can occur; see Type Translations section.
Some ASN.1 types and grammars are not supported; see grammar.py.
Type Translations
asn1vnparser performs the following type translations:
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) is interpreted as simply (some_value), e.g.:
{ field1 123, field2 CONTAINING { field2-1 TRUE, field2-2 FALSE } }
is parsed into following Python object:
{ "field1": 123, "field2": { "field2-1": True, "field2-2": False } }
Credits
This package was created with Cookiecutter and the audreyr/cookiecutter-pypackage project template.
History
0.2.1 (2021-11-14)
Disable pyparsing v3, which breaks tests
Update license to ISC
0.2.0 (2019-10-02)
New Features
Partial parsing of a value or a value assignment (parse_all option)
>>> 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---')
Parsing multiple value assignments
>>> 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'}
]
Bug Fixes
CLI no longer crashes when given --json option.
0.1.0 (2019-09-29)
First release on PyPI.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for asn1vnparser-0.2.3-py2.py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | f0dfb60d0605c3649c9200f055a45ae47c590b06fbdfc4d4071e0a4560313379 |
|
MD5 | 474995551861d31897e9ddfd18d1f50c |
|
BLAKE2b-256 | 2493230009086aa75ad8e57c26d4f2a034ad744def362492468801466e207d16 |