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