* 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
+* Size :ref:`constraints <bounds>` checking
* Working with sequences as high level data objects with ability to
(un)marshall them
* Python 2.7/3.5 compatibility
``pyderasn``'s one. But additionally it offers:
* Small, simple and trying to be reviewable code. Just a single file
-* ``__slots__`` friendliness
-* Ability to know exact decoded objects offsets and lengths in the binary
-* Pretty printer and command-line decoder, that could conveniently
- replace utilities like either ``dumpasn1`` or ``openssl asn1parse``
+* Automatic decoding of :ref:`DEFINED BY <definedby>` fields
+* Ability to know :ref:`exact decoded <decoding>` objects offsets and
+ lengths inside the binary
+* :ref:`Pretty printer <pprinting>` and command-line decoder, that could
+ conveniently replace utilities like either ``dumpasn1`` or
+ ``openssl asn1parse``
* Some kind of strong typing: SEQUENCEs require the exact **type** of
settable values, even when they are inherited
* However they do not require tags matching: IMPLICIT/EXPLICIT tags will
be set automatically in the given sequence
+* ``__slots__`` friendliness
* Could be significantly faster. For example parsing of CACert.org's CRL
under Python 3.5.2:
- :``pyderasn.py revoke.crl``:
+ :``python -m pyderasn revoke.crl``:
~2 min
- :``pyderasn.py --schema path.to.CertificateList revoke.crl``:
+ :``python -m pyderasn --schema path.to.CertificateList revoke.crl``:
~38 sec
:``pyasn1.decode(asn1Spec=pyasn1.CertificateList())``:
~22 min (``pyasn1 == 0.2.3``)