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