X-Git-Url: http://www.git.cypherpunks.ru/?p=pyderasn.git;a=blobdiff_plain;f=doc%2Ffeatures.rst;fp=doc%2Ffeatures.rst;h=b17e9a8038118ace3e3e456424e29bcc6de2d0ac;hp=c83b64c22da7539583eceb1f38db13db6a8ebc46;hb=7f2e5ef9aef122fb5bdfcb377f0644c7784398a2;hpb=3370a2b2433533aaeaf17f0507bb142199cbafcf diff --git a/doc/features.rst b/doc/features.rst index c83b64c..b17e9a8 100644 --- a/doc/features.rst +++ b/doc/features.rst @@ -3,7 +3,7 @@ Features ======== -* 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) @@ -12,6 +12,8 @@ Features (un)marshall them * Python 2.7/3.5/3.6 compatibility * Aimed to be complaint with `X.690-201508 `__ +* Streaming decoding and encoding capabilities, allowing working with + very small memory footprint Why yet another library? `pyasn1 `__ had all of this a long time ago. PyDERASN resembles it in many ways. In @@ -36,6 +38,15 @@ Also there is `asn1crypto `__. structures allow BER encoding for the whole message, except for ``SignedAttributes`` -- you can easily verify your CMS satisfies that requirement +* 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 (that takes huge quantity of + memory in all known ASN.1 libraries) in the memory +* ``__slots__``, ``copy.copy()`` friendliness +* Workability with ``pickle`` +* `Cython `__ compatibility * Extensive and comprehensive `hypothesis `__ driven tests coverage. It also has been fuzzed with @@ -49,9 +60,6 @@ Also there is `asn1crypto `__. automatically set required tags) * Descriptive errors, like ``pyderasn.DecodeError: UTCTime (tbsCertificate:validity:notAfter:utcTime) (at 328) invalid UTCTime format`` -* ``__slots__``, ``copy.copy()`` friendliness -* Workability with ``pickle`` -* `Cython `__ compatibility * Could be significantly :ref:`faster ` and have lower memory usage * :ref:`Pretty printer ` and :ref:`command-line decoder `, that could