ASN.1 parsing, encoding and decoding.
Project description
About
A Python package for ASN.1 parsing, encoding and decoding.
This project is under development and does only support a subset of the ASN.1 specification syntax. Basic Encoding Rules (BER), Distinguished Encoding Rules (DER), JSON Encoding Rules (JER), Aligned Packed Encoding Rules (PER), Unaligned Packed Encoding Rules (UPER) and XML Encoding Rules (XER) codecs are also under development.
Project homepage: https://github.com/eerimoq/asn1tools
Documentation: http://asn1tools.readthedocs.org/en/latest
Installation
pip install asn1tools
Example Usage
This is an example ASN.1 specification defining the messages of a fictitious Foo protocol (based on the FooProtocol on Wikipedia).
Foo DEFINITIONS ::= BEGIN
Question ::= SEQUENCE {
id INTEGER,
question IA5String
}
Answer ::= SEQUENCE {
id INTEGER,
answer BOOLEAN
}
END
Scripting
Compile the ASN.1 specification, and encode and decode a question using the default codec (BER).
>>> import asn1tools
>>> foo = asn1tools.compile_files('tests/files/foo.asn')
>>> encoded = foo.encode('Question', {'id': 1, 'question': 'Is 1+1=3?'})
>>> encoded
bytearray(b'0\x0e\x02\x01\x01\x16\x09Is 1+1=3?')
>>> foo.decode('Question', encoded)
{'id': 1, 'question': 'Is 1+1=3?'}
The same ASN.1 specification, but using the PER codec.
>>> import asn1tools
>>> foo = asn1tools.compile_files('tests/files/foo.asn', 'per')
>>> encoded = foo.encode('Question', {'id': 1, 'question': 'Is 1+1=3?'})
>>> encoded
bytearray(b'\x01\x01\tIs 1+1=3?')
>>> foo.decode('Question', encoded)
{'id': 1, 'question': 'Is 1+1=3?'}
See the examples folder for additional examples.
Command line tool
Decode given encoded Question using the default codec (BER).
$ asn1tools decode tests/files/foo.asn Question 300e0201011609497320312b313d333f
id: 1
question: Is 1+1=3?
$
Decode given encoded Question using the UPER codec.
$ asn1tools decode --codec uper tests/files/foo.asn Question 01010993cd03156c5eb37e
id: 1
question: Is 1+1=3?
$
Contributing
Fork the repository.
Implement the new feature or bug fix.
Implement test case(s) to ensure that future changes do not break legacy.
Run the tests.
make test
Create a pull request.
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 asn1tools-0.15.0-py2.py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 20083da579fb8a1ecc46e2c2085852a0814e523c4ef48dec8a52f6baee4e2e96 |
|
MD5 | da580566bd0c0657819b29bafbc359bf |
|
BLAKE2b-256 | 05ea70d9b864209b3feb3be9cb8f41659f315b7558360fe7089603af179510da |