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