Skip to main content

Python-ASN1 is a simple ASN.1 encoder and decoder for Python 2.7 and 3.5+.

Features

  • Support BER (parser) and DER (parser and generator) encoding (including indefinite lengths)

  • 100% python, compatible with version 2.7, 3.5 and higher

  • Can be integrated by just including a file into your project

  • Support most common ASN.1 types including REAL (encoding and decoding).

Dependencies

Python-ASN1 relies on Python-Future for Python 2 and 3 compatibility. To install Python-Future:

pip install future

Python-ASN1 relies on type hints. For Python 2.7, a backport of the standard library typing module has to be installed:

pip install typing

This is not necessary for Python 3.5 and higher since it is part of the standard library.

How to install Python-asn1

Install from PyPi with the following:

pip install asn1

or download the repository from GitHub and install with the following:

python setup.py install

You can also simply include asn1.py into your project.

How to use Python-asn1

Encoding

If you want to encode data and retrieve its DER-encoded representation, use code such as:

import asn1

encoder = asn1.Encoder()
encoder.start()
encoder.write('1.2.3', asn1.Numbers.ObjectIdentifier)
encoded_bytes = encoder.output()

Decoding

If you want to decode ASN.1 from DER or BER encoded bytes, use code such as:

import asn1

decoder = asn1.Decoder()
decoder.start(encoded_bytes)
tag, value = decoder.read()

Documentation

The complete documentation is available on Read The Docs:

python-asn1.readthedocs.io

License

Python-ASN1 is free software that is made available under the MIT license. Consult the file LICENSE that is distributed together with this library for the exact licensing terms.

Changelog

3.0.0 (2025-03-03)

  • Encoding and decoding of the ASN.1 REAL type

  • Support of indefinite lengths

  • Encoding and decoding of complex data (lists, sets, …)

  • Add support for streams (file-like objects) when encoding and decoding

  • Optionally return the number of unused bits when decoding a BitString (see also #276)

  • #286 - Add ASN.1:2008 compliance test suite

2.8.0 (2025-02-20)

  • PR #285 - Use Enum with Tag for pretty representation (thanks to @Julien00859)

  • Make explicit that Python 3.12 and 3.13 are supported

  • Fix some links in the documentation

  • Add a Docker file for testing

2.7.1 (2024-08-07)

  • Fix OID encoding/decoding for the first octet according to ITU-T X.690 (thanks to Ian Neal)

2.7.0 (2023-01-17)

  • Add context manager support (thanks to Mastermind-U)

2.6.0 (2022-07-15)

  • Add support for GeneralizedTime (thanks to vollkorntomate)

2.5.0 (2022-03-03)

  • Fixes to BitString decoding and encoding of IA5String and UTCTime (thanks to 0xbf00)

2.4.2 (2021-10-29)

  • Fix a minor mistake in the dump.py example

  • Add Python 3.9 and 3.10

2.4.1 (2020-07-16)

  • Fix #89 - Replace explicit references to enum34 by enum-compat

2.4.0 (2020-06-23)

  • Fix #21 - Invalid decoding in non-Universal classes

  • Fix #57 - Invalid encoding of non-Universal classes

2.3.1 (2020-04-06)

  • No change in code, only in packaging and in texts (README, …)

2.3.0 (2020-04-05)

  • Tests: Replace nose by pytest

  • Add Python 3.8, remove Python 3.4 support

  • PR#26 (from rumbah): Add test for default (implicit) encoding types

  • PR#25 (from thomwiggers): Attempt to support BIT STRING

  • Fix wrong example code, see #27

  • (from jcrowgey) Makes the package usable with pip install

  • Remove support of Python 3.3 (some dependencies do not support 3.3)

  • PR#15 (from ThePlasmaRailgun) Fix parsing of object identifier

  • PR#10 (from robinleander): Allow user to determine decoding tagtype

2.2.0 (2017-10-30)

  • Use “true” enums instead of classes. Use enun34 backport for old Python versions.

2.1.1 (2017-10-30)

  • Fix a bug (#9): two’s complement corner case with values such as -32769. Add new test cases to test them.

2.1.0 (2016-12-18)

  • Add more documentation

  • Use (simulated) enumerations

  • Add Python 2.6 in automated checks and tests

  • Add type hints (for static checking) and fix some code

2.0.0 (2016-12-16)

  • First public release by Sebastien Andrivet

  • Support both python 2 and 3 (with Python-Future)

  • All strings are now in unicode

  • Add more ASN.1 tags (like PrintableString)

  • Fix errors in the example (dump.py)

  • Code reorganization

0.9 (2011-05-18)

  • Initial public release by Geert Jansen

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

asn1-3.0.0.tar.gz (43.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

asn1-3.0.0-py2.py3-none-any.whl (14.8 kB view details)

Uploaded Python 2Python 3

File details

Details for the file asn1-3.0.0.tar.gz.

File metadata

  • Download URL: asn1-3.0.0.tar.gz
  • Upload date:
  • Size: 43.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for asn1-3.0.0.tar.gz
Algorithm Hash digest
SHA256 204fbce2357e1203d773d62283d00ef755cf8e1510c6f3307b19bc9c86de1701
MD5 aab30f1c4c757d6c54ef824bfcd784c0
BLAKE2b-256 d67631f7c64beda24134a3c2b3feca6fe38250be8d6b4b1ec5a097f17a90b274

See more details on using hashes here.

File details

Details for the file asn1-3.0.0-py2.py3-none-any.whl.

File metadata

  • Download URL: asn1-3.0.0-py2.py3-none-any.whl
  • Upload date:
  • Size: 14.8 kB
  • Tags: Python 2, Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for asn1-3.0.0-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 45c3a13f1b8edf95b8f28f81e213bf5dcfdf2ee58d2e594cb14d7a5a120d6f6c
MD5 7a13408dc7cbc809893fec137245a15c
BLAKE2b-256 e7d38a598147af245d38f8ab3d571d29d381d1de5c1c28884ed24ea36a8bb951

See more details on using hashes here.

Release history Release notifications | RSS feed

3.3.0

2 files

3.2.0

2 files

3.1.0

2 files

3.0.1

2 files

This release

3.0.0 This release

2 files

2.8.0

2 files

2.7.1

2 files

2.7.0

2 files

2.6.0

2 files

2.5.0

2 files

2.4.2

2 files

2.4.1

2 files

2.4.0

2 files

2.3.1

2 files

2.3.0

2 files

2.2.0

2 files

2.1.1

2 files

2.1.0

2 files

2.0.0

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page