Increase version to 0.11.2
[libisds.git] / NEWS
blobe22b9a009df17a81330025545b4968a665530ed8
1 Version 0.11.2
2 ==============
4 • This release is fully compatible with the previous one.
6 • A build failure with Musl C library and new warnings with GCC 12 were fixed.
8 Version 0.11.1
9 ==============
11 • This release is fully compatible with the previous one.
13 • Building with GCC 10, which defaults to tentative definitions of global
14 variables now as with -fno-common option and resulted into
15 an error about multiple definitions of a variable, was fixed.
17 • The next release will be signed with 0x4FD1AEC3365AF7BF PGP key.
19 Version 0.11
20 ============
22 • This release is fully binary compatible with the previous one. However, API
23 and and ABI were augmented and thus the applications built against this
24 version won't run with previous versions of this library.
26 • A mobile key authentication is implemented with a new isds_login_mep()
27 function. If the function returns IE_PARTIAL_SUCCESS, an application should
28 periodically call it again until the server confirms a successful
29 authentication with IE_SUCCESS error code or raises an error with a different
30 code. This authentication method requires a distinct base URL. The
31 applications can use isds_mep_locator[] and isds_mep_testing_locator[]
32 constant strings.
34 • Preliminary manual pages are generated from DocBook sources at build time
35 if not disabled with --disable-doc configure option. Path to the required XSLT
36 style sheets can be adjusted with --with-docbook-xsl-stylesheets configure
37 option. Please note that the authoritative documentation is still the isds.h
38 header file.
40 • A new isds_get_box_state_history() function that implements
41 GetDataBoxActivityStatus service was added.
43 • isds_find_box_by_fulltext() function now supports searching for non-subsidiary
44 OVM boxes if DBTYPE_OVM_MAIN is passed as isds_DbType box_type argument. 
46 • isds_DbState enumeration type recognizes box state 6 as
47 DBSTATE_TEMP_UNACCESSIBLE_LAW. Although latest specification from 2016-04-10
48 declares all web services return value 2 instead of 6, it was reported the
49 value 6 was seen in the wild.
51 • This release adds new enum values to accommodate to changes in specification
52 published on 2017-03-05 and to changes in not yet released specification
53 update. Applications built against old library should be able to run against
54 the new library. Applications built against the new library must be run
55 against the new library.
57 • isds_UserType enum type has new USERTYPE_RECEIVER and USERTYPE_GUARDIAN
58 values.
60 • isds_DbType enum type has new DBTYPE_PFO_AUDITOR, DBTYPE_OVM_FO,
61 DBTYPE_OVM_PFO, and DBTYPE_OVM_PO values.
63 • This release adds a new enum value to isds_event_type type. Because the type
64 is used only on an output, the new library is fully compatible to the previous
65 one.
67 • Now isds_get_delivery_info() recognizes EV8 event (positive virus test) as
68 EVENT_UNDELIVERED_AV_CHECK value of isds_event_type enum type..
70 • If a new message was sent, publishing recipient identity controlled by
71 dmPublishOwnID member of the isds_envelope structure was not respected. This
72 bug is fixed now.
74 • Memory leaks in isds_envelope_free(), isds_get_commercial_credit(), and
75 isds_get_message_sender() were fixed.
77 • Logging binary blobs on debug level could read uninitialized memory on
78 platforms where size_t type is not compatible with int type. This is fixed
79 now.
81 • Compatibility with OpenSSL 1.1.0 was added.
83 • Compilation failed if libcurl support was disabled. This is fixed now.
85 • Dollar characters controlling argument orderding were removed from
86 printf-like formatting strings. They are not supported in mingw toolchain and
87 caused one-time password authentication failures on Windows platform.
89 • An indentation warning reported by GCC 6 was fixed.
91 • A compile time warning in on-line tests was fixed.
93 • Testing in environments without a UTF-8 locale does not fail anymore. 
95 • If GnuTLS and cURL support TLSv1.3, tests do not fail anymore.
97 • Tests do not fail if libgcrypt does not support MD5.
99 • Pregenerated certificates used for tests expired causing a test unit to
100 fail. This release updates the certificates.
102 Version 0.10
103 ============
105 • A new ISDSSearch2 service was implemented by an isds_find_box_by_fulltext()
106 function.
108 • The OpenSSL library can be used instead of the default GPGme library by
109 specifying --enable-openssl-backend option to the configure script.
111 • When parsing ISO 8601 date-time strings from a server response, microsecond
112 fractions are properly rounded (half up) now.
114 • An use-after-free bug in parsing SOAP response has been fixed.
116 • Handling su_seconds_t type used in the timeval structure was corrected to
117 enable flawless compilation with Mac OS X standard library.
119 • Various signedness mismataches which could lead to an undefined behaviour
120 were fixed.
122 • A work-around for accessing the strdup(3) function in Mac OS X standard
123 library was applied.
125 Version 0.9
126 ===========
128 • New functions isds_PersonName_free(), isds_BirthInfo_free(), and
129 isds_Address_free() have been added. Applications can use them for deallocating
130 isds_PersonName, isds_BirthInfo, and isds_Address structures.
132 • A memory leak in isds_DbOwnerInfo_free() has been fixed.
134 • A new glibc feature-macro _DEFAULT_SOURCE is used to silent warnings about
135 deprecated _SVID_SOURCE and _BSD_SOURCE macros. This is will be needed since
136 glibc-2.20 although current manual pages do not document this change.
138 • `template' identifier has been renamed in header files not to clash with C++
139 keywords.
141 • Global variable definitions have been moved from a private header file into
142 compilation units to satisfy strict OS X linker.
144 • This release is binary compatible with previous version 0.8. However
145 applications built against 0.9 are not guaranteed to work with 0.8.
147 • Documentation for GetDataBoxList SOAP service has been updated to align with
148 specification released on 2014-01-14.
150 • Internal test suite encountered many improvements (more return value checks,
151 NULL pointer dereference and memory leaks fixes, closing sockets fixed, some
152 code was simplified).
154 Version 0.8
155 ===========
157 • New ISDS service DataBoxCreditInfo has been implemented as
158 isds_get_commercial_credit(). This allows to retrieve current credit amount
159 available to the box owner for commercial activities like sending commercial
160 messages or using long term storage. It also allows to obtain recent history
161 of credit changes.
163 • Preliminary support for building with MinGW tool-chain has been added. Not
164 all tests have been ported yet.
166 • The MIME type normalization is case insensitive now.
168 • Status codes 1007 and 2011 of CheckDataBox ISDS service, bad box ID, are
169 recognized now and reported to the application as IE_INVAL.
171 • This release is binary compatible with previous version 0.7. However
172 applications built against 0.8 are not guaranteed to work with 0.7.
174 • The build system, autotools and gettext scripts namely, has been updated.
176 • NULL pointer dereference while parsing second and next permissions for
177 sending commercial messages has been fixed in the
178 isds_get_commercial_permissions() function.
180 • Bad arguments handling at isds_get_message_sender() function that could lead
181 to crash has been fixed.
183 Version 0.7
184 ===========
186 • New ISDS service Re-signISDSDocument has been implemented as
187 isds_resign_message() function. This can be used for adding time stamp to
188 already signed message or delivery details that had been produced without the
189 time stamp.
191 • TLS errors from cURL library are reported as IE_SECURITY to libisds
192 applications now. This is new isds_error value and it denotes any security
193 problem leading to abort of requested operation.
195 • This release is ABI-compatible with previous version 0.6. However
196 applications built against 0.7 are not guaranteed to work with 0.6.
198 • Internal test suite checks TLS authentication. GnuTLS is needed for
199 building tests now.
201 • Parsing dmRecipientOrgUnitNum value from message envelope has been fixed.
203 • A memory leak when using XPath has been fixed.
205 Version 0.6.2
206 =============
208 • Building tests out of source tree has been fixed.
210 Version 0.6.1
211 =============
213 • Missing test/simline/server_types.h files has been added into distribution
214 to fix test suite compilation.
216 Version 0.6
217 ===========
219 • ABI changed due to changes in specification. Some functions got additional
220 parameters or return codes.
222 • One-time password (OTP) authentication implemented. There is a new argument
223 at isds_login() and isds_change_password() functions of type struct isds_otp*.
224 Pass NULL if do not request OTP authentication.  The structure is used to
225 select OTP method (HMAC- or time-based code), to pass the OTP code (use NULL
226 to ask server for new time-based code), and to retrieve fine state of OTP
227 authentication. The functions can return IE_PARTIAL_SUCCESS if time-based
228 method is selected and server sent the new OTP code successfully.
229 OTP-authenticated context resides on URL different from others (use NULL or
230 isds_otp_locator for official instance or isds_otp_testing_locator for testing
231 instance). You can try client/login tool to check OTP-authenticated log-in.
232 You can use client/hotp_generator tool to generate series of HMAC-based OTP
233 codes (requires Perl Authen::OATH module).  There is a bug in cURL < 7.28.0
234 preventing from correct re-authentication. If you have unpatched cURL,
235 configure libisds with `--enable-curlreauthorizationbug' option. (See INSTALL
236 for more details.)
238 • isds_change_password() has additional argument to retrieve reference number
239 of the request assigned by the server. Pass NULL if you do not care.
241 • Internal tests check log-in procedure against simulated ISDS server. You can
242 run the simulated server as standalone executable in test/simline/server_cli
243 to check another clients. The server implements besides authentication
244 DummyRequest, services for changing passwords and EraseMessage.
246 • New DeleteDataBoxPromptly service implemented as isds_delete_box_promptly().
247 (This service is not documented in the specification).
249 • New PDZInfo service implemented as isds_get_commercial_permissions(). This
250 service enables application to know whether it can send commercial messages,
251 which subtypes of commercial messages can send (there are differences on
252 payment type), and to retrieve tokens for sending such messages.
254 • New service EraseMessage implemented as isds_delete_message_from_storage().
255 This function can be used to delete messages stored in long term storage (also
256 known as safe previously). Only messages in the long term storage can be
257 explicitly deleted.
259 • New user types USERTYPE_LIQUIDATOR (company liquidator) and
260 USERTYPE_OFFICIAL_CERT (undocumented in specification) added.
262 • Return value of isds_normalize_mime_type() is pointer to constant string now
263 to discourage application from fiddling with the value.
265 • Autoconf m4 macros have been updated (curl-7.26.0, gettext-0.18.1.1,
266 gpgme-1.3.1, libgcrypt-1.5.0, libtool-2.4.2, libxml2-2.8.0).
268 Version 0.5
269 ===========
271 • ABI changed due to changes in specification. API is preserved. Please
272 recompile your applications.
274 • This release has not been tested on real system because devoloper has not
275 obtained new testing account yet. But he believes library works. Testers are
276 welcome.
278 • Delivery events 5, 10, 11, 12, and 13 are recognized now.
280 • GetMessageAuthor service implemented as get_message_sender() function.
282 • New isds_envelope member `dmPublishOwnID' added. It allows sender to reveal
283 his natural name to recipient on sending a message.
285 • isds_GetDataBoxUsers() can return empty list of users now.
287 • New document types recognised. MIME types of Software602 forms have been
288 changed to reflect IANA registry.
290 • Credential for testing account removed from documentation and code. Owner of
291 ISDS removed all testing accounts, testers must request for new account and
292 must agree with new rules including keeping credentials in secret and
293 non-disclosuring found bugs in ISDS. Example clients and on-line tests read
294 credentials from environment and central file in build root direcotory. See
295 README for more details.
297 • Errors from libxml2 parser are captured by libisds log system as ILF_XML
298 facility and at ILL_ERROR level. Application can get them by standard library
299 interface.
301 • Library can be compiled without support for network operation by passing
302 `--without-libcurl' option to configure script. All functions dependent on
303 network remain available and will return IE_NOTSUP return code.
305 • Dead variables removed to pass compilation by GCC 4.6 in strict mode.
307 • Prepare test environment to pass without ~/.gnupg directory. Packagers can
308 remove the hack from their packages now.
310 Version 0.4
311 ===========
313 • This version breaks ABI because of ISDS specification change. Please adapt
314 your application where affected functions are called.
316 • ABI change: isds_get_password_expiration() will return NULL if password never
317 expires. Adjust your application to cope with NULL pointer on IE_SUCCESS.
319 • ABI change: isds_add_box() has new credentials_delivery parameter to request
320 for on-line credentials delivery and to receive token for that.
322 • ABI change: isds_add_user() has new credentials_delivery parameter to
323 request for on-line credentials delivery and to receive token for that.
325 • ABI change: isds_reset_password() has different arguments to request for
326 on-line credentials delivery and to receive token for that.
328 • ABI change: deprecated functions isds_set_tls() and
329 isds_set_mime_type_normalization() removed. Use isds_set_opt() instead.
331 • SOAP Fault error message is passed to application via isds_long_message().
333 • New function isds_get_list_of_sent_message_state_changes() implements
334 GetMessageStateChanges service. It returns list of message status changes in
335 requested time interval.
337 • New function isds_get_box_list_archive() implements GetDataBoxList service.
338 It returns ZIP archive with comma separate list of boxes. Different types of
339 lists can be requested. Only type `UPG' is available to public.
341 • New function isds_activate() implements Activate service.
343 • New delivery state EV0 is recognized as EVENT_ENTERED_SYSTEM isds_event_type.
345 • `tsr' document name suffix is recognized as time stamp file type.
347 • New function isds_pki_credentials_free() to deallocate isds_pki_credentials
348 structure.
350 • ISO time string parser fixed (negative or no time zone offset).
352 • All tests can run in parallel now.
354 • Lot of internal tests added. Funny color output now.
356 Version 0.3.1
357 =============
359 • Add `server' directory to distribution tar balls because example messages
360 are needed for some tests.
362 Version 0.3
363 ===========
365 • This library breaks API because of new features and changes in ISDS.
367 • This library version covers complete ISDS specification as released on
368 2010-05-23.
370 • Support for XML documents added. Use isds_document.is_xml to distinguish
371 between binary and XML document types. Because XML node list
372 (isds_document.xml_node_list) is used to describe XML document, your
373 application must link to libxml2 library too since now. Please note this
374 feature has not been heavily tested and that the interface is a little tricky
375 (regarding memory allocation). See client/sendxmldoc.c and
376 client/loadsentmessagewithxmldocuments.c examples for hints how to use it.
378 • Box creation (isds_add_box()) supports requesting for token. This
379 functionality is not covered by specification as it's not implemented on
380 server side yet.
382 • Message authenticity verification through new web service
383 AuthenticateMessage (isds_authenticate_message()) is supported. This function
384 sends a signed message encapsulated in CMS to ISDS where the system resolves
385 originality of the message.
387 • isds_envelope->dmType is input/output now. The one letter value is
388 transferred while sending new message. However ISDS ignores this option as
389 semantic is not defined yet.
391 • isds_envelope->timestamp is optional now. Some ISDS services can return
392 message without time stamp as can do not exist yet.
394 • Cookie-tracked session authentication changed to stateless. That means
395 password is transmitted to server on each request. Password is cached by
396 libcurl library until connection gets closed. Also different server locators
397 for non-certificate and certificate client authentication emerged. Old log-in
398 method will be canceled on 2010-07-01. Old libisds versions become useless.
399 Upgrade is strongly recommended.
401 • Static and out-of-source directory compilation is supported now.
403 • New function isds_normalize_mime_type(): translates file name extension to
404 MIME type (because official ISDS client is broken). This can be globally
405 enabled by isds_set_opt().
407 • Context parameters can be set by isds_set_opt(): TLS options (isds_set_tls()
408 is deprecated now), MIME type normalization (new: mangle document MIME type
409 in incoming messages into more reasonable values).
411 • Deprecated functions removed: isds_load_received_message(),
412 isds_log_signed_message().
414 • isds_DbUserInfo.caState added (country of contact address).
416 • isds_get_delivery_info() fixed to produce standard raw representation of
417 delivery details that can be loaded by isds_load_delivery() back.
419 • New function guess_raw_type(): detects type of supported message and
420 delivery details formats. Detected format can be supplied to
421 isds_load_message(). This way, application can automagically load and parse
422 any supported format.
424 • libcurl debug messages are caught by libisds and redirected to library
425 logger (ILF_HTTP facility).
427 Version 0.2.1
428 =============
430 • Libs value in libisds.pc pkg-config module fixed.
432 Version 0.2
433 ===========
435 • X.509 client certificate authentication is supported (but not tested yet).
436 Underlying HTTPS cURL library supports OpenSSL, GnuTLS and NSS cryptographic
437 back ends currently.
439 Current legislation requires to use cryptographic module with unexportable
440 private key. I've tested ASEKey produced by Athena Smartcard Solution
441 with OpenSSL back end successfully (a patch for curl-7.20.0 is required).
443 Example code client/certauth.c and server/tls/peer server and CA, server and
444 client cryptographic material are bundled. 
446 • Application can pass CRL PEM file to cryptographic library.
448 • Library offers pkg-config integration. Application build scripts can check
449 `libisds' pkg-config module and use PKG_CHECK_MODULES() m4 macro.
451 • Application can get dynamic string describing library version and its
452 dependencies at run-time (isds_version()).
454 • API changed and is not backward compatible. Please adjust and recompile your
455 applications.
457 • Library tests have been splitted to off-line (--enable-test) and on-line
458 (--enable-online-test) tests. On-line tests can not be compiled without
459 off-line tests. All tests are switched off by default.
461 • Server base URL for isds_login() does not contain path anymore. Application
462 must supply schema and hostname only (e.g. https://localhost/). Undefined base
463 URL will be interpreted as official ISDS locator.
465 • Base URLs of official ISDS server (isds_locator) and testing ISDS server
466 (isds_testing_locator) are provided by library. Application can offer them as
467 default choices to the user.
469 • Documents can be submitted for authorize conversion into Czech POINT system
470 (czp_convert_document(), requires specific isds_ctx).
472 • Application can catch all global log messages and redirect them wherever it
473 needs.
475 Version 0.1
476 ===========
478 • This is first public release. Whole ISDS 2010-01-22 specification is covered
479 except: XML documents, X.509 authentication