]> Cypherpunks.ru repositories - pyderasn.git/blobdiff - doc/features.rst
Modern PyDERASN's version could differ in performance
[pyderasn.git] / doc / features.rst
index afe10447abf4b37b9c642077b08ddc90d57a07b7..dcbd0ebcdc8b3ce6c9afdae23050a869411b0eef 100644 (file)
@@ -4,7 +4,7 @@ Features
 * 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
@@ -15,21 +15,24 @@ practice it should be relatively easy to convert ``pyasn1``'s code to
 ``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:
 
-    :``python -mpyderasn revoke.crl``:
-     ~2 min
-    :``python -mpyderasn --schema path.to.CertificateList revoke.crl``:
-     ~38 sec
+    :``python -m pyderasn revoke.crl``:
+     ~2 min (``pyderasn == 1.0``)
+    :``python -m pyderasn --schema path.to.CertificateList revoke.crl``:
+     ~38 sec (``pyderasn == 1.0``)
     :``pyasn1.decode(asn1Spec=pyasn1.CertificateList())``:
      ~22 min (``pyasn1 == 0.2.3``)