X-Git-Url: http://www.git.cypherpunks.ru/?a=blobdiff_plain;f=doc%2Ffeatures.rst;h=463586ef80336f5b9a0de5e48b135bb328beb219;hb=d917b94f24e274ad2af0caccb1eaeb27bd90af60;hp=d2d1734eb779b6545132b698bf65344d281f66d9;hpb=7aed684a10179b2e57e81369e956ac6df4fb135e;p=pyderasn.git diff --git a/doc/features.rst b/doc/features.rst index d2d1734..463586e 100644 --- a/doc/features.rst +++ b/doc/features.rst @@ -1,6 +1,7 @@ Features ======== +* BER/CER/DER decoding, DER 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) @@ -25,25 +26,26 @@ practice it should be relatively easy to convert ``pyasn1``'s code to 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 +* Descriptive errors, like ``pyderasn.DecodeError: UTCTime + (tbsCertificate.validity.notAfter.utcTime) (at 328) invalid UTCTime format`` * ``__slots__`` friendliness * Could be significantly faster. For example parsing of CACert.org's CRL under Python 3.5.2: :``python -m pyderasn revoke.crl``: - ~2 min + ~2 min (``pyderasn == 1.0``) :``python -m pyderasn --schema path.to.CertificateList revoke.crl``: - ~38 sec + ~38 sec (``pyderasn == 1.0``) :``pyasn1.decode(asn1Spec=pyasn1.CertificateList())``: ~22 min (``pyasn1 == 0.2.3``) There are drawbacks: * No old Python versions support -* No BER/CER support * PyDERASN does **not** have object recreation capable ``repr``-s:: pyderasn>>> repr(algo_id) - AlgorithmIdentifier SEQUENCE[OBJECT IDENTIFIER 1.3.14.3.2.26, [UNIV 5] ANY 0500 OPTIONAL] + AlgorithmIdentifier SEQUENCE[algorithm: OBJECT IDENTIFIER 1.3.14.3.2.26; parameters: [UNIV 5] ANY 0500 OPTIONAL] pyasn1>>> repr(algo_id) AlgorithmIdentifier().setComponents(ObjectIdentifier('1.3.14.3.2.26'), Any(hexValue='0500'))