-PyDERASN -- strict and fast ASN.1 DER/BER library for Python
+PyDERASN -- strict and fast ASN.1 DER/CER/BER library for Python
I'm going to build my own ASN.1 library with slots and blobs!
(C) PyDERASN's author
-* BER/CER/DER decoding, DER encoding
+* BER/CER/DER decoding, strict DER validation, DER/CER encoding
* Basic ASN.1 data types (X.208): BOOLEAN, INTEGER, BIT STRING, OCTET
STRING, NULL, OBJECT IDENTIFIER, ENUMERATED, all strings, UTCTime,
GeneralizedTime, CHOICE, ANY, SEQUENCE (OF), SET (OF)
* Size constraints checking
* Working with sequences as high level data objects with ability to
(un)marshall them
+* Aimed to be complaint with X.690-201508
+* Streaming decoding and encoding capabilities, allowing working with
+ very small memory footprint
* Python 2.7/3.5/3.6 compatibility
* Automatic decoding of DEFINED BY fields
* Ability to know exact decoded objects offset and lengths in the binary
-* Pretty printer and command-line decoder, that could conveniently
- replace utilities like either dumpasn1 or openssl asn1parse
+* Ability to allow BER-encoded data with knowing if any of specified
+ field has either DER or BER encoding (or possibly indefinite-length
+ encoding)
+* Ability to use mmap-ed files, memoryviews, iterators and CER encoder
+ dealing with the writer, giving ability to create huge ASN.1 encoded
+ files without storing all the data in the memory first
+* Ability to decode files in event generation mode, without the need to
+ keep all the data and decoded structures in the memory
* __slots__, copy.copy() friendliness
* Workability with pickle
* Cython compatibility
+* Descriptive errors, with decode paths
+* Pretty printer and command-line decoder, that could conveniently
+ replace utilities like either dumpasn1 or openssl asn1parse
pyderasn is free software: see the file COPYING.LESSER for copying conditions.
-============================================================
-PyDERASN -- strict and fast ASN.1 DER/BER library for Python
-============================================================
+================================================================
+PyDERASN -- strict and fast ASN.1 DER/CER/BER library for Python
+================================================================
..
Preferable way is to :ref:`download <download>` tarball with the
signature from `official website <http://pyderasn.cypherpunks.ru/>`__::
- $ [fetch|wget] http://pyderasn.cypherpunks.ru/pyderasn-7.0.tar.xz
- $ [fetch|wget] http://pyderasn.cypherpunks.ru/pyderasn-7.0.tar.xz.sig
- $ gpg --verify pyderasn-7.0.tar.xz.sig pyderasn-7.0.tar.xz
- $ xz --decompress --stdout pyderasn-7.0.tar.xz | tar xf -
- $ cd pyderasn-7.0
+ $ [fetch|wget] http://pyderasn.cypherpunks.ru/pyderasn-7.1.tar.xz
+ $ [fetch|wget] http://pyderasn.cypherpunks.ru/pyderasn-7.1.tar.xz.sig
+ $ gpg --verify pyderasn-7.1.tar.xz.sig pyderasn-7.1.tar.xz
+ $ xz --decompress --stdout pyderasn-7.1.tar.xz | tar xf -
+ $ cd pyderasn-7.1
$ python setup.py install
# or copy pyderasn.py (+six.py, possibly termcolor.py) to your PYTHONPATH
You could use pip (**no** OpenPGP authentication is performed!) with PyPI::
$ cat > requirements.txt <<EOF
- pyderasn==7.0 --hash=sha256:TO-BE-FILLED
+ pyderasn==7.1 --hash=sha256:TO-BE-FILLED
six==1.14.0 --hash=sha256:236bdbdce46e6e6a3d61a337c0f8b763ca1e8717c03b369e87a7ec7ce1319c0a
EOF
$ pip install --requirement requirements.txt
News
====
+.. _release7.1:
+
+7.1
+---
+
+* README updating
+
.. _release7.0:
7.0
#!/usr/bin/env python
# coding: utf-8
# cython: language_level=3
-# PyDERASN -- Python ASN.1 DER/BER codec with abstract structures
+# PyDERASN -- Python ASN.1 DER/CER/BER codec with abstract structures
# Copyright (C) 2017-2020 Sergey Matveev <stargrave@stargrave.org>
#
# This program is free software: you can redistribute it and/or modify
def colored(what, *args, **kwargs):
return what
-__version__ = "7.0"
+__version__ = "7.1"
__all__ = (
"agg_octet_string",
def main(): # pragma: no cover
import argparse
- parser = argparse.ArgumentParser(description="PyDERASN ASN.1 BER/DER decoder")
+ parser = argparse.ArgumentParser(description="PyDERASN ASN.1 BER/CER/DER decoder")
parser.add_argument(
"--skip",
type=int,
setup(
name="pyderasn",
version=version,
- description="Python ASN.1 DER/BER codec with abstract structures",
+ description="Python ASN.1 DER/CER/BER codec with abstract structures",
long_description=open("README", "rb").read().decode("utf-8"),
author="Sergey Matveev",
author_email="stargrave@stargrave.org",
# coding: utf-8
-# PyDERASN -- Python ASN.1 DER codec with abstract structures
+# PyDERASN -- Python ASN.1 DER/CER/BER codec with abstract structures
# Copyright (C) 2017-2020 Sergey Matveev <stargrave@stargrave.org>
#
# This program is free software: you can redistribute it and/or modify
# coding: utf-8
-# PyDERASN -- Python ASN.1 DER codec with abstract structures
+# PyDERASN -- Python ASN.1 DER/CER/BER codec with abstract structures
# Copyright (C) 2017-2020 Sergey Matveev <stargrave@stargrave.org>
#
# This program is free software: you can redistribute it and/or modify
# coding: utf-8
-# PyDERASN -- Python ASN.1 DER codec with abstract structures
+# PyDERASN -- Python ASN.1 DER/CER/BER codec with abstract structures
# Copyright (C) 2017-2020 Sergey Matveev <stargrave@stargrave.org>
#
# This program is free software: you can redistribute it and/or modify
# coding: utf-8
-# PyDERASN -- Python ASN.1 DER/BER codec with abstract structures
+# PyDERASN -- Python ASN.1 DER/CER/BER codec with abstract structures
# Copyright (C) 2017-2020 Sergey Matveev <stargrave@stargrave.org>
#
# This program is free software: you can redistribute it and/or modify