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