]> Cypherpunks.ru repositories - pyderasn.git/blob - doc/news.rst
Mention --browse
[pyderasn.git] / doc / news.rst
1 News
2 ====
3
4 .. _release7.4:
5
6 7.4
7 ---
8
9 * Fix DEFINED BY pprinting when invoking as __main__ module
10 * Integer has ``tohex()`` for getting hexadecimal representation of its value
11 * ``hexdump()`` (``hexdump -C`` like output) and ``ascii_visualize()``
12   (visualize ASCII printable characters, like in ``hexdump -C``) pretty
13   printing functions appeared
14 * Experimental ASN.1 interactive terminal browser (``--browse`` and
15   ``pyderasn.browse``).
16   You will need `urwid package <http://urwid.org/>`__ to use it
17
18 .. _release7.3:
19
20 7.3
21 ---
22
23 * SEQUENCE/SET fully performs default value existence validation in
24   evgen mode, by the cost of DEFAULTed value full decoding. That should
25   not be the problem, as DEFAULTs are relatively small in practice. Now
26   evgen mode has the same DER validation strictness as an ordinary one
27
28 .. _release7.2:
29
30 7.2
31 ---
32
33 * Restored workability of some command line options
34 * 2-pass DER encoding mode with very little memory footprint
35
36 .. _release7.1:
37
38 7.1
39 ---
40
41 * README updating
42
43 .. _release7.0:
44
45 7.0
46 ---
47 * Fixed invalid behaviour where SET OF allowed multiple objects with the
48   same tag to be successfully decoded
49 * Fixed possibly invalid SET DER encoding where objects were not sorted
50   by tag, but by encoded representation
51 * ``Any`` does not allow empty data value now. Now it checks if it has
52   valid ASN.1 tag
53 * ``SetOf`` is not treated as ready, if no value was set and minimum
54   bounds are greater than zero
55 * ``Any`` allows an ordinary ``Obj`` storing, without its forceful
56   encoded representation storage. That is required for CER encoding
57   mode, where we do not know in advance what encoding will be used
58 * ``ObjectIdentifier`` stores values as C unsigned long integer,
59   forbidding storage of huge integers, that must not be a problem in
60   practice
61 * Initial support for so called ``evgen_mode``: event generation mode,
62   where no in-memory objects storing happens, giving ability to process
63   ASN.1 data without fully parsing it first. ``python -m pyderasn`` has
64   ``--evgen`` mode switcher
65 * Useful ``agg_octet_string`` that is able to streamingly decode string
66   from events of ``evgen_mode``, allowing strings retrieving without
67   copying them to memory first
68 * Initial experimental CER encoding mode, allowing streaming encoding of
69   the data directly to some writeable object
70 * Ability to use mmap-ed memoryviews to skip files loading to memory
71 * Ability to use memoryview as an input for \*Strings. If they are
72   mmap-ed, then you can encode any quantities of data streamingly
73   without copying to memory
74
75 .. _release6.3:
76
77 6.3
78 ---
79 * Fixed workability under Python 3.5. Previously only 2.7 and 3.6
80   versions were tested
81
82 .. _release6.2:
83
84 6.2
85 ---
86 * Python ``int()``'s accepts even more various non-decimal characters
87   than expected. Make validation fully strict in UTCTime and
88   GeneralizedTime, without relying on ``int()``
89
90 .. _release6.1:
91
92 6.1
93 ---
94 * UTCTime and GeneralizedTime allowed values to have plus sign in them,
95   passing int() check successfully. Prohibit that incorrect behaviour
96 * UTCTime and GeneralizedTime BER decoding support
97 * Faster UTCTime and GeneralizedTime decoding, and slightly better
98   overall performance
99 * Workability under Cython
100 * Explicitly Check that all ObjectIdentifier arcs are non-negative
101
102 .. _release6.0:
103
104 6.0
105 ---
106 * ``.copy()`` method removed: ``copy.copy()`` is preferred way to copy
107   objects now
108 * Copies made previously with ``.copy()`` lacked ``.defined`` field,
109   now they are not
110 * All objects are friendly to ``pickle`` libraries
111 * PrintableString has ``allow_asterisk`` and ``allow_ampersand``
112   properties
113 * ``.hexencode()``, ``.hexdecode()`` and ``.hexdecod()`` methods
114   appeared, working with hexadecimal encoded data
115
116 .. _release5.6:
117
118 5.6
119 ---
120 * Convenient ``.decod()`` method, that raises if tail is not empty
121 * Control characters (like newlines) of text fields in pprinted output
122   are escaped
123 * Ability to allow asterisk and ampersand characters
124   (``allow_asterisk``, ``allow_ampersand`` kwargs) in PrintableString,
125   that unfortunately could be met in X.509 certificates
126
127 .. _release5.5:
128
129 5.5
130 ---
131 * PEP-396 compatible module's ``__version__``
132
133 .. _release5.4:
134
135 5.4
136 ---
137 * Do not shadow underlying DecodeError during decoding of optional
138   sequence's field
139
140 .. _release5.3:
141
142 5.3
143 ---
144 * Forbid any later GNU GPL version autousage (project's licence now is
145   GNU LGPLv3 only)
146 * Fix ``defines_by_path`` context option usage example
147
148 .. _release5.2:
149
150 5.2
151 ---
152 * Fix fallbacked ``colored()`` function workability,
153   if no ``termcolor`` is installed
154
155 .. _release5.1:
156
157 5.1
158 ---
159 * Fix empty ``--oids`` workability
160
161 .. _release5.0:
162
163 5.0
164 ---
165 * Ability to specify multiple OID mappings for pprinted output
166   (``oids`` keyword argument is renamed to ``oid_maps``)
167
168 .. _release4.9:
169
170 4.9
171 ---
172 * Minor decode speed improvements
173 * Much faster UTCTime/GeneralizedTime decoders
174 * Stricter UTCTime/GeneralizedTime DER encoding check: trailing zeroes
175   are forbidden
176 * Valid DER encoding of GeneralizedTime with microseconds: no trailing
177   zeroes appended
178
179 .. _release4.7:
180
181 4.7
182 ---
183 * ObjectIdentifier has ``ber_encoded`` set to True, if non-normalized
184   arc encoding is met
185 * Preserve BER-related attributes during ``copy()``
186
187 .. _release4.6:
188
189 4.6
190 ---
191 * Added `COMPLI <https://github.com/YuryStrozhevsky/asn1-test-suite>`__
192   ASN.1:2008 test suite. PyDERASN passes it (except for REAL values),
193   but it is more strict sometimes and aimed to be compliant with X.690-201508
194 * Check for arc values normalization in ObjectIdentifier.
195   Forbid non-normalized in DER encoding
196
197 .. _release4.5:
198
199 4.5
200 ---
201 * ``ctx`` parameter can be safely used in .decode() and won't be muted
202 * PP nametuple contains reference to the ASN1Obj itself
203 * ``colonize_hex`` function useful for pretty printing
204 * Integer values are also pretty printed in hexadecimal form
205
206 .. _release4.4:
207
208 4.4
209 ---
210 * All errors are inherited from ASN1Error class
211 * NumericString/PrintableString has ``allowable_chars`` property holding
212   all allowed characters
213
214 .. _release4.3:
215
216 4.3
217 ---
218 * Fix NumericString: space is allowed character
219 * Strict PrintableString sanitizing
220
221 .. _release4.2:
222
223 4.2
224 ---
225 * Removed ``lenindef``, ``ber_encoded`` attributes from the Choice --
226   they must be taken from underlying value, as Choice does not have its
227   own encoding
228 * Do not yield extra EOC PP for Any, having indefinite length encoding
229   and containing autodecoded DEFINED BY value
230
231 .. _release4.1:
232
233 4.1
234 ---
235 * ``bered`` attribute, meaning if object has BER-specific encoding, is
236   renamed to ``ber_encoded``
237 * ``bered`` attribute is replace with property showing if any of
238   underlying values are BER-encoded. If value has length indefinite
239   encoded explicit tag, value, if value contains BER-related encoding,
240   or if it contains other objects that are ``bered``, then it is ``bered``
241
242 .. _release4.0:
243
244 4.0
245 ---
246 * Default value is checked also for Sets, not for Sequences only
247 * **Incompatible** change: defaulted values in Sequence/Set are always
248   strictly checked, unless ``allow_default_values`` context option is
249   set. ``strict_default_existence`` option disappeared
250 * Strict Set/Set Of's values ordering check
251
252 .. _release3.14:
253
254 3.14
255 ----
256 * Additional encoding validness check: explicit tag must contain exactly
257   one object inside. Throw DecodeError otherwise
258 * ``allow_expl_oob`` context and command-line options allow skipping of
259   that check
260
261 .. _release3.13:
262
263 3.13
264 ----
265 * DecodeError's decode paths are separated with ``:``, instead of ``.``,
266   because of colliding with dots in OIDs
267 * Ability to print element decode paths with ``--print-decode-path``
268   command line option (and corresponding keyword argument)
269 * Ability to print tree's branch specified with ``--decode-path-only``
270
271 .. _release3.12:
272
273 3.12
274 ----
275 * Fix possible uncaught TypeError in Py2 with zero bytes inside the value
276 * Fix SequenceOf/SetOf raising BoundsError instead of DecodeError
277
278 .. _release3.11:
279
280 3.11
281 ----
282 * Fix uncaught UTCTime/GeneralizedTime decode error when dealing with
283   non ASCII-encoded values
284
285 .. _release3.10:
286
287 3.10
288 ----
289 * Fix long-standing bug with explicitly tagged objects inside the
290   Choice. If Choice had explicitly tagged value, then its ``.tlvlen``
291   reports the size without taking value's explicit tag in advance
292 * Add ``.fulllen`` and ``.fulloffset`` properties for all objects
293
294 .. _release3.9:
295
296 3.9
297 ---
298 * SEQUENCE's values are printed with field's name. Previously there was
299   the following output::
300
301     AlgorithmIdentifier SEQUENCE[OBJECT IDENTIFIER 1.3.14.3.2.26, [UNIV 5] ANY 0500 OPTIONAL]
302
303   now it is::
304
305     AlgorithmIdentifier SEQUENCE[algorithm: OBJECT IDENTIFIER 1.3.14.3.2.26; parameters: [UNIV 5] ANY 0500 OPTIONAL]
306 * Fixed EOC (Unicode character) repr printing issues under Python2
307
308 .. _release3.8:
309
310 3.8
311 ---
312 BER's EOC is explicitly shown during pprinting. Following notation::
313
314       15-2 [0,0,1576]-4  . content: [0] EXPLICIT [UNIV 16] ANY
315
316 is replaced with::
317
318       15-2∞ [0,0,1576]∞  . content: [0] EXPLICIT [UNIV 16] ANY
319     [...]
320     1587    [1,1,   0]   . content:  BER EOC
321     1589    [1,1,   0]   . content: EXPLICIT BER EOC
322
323 .. _release3.7:
324
325 3.7
326 ---
327 * BER decoding support
328 * BitString's ''H notation support
329 * ``termcolor`` package is included in the tarball
330
331 .. _release3.6:
332
333 3.6
334 ---
335 * Ability to set values during Sequence initialization
336
337 .. _release3.5:
338
339 3.5
340 ---
341 * Fix TagMismatch exception completeness during Choice and Set decoding.
342   Previously we will loose offset and decode_path information about
343   concrete TagMismatched entity
344
345 .. _release3.4:
346
347 3.4
348 ---
349 * Strict NumericString's value sanitation
350 * Invalid encoding in string types will raise ``DecodeError`` exception,
351   instead of ``Unicode*Error``
352 * Fixed DecodePathDefBy workability with Python 2.x
353
354 .. _release3.3:
355
356 3.3
357 ---
358 * Fix nasty BitString decoding bug: it could fail when data follows
359   encoded BitString value. There weren't any problems when BitString is
360   at the end of Sequence
361
362 .. _release3.2:
363
364 3.2
365 ---
366 * Slightly corrected colours, now visible on white background
367
368 .. _release3.1:
369
370 3.1
371 ---
372 * Fix bug related to DecodeError showing with DecodePathDefBy entities
373 * Respect ``NO_COLOR`` environment variable
374
375 .. _release3.0:
376
377 3.0
378 ---
379 * :py:func:`pyderasn.decode_path_defby` is replaced with
380   :py:class:`pyderasn.DecodePathDefBy`
381 * Ability to turn colourized terminal output by calling
382   ``pprint(..., with_colours=True)``. You will need
383   `termcolor package <https://pypi.org/project/termcolor/>`__
384
385 .. _release2.1:
386
387 2.1
388 ---
389 * Fixed invalid offset calculation when dealing with DEFINED BY objects
390   having explicit tags
391
392 .. _release2.0:
393
394 2.0
395 ---
396 * BIT STRINGs can also be :ref:`DEFINED BY <definedby>`
397 * Decoding process can be governed with optional :ref:`ctx <ctx>`
398   keyword argument to ``decode()`` method
399 * :ref:`defines_by_path <defines_by_path_ctx>` option is now
400   :ref:`decode context <ctx>` option, not a keyword argument
401 * Ability to do ``strict validation``
402   of defaulted values met in sequence, raising an exception
403
404 .. _release1.6:
405
406 1.6
407 ---
408 Ability to skip specified number of bytes (``--skip``) in command line
409 utility.
410
411 .. _release1.5:
412
413 1.5
414 ---
415 * Generic decoder's schema and pretty printer
416   (:py:func:`pyderasn.generic_decoder`) can be used in libraries
417 * Ability to specify :ref:`defines_by_path <defines_by_path_ctx>`
418   during command line invocation
419
420 .. _release1.4:
421
422 1.4
423 ---
424 Ability to automatically decode :ref:`DEFINED BY <definedby>` fields
425 inside SEQUENCEs.
426
427 .. _release1.3:
428
429 1.3
430 ---
431 Removed ``__lt__``/``__eq__`` from base class, as pylint likes it.
432
433 .. _release1.2:
434
435 1.2
436 ---
437 Full rich comparison operators added.
438
439
440 .. _release1.1:
441
442 1.1
443 ---
444 Trivial README addition.
445
446 .. _release1.0:
447
448 1.0
449 ---
450 Initial release.