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