======================================
PLOP and PLOP DS 5.1p1 (June 03, 2016)
======================================

- 2016-06-03 (bug #5565)
  Added a compile-time check to ensure the proper OpenSSL version.

- 2016-06-02 (bug #5567)
  Loading a certificate via the "rootcertfile" or "rootcertdir" option could
  trigger an exception
  "Internal error: assertion failed in file 'ds_dss.c', line 251"
  (bug introduced in PLOP DS 5.0p6).

- 2016-06-02 (bug #5561)
  Building the 64-bit Windows version from source code resulted in unresolved
  externals due to a packaging problem.

- 2016-06-01 (bug #5557)
  The binary for PHP 7 on Windows 64-bit was missing from the packages.

- 2016-06-01 (bug #5555)
  The PLOP/PLOP DS command-line tool as well as the COM and .NET wrappers
  were missing from the source code packages.

- 2016-05-20 (bug #5549)
  The universal pCOS pseudo object "pcosinterface" returned 10 instead of the
  current pCOS interface version 11.


===================================
PLOP and PLOP DS 5.1 (May 13, 2016)
===================================

Several new features; see PLOP manual for an overview.

- 2016-05-12 (bug #5541)
  When signing with update=false or encrypting PLOP failed to detect existing
  signatures if the signature field was not the first field. As a result the
  signature was lost even without sacrifice={signatures}. 

- 2016-05-12 (bug #5538)
  Signing documents with non-signature form fields and NeedAppearances=true
  must be rejected, but was accepted instead. Some form fields were not
  visible in the signed output.

- 2016-04-26 (feature #2049)
  Changed the default of the "copy" option of PLOP_create_pvf() from "false"
  to "true" for all language bindings except C/C++. This avoids possible
  problems in situations where the client doesn't have full control over
  memory allocation and freeing, especially with garbage collection where
  the language no longer sees any reference to the data.

- 2016-02-29 (spin-off of feature #2071; bug introduced with the fix for
  bug #4924 in PLOP 5.0p3)
  PLOP incorrectly issued the message "PDF file 'protected.pdf' has no pages"
  if an encrypted file was opened without providing the proper master password,
  i.e. in restricted pCOS mode.

- 2016-02-23 (bug #4974)
  When creating multiple output documents from the same input document,
  document info entries for one output document incorrectly persisted to the
  next output document.

- 2016-02-18 (bug #5461)
  Optimization: PLOP now remembers validated time-stamp signer certificates
  and avoids redundant OCSP requests. This has the following effects if
  both time-stamped signatures and document time-stamps are involved:
  - reduced number of OCSP requests
  - smaller DSS size
  - one less incremental update for adding a TSA OCSP response

- 2016-02-02 (bug #5448)
  The FTP protocol which is supported for the Authority Info Access (AIA)
  certificate extension with the caIssuers (Certification Authority Issuer)
  access method was not enabled for Android builds.

- 2016-01-27 (feature #2052)
  Added support for PHP 7 on Windows 64-bit.

- 2016-01-25 (feature #1937)
  Emit the "ESIC" entry in the Extensions dictionary per ETSI EN 319 142-1.

- 2016-01-21 (feature #2031)
  Re-introduced the keyword "signatures" for the "sacrifice" option which is
  needed to control preservation or deletion of existing signatures in non-
  signature mode.

- 2015-11-16 (feature #2039)
  Implemented the additional IpCOS interface in the Java binding which offers
  all core pCOS API functions plus various support functions for error handling,
  PVF handling etc. This interface facilitates demonstration of pCOS features
  in the pCOS Cookbook regardless of which product is used.

- 2015-12-08 (bug #5416)
  The PLOP class could not be extended in the PHP 7 binding due to a
  combination of an incorrect flag in the language wrapper and modified
  behavior in PHP 7.


==========================================
PLOP and PLOP DS 5.0p6 (November 30, 2015)
==========================================

- 2015-11-30 (bug #5386)
  The "serial" suboption of the "digitalid" option for engine=pkcs#11 now
  allows the serial number to be encoded in raw format of the token instead
  of the specified DER encoding to match the behavior of several tokens.

- 2015-11-30 (bug #5228/REOPENED)
  Refined the time-related aspects of OCSP response validation since the
  previously implemented checks were too strict. If nextUpdate is not present
  thisUpdate is allowed to be up to two hours old.

- 2015-11-24 (bug #5404)
  Optimized signature-related output as follows:
  - Certificates which don't belong to the chain of the signing certificate
    (e.g. an OCSP responder certificate) are no longer stored in the PKCS#7
    object, but only in the DSS.
  - Certificates which are already contained in the PKCS#7 object are no
    longer stored in the DSS, e.g. a common root for an OCSP responder and
    the signing certificate.
  In a typical scenario both optimizations together result in a file size
  reduction of ca. 4KB.   

- 2015-11-20 (bug #5401)
  Modified verification of an OCSP response as follows:
  - Even with validation=formal full validation was attempted.
  - The OCSP responder's certificate chain was regarded as trusted even in
    the absence of trusted root certificates.
  - In another situation OCSP responses could not be verified even in the
    presence of a trusted root certificate.

- 2015-11-16 (bug #5385)
  Error messages were lost in the COM and .NET language bindings.

- 2015-11-11 (bug #5351)
  The installer did not correctly register the COM DLL in some situations.

- 2015-10-14 (feature #1903)
  Added support for PHP 7.

- 2015-10-14 (bug #5338)
  The OS X framework could be broken in some packages.


===========================================
PLOP and PLOP DS 5.0p5 (September 01, 2015)
===========================================

- 2015-08-25 (bug #5306)
  The HelloSignServlet.java and SignServlet.java samples didn't work because
  they have not been adjusted to the new PLOP DS 5 signature API.

- 2015-08-25 (bug #5309)
  Fixed incorrect treatment of empty file names in PLOP_create_document():
  - Internal encodings which may be required for file name conversion were
    not included in the PLOP build.
  - The Java wrapper passed a random value for the file name length to the
    kernel if filename was NULL.
  - The kernel incorrectly attempted to convert empty file names. 

- 2015-07-30 (bug #5307)
  Fixed a memory leak in the Java binding in the convert_to_unicode() and
  create_pvf() methods.

- 2015-07-22 (bug #5256)
  Input PDF with invalid document info entries of wrong type were rejected
  with the message "Name object expected". Most importantly, OS X creates
  the entry /AAPL:Keywords[] which does not conform to ISO 32000-1. Now
  such info entries are silently ignored.
 

======================================
PLOP and PLOP DS 5.0p4 (July 01, 2015)
======================================

- 2015-07-01 (bug #5243)
  The PLOP command-line tool could not be used on OS X 10.6 systems due to
  a build problem ("Illegal instruction"). 

- 2015-06-24 (bug #5155)
  The 64-bit binary was missing from the Python 2.x package for OS X.

- 2015-06-22 (bug #5228)
  OCSP responses are rejected if the entry "thisUpdate" differs from the local
  time (signing time) by more than five minutes.

- 2015-06-18 (bug #5235)
  The "subject" suboption of the "digitalid" option of PLOP_prepare_signature()
  converted non-ASCII characters incorrectly. As a result, the digital id
  couldn't be located.

- 2015-06-05 (bug #5160)
  Removing XMP metadata with xmppolicy=remove now implies
  sacrifice={pdfa pdfua pdfvt pdfx}. Previously the output alleged to conform
  to the standard which was found in the XMP, but actually PLOP can no longer
  ensure standard conformance (especially regarding PDF/A extension schema
  descriptions).

- 2015-05-22 (bug #5215)
  Added detailed timing information to the log file to allow tracking of
  access to external resources, especially network-based items (OCS, CRL)
  and particularly PKCS#11 activities.

- 2015-05-18 (bug #5190)
  Perl binding: changed the order of cleanup operations to avoid the message
  "Library context pointer 0x0 is invalid ***" on stdout in rare situations
  related to the order in which the Perl operator calls destructors. The
  problem happened only very close to the end of the process.

- 2015-05-12 (feature #1934)
  Embed SigningCertificateV2 according to ESS as signed attribute also for
  sigtype=cms (in addition to sigtype=cades), i.e. for all author and approval
  signatures. 

- 2015-05-12 (bug #5195)
  Added support for Visual Studio 2013 (VS12) and 2015 (VS14) to the build
  system.

- 2015-05-08 (bug #5193)
  All suboptions of the "ocsp" and "crl" signature options except "url" and
  "httpauthentication" are now applied to OCSP/CRL requests for other
  certificates than the signing certificate. This benefits PKIs which require
  credenticals for subordinate OCS or CRL requests.

- 2015-05-08 (bug #5194)
  PLOP_prepare_signature() did not correctly ignore additional parameters
  in the HTTP Content-Type Header Field. For example, retrieving a CRL
  could fail with an error of the form
  "Unexpected content type 'application/pkix-crl;charset=ISO-8859-1' in reply
  to CRL request to URL '...' (expected content type 'application/pkix-crl')".
  Also, the type and subtype fields are now compared in a case insensitive
  manner as mandated by RFC 2045.

- 2015-05-08 (bug #5191)
  PLOP_prepare_signature() returned 0 instead of 1 in case of success in all
  language bindings except PHP. This affected only clients which didn't
  check for the error return value -1, but instead tested the success value.

- 2015-04-16 (bug #5162)
  Certain xref problems in the input document were silently repaired without
  triggering repair mode. Since the original problems persist, but can no
  longer be fixed after signing by update such input documents are now
  rejected when opening the document with "repair=none", or are rejected
  upon signing. As a result, such documents no longer cause problems if
  multiple signatures are applied. However, they can no longer be signed in
  update mode.


=======================================
PLOP and PLOP DS 5.0p3 (April 01, 2015)
=======================================

- 2015-04-01 (feature #1913)
  Added a binding for Python 3.3 and above on OS X.

- 2015-03-27 (bug #5139)
  Fixed a crash in PLOP_delete() caused by a memory violation in the PKCS#11
  cleanup code which hit only in Visual Studio 2012 builds, especially PHP 5.5.
 
- 2015-03-27 (bug #5144)
  The multisign samples for C, C++, ASP.NET and C# were missing an option
  list parameter in the second call to PLOP_create_document() (only relevant
  in the PKCS#11 case).

- 2015-03-18 (bug #5132)
  C++ binding: the "issuer" and "subject" suboptions of the "digitalid"
  option with engine=pkcs#11 incorrectly rejected valid query strings with
  "Bad syntax of certificate subject ('subject does not start with '/'')".

- 2015-03-18 (bug #5133)
  PLOP_prepare_signature() now always releases a PKCS#11 session which may
  be open, even for signature=false. This facilitates the implementation of
  multi-threaded signing applications.

- 2015-03-17 (bug #5127)
  Extraneous xmpMM:History properties were emitted if multiple output
  documents were created in memory and the contents fetched with
  PLOP_get_buffer().

- 2015-03-09 (bug #4924)
  Reject invalid documents without any page.

- 2015-03-07 (bug #5116)
  Debug builds for Windows crashed upon startup. Since PDFlib GmbH does
  not deliver such binaries the problem affects only source code customers
  with a custom build procedure.

- 2015-03-03 (bug #5048)
  Added support for Android systems with API 8 (Froyo) or above.

- 2015-02-17 (bug #5071)
  The sample signature visualization file signing_man.pdf was missing in
  the packages.


==========================================
PLOP and PLOP DS 5.0p2 (February 02, 2015)
==========================================

- 2015-02-02 (bug #5058)
  On Linux (especially with PHP) loading PLOP could fail due to an undefined
  symbol "plopds_pdf_Curl_HMAC_final".

- 2015-01-29 (bug #5013)
  Avoid the system function clock_gettime() in the AIX build in order
  to make the AIX binaries compatible with PASE on i5 systems.

- 2015-01-23 (bug #5050)
  Required certificates were not included in the DSS. This could result in
  validation failures if the option dss=true or sigtype=cades was set.

- 2015-01-23 (bug #5045)
  Added support for indirect CRLs, i.e. CRLs which are not issued by the CA
  which issued the certificate for which the revocation status is tested.

- 2015-01-19 (bug #5012)
  Prepared a package for iOS.

- 2015-01-19 (bug #5040)
  Fixed a problem with creating the front page in evaluation mode.

- 2015-01-14 (bug #5033)
  The names of existing signature fields were not handled correctly in
  Unicode-based language bindings. As a result, two signature fields with
  the same name could be created, which means that the newly created
  signature did not show up in Acrobat.


=========================================
PLOP and PLOP DS 5.0p1 (January 07, 2015)
=========================================

- 2015-01-07 (feature #1876)
  Added support for Ruby 2.2.

- 2015-01-07 (bug #4999)
  Updated the pCOS Path Reference since a section was missing due to a
  production problem.

- 2014-12-17 (bug #5008)
  For engine=pkcs#11 the token login is delayed until after the target
  certificate has been found. This avoids the need for entering the PIN
  already during the search process. If the target certificate is not found,
  no login is required.
  
- 2014-12-17 (bug #5010)
  Fixed a preprocessing problem with the source code packages.

- 2014-12-15 (feature #1865)
  Attempt to parse CRLs as PEM if DER decoding failed. This is required as
  workaround for some PKIs which (in violation of RFC 5280) deliver PEM-
  formatted CRLs.

- 2014-12-15 (bug #5000)
  The validation checks were incomplete for engine=pkcs#11. As a result,
  signatures could succeed with validate=full or ltv=full even if no
  usable revocation information could be obtained.

- 2014-12-12 (bug #4997)
  Signing with visualization in update mode without any license key produced
  the signature on the page after the target page if it existed, or
  triggered an error message "Invalid page number ... in 'field' option" if
  the target page was the last page.
  As a side effect time-stamp signatures are now always associated with the
  first page of the document (or the second if a demo front page is inserted)
  instead of the page which holds the visual signature.
  
- 2014-12-05 (bug #4989)
  The PKCS#11 engine didn't correctly unlock a mutex in the case that the
  PKCS#11 library didn't use the native OS locking functions. Since most
  PKCS#11 libraries use native OS functions for locking this should rarely
  affect applications; if so, the suboption "threadsafe=false" of the
  "digitalid" option can be used as a workaround.


========================================
PLOP and PLOP DS 5.0 (December 04, 2014)
========================================

Many new features including significant updates to the digital signature
machinery; see PLOP/PLOP DS manual for details.
