# 2.0.0 12/07/2013 Rewrite in test-driven development * Task #34: Generate API information * Task #35: Put up build system * Task #36: Create headers for API * Task #37: Generate unit test for Kca::OpenSSL common functions * Feature #38: Add access to library's version information * Task #39: Create unit tests for request generation and decoding * Task #40: Generate unit test for Kca::OpenSSL::Certificate * Task #41: Generate unit tests * Task #42: Implement missing methods to satisfy unit tests * Task #43: Implement generateRandom() * Task #44: Implement emailCertExtensions() * Task #45: Implement requestSubject() method * Task #46: Implement requestExtensions() method * Task #55: Extend class Extension to work with previously unknown object identifiers. * Task #56: Unit test class Extension to register previously unseen object identifiers * Task #57: Unit test Utils::requestExtensions() with an extension which has a non-common object identifier. * Bug #58: Looking up a NID does not populate numerical OID in Extension::oid(). * Task #59: Instantiated classes Certificate and Extension need comparison operators. * Task #60: Implement QSslCertificate extending methods. * Feature #61: Show library version in unit tests. * Bug #62: Values in custom extensions are printed with additional newlines * Feature #63: Provide method and file location data in exceptions. * Task #67: Refactor some methods in class Utils to avoid multiple coding/decoding to OpenSSL structures. * Task #68: Support parallel installation of different major library versions. * Task #69: Extend QSslKey with key-pair generator. * Task #70: Create new class Request for easy access to all request data * Task #71: Generate unit test for QSslKey extending class Key. * Task #72: Generate unit test for new class Request