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.
Codecs under development:
Basic Encoding Rules (BER)
Distinguished Encoding Rules (DER)
JSON Encoding Rules (JER)
Aligned Packed Encoding Rules (PER)
Unaligned Packed Encoding Rules (UPER)
XML Encoding Rules (XER)
Planned codecs:
Octet Encoding Rules (OER)
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.
Install prerequisites.
pip install -r requirements.txtImplement the new feature or bug fix.
Implement test case(s) to ensure that future changes do not break legacy.
Run the tests.
make testCreate a pull request.
Specifications
ASN.1 specifications released by ITU.
General
Encodings
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
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file asn1tools-0.25.0.tar.gz.
File metadata
- Download URL: asn1tools-0.25.0.tar.gz
- Upload date:
- Size: 545.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5cc2fecdef10ed0a9e36afacedf31eb59a8c69b36c01089c8f2fa080b94c3a46
|
|
| MD5 |
c9a1f8275e02cacbe7ed2ab279a13393
|
|
| BLAKE2b-256 |
f93f1c7ad1ed06e2a666a2688c5b26e241e8d638ecd4f16a071abd45c0504ee7
|
File details
Details for the file asn1tools-0.25.0-py2.py3-none-any.whl.
File metadata
- Download URL: asn1tools-0.25.0-py2.py3-none-any.whl
- Upload date:
- Size: 47.1 kB
- Tags: Python 2, Python 3
- Uploaded using Trusted Publishing? No
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
75cfe735c42e0c453efb671b6fdd32d7e5e3d69f077b786d6599198b539ed7cd
|
|
| MD5 |
17ddef18836dc78976b5763d2a6a334e
|
|
| BLAKE2b-256 |
8a1529ade31f393a57d2203eeb775fc4481bf2667852b22ab432373e99d16618
|