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