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