跳转到主要内容

DER编码的ASN.1序列化和反序列化

项目描述

Posix Build Status Windows Build Status Docs License PyPI Python Versions Package Format Package Status

Bran提供ASN.1序列化和反序列化的转换器,以及DER-编码。

目的是为原生Python类型提供序列化格式,例如嵌套字典,其序列化是明确的且稳定的。也就是说,具有相同内容的两个值序列化成相同的字节字符串。

这使得创建哈希和MAC以验证消息完整性成为可能。

请注意,这并不使这个包成为ASN.1规范的完整实现。这不是目标。目标是只拥有Python值的稳定字节表示;特别是选择DER仅仅是因为它有助于此。

用法

代码

您只需编码一些值。在大多数情况下,您希望使用DERTranscoder类。

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

为了让分心(bran)库如此易于使用,做出了一些假设。其中影响最大的是假设任何collections.Mapping都将被编码为相同的字节表示,这意味着在解码后将成为Python的dict。对collections.Setcollections.Sequence也有类似的假设。

为了散列的目的,考虑以下代码

from bran.hash import hasher

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

h = hasher()
h.update(test)
print(h.hexdigest())  # yields SHA512 hash of the DER serialized test

import hashlib
h = hasher(hashfunc = hashlib.md5)
h.update(test)
print(h.hexdigest())  # yields MD5 hash of the DER serialized test

贡献

有关详细信息,请参阅CONTRIBUTING.md

许可证

在MITNFA(MIT +no-false-attribs)许可下发布。有关详细信息,请参阅LICENSE.txt文件。

项目详情


下载文件

下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源代码分布

bran-0.4.0.tar.gz (19.6 kB 查看哈希)

上传时间 源代码

构建分布

bran-0.4.0-py2.py3-none-any.whl (7.5 kB 查看哈希)

上传时间 Python 2 Python 3

由以下支持