asn1vnparser 0.2.3

Creator: coderz1093

Last updated:

Add to Cart

Description:

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.

License

For personal and professional use. You cannot resell or redistribute these repositories in their original state.

Customer Reviews

There are no reviews.