Version | Release date | Features |
---|---|---|
v5.10.RC1 |
February 2022 |
Main new features / improvements :
|
v5.10.RC1 |
February 2022 |
Bug fixes :
|
v5.9 |
September 2021 |
Main new features / improvements :
Bug fixes :
|
v5.8 |
February 2021 |
|
v5.7 |
August 2020 |
|
v5.6 |
March 2020 |
|
v5.5 |
October 2019 |
|
v5.4.3 |
August 2019 |
|
v5.4 |
January 2019 |
|
v5.3.2 |
October 2018 |
|
v5.3.1 |
July 2018 |
|
v5.3 |
May 2018 |
|
v5.2.1 |
October 2018 |
|
v5.2 |
December 2017 |
|
v5.1 |
September 2017 |
|
v5.0 |
April 2017 |
|
v4.7 |
October 2016 |
A XAdES PlugTest is planned in October / November 2015. Remaining changes resulting from this PlugTest and not included in v4.6 may be included in this release. An eSignature Validation PlugTest is planned in April 2016. Depending on the actual timeframe, impacts from this PlugTest may be included in this release, and the release of DSS 4.7 will be postponed accordingly. Other potential improvements and features:
|
v4.6* |
March 2016 |
Based on standards:
Improvements in packaging and core functionalities:
|
* October 2015: Implementing Acts Art. 27 & 37 (eSig formats)
To upgrade version of DSS, locate to the pom.xml
file of your project, search for the properties and then change the dss version in the corresponding field(s).
The following example shows how to switch to DSS version 5.10 using [BomModule].
<properties>
...
<dss.version>5.10</dss.version>
...
</properties>
...
<dependencyManagement>
<dependencies>
<dependency>
<groupId>eu.europa.ec.joinup.sd-dss</groupId>
<artifactId>dss-bom</artifactId>
<version>${dss.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
This chapter covers the most significant changes in DSS code occurred between different versions, requiring review and possible changes from code implementors.
For changes within XML Signature Policy please refer Validation policy migration guide.
Title |
v5.9 |
v5.10 |
ASiC container extraction |
ASiCExtractResult extractedResult = asicContainerExtractor.extract(); |
ASiCContent extractedResult = asicContainerExtractor.extract(); |
HttpClient5 transition |
import org.apache.http.* |
import org.apache.hc.client5.http.*
import org.apache.hc.core5.http.* |
FileCacheDataLoader |
fileCacheDataLoader.setCacheExpirationTime(Long.MAX_VALUE); |
fileCacheDataLoader.setCacheExpirationTime(-1); // negative value means cache never expires |
DiagnosticData: PDF signature field name |
List<String> fieldNames = xmlPDFRevision.getSignatureFieldName();
String name = fieldNames.get(i); |
List<PDFSignatureField> signatureFields = xmlPDFRevision.getPDFSignatureField();
String name = signatureFields.get(i).getName(); |
Title |
v5.8 |
v5.9 |
AIA data loader |
certificateVerifier.setDataLoader(dataLoader); |
AIASource aiaSource = new DefaultAIASource(dataLoader);
certificateVerifier.setAIASource(aiaSource); |
Signature Policy Provider |
certificateVerifier.setDataLoader(dataLoader); |
SignaturePolicyProvider signaturePolicyProvider = new SignaturePolicyProvider();
signaturePolicyProvider.setDataLoader(dataLoader);
documentValidator.setSignaturePolicyProvider(signaturePolicyProvider); |
JDBC dataSource |
JdbcRevocationSource.setDataSource(dataSource); |
JdbcCacheConnector jdbcCacheConnector = new JdbcCacheConnector(dataSource);
jdbcRevocationSource.setJdbcCacheConnector(jdbcCacheConnector); |
DiagnosticData: Signature policy |
String notice = xmlPolicy.getNotice();
Boolean zeroHash = xmlPolicy.isZeroHash();
XmlDigestAlgoAndValue digestAlgoAndValue = xmlPolicy.getDigestAlgoAndValue();
Boolean status = xmlPolicy.isStatus();
Boolean digestAlgorithsEqual = xmlPolicy.isDigestAlgorithsEqual(); |
XmlUserNotice notice = xmlPolicy.getUserNotice();
Boolean zeroHash = xmlPolicy.getDigestAlgoAndValue().isZeroHash();
XmlPolicyDigestAlgoAndValue digestAlgoAndValue = xmlPolicy.getDigestAlgoAndValue();
Boolean status = xmlPolicy.getDigestAlgoAndValue().isMatch();
Boolean digestAlgorithsEqual = xmlPolicy.getDigestAlgoAndValue().isDigestAlgorithsEqual(); |
DiagnosticData: QCStatements |
XmlPSD2Info psd2Info = xmlCertificate.getPSD2Info();
List<XmlOID> qcStatementIds = xmlCertificate.getQCStatementIds();
List<XmlOID> qcTypes = xmlCertificate.getQCTypes();
QCLimitValue qcLimitValue = xmlCertificate.getQCLimitValue();
OID semanticsIdentifier = xmlCertificate.getSemanticsIdentifier(); |
XmlPSD2Info psd2Info = xmlCertificate.getQcStatements().getPSD2Info();
QcCompliance qcCompliance = xmlCertificate.getQcStatements().getQcCompliance();
BigInteger qcEuRetentionPeriod = xmlCertificate.getQcStatements().getQcEuRetentionPeriod();
QcEuPDS qcEuPDS = xmlCertificate.getQcStatements().getQcEuPDS();
List<XmlOID> qcTypes = xmlCertificate.getQcStatements().getQCTypes();
QcEuLimitValue qcLimitValue = xmlCertificate.getQcStatements().getQcEuLimitValue();
QCLimitValue qcLimitValue = xmlCertificate.getQcStatements().getQCLimitValue();
OID semanticsIdentifier = xmlCertificate.getQcStatements().getSemanticsIdentifier(); |
This chapter covers the changes occurred between different versions of DSS within [validationPolicy].
Title |
v5.9 |
v5.10 |
Revocation freshness |
<CertificateConstraints>
...
<RevocationDataFreshness Level="FAIL" />
...
</CertificateConstraints>
...
<RevocationConstraints>
...
<RevocationFreshness Level="FAIL" Unit="DAYS" Value="0" />
...
</RevocationConstraints> |
<CertificateConstraints>
...
<RevocationFreshness Level="FAIL" Unit="DAYS" Value="0" />
...
</CertificateConstraints> |
Revocation freshness |
<CertificateConstraints>
...
<RevocationDataFreshness Level="FAIL" />
...
</CertificateConstraints>
...
<RevocationConstraints>
...
<!--<RevocationFreshness />-->
...
</RevocationConstraints> |
<CertificateConstraints>
...
<RevocationFreshnessNextUpdate Level="FAIL" />
...
</CertificateConstraints> |
Signing-certificate reference certificate chain |
<CertificateConstraints>
...
<SemanticsIdentifierForNaturalPerson />
<SemanticsIdentifierForLegalPerson />
...
</CertificateConstraints> |
<CertificateConstraints>
...
<SemanticsIdentifier>
<Id>0.4.0.194121.1.1</Id> // for natural person
<Id>0.4.0.194121.1.2</Id> // for legal person
</SemanticsIdentifier>
...
</CertificateConstraints> |
Title |
v5.8 |
v5.9 |
Revocation nextUpdate check |
<CertificateConstraints>
...
<RevocationDataNextUpdatePresent />
...
</CertificateConstraints> |
<CertificateConstraints>
...
<CRLNextUpdatePresent />
<OCSPNextUpdatePresent />
...
</CertificateConstraints> |
Signing-certificate reference certificate chain |
<SignedAttributesConstraints>
...
<AllCertDigestsMatch />
...
</SignedAttributesConstraints> |
<SignedAttributesConstraints>
...
<SigningCertificateRefersCertificateChain />
...
</SignedAttributesConstraints> |
This chapter covers the most frequently asked questions and issues occurring in implementations using DSS.
Version |
Description |
Solution |
v5.9 |
Returned signature level is *_NOT_ETSI |
DSS 5.9 enforces validation of AdES BASELINE signature profiles as per ETSI standards. The signature is not BASELINE if you receive *_NOT_ETSI output. |
v5.8 and higher |
PAdES : performance downgrade |
pdfSignatureService.setMaximalPagesAmountForVisualComparison(0); // skip validation For a complete code please see the example. |
v5.7 and higher |
How to filter certain Trusted Lists (for example countries) |
To filter LOTLs or TLs you can use predicates. For example, to filter TLs from Germany and Romania: link:../../../test/java/eu/europa/esig/dss/cookbook/example/snippets/TLValidationJobSnippets.java[role=include] |
v5.2 and higher |
XAdES : performance downgrade |
Xalan dependency has been removed as deprecated. XmlDefinerUtils.getInstance().setTransformerFactoryBuilder(
TransformerFactoryBuilder.getSecureTransformerBuilder()
.removeAttribute(XMLConstants.ACCESS_EXTERNAL_DTD)
.removeAttribute(XMLConstants.ACCESS_EXTERNAL_STYLESHEET)); |
all versions |
Build fails when using |
|
all versions |
Revocation data is missing on LT-level extension |
Verify whether the trust anchors and CRL/OCSP sources are configured appropriately. You need to provide them to the used CertificateVerifier: CertificateVerifier configuration
link:../../../test/java/eu/europa/esig/dss/cookbook/example/sign/SignXmlXadesLTTest.java[role=include] |
all versions |
Unable to access DSS Maven repository |
If the error occurs, more likely DSS-team is already aware about the issue. |
all versions |
PAdES validation without sending the document |
PAdES format requires a complete document to perform a signature validation. You cannot validate a PDF signature as a DETACHED XAdES or CAdES. |
all versions |
When validating a PDF with embedded CAdES-BASELINE signature the returned format is PDF_NOT_ETSI |
PAdES-BASELINE format establishes some limitations on the embedded CMS signature, which are not compliant with CAdES-BASELINE signatures. Therefore, it is not possible to have a valid PAdES-BASELINE profile with embedded CAdES-BASELINE signature. For more information about supported CMS please see [R03]. |