1 2Revision 0.3.7, released 04-10-2017 3----------------------------------- 4 5- Fixed ASN.1 time types pickling/deepcopy'ing 6 7Revision 0.3.6, released 21-09-2017 8----------------------------------- 9 10- End-of-octets encoding optimized at ASN.1 encoders 11- The __getitem__/__setitem__ behavior of Set/Sequence and SetOf/SequenceOf 12 objects aligned with the canonical Mapping and Sequence protocols in part 13- Fixed crash in ASN.1 encoder when encoding an explicitly tagged 14 component of a Sequence 15 16Revision 0.3.5, released 16-09-2017 17----------------------------------- 18 19- Codecs signatures unified and pass the options kwargs through the 20 call chain 21- Explicit tag encoding optimized to avoid unnecessary copying 22- End-of-octets sentinel encoding optimized 23- Refactored ASN.1 codecs properties to silently enforce proper 24 length and chunk size encoding modes 25- Fixed DER encoder to always produce primitive encoding 26- Fixed crash at SequenceOf native decoder 27- Fixed Real.prettyPrint() to fail gracefully on overflow 28- Fixed a couple of crashes when debug mode is enabled 29 30Revision 0.3.4, released 07-09-2017 31----------------------------------- 32 33- Fixed Native encoder to handle SEQUENCE/SET objects without 34 the componentType property 35- Added missing component-less SEQUENCE/SET objects dict duck-typing support 36- Fixed unnecessary duplicate tags detection at NamesType.tagMap 37- Fixed crash at SEQUENCE and SEQUENCE OF CER encoder when running 38 in schemaless mode 39- Fixed Character types instantiation from OctetString type -- double 40 unicode decoding may have scrambled the data 41 42Revision 0.3.3, released 27-08-2017 43----------------------------------- 44 45- Improved ASN.1 types instantiation performance 46- Improved BER/CER/DER decoder performance by not unconditionally casting 47 substrate into str/bytes. 48- Fixed exponential index size growth bug when building ambiguous 49 NamedTypes tree 50- Fixed constructed types decoding failure at BER codec if running 51 in schema-less mode 52- Fixed crash on prettyPrint'ing a SEQUENCE with no defined components 53- Fixed SetOf ordering at CER/DER encoder 54- Fixed crash on conditional binascii module import 55- Fix to TagSet hash value build 56 57Revision 0.3.2, released 04-08-2017 58----------------------------------- 59 60- Fixed SequenceOf/SetOf types initialization syntax to remain 61 backward compatible with pyasn1 0.2.* 62- Rectified thread safety issues by moving lazy, run-time computation 63 into object initializer. 64- Fixed .isValue property to return True for empty SetOf/SequenceOf 65 objects 66- Fixed GeneralizedTime/UTCTime CER/DER codecs to actually get invoked 67- Fixed DER/CER encoders handling optional SEQUENCE/SET fields containing 68 nested SEQUENCE/SET with optional fields. 69- Fixed crash in SequenceOf/SetOf pretty printing and decoding (in some 70 cases) 71- Fixed documentation markup issues. 72 73Revision 0.3.1, released 26-07-2017 74----------------------------------- 75 76- ASN.1 types __init__(), .clone() and .subtype() signatures 77 refactored into keyword arguments to simplify their signatures. 78- ASN.1 types initialization refactored to minimize the use of 79 relatively expensive isNoValue() call 80- Lazily pre-populate list of values of Sequence/Set/Choice types 81- NamedTypes comparison made more efficient 82- More efficient constraints computation and code clean up 83- The __getitem__() implementation of some ASN.1 types & tag object 84 refactored for better performance 85- BER/CER/DER value encoders refactored to produce either tuple of 86 bytes or octet-stream depending on what is more optimal 87- Reduced the frequency of expensive isinstance() calls 88- Tag-related classes optimized, refactored into properties and 89 documented. 90- The NamedValues implementation refactored to mimic Python dict, its use 91 in ASN.1 types refactored into properties and better documented. 92 WARNING: this change introduces a deviation from original API. 93- NamedType family of classes overhauled, optimized and documented. 94- The `componentType` attribute of constructed ASN.1 types turned 95 read-only on instances. 96- Sequence/Set DER/CER/DER decoder optimized to skip the case of 97 reordered components handling when not necessary. 98- Tags and constraints-related getter methods refactored into read-only 99 instance attributes. 100- The .hasValue() method refactored into .isValue property. All ASN.1 101 objects now support them, not just scalars. 102- The Real.{isInfinity, isPlusInfinity, isMinusInfinity} methods 103 refactored into properties and renamed into IsInf, IsPlusInf and isMinusInf 104- The end-of-octets type refactored to ensure it is a singleton. Codecs 105 changed to rely on that for better performance. 106- Codecs lookup made more efficient at BER/CER/DER decoder main loop by 107 assigning `typeId` to every ASN.1 type, not just ambiguous ones. 108- The .getComponent*() methods of constructed ASN.1 types changed 109 to lazily instantiate underlying type rather than return `None`. 110 This should simplify its API as initialization like `X[0][1] = 2` becomes 111 possible. 112 WARNING: this change introduces a deviation from the original API. 113- The .setComponent*() methods of SetOf/SequenceOf types changed not 114 to allow uninitialized "holes" inside the sequences of their components. 115 They now behave similarly to Python lists. 116 WARNING: this change introduces a deviation from the original API. 117- Default and optional components en/decoding of Constructed type 118 refactored towards better efficiency and more control. 119- OctetsString and Any decoder optimized to avoid creating ASN.1 120 objects for chunks of substrate. Instead they now join substrate 121 chunks together and create ASN.1 object from it just once. 122- The GeneralizedTime and UTCTime types now support to/from Python 123 datetime object conversion. 124- Unit tests added for the `compat` sub-package. 125- Fixed BitString named bits initialization bug. 126- Fixed non-functional tag cache (when running Python 2) at DER decoder. 127- Fixed chunked encoding restriction on DER encoder. 128- Fixed SET components ordering at DER encoder. 129- Fixed BIT STRING & OCTET STRING encoding to be always non-chunked (e.g. 130 primitive) at DER encoder 131- Fixed `compat.integer.from_bytes()` behaviour on empty input. 132 133Revision 0.2.3, released 25-02-2017 134----------------------------------- 135 136- Improved SEQUENCE/SET/CHOICE decoding performance by maintaining a single shared 137 NamedType object for all instances of SEQUENCE/SET object. 138- Improved INTEGER encoding/decoding by switching to Python's built-in 139 integer serialization functions. 140- Improved BitString performance by rebasing it onto Python int type and leveraging 141 fast Integer serialization functions. 142- BitString type usability improved in many ways: for example bitshifting and 143 numeric operation on BitString is now possible. 144- Minor ObjectIdentifier type performance optimization. 145- ASN.1 character types refactored to keep unicode contents internally 146 (rather than serialized octet stream) and duck-type it directly. 147- ASN.1 OctetString initialized from a Python object performs bytes() 148 on it when running on Python 3 (used to do str() which is probably 149 less logical). 150- Missing support for NoValue.__sizeof__ added. 151- Added checks to make sure SEQUENCE/SET components being assigned 152 match the prototypes. 153- Setter methods for constructed types consistently accept matchTags 154 and matchConstraints flags to control the strictness of inner 155 components compatibility verification. Previously, these checks 156 were tied to verifyConstraints flag, now they are all independent. 157- General documentation improvements here and there. 158- Fix to __reversed__() magic to make it returning an iterator. 159- Test suite simplified and unified. 160- The __all__ variable added to most of the Python modules. 161- The "test" directory renamed into "tests" not to collide with 162 the "test" module. 163 164Revision 0.2.2, released 07-02-2017 165----------------------------------- 166 167- FIX TO A SECURITY WEAKNESS: define length only decoders could have successfully 168 processed indefinite length serialization. 169- FIX TO A SECURITY WEAKNESS: canonical decoders (CER/DER) may have successfully 170 consumed non-canonical variations of (otherwise valid) serialization. 171- Broken Enumerated subtyping fixed. 172 173Revision 0.2.1, released 05-02-2017 174----------------------------------- 175 176- FIX TO A SECURITY WEAKNESS: BER decoder improperly cached long tags. 177- New "native" codec implemented to transform pyasn1 types to Python built-in types and back. 178- Switched to new-style classes. 179- Sphinx documentation added. 180- BitString improvements: 181 182 * simple string of binary digits is now supported as initializer 183 * default str() yields string of binary digits (used to yield str(tuple()) 184 * binValue and hexValue initializers added 185 * .asNumbers(), .asOctets() and asInteger() representation added 186 187- Components of constructed ASN.1 types can now be populated with 188 uninitialized ASN.1 objects by assigning either noValue sentinel or 189 setupComponent() function return in addition to now-legacy None sentinel. 190 This should improve code readability. 191- NoValue class improved to become a singleton and catch more kinds 192 of access to it. 193- Compatibility wrappers str2octs() and oct2strs() fixed to run over 194 iso-8859-1 encoding. 195- Integer changed to emit Real instance if division produces a float. 196- True division operation now supported by Integer type. 197- The __contains__(), __reverse__() methods implemented for container types 198- Iterator protocol support implemented for all container types. 199 Warning, warning, warning: this change may potentially affect backward 200 compatibility when: 201 202 * user class overrides __getitem__() without overriding __iter__() 203 * when user code iterates over SEQUENCE object to get its components (now keys will be yielded) 204 205- Almost complete Python list and dict protocols added to SequenceOf/SetOf and 206 Sequence/Set respectively 207- Fix to divmod operation implementation in Integer type. 208- Fix to IntegerDecoder's precomputed value map on Python 3. 209- Fix to base ASN.1 types to run in "unicode_literals" mode. 210- Fix to composite constraints "+" operands ordering (AbstractConstraintSet.__radd__) 211- Fix to constraints merge in .subtype() -- on merge existing constraints are 212 expanded to accommodate new constraints, not the other way round. When existing 213 constraints are wrapped in ConstraintsIntersection composite, additional 214 constraints being added on subtyping effectively further narrow the set of 215 allowed values, which aligns well with the notion of subtyping. 216- Fix to NamedTypes methods to handle .getTagMap() returning None 217- Fix to Set/Sequence.setDefaultComponents() to return self 218- Copyright notice added to non-trivial source code files. 219- Author's email changed, copyright extended to 2017 220 221Revision 0.1.9, released 28-09-2015 222----------------------------------- 223 224- Wheel distribution format now supported. 225- Extensions added to text files, CVS attic flushed. 226- Fix to make uninitialized pyasn1 objects failing properly on hash(). 227- Fix to ObjectIdentifier initialization from unicode string. 228- Fix to CER/DER Boolean decoder - fail on non single-octet payload. 229 230Revision 0.1.8, released 22-06-2015 231----------------------------------- 232 233- ObjectIdentifier codec fixed to work properly with arc 0 and arc 2 values. 234- Explicit limit on ObjectIdentifier arc value size removed. 235- Unicode initializer support added to OctetString type and derivatives. 236- New prettyPrintType() abstract method implemented to base pyasn1 types 237 to facilitate encoding errors analysis. 238- The __str__() method implemented to Tag, TagSet and TagMap classes to 239 ease encoding errors troubleshooting. 240 easing encoding errors 241- Fix to SEQUENCE and SET types to give them their private componentTypes 242 collection (which is a NamedTypes object) so that they won't collide in 243 a MT execution environment. 244- Missing T61String,ISO646String character types and ObjectDescriptor useful 245 type added. 246- Distribute is gone, switched to setuptools completely. 247- Missing NamedValues.__repr__() added. 248- The base.NoValue() class, that indicates uninitialized ASN.1 object, 249 made public. 250- The base.NoValue() class instances now support __repr__() what makes 251 possible to perform repr() on uninitialized pyasn1 types objects. 252- When comparing ASN.1 types, by-tag and/or by-constraints matching 253 can now be performed with the isSuperTypeOf()/isSameTypeWith() optional 254 flags. 255- Constructed types now verify their consistency by invoking 256 isSameTypeWith(matchTags=True, matchConstraints=False) and 257 isSuperTypeOf(matchTags=False, matchConstraints=True) for each of their 258 components rather than isSuperTypeOf() as it used to be. Constriants check 259 could be enforced to isSameTypeWith() with the strictConstraints=True 260 constructed classes attribute. 261- Constructed types can now be initialized with new .setComponents() method 262 which accepts both var-args and keyword-args. Default repr() modified to 263 reflect this change. 264- NamedTypes() and NamedValues() made comparable. 265- Test coverage extended to cover pyasn1 types __repr__() function. 266- The abs(Integer()) & abs(Real()) operation now returns respective pyasn1 267 type, not a Python type. 268- More Python magic methods implementations added to Integer & Real classes 269 (e.g. __pos__, __neg__, __round__, __floor__, __ceil__, __trunc__) 270- The Integer.__invert__ Python magic method implemented. 271- The OctetString.__int__() and .__float__() magic methods implemented. 272- Handle the case of null writer at Debug printer. 273- BitString encoder/decoder performance improved. 274- Built-in debugging is now based on Python logging module. 275- Fix to NamedType.__repr__() to work properly. 276- Fixes to __repr__() implementation of many built-in ASN.1 types to take into 277 account all of their initializers such as tagSet, subtypeSpec etc. 278- String typed float initializer to REAL type now supported. 279- Float typed mantissa initializer to REAL type for base 2 added. 280- Encoding bases 8 and 16 support for REAL type binary encoder added. 281- More strict CER/DER encoders added for GeneralizedTime and UTCTime types. 282- Asn1Item.hasValue() added to easily distinguish initalized ASN.1 objects 283 from uninitialized ones (e.g. pure types). 284- Fix to REAL type binary decoder to handle different bases and scale factor. 285- Fix to TagSet.repr() to include [obsolete] baseTag information. 286- Fix to broken REAL type decoding handling. 287- Fix to BitString and OctetString decoders dealing with constructed 288 encoding -- it used to be possible to embed other types in substrate. 289- DER codec hardened not to tolerate indefinite length encoding/decoding. 290- Fix to end-of-octest sentinel handling: 291 292 + require strict two-zeros sentinel encoding 293 + recognize EOO sentinel only when explicitly requested by caller 294 of the decoder via allowEoo=True parameter (warning: API change) 295 296Revision 0.1.7 297-------------- 298 299- License updated to vanilla BSD 2-Clause to ease package use 300 (http://opensource.org/licenses/BSD-2-Clause). 301- Test suite made discoverable by unittest/unittest2 discovery feature. 302- Fix to decoder working on indefinite length substrate -- end-of-octets 303 marker is now detected by both tag and value. Otherwise zero values may 304 interfere with end-of-octets marker. 305- Fix to decoder to fail in cases where tagFormat indicates inappropriate 306 format for the type (e.g. BOOLEAN is always PRIMITIVE, SET is always 307 CONSTRUCTED and OCTET STRING is either of the two) 308- Fix to REAL type encoder to force primitive encoding form encoding. 309- Fix to CHOICE decoder to handle explicitly tagged, indefinite length 310 mode encoding 311- Fix to REAL type decoder to handle negative REAL values correctly. Test 312 case added. 313 314Revision 0.1.6 315-------------- 316 317- The compact (valueless) way of encoding zero INTEGERs introduced in 318 0.1.5 seems to fail miserably as the world is filled with broken 319 BER decoders. So we had to back off the *encoder* for a while. 320 There's still the IntegerEncoder.supportCompactZero flag which 321 enables compact encoding form whenever it evaluates to True. 322- Report package version on debugging code initialization. 323 324Revision 0.1.5 325-------------- 326 327- Documentation updated and split into chapters to better match 328 web-site contents. 329- Make prettyPrint() working for non-initialized pyasn1 data objects. It 330 used to throw an exception. 331- Fix to encoder to produce empty-payload INTEGER values for zeros 332- Fix to decoder to support empty-payload INTEGER and REAL values 333- Fix to unit test suites imports to be able to run each from 334 their current directory 335 336Revision 0.1.4 337-------------- 338 339- Built-in codec debugging facility added 340- Added some more checks to ObjectIdentifier BER encoder catching 341 posible 2^8 overflow condition by two leading sub-OIDs 342- Implementations overriding the AbstractDecoder.valueDecoder method 343 changed to return the rest of substrate behind the item being processed 344 rather than the unprocessed substrate within the item (which is usually 345 empty). 346- Decoder's recursiveFlag feature generalized as a user callback function 347 which is passed an uninitialized object recovered from substrate and 348 its uninterpreted payload. 349- Catch inappropriate substrate type passed to decoder. 350- Expose tagMap/typeMap/Decoder objects at DER decoder to uniform API. 351- Obsolete __init__.MajorVersionId replaced with __init__.__version__ 352 which is now in-sync with distutils. 353- Package classifiers updated. 354- The __init__.py's made non-empty (rumors are that they may be optimized 355 out by package managers). 356- Bail out gracefully whenever Python version is older than 2.4. 357- Fix to Real codec exponent encoding (should be in 2's complement form), 358 some more test cases added. 359- Fix in Boolean truth testing built-in methods 360- Fix to substrate underrun error handling at ObjectIdentifier BER decoder 361- Fix to BER Boolean decoder that allows other pre-computed 362 values besides 0 and 1 363- Fix to leading 0x80 octet handling in DER/CER/DER ObjectIdentifier decoder. 364 See http://www.cosic.esat.kuleuven.be/publications/article-1432.pdf 365 366Revision 0.1.3 367-------------- 368 369- Include class name into asn1 value constraint violation exception. 370- Fix to OctetString.prettyOut() method that looses leading zero when 371 building hex string. 372 373Revision 0.1.2 374-------------- 375 376- Fix to __long__() to actually return longs on py2k 377- Fix to OctetString.__str__() workings of a non-initialized object. 378- Fix to quote initializer of OctetString.__repr__() 379- Minor fix towards ObjectIdentifier.prettyIn() reliability 380- ObjectIdentifier.__str__() is aliased to prettyPrint() 381- Exlicit repr() calls replaced with '%r' 382 383Revision 0.1.1 384-------------- 385 386- Hex/bin string initializer to OctetString object reworked 387 (in a backward-incompatible manner) 388- Fixed float() infinity compatibility issue (affects 2.5 and earlier) 389- Fixed a bug/typo at Boolean CER encoder. 390- Major overhawl for Python 2.4 -- 3.2 compatibility: 391 + get rid of old-style types 392 + drop string module usage 393 + switch to rich comparation 394 + drop explicit long integer type use 395 + map()/filter() replaced with list comprehension 396 + apply() replaced with \*/\*\*args 397 + switched to use 'key' sort() callback function 398 + support both __nonzero__() and __bool__() methods 399 + modified not to use py3k-incompatible exception syntax 400 + getslice() operator fully replaced with getitem() 401 + dictionary operations made 2K/3K compatible 402 + base type for encoding substrate and OctetString-based types 403 is now 'bytes' when running py3k and 'str' otherwise 404 + OctetString and derivatives now unicode compliant. 405 + OctetString now supports two python-neutral getters: asOcts() & asInts() 406 + print OctetString content in hex whenever it is not printable otherwise 407 + in test suite, implicit relative import replaced with the absolute one 408 + in test suite, string constants replaced with numerics 409 410Revision 0.0.13 411--------------- 412 413- Fix to base10 normalization function that loops on univ.Real(0) 414 415Revision 0.0.13b 416---------------- 417 418- ASN.1 Real type is now supported properly. 419- Objects of Constructed types now support __setitem__() 420- Set/Sequence objects can now be addressed by their field names (string index) 421 and position (integer index). 422- Typo fix to ber.SetDecoder code that prevented with schema decoding 423 operation. 424- Fix to explicitly tagged items decoding support. 425- Fix to OctetString.prettyPrint() to better handle non-printable content. 426- Fix to repr() workings of Choice objects. 427 428Revision 0.0.13a 429---------------- 430 431- Major codec re-design. 432- Documentation significantly improved. 433- ASN.1 Any type is now supported. 434- All example ASN.1 modules moved to separate pyasn1-modules package. 435- Fix to initial sub-OID overflow condition detection an encoder. 436- BitString initialization value verification improved. 437- The Set/Sequence.getNameByPosition() method implemented. 438- Fix to proper behaviour of PermittedAlphabetConstraint object. 439- Fix to improper Boolean substrate handling at CER/DER decoders. 440- Changes towards performance improvement: 441 442 + all dict.has_key() & dict.get() invocations replaced with modern syntax 443 (this breaks compatibility with Python 2.1 and older). 444 + tag and tagset caches introduced to decoder 445 + decoder code improved to prevent unnecessary pyasn1 objects creation 446 + allow disabling components verification when setting components to 447 structured types, this is used by decoder whilst running with schema 448 mode. 449 + BER decoder for integer values now looks up a small set of pre-computed 450 substrate values to save on decoding. 451 + a few pre-computed values configured to ObjectIdentifier BER encoder. 452 + ChoiceDecoder split-off SequenceOf one to save on unnecessary checks. 453 + replace slow hasattr()/getattr() calls with isinstance() introspection. 454 + track the number of initialized components of Constructed types to save 455 on default/optional components initialization. 456 + added a shortcut ObjectIdentifier.asTuple() to be used instead of 457 __getitem__() in hotspots. 458 + use Tag.asTuple() and pure integers at tag encoder. 459 + introduce and use in decoder the baseTagSet attribute of the built-in 460 ASN.1 types. 461 462Revision 0.0.12a 463---------------- 464 465- The individual tag/length/value processing methods of 466 encoder.AbstractItemEncoder renamed (leading underscore stripped) 467 to promote overloading in cases where partial substrate processing 468 is required. 469- The ocsp.py, ldap.py example scripts added. 470- Fix to univ.ObjectIdentifier input value handler to disallow negative 471 sub-IDs. 472 473Revision 0.0.11a 474---------------- 475 476- Decoder can now treat values of unknown types as opaque OctetString. 477- Fix to Set/SetOf type decoder to handle uninitialized scalar SetOf 478 components correctly. 479 480Revision 0.0.10a 481---------------- 482 483- API versioning mechanics retired (pyasn1.v1 -> pyasn1) what makes 484 it possible to zip-import pyasn1 sources (used by egg and py2exe). 485 486Revision 0.0.9a 487--------------- 488 489- Allow any non-zero values in Boolean type BER decoder, as it's in 490 accordnance with the standard. 491 492Revision 0.0.8a 493--------------- 494 495- Integer.__index__() now supported (for Python 2.5+). 496- Fix to empty value encoding in BitString encoder, test case added. 497- Fix to SequenceOf decoder that prevents it skipping possible Choice 498 typed inner component. 499- Choice.getName() method added for getting currently set component 500 name. 501- OctetsString.prettyPrint() does a single str() against its value 502 eliminating an extra quotes. 503 504Revision 0.0.7a 505--------------- 506 507- Large tags (>31) now supported by codecs. 508- Fix to encoder to properly handle explicitly tagged untagged items. 509- All possible value lengths (up to 256^126) now supported by encoders. 510- Fix to Tag class constructor to prevent negative IDs. 511 512Revision 0.0.6a 513--------------- 514 515- Make use of setuptools. 516- Constraints derivation verification (isSuperTypeOf()/isSubTypeOf()) fixed. 517- Fix to constraints comparation logic -- can't cmp() hash values as it 518 may cause false positives due to hash conflicts. 519 520Revision 0.0.5a 521--------------- 522 523- Integer BER codec reworked fixing negative values encoding bug. 524- clone() and subtype() methods of Constructed ASN.1 classes now 525 accept optional cloneValueFlag flag which controls original value 526 inheritance. The default is *not* to inherit original value for 527 performance reasons (this may affect backward compatibility). 528 Performance penalty may be huge on deeply nested Constructed objects 529 re-creation. 530- Base ASN.1 types (pyasn1.type.univ.*) do not have default values 531 anymore. They remain uninitialized acting as ASN.1 types. In 532 this model, initialized ASN.1 types represent either types with 533 default value installed or a type instance. 534- Decoders' prototypes are now class instances rather than classes. 535 This is to simplify initial value installation to decoder's 536 prototype value. 537- Bugfix to BitString BER decoder (trailing bits not regarded). 538- Bugfix to Constraints use as mapping keys. 539- Bugfix to Integer & BitString clone() methods 540- Bugix to the way to distinguish Set from SetOf at CER/DER SetOfEncoder 541- Adjustments to make it running on Python 1.5. 542- In tests, substrate constants converted from hex escaped literals into 543 octals to overcome indefinite hex width issue occuring in young Python. 544- Minor performance optimization of TagSet.isSuperTagSetOf() method 545- examples/sshkey.py added 546 547Revision 0.0.4a 548--------------- 549 550* Asn1ItemBase.prettyPrinter() -> \*.prettyPrint() 551 552Revision 0.0.3a 553--------------- 554 555* Simple ASN1 objects now hash to their Python value and don't 556 depend upon tag/constraints/etc. 557* prettyIn & prettyOut methods of SimplleAsn1Object become public 558* many syntax fixes 559 560Revision 0.0.2a 561--------------- 562 563* ConstraintsIntersection.isSuperTypeOf() and 564 ConstraintsIntersection.hasConstraint() implemented 565* Bugfix to NamedValues initialization code 566* +/- operators added to NamedValues objects 567* Integer.__abs__() & Integer.subtype() added 568* ObjectIdentifier.prettyOut() fixes 569* Allow subclass components at SequenceAndSetBase 570* AbstractConstraint.__cmp__() dropped 571* error.Asn1Error replaced with error.PyAsn1Error 572 573Revision 0.0.1a 574--------------- 575 576* Initial public alpha release 577