summaryrefslogtreecommitdiff
path: root/CHANGES
blob: 352b158f7cbb9bd5400d2df6d629f743f02ade3c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
Revision 0.0.13b
----------------

- ASN.1 Real type is now supported properly.
- Objects of Constructed types now support __setitem__()
- Set/Sequence objects can now be addressed by their field names (string index)
  and position (integer index).
- Typo fix to ber.SetDecoder code that prevented guided decoding operation.
- Fix to explicitly tagged items decoding support.
- Fix to OctetString.prettyPrint() to better handle non-printable content.
- Fix to repr() workings of Choice objects.

Revision 0.0.13a
----------------

- Major codec re-design.
- Documentation significantly improved.
- ASN.1 Any type is now supported.
- All example ASN.1 modules moved to separate pyasn1-modules package.
- Fix to initial sub-OID overflow condition detection an encoder.
- BitString initialization value verification improved.
- The Set/Sequence.getNameByPosition() method implemented.
- Fix to proper behaviour of PermittedAlphabetConstraint object.
- Fix to improper Boolean substrate handling at CER/DER decoders.
- Changes towards performance improvement:
  + all dict.has_key() & dict.get() invocations replaced with modern syntax
    (this breaks compatibility with Python 2.1 and older).
  + tag and tagset caches introduced to decoder
  + decoder code improved to prevent unnecessary pyasn1 objects creation
  + allow disabling components verification when setting components to
    structured types, this is used by decoder whilst running in guided mode.
  + BER decoder for integer values now looks up a small set of pre-computed
    substrate values to save on decoding.
  + a few pre-computed values configured to ObjectIdentifier BER encoder.
  + ChoiceDecoder split-off SequenceOf one to save on unnecessary checks.
  + replace slow hasattr()/getattr() calls with isinstance() introspection.
  + track the number of initialized components of Constructed types to save
    on default/optional components initialization.
  + added a shortcut ObjectIdentifier.asTuple() to be used instead of
    __getitem__() in hotspots.
  + use Tag.asTuple() and pure integers at tag encoder.
  + introduce and use in decoder the baseTagSet attribute of the built-in
    ASN.1 types.

Revision 0.0.12a
----------------

- The individual tag/length/value processing methods of 
  encoder.AbstractItemEncoder renamed (leading underscore stripped)
  to promote overloading in cases where partial substrate processing
  is required.
- The ocsp.py, ldap.py example scripts added.
- Fix to univ.ObjectIdentifier input value handler to disallow negative
  sub-IDs.

Revision 0.0.11a
----------------

- Decoder can now treat values of unknown types as opaque OctetString.
- Fix to Set/SetOf type decoder to handle uninitialized scalar SetOf 
  components correctly.

Revision 0.0.10a
----------------

- API versioning mechanics retired (pyasn1.v1 -> pyasn1) what makes
  it possible to zip-import pyasn1 sources (used by egg and py2exe).

Revision 0.0.9a
---------------

- Allow any non-zero values in Boolean type BER decoder, as it's in
  accordnance with the standard.

Revision 0.0.8a
---------------

- Integer.__index__() now supported (for Python 2.5+).
- Fix to empty value encoding in BitString encoder, test case added.
- Fix to SequenceOf decoder that prevents it skipping possible Choice
  typed inner component.
- Choice.getName() method added for getting currently set component
  name.
- OctetsString.prettyPrint() does a single str() against its value
  eliminating an extra quotes.

Revision 0.0.7a
---------------

- Large tags (>31) now supported by codecs.
- Fix to encoder to properly handle explicitly tagged untagged items.
- All possible value lengths (up to 256^126) now supported by encoders.
- Fix to Tag class constructor to prevent negative IDs.

Revision 0.0.6a
---------------

- Make use of setuptools.
- Constraints derivation verification (isSuperTypeOf()/isSubTypeOf()) fixed.
- Fix to constraints comparation logic -- can't cmp() hash values as it
  may cause false positives due to hash conflicts.

Revision 0.0.5a
---------------

- Integer BER codec reworked fixing negative values encoding bug.
- clone() and subtype() methods of Constructed ASN.1 classes now 
  accept optional cloneValueFlag flag which controls original value
  inheritance. The default is *not* to inherit original value for 
  performance reasons (this may affect backward compatibility).
  Performance penalty may be huge on deeply nested Constructed objects
  re-creation.
- Base ASN.1 types (pyasn1.type.univ.*) do not have default values
  anymore. They remain uninitialized acting as ASN.1 types. In 
  this model, initialized ASN.1 types represent either types with
  default value installed or a type instance.
- Decoders' prototypes are now class instances rather than classes.
  This is to simplify initial value installation to decoder's
  prototype value.
- Bugfix to BitString BER decoder (trailing bits not regarded).
- Bugfix to Constraints use as mapping keys.
- Bugfix to Integer & BitString clone() methods
- Bugix to the way to distinguish Set from SetOf at CER/DER SetOfEncoder
- Adjustments to make it running on Python 1.5.
- In tests, substrate constants converted from hex escaped literals into
  octals to overcome indefinite hex width issue occuring in young Python.
- Minor performance optimization of TagSet.isSuperTagSetOf() method
- examples/sshkey.py added

Revision 0.0.4a
---------------

* Asn1ItemBase.prettyPrinter() -> *.prettyPrint()

Revision 0.0.3a
---------------

* Simple ASN1 objects now hash to their Python value and don't
  depend upon tag/constraints/etc.
* prettyIn & prettyOut methods of SimplleAsn1Object become public
* many syntax fixes

Revision 0.0.2a
---------------

* ConstraintsIntersection.isSuperTypeOf() and 
  ConstraintsIntersection.hasConstraint() implemented
* Bugfix to NamedValues initialization code
* +/- operators added to NamedValues objects
* Integer.__abs__() & Integer.subtype() added
* ObjectIdentifier.prettyOut() fixes
* Allow subclass components at SequenceAndSetBase
* AbstractConstraint.__cmp__() dropped
* error.Asn1Error replaced with error.PyAsn1Error

Revision 0.0.1a
---------------

* Initial public alpha release