Skip to main content

DER-Encoded ASN.1 Serialization and Deserialization

Project description

Build Status PyPI Docs

Bran provides transcoders for ASN.1 serialization and deserialization, and DER-encoding.

The purpose is to provide a serialization format for native Python types, such as nested dicts, whose serialization is unambiguous and stable, that is two values with the same contents serialize to the same byte string.

That makes it possible to create hashes and MACs to verify message integrity.

Usage

Code

You just encode some values. In most cases, you’ll want to use the DERTranscoder class.

test = { 'some': { 'nested': 42, 'value': (0, 1, False) } }

from bran import DERTranscoder
transcoder = DERTranscoder()

encoded = transcoder.encode(test)
decoded = transcoder.decode(encoded)

assert decoded == test

In order for bran to be this simple to use, some assumptions are made. The one with the most impact is that it treats any collections.Mapping will be encoded to the same byte representation, which means when decoded, it will become a Python dict. Similar assumptions are made for collections.Set and collections.Sequence.

Setup

Use virtualenv to create a virtual environment and change to it or not, as you see fit.

Then install the requirements:

$ pip install -r requirements.txt

Documentation

After setup, run the following to generate documentation:

$ python setup.py build_sphinx

Development

Test Execution

Run the whole test suite:

$ python setup.py test

Run a single test scenario:

$ pytest tests/test_asn1transcoder.py::test_none

Run tests on multiple Python versions:

$ tox

Run tests on Python 2.7:

$ tox -e py27

A simple test coverage report is automatically generated.

License

Licensed under MITNFA (MIT +no-false-attribs) License. See the LICENSE.txt file for details.

Project details


Download files

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

Filename, size & hash SHA256 hash help File type Python version Upload date
bran-0.1.0-py2.py3-none-any.whl (8.1 kB) Copy SHA256 hash SHA256 Wheel py2.py3 May 22, 2017
bran-0.1.0.tar.gz (17.9 kB) Copy SHA256 hash SHA256 Source None May 22, 2017

Supported by

Elastic Elastic Search Pingdom Pingdom Monitoring Google Google BigQuery Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN DigiCert DigiCert EV certificate StatusPage StatusPage Status page