* Extensive and comprehensive
`hypothesis <https://hypothesis.readthedocs.io/en/master/>`__
driven tests coverage. It also has been fuzzed with
- `python-afl <http://jwilk.net/software/python-afl>`__.
+ `python-afl <http://jwilk.net/software/python-afl>`__
* Some kind of strong typing: SEQUENCEs require the exact **type** of
settable values, even when they are inherited (assigning ``Integer``
to the field with the type ``CMSVersion(Integer)`` is not allowed)
automatically set required tags)
* Descriptive errors, like ``pyderasn.DecodeError: UTCTime
(tbsCertificate:validity:notAfter:utcTime) (at 328) invalid UTCTime format``
-* ``__slots__`` friendliness
-* :ref:`Pretty printer <pprinting>` and
- :ref:`command-line decoder <cmdline>`, that could
- conveniently replace utilities like either ``dumpasn1`` or
- ``openssl asn1parse``
-* Could be significantly faster and have lower memory usage.
+* ``__slots__``, ``copy.copy()``, ``pickle`` friendliness
+* Could be significantly faster and have lower memory usage
For example parsing of CACert.org's CRL (8.48 MiB) on FreeBSD 12.0
amd64, Intel Core i5-6200U 2.3 GHz machine, Python 3.5.5/2.7.15:
converted ``pyasn1`` scheme definition)
- 27.6 / 32.5
- 498 / 488
+* :ref:`Pretty printer <pprinting>` and
+ :ref:`command-line decoder <cmdline>`, that could
+ conveniently replace utilities like either ``dumpasn1`` or
+ ``openssl asn1parse``
+
+ .. figure:: pprinting.png
+ :alt: Pretty printing example output
+
+ An example of pretty printed X.509 certificate with automatically
+ parsed DEFINED BY fields.
There are drawbacks: