Last updated:
0 purchases
asn1vnparser 0.2.3
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.
For personal and professional use. You cannot resell or redistribute these repositories in their original state.
There are no reviews.