metaInfoForLayout = new ThreadLocal<>();
+
+ private FormsMetaInfoStaticContainer() {
+ // Empty constructor.
+ }
+
+ /**
+ * Sets meta info related to forms into static context, executes the action and then cleans meta info.
+ *
+ *
+ * Keep in mind that this instance will only be accessible from the same thread.
+ *
+ * @param metaInfoContainer instance to be set.
+ * @param action action which will be executed while meta info is set to static context.
+ */
+ // TODO DEVSIX-6368 We want to prevent customer code being run while meta info is in the static context
+ public static void useMetaInfoDuringTheAction(MetaInfoContainer metaInfoContainer, Action action) {
+ try {
+ metaInfoForLayout.set(metaInfoContainer);
+ action.execute();
+ } finally {
+ metaInfoForLayout.set(null);
+ }
+ }
+
+ /**
+ * Gets meta info which was set previously.
+ *
+ *
+ * Keep in mind that this operation will return meta info instance which was set previously from the same thread.
+ *
+ * @return meta info instance.
+ */
+ static MetaInfoContainer getMetaInfoForLayout() {
+ return metaInfoForLayout.get();
+ }
+}
diff --git a/forms/src/main/java/com/itextpdf/forms/fields/PdfButtonFormField.java b/forms/src/main/java/com/itextpdf/forms/fields/PdfButtonFormField.java
index 0714b2f0b6..ac79864b8c 100644
--- a/forms/src/main/java/com/itextpdf/forms/fields/PdfButtonFormField.java
+++ b/forms/src/main/java/com/itextpdf/forms/fields/PdfButtonFormField.java
@@ -1,7 +1,7 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: Bruno Lowagie, Paulo Soares, et al.
This program is free software; you can redistribute it and/or modify
diff --git a/forms/src/main/java/com/itextpdf/forms/fields/PdfChoiceFormField.java b/forms/src/main/java/com/itextpdf/forms/fields/PdfChoiceFormField.java
index 519786c7bf..a219ed26e0 100644
--- a/forms/src/main/java/com/itextpdf/forms/fields/PdfChoiceFormField.java
+++ b/forms/src/main/java/com/itextpdf/forms/fields/PdfChoiceFormField.java
@@ -1,7 +1,7 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: Bruno Lowagie, Paulo Soares, et al.
This program is free software; you can redistribute it and/or modify
diff --git a/forms/src/main/java/com/itextpdf/forms/fields/PdfFormField.java b/forms/src/main/java/com/itextpdf/forms/fields/PdfFormField.java
index 22cdfef6d1..ee943ce66f 100644
--- a/forms/src/main/java/com/itextpdf/forms/fields/PdfFormField.java
+++ b/forms/src/main/java/com/itextpdf/forms/fields/PdfFormField.java
@@ -1,7 +1,7 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: Bruno Lowagie, Paulo Soares, et al.
This program is free software; you can redistribute it and/or modify
@@ -106,6 +106,7 @@ This file is part of the iText (R) project.
import com.itextpdf.layout.properties.TransparentColor;
import com.itextpdf.layout.properties.VerticalAlignment;
import com.itextpdf.layout.renderer.IRenderer;
+import com.itextpdf.layout.renderer.MetaInfoContainer;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
@@ -117,6 +118,7 @@ This file is part of the iText (R) project.
import java.util.List;
import java.util.Map;
import java.util.Set;
+
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -2432,6 +2434,8 @@ protected void drawTextAppearance(Rectangle rect, PdfFont font, float fontSize,
Canvas modelCanvas = new Canvas(canvas, new Rectangle(0, -height, 0, 2 * height));
modelCanvas.setProperty(Property.APPEARANCE_STREAM_LAYOUT, true);
+ setMetaInfoToCanvas(modelCanvas);
+
Style paragraphStyle = new Style().setFont(font).setFontSize(fontSize);
paragraphStyle.setProperty(Property.LEADING, new Leading(Leading.MULTIPLIED, 1));
if (color != null)
@@ -2489,6 +2493,8 @@ protected void drawMultiLineTextAppearance(Rectangle rect, PdfFont font, String
Canvas modelCanvas = new Canvas(canvas, areaRect);
modelCanvas.setProperty(Property.APPEARANCE_STREAM_LAYOUT, true);
+ setMetaInfoToCanvas(modelCanvas);
+
Paragraph paragraph = createParagraphForTextFieldValue(value).setFont(font)
.setMargin(0)
.setPadding(3)
@@ -2545,6 +2551,9 @@ private void drawChoiceAppearance(Rectangle rect, float fontSize, String value,
Canvas modelCanvas = new Canvas(canvas, new Rectangle(3, 0, Math.max(0, width - widthBorder), Math.max(0, height - heightBorder)));
modelCanvas.setProperty(Property.APPEARANCE_STREAM_LAYOUT, true);
+
+ setMetaInfoToCanvas(modelCanvas);
+
Div div = new Div();
if(getFieldFlag(PdfChoiceFormField.FF_COMBO)) {
div.setVerticalAlignment(VerticalAlignment.MIDDLE);
@@ -2865,6 +2874,9 @@ protected void drawButton(PdfCanvas canvas, float x, float y, float width, float
setVerticalAlignment(VerticalAlignment.MIDDLE);
Canvas modelCanvas = new Canvas(canvas, new Rectangle(0, -height, width, 2 * height));
modelCanvas.setProperty(Property.APPEARANCE_STREAM_LAYOUT, true);
+
+ setMetaInfoToCanvas(modelCanvas);
+
modelCanvas.showTextAligned(paragraph, width / 2, height / 2, TextAlignment.CENTER, VerticalAlignment.MIDDLE);
}
@@ -2922,6 +2934,13 @@ protected void drawPdfACheckBox(PdfCanvas canvas, float width, float height, boo
}
}
+ static void setMetaInfoToCanvas(Canvas canvas) {
+ MetaInfoContainer metaInfo = FormsMetaInfoStaticContainer.getMetaInfoForLayout();
+ if (metaInfo != null) {
+ canvas.setProperty(Property.META_INFO, metaInfo);
+ }
+ }
+
private String getRadioButtonValue() {
for (String state : getAppearanceStates()) {
if (!"Off".equals(state)) {
diff --git a/forms/src/main/java/com/itextpdf/forms/fields/PdfSignatureFormField.java b/forms/src/main/java/com/itextpdf/forms/fields/PdfSignatureFormField.java
index beea9421c2..c660312983 100644
--- a/forms/src/main/java/com/itextpdf/forms/fields/PdfSignatureFormField.java
+++ b/forms/src/main/java/com/itextpdf/forms/fields/PdfSignatureFormField.java
@@ -1,7 +1,7 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: Bruno Lowagie, Paulo Soares, et al.
This program is free software; you can redistribute it and/or modify
diff --git a/forms/src/main/java/com/itextpdf/forms/fields/PdfTextFormField.java b/forms/src/main/java/com/itextpdf/forms/fields/PdfTextFormField.java
index 99d861f849..512094af2a 100644
--- a/forms/src/main/java/com/itextpdf/forms/fields/PdfTextFormField.java
+++ b/forms/src/main/java/com/itextpdf/forms/fields/PdfTextFormField.java
@@ -1,7 +1,7 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: Bruno Lowagie, Paulo Soares, et al.
This program is free software; you can redistribute it and/or modify
diff --git a/forms/src/main/java/com/itextpdf/forms/fields/borders/AbstractFormBorder.java b/forms/src/main/java/com/itextpdf/forms/fields/borders/AbstractFormBorder.java
index d00374be35..89fa77efd9 100644
--- a/forms/src/main/java/com/itextpdf/forms/fields/borders/AbstractFormBorder.java
+++ b/forms/src/main/java/com/itextpdf/forms/fields/borders/AbstractFormBorder.java
@@ -1,7 +1,7 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: Bruno Lowagie, Paulo Soares, et al.
This program is free software; you can redistribute it and/or modify
diff --git a/forms/src/main/java/com/itextpdf/forms/fields/borders/BeveledBorder.java b/forms/src/main/java/com/itextpdf/forms/fields/borders/BeveledBorder.java
index 5899202c80..d274ce5324 100644
--- a/forms/src/main/java/com/itextpdf/forms/fields/borders/BeveledBorder.java
+++ b/forms/src/main/java/com/itextpdf/forms/fields/borders/BeveledBorder.java
@@ -1,7 +1,7 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: Bruno Lowagie, Paulo Soares, et al.
This program is free software; you can redistribute it and/or modify
diff --git a/forms/src/main/java/com/itextpdf/forms/fields/borders/FormBorderFactory.java b/forms/src/main/java/com/itextpdf/forms/fields/borders/FormBorderFactory.java
index bbc440e8ae..30eb0fc40d 100644
--- a/forms/src/main/java/com/itextpdf/forms/fields/borders/FormBorderFactory.java
+++ b/forms/src/main/java/com/itextpdf/forms/fields/borders/FormBorderFactory.java
@@ -1,7 +1,7 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: Bruno Lowagie, Paulo Soares, et al.
This program is free software; you can redistribute it and/or modify
diff --git a/forms/src/main/java/com/itextpdf/forms/fields/borders/InsetBorder.java b/forms/src/main/java/com/itextpdf/forms/fields/borders/InsetBorder.java
index bef9ede53b..b8d7d25d9f 100644
--- a/forms/src/main/java/com/itextpdf/forms/fields/borders/InsetBorder.java
+++ b/forms/src/main/java/com/itextpdf/forms/fields/borders/InsetBorder.java
@@ -1,7 +1,7 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: Bruno Lowagie, Paulo Soares, et al.
This program is free software; you can redistribute it and/or modify
diff --git a/forms/src/main/java/com/itextpdf/forms/fields/borders/UnderlineBorder.java b/forms/src/main/java/com/itextpdf/forms/fields/borders/UnderlineBorder.java
index f215a3d4c9..e23f1b30ea 100644
--- a/forms/src/main/java/com/itextpdf/forms/fields/borders/UnderlineBorder.java
+++ b/forms/src/main/java/com/itextpdf/forms/fields/borders/UnderlineBorder.java
@@ -1,7 +1,7 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: Bruno Lowagie, Paulo Soares, et al.
This program is free software; you can redistribute it and/or modify
diff --git a/forms/src/main/java/com/itextpdf/forms/util/DrawingUtil.java b/forms/src/main/java/com/itextpdf/forms/util/DrawingUtil.java
index f66961e8a4..e46af8b1fb 100644
--- a/forms/src/main/java/com/itextpdf/forms/util/DrawingUtil.java
+++ b/forms/src/main/java/com/itextpdf/forms/util/DrawingUtil.java
@@ -1,7 +1,7 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: Bruno Lowagie, Paulo Soares, et al.
This program is free software; you can redistribute it and/or modify
diff --git a/forms/src/main/java/com/itextpdf/forms/xfa/AcroFieldsSearch.java b/forms/src/main/java/com/itextpdf/forms/xfa/AcroFieldsSearch.java
index ac720988d7..18c9800f8f 100644
--- a/forms/src/main/java/com/itextpdf/forms/xfa/AcroFieldsSearch.java
+++ b/forms/src/main/java/com/itextpdf/forms/xfa/AcroFieldsSearch.java
@@ -1,7 +1,7 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: Bruno Lowagie, Paulo Soares, et al.
This program is free software; you can redistribute it and/or modify
diff --git a/forms/src/main/java/com/itextpdf/forms/xfa/InverseStore.java b/forms/src/main/java/com/itextpdf/forms/xfa/InverseStore.java
index f6abc13df7..50d308a305 100644
--- a/forms/src/main/java/com/itextpdf/forms/xfa/InverseStore.java
+++ b/forms/src/main/java/com/itextpdf/forms/xfa/InverseStore.java
@@ -1,7 +1,7 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: Bruno Lowagie, Paulo Soares, et al.
This program is free software; you can redistribute it and/or modify
diff --git a/forms/src/main/java/com/itextpdf/forms/xfa/XfaForm.java b/forms/src/main/java/com/itextpdf/forms/xfa/XfaForm.java
index f25263bdf2..540ca6457b 100644
--- a/forms/src/main/java/com/itextpdf/forms/xfa/XfaForm.java
+++ b/forms/src/main/java/com/itextpdf/forms/xfa/XfaForm.java
@@ -1,7 +1,7 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: Bruno Lowagie, Paulo Soares, et al.
This program is free software; you can redistribute it and/or modify
diff --git a/forms/src/main/java/com/itextpdf/forms/xfa/Xml2Som.java b/forms/src/main/java/com/itextpdf/forms/xfa/Xml2Som.java
index 7ab5d58bff..0af5c532f7 100644
--- a/forms/src/main/java/com/itextpdf/forms/xfa/Xml2Som.java
+++ b/forms/src/main/java/com/itextpdf/forms/xfa/Xml2Som.java
@@ -1,7 +1,7 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: Bruno Lowagie, Paulo Soares, et al.
This program is free software; you can redistribute it and/or modify
diff --git a/forms/src/main/java/com/itextpdf/forms/xfa/Xml2SomDatasets.java b/forms/src/main/java/com/itextpdf/forms/xfa/Xml2SomDatasets.java
index 56c04da527..4062add1e3 100644
--- a/forms/src/main/java/com/itextpdf/forms/xfa/Xml2SomDatasets.java
+++ b/forms/src/main/java/com/itextpdf/forms/xfa/Xml2SomDatasets.java
@@ -1,7 +1,7 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: Bruno Lowagie, Paulo Soares, et al.
This program is free software; you can redistribute it and/or modify
diff --git a/forms/src/main/java/com/itextpdf/forms/xfdf/ActionObject.java b/forms/src/main/java/com/itextpdf/forms/xfdf/ActionObject.java
index 5d78f0020b..0cc564a5a1 100644
--- a/forms/src/main/java/com/itextpdf/forms/xfdf/ActionObject.java
+++ b/forms/src/main/java/com/itextpdf/forms/xfdf/ActionObject.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/forms/src/main/java/com/itextpdf/forms/xfdf/AnnotObject.java b/forms/src/main/java/com/itextpdf/forms/xfdf/AnnotObject.java
index 8c194d1499..f1ded4ef9f 100644
--- a/forms/src/main/java/com/itextpdf/forms/xfdf/AnnotObject.java
+++ b/forms/src/main/java/com/itextpdf/forms/xfdf/AnnotObject.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/forms/src/main/java/com/itextpdf/forms/xfdf/AnnotsObject.java b/forms/src/main/java/com/itextpdf/forms/xfdf/AnnotsObject.java
index 5775e89594..2ef54927b7 100644
--- a/forms/src/main/java/com/itextpdf/forms/xfdf/AnnotsObject.java
+++ b/forms/src/main/java/com/itextpdf/forms/xfdf/AnnotsObject.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/forms/src/main/java/com/itextpdf/forms/xfdf/AttributeObject.java b/forms/src/main/java/com/itextpdf/forms/xfdf/AttributeObject.java
index 7ce5610b22..90b4c9c60b 100644
--- a/forms/src/main/java/com/itextpdf/forms/xfdf/AttributeObject.java
+++ b/forms/src/main/java/com/itextpdf/forms/xfdf/AttributeObject.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/forms/src/main/java/com/itextpdf/forms/xfdf/BorderStyleAltObject.java b/forms/src/main/java/com/itextpdf/forms/xfdf/BorderStyleAltObject.java
index ff21daf85e..a584f20a2b 100644
--- a/forms/src/main/java/com/itextpdf/forms/xfdf/BorderStyleAltObject.java
+++ b/forms/src/main/java/com/itextpdf/forms/xfdf/BorderStyleAltObject.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/forms/src/main/java/com/itextpdf/forms/xfdf/DestObject.java b/forms/src/main/java/com/itextpdf/forms/xfdf/DestObject.java
index afcea1e46b..3d22cfef6e 100644
--- a/forms/src/main/java/com/itextpdf/forms/xfdf/DestObject.java
+++ b/forms/src/main/java/com/itextpdf/forms/xfdf/DestObject.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/forms/src/main/java/com/itextpdf/forms/xfdf/ElementContentEncodingFormat.java b/forms/src/main/java/com/itextpdf/forms/xfdf/ElementContentEncodingFormat.java
index 46db319355..a32d85d786 100644
--- a/forms/src/main/java/com/itextpdf/forms/xfdf/ElementContentEncodingFormat.java
+++ b/forms/src/main/java/com/itextpdf/forms/xfdf/ElementContentEncodingFormat.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/forms/src/main/java/com/itextpdf/forms/xfdf/FObject.java b/forms/src/main/java/com/itextpdf/forms/xfdf/FObject.java
index 0149905980..67e3520503 100644
--- a/forms/src/main/java/com/itextpdf/forms/xfdf/FObject.java
+++ b/forms/src/main/java/com/itextpdf/forms/xfdf/FObject.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/forms/src/main/java/com/itextpdf/forms/xfdf/FieldObject.java b/forms/src/main/java/com/itextpdf/forms/xfdf/FieldObject.java
index 1261dcfe95..9a716273e6 100644
--- a/forms/src/main/java/com/itextpdf/forms/xfdf/FieldObject.java
+++ b/forms/src/main/java/com/itextpdf/forms/xfdf/FieldObject.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/forms/src/main/java/com/itextpdf/forms/xfdf/FieldsObject.java b/forms/src/main/java/com/itextpdf/forms/xfdf/FieldsObject.java
index 2f9e72099c..75d8459a8a 100644
--- a/forms/src/main/java/com/itextpdf/forms/xfdf/FieldsObject.java
+++ b/forms/src/main/java/com/itextpdf/forms/xfdf/FieldsObject.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/forms/src/main/java/com/itextpdf/forms/xfdf/FitObject.java b/forms/src/main/java/com/itextpdf/forms/xfdf/FitObject.java
index 2963056557..cfc9ac4c73 100644
--- a/forms/src/main/java/com/itextpdf/forms/xfdf/FitObject.java
+++ b/forms/src/main/java/com/itextpdf/forms/xfdf/FitObject.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/forms/src/main/java/com/itextpdf/forms/xfdf/IdsObject.java b/forms/src/main/java/com/itextpdf/forms/xfdf/IdsObject.java
index 26cab1f81a..b93b19f41c 100644
--- a/forms/src/main/java/com/itextpdf/forms/xfdf/IdsObject.java
+++ b/forms/src/main/java/com/itextpdf/forms/xfdf/IdsObject.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/forms/src/main/java/com/itextpdf/forms/xfdf/Mode.java b/forms/src/main/java/com/itextpdf/forms/xfdf/Mode.java
index 1e220d1de5..4da8650a33 100644
--- a/forms/src/main/java/com/itextpdf/forms/xfdf/Mode.java
+++ b/forms/src/main/java/com/itextpdf/forms/xfdf/Mode.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/forms/src/main/java/com/itextpdf/forms/xfdf/XfdfConstants.java b/forms/src/main/java/com/itextpdf/forms/xfdf/XfdfConstants.java
index f2df25bc63..3aab13cec8 100644
--- a/forms/src/main/java/com/itextpdf/forms/xfdf/XfdfConstants.java
+++ b/forms/src/main/java/com/itextpdf/forms/xfdf/XfdfConstants.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/forms/src/main/java/com/itextpdf/forms/xfdf/XfdfFileUtils.java b/forms/src/main/java/com/itextpdf/forms/xfdf/XfdfFileUtils.java
index 90ffc1b385..0e83156ffd 100644
--- a/forms/src/main/java/com/itextpdf/forms/xfdf/XfdfFileUtils.java
+++ b/forms/src/main/java/com/itextpdf/forms/xfdf/XfdfFileUtils.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/forms/src/main/java/com/itextpdf/forms/xfdf/XfdfObject.java b/forms/src/main/java/com/itextpdf/forms/xfdf/XfdfObject.java
index 8523ab6b0a..aabe9ed2de 100644
--- a/forms/src/main/java/com/itextpdf/forms/xfdf/XfdfObject.java
+++ b/forms/src/main/java/com/itextpdf/forms/xfdf/XfdfObject.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/forms/src/main/java/com/itextpdf/forms/xfdf/XfdfObjectFactory.java b/forms/src/main/java/com/itextpdf/forms/xfdf/XfdfObjectFactory.java
index 34adf621b2..35c072160b 100644
--- a/forms/src/main/java/com/itextpdf/forms/xfdf/XfdfObjectFactory.java
+++ b/forms/src/main/java/com/itextpdf/forms/xfdf/XfdfObjectFactory.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/forms/src/main/java/com/itextpdf/forms/xfdf/XfdfObjectUtils.java b/forms/src/main/java/com/itextpdf/forms/xfdf/XfdfObjectUtils.java
index d106cdc481..1de13e850c 100644
--- a/forms/src/main/java/com/itextpdf/forms/xfdf/XfdfObjectUtils.java
+++ b/forms/src/main/java/com/itextpdf/forms/xfdf/XfdfObjectUtils.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/forms/src/main/java/com/itextpdf/forms/xfdf/XfdfReader.java b/forms/src/main/java/com/itextpdf/forms/xfdf/XfdfReader.java
index 6f814f7fb2..48a028b840 100644
--- a/forms/src/main/java/com/itextpdf/forms/xfdf/XfdfReader.java
+++ b/forms/src/main/java/com/itextpdf/forms/xfdf/XfdfReader.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/forms/src/main/java/com/itextpdf/forms/xfdf/XfdfWriter.java b/forms/src/main/java/com/itextpdf/forms/xfdf/XfdfWriter.java
index 544473e079..4d5271e553 100644
--- a/forms/src/main/java/com/itextpdf/forms/xfdf/XfdfWriter.java
+++ b/forms/src/main/java/com/itextpdf/forms/xfdf/XfdfWriter.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/forms/src/test/java/com/itextpdf/forms/FlatteningRotatedTest.java b/forms/src/test/java/com/itextpdf/forms/FlatteningRotatedTest.java
index 1d2db17517..045ad16929 100644
--- a/forms/src/test/java/com/itextpdf/forms/FlatteningRotatedTest.java
+++ b/forms/src/test/java/com/itextpdf/forms/FlatteningRotatedTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/forms/src/test/java/com/itextpdf/forms/FlatteningTest.java b/forms/src/test/java/com/itextpdf/forms/FlatteningTest.java
index 2ea471db1d..85b4a4a193 100644
--- a/forms/src/test/java/com/itextpdf/forms/FlatteningTest.java
+++ b/forms/src/test/java/com/itextpdf/forms/FlatteningTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/forms/src/test/java/com/itextpdf/forms/FlatteningWithNullKidElementTest.java b/forms/src/test/java/com/itextpdf/forms/FlatteningWithNullKidElementTest.java
index fb84eb7fab..3b9aabdc18 100644
--- a/forms/src/test/java/com/itextpdf/forms/FlatteningWithNullKidElementTest.java
+++ b/forms/src/test/java/com/itextpdf/forms/FlatteningWithNullKidElementTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/forms/src/test/java/com/itextpdf/forms/FormFieldAppendTest.java b/forms/src/test/java/com/itextpdf/forms/FormFieldAppendTest.java
index 4925394434..3006aff545 100644
--- a/forms/src/test/java/com/itextpdf/forms/FormFieldAppendTest.java
+++ b/forms/src/test/java/com/itextpdf/forms/FormFieldAppendTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/forms/src/test/java/com/itextpdf/forms/FormFieldFlatteningTest.java b/forms/src/test/java/com/itextpdf/forms/FormFieldFlatteningTest.java
index ca5c68d5f3..2f1cb2783e 100644
--- a/forms/src/test/java/com/itextpdf/forms/FormFieldFlatteningTest.java
+++ b/forms/src/test/java/com/itextpdf/forms/FormFieldFlatteningTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/forms/src/test/java/com/itextpdf/forms/FormFieldsTaggingTest.java b/forms/src/test/java/com/itextpdf/forms/FormFieldsTaggingTest.java
index 4247bda205..fc41c8dd1d 100644
--- a/forms/src/test/java/com/itextpdf/forms/FormFieldsTaggingTest.java
+++ b/forms/src/test/java/com/itextpdf/forms/FormFieldsTaggingTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/forms/src/test/java/com/itextpdf/forms/PdfAcroFormInAppendModeTest.java b/forms/src/test/java/com/itextpdf/forms/PdfAcroFormInAppendModeTest.java
index b666a5c518..64153c6153 100644
--- a/forms/src/test/java/com/itextpdf/forms/PdfAcroFormInAppendModeTest.java
+++ b/forms/src/test/java/com/itextpdf/forms/PdfAcroFormInAppendModeTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is offered under a commercial and under the AGPL license.
diff --git a/forms/src/test/java/com/itextpdf/forms/PdfAcroFormTest.java b/forms/src/test/java/com/itextpdf/forms/PdfAcroFormTest.java
index 56fe60a4c0..e75c67a726 100644
--- a/forms/src/test/java/com/itextpdf/forms/PdfAcroFormTest.java
+++ b/forms/src/test/java/com/itextpdf/forms/PdfAcroFormTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is offered under a commercial and under the AGPL license.
diff --git a/forms/src/test/java/com/itextpdf/forms/PdfCheckBoxFieldTest.java b/forms/src/test/java/com/itextpdf/forms/PdfCheckBoxFieldTest.java
index e4976e9ee6..05368cd109 100644
--- a/forms/src/test/java/com/itextpdf/forms/PdfCheckBoxFieldTest.java
+++ b/forms/src/test/java/com/itextpdf/forms/PdfCheckBoxFieldTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/forms/src/test/java/com/itextpdf/forms/PdfChoiceFieldTest.java b/forms/src/test/java/com/itextpdf/forms/PdfChoiceFieldTest.java
index cb8fb73246..fbbbc67674 100644
--- a/forms/src/test/java/com/itextpdf/forms/PdfChoiceFieldTest.java
+++ b/forms/src/test/java/com/itextpdf/forms/PdfChoiceFieldTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is offered under a commercial and under the AGPL license.
diff --git a/forms/src/test/java/com/itextpdf/forms/PdfEncryptionTest.java b/forms/src/test/java/com/itextpdf/forms/PdfEncryptionTest.java
index c48d2eb9ec..d44202a92a 100644
--- a/forms/src/test/java/com/itextpdf/forms/PdfEncryptionTest.java
+++ b/forms/src/test/java/com/itextpdf/forms/PdfEncryptionTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/forms/src/test/java/com/itextpdf/forms/PdfFormCopyTest.java b/forms/src/test/java/com/itextpdf/forms/PdfFormCopyTest.java
index 4318ec438c..8683115e66 100644
--- a/forms/src/test/java/com/itextpdf/forms/PdfFormCopyTest.java
+++ b/forms/src/test/java/com/itextpdf/forms/PdfFormCopyTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/forms/src/test/java/com/itextpdf/forms/PdfFormFieldMultilineTextTest.java b/forms/src/test/java/com/itextpdf/forms/PdfFormFieldMultilineTextTest.java
index 7ae781e791..49e614f518 100644
--- a/forms/src/test/java/com/itextpdf/forms/PdfFormFieldMultilineTextTest.java
+++ b/forms/src/test/java/com/itextpdf/forms/PdfFormFieldMultilineTextTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is offered under a commercial and under the AGPL license.
diff --git a/forms/src/test/java/com/itextpdf/forms/PdfFormFieldTest.java b/forms/src/test/java/com/itextpdf/forms/PdfFormFieldTest.java
index 340b80b662..d49f313b75 100644
--- a/forms/src/test/java/com/itextpdf/forms/PdfFormFieldTest.java
+++ b/forms/src/test/java/com/itextpdf/forms/PdfFormFieldTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/forms/src/test/java/com/itextpdf/forms/PdfFormFieldTextTest.java b/forms/src/test/java/com/itextpdf/forms/PdfFormFieldTextTest.java
index c0cbee466b..b5d3422287 100644
--- a/forms/src/test/java/com/itextpdf/forms/PdfFormFieldTextTest.java
+++ b/forms/src/test/java/com/itextpdf/forms/PdfFormFieldTextTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is offered under a commercial and under the AGPL license.
diff --git a/forms/src/test/java/com/itextpdf/forms/PdfFormFieldsHierarchyTest.java b/forms/src/test/java/com/itextpdf/forms/PdfFormFieldsHierarchyTest.java
index ad6085cb39..00e9e382c2 100644
--- a/forms/src/test/java/com/itextpdf/forms/PdfFormFieldsHierarchyTest.java
+++ b/forms/src/test/java/com/itextpdf/forms/PdfFormFieldsHierarchyTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is offered under a commercial and under the AGPL license.
diff --git a/forms/src/test/java/com/itextpdf/forms/Utf8FormsTest.java b/forms/src/test/java/com/itextpdf/forms/Utf8FormsTest.java
index 3a7161b014..35caeaa1bd 100644
--- a/forms/src/test/java/com/itextpdf/forms/Utf8FormsTest.java
+++ b/forms/src/test/java/com/itextpdf/forms/Utf8FormsTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/forms/src/test/java/com/itextpdf/forms/XfdfReaderTest.java b/forms/src/test/java/com/itextpdf/forms/XfdfReaderTest.java
index 25eb5688fc..34524d68e2 100644
--- a/forms/src/test/java/com/itextpdf/forms/XfdfReaderTest.java
+++ b/forms/src/test/java/com/itextpdf/forms/XfdfReaderTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/forms/src/test/java/com/itextpdf/forms/XfdfUnitTest.java b/forms/src/test/java/com/itextpdf/forms/XfdfUnitTest.java
index 6fad446439..c86ede3ed4 100644
--- a/forms/src/test/java/com/itextpdf/forms/XfdfUnitTest.java
+++ b/forms/src/test/java/com/itextpdf/forms/XfdfUnitTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is offered under a commercial and under the AGPL license.
diff --git a/forms/src/test/java/com/itextpdf/forms/XfdfWriterTest.java b/forms/src/test/java/com/itextpdf/forms/XfdfWriterTest.java
index 8402858abb..0fa9259d0a 100644
--- a/forms/src/test/java/com/itextpdf/forms/XfdfWriterTest.java
+++ b/forms/src/test/java/com/itextpdf/forms/XfdfWriterTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/forms/src/test/java/com/itextpdf/forms/fields/FormsMetaInfoStaticContainerTest.java b/forms/src/test/java/com/itextpdf/forms/fields/FormsMetaInfoStaticContainerTest.java
new file mode 100644
index 0000000000..c1771631cf
--- /dev/null
+++ b/forms/src/test/java/com/itextpdf/forms/fields/FormsMetaInfoStaticContainerTest.java
@@ -0,0 +1,102 @@
+/*
+ This file is part of the iText (R) project.
+ Copyright (c) 1998-2022 iText Group NV
+ Authors: iText Software.
+
+ This program is offered under a commercial and under the AGPL license.
+ For commercial licensing, contact us at https://itextpdf.com/sales. For AGPL licensing, see below.
+
+ AGPL licensing:
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU Affero General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU Affero General Public License for more details.
+
+ You should have received a copy of the GNU Affero General Public License
+ along with this program. If not, see .
+ */
+package com.itextpdf.forms.fields;
+
+import com.itextpdf.commons.actions.contexts.IMetaInfo;
+import com.itextpdf.layout.renderer.MetaInfoContainer;
+import com.itextpdf.test.ExtendedITextTest;
+import com.itextpdf.test.annotations.type.UnitTest;
+import org.junit.Assert;
+import org.junit.Test;
+import org.junit.experimental.categories.Category;
+
+@Category(UnitTest.class)
+public class FormsMetaInfoStaticContainerTest extends ExtendedITextTest {
+
+ @Test
+ public void useMetaInfoDuringTheActionOneThreadTest() {
+ MetaInfoContainer metaInfo1 = new MetaInfoContainer(new IMetaInfo() {});
+ MetaInfoContainer metaInfo2 = new MetaInfoContainer(new IMetaInfo() {});
+
+ FormsMetaInfoStaticContainer.useMetaInfoDuringTheAction(metaInfo1, () -> {
+ Assert.assertSame(metaInfo1, FormsMetaInfoStaticContainer.getMetaInfoForLayout());
+
+ FormsMetaInfoStaticContainer.useMetaInfoDuringTheAction(metaInfo2,
+ () -> Assert.assertSame(metaInfo2, FormsMetaInfoStaticContainer.getMetaInfoForLayout()));
+
+ Assert.assertNull(FormsMetaInfoStaticContainer.getMetaInfoForLayout());
+ });
+
+ Assert.assertNull(FormsMetaInfoStaticContainer.getMetaInfoForLayout());
+ }
+
+ @Test
+ public void useMetaInfoDuringTheActionSeveralThreadsTest() throws InterruptedException {
+ MetaInfoCheckClass metaInfoCheckClass1 = new MetaInfoCheckClass(null);
+ MetaInfoCheckClass metaInfoCheckClass2 = new MetaInfoCheckClass(metaInfoCheckClass1);
+ MetaInfoCheckClass metaInfoCheckClass3 = new MetaInfoCheckClass(metaInfoCheckClass2);
+
+ Thread thread = new Thread(() -> metaInfoCheckClass3.checkMetaInfo());
+ thread.start();
+ thread.join();
+
+ Assert.assertFalse(metaInfoCheckClass1.isCheckFailed());
+ Assert.assertFalse(metaInfoCheckClass2.isCheckFailed());
+ Assert.assertFalse(metaInfoCheckClass3.isCheckFailed());
+ }
+
+ private static class MetaInfoCheckClass {
+
+ private MetaInfoCheckClass metaInfoCheckClass = null;
+ private boolean checkFailed = false;
+
+ public MetaInfoCheckClass(MetaInfoCheckClass metaInfoCheckClass) {
+ this.metaInfoCheckClass = metaInfoCheckClass;
+ }
+
+ public void checkMetaInfo() {
+ MetaInfoContainer metaInfo = new MetaInfoContainer(new IMetaInfo() {
+ });
+
+ FormsMetaInfoStaticContainer.useMetaInfoDuringTheAction(metaInfo, () -> {
+ if (metaInfoCheckClass != null) {
+ Thread thread = new Thread(() -> metaInfoCheckClass.checkMetaInfo());
+ thread.start();
+ try {
+ thread.join();
+ } catch (Exception ignored) {
+ checkFailed = true;
+ }
+ }
+
+ checkFailed |= metaInfo != FormsMetaInfoStaticContainer.getMetaInfoForLayout();
+ });
+
+ checkFailed |= FormsMetaInfoStaticContainer.getMetaInfoForLayout() != null;
+ }
+
+ public boolean isCheckFailed() {
+ return checkFailed;
+ }
+ }
+}
\ No newline at end of file
diff --git a/forms/src/test/java/com/itextpdf/forms/fields/PdfFormFieldIntegrationTest.java b/forms/src/test/java/com/itextpdf/forms/fields/PdfFormFieldIntegrationTest.java
index 99a724d386..2c2499a04d 100644
--- a/forms/src/test/java/com/itextpdf/forms/fields/PdfFormFieldIntegrationTest.java
+++ b/forms/src/test/java/com/itextpdf/forms/fields/PdfFormFieldIntegrationTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is offered under a commercial and under the AGPL license.
diff --git a/forms/src/test/java/com/itextpdf/forms/fields/PdfFormFieldUnitTest.java b/forms/src/test/java/com/itextpdf/forms/fields/PdfFormFieldUnitTest.java
index a563546fb8..bc7fd815a4 100644
--- a/forms/src/test/java/com/itextpdf/forms/fields/PdfFormFieldUnitTest.java
+++ b/forms/src/test/java/com/itextpdf/forms/fields/PdfFormFieldUnitTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is offered under a commercial and under the AGPL license.
@@ -22,34 +22,65 @@ This file is part of the iText (R) project.
*/
package com.itextpdf.forms.fields;
+import com.itextpdf.commons.actions.contexts.IMetaInfo;
import com.itextpdf.forms.exceptions.FormsExceptionMessageConstant;
import com.itextpdf.io.source.ByteArrayOutputStream;
import com.itextpdf.kernel.exceptions.PdfException;
+import com.itextpdf.kernel.geom.Rectangle;
import com.itextpdf.kernel.pdf.PdfDictionary;
import com.itextpdf.kernel.pdf.PdfDocument;
+import com.itextpdf.kernel.pdf.PdfResources;
+import com.itextpdf.kernel.pdf.PdfStream;
import com.itextpdf.kernel.pdf.PdfWriter;
+import com.itextpdf.kernel.pdf.canvas.PdfCanvas;
+import com.itextpdf.layout.Canvas;
+import com.itextpdf.layout.properties.Property;
+import com.itextpdf.layout.renderer.MetaInfoContainer;
import com.itextpdf.test.ExtendedITextTest;
import com.itextpdf.test.annotations.type.UnitTest;
-import org.junit.Rule;
+import org.junit.Assert;
import org.junit.Test;
import org.junit.experimental.categories.Category;
-import org.junit.rules.ExpectedException;
@Category(UnitTest.class)
public class PdfFormFieldUnitTest extends ExtendedITextTest {
- @Rule
- public ExpectedException junitExpectedException = ExpectedException.none();
@Test
public void cannotGetRectangleIfKidsIsNullTest() {
- junitExpectedException.expect(PdfException.class);
- junitExpectedException
- .expectMessage(FormsExceptionMessageConstant.WRONG_FORM_FIELD_ADD_ANNOTATION_TO_THE_FIELD);
-
PdfDocument pdfDocument = new PdfDocument(new PdfWriter(new ByteArrayOutputStream()));
PdfDictionary pdfDictionary = new PdfDictionary();
PdfFormField pdfFormField = new PdfFormField(pdfDocument);
- pdfFormField.getRect(pdfDictionary);
+ Exception exception = Assert.assertThrows(PdfException.class,
+ () -> pdfFormField.getRect(pdfDictionary));
+ Assert.assertEquals(FormsExceptionMessageConstant.WRONG_FORM_FIELD_ADD_ANNOTATION_TO_THE_FIELD, exception.getMessage());
+ }
+
+ @Test
+ public void setMetaInfoToCanvasMetaInfoUsedTest() {
+ Canvas canvas = createCanvas();
+ MetaInfoContainer metaInfoContainer = new MetaInfoContainer(new IMetaInfo() {
+ });
+ FormsMetaInfoStaticContainer.useMetaInfoDuringTheAction(metaInfoContainer,
+ () -> PdfFormField.setMetaInfoToCanvas(canvas));
+
+ Assert.assertSame(metaInfoContainer, canvas.getProperty(Property.META_INFO));
+ }
+
+ @Test
+ public void setMetaInfoToCanvasMetaInfoNotUsedTest() {
+ Canvas canvas = createCanvas();
+ PdfFormField.setMetaInfoToCanvas(canvas);
+
+ Assert.assertNull(canvas.getProperty(Property.META_INFO));
+ }
+
+ private static Canvas createCanvas() {
+ try (PdfDocument document = new PdfDocument(new PdfWriter(new ByteArrayOutputStream()))) {
+ PdfStream stream = (PdfStream) new PdfStream().makeIndirect(document);
+ PdfResources resources = new PdfResources();
+ PdfCanvas pdfCanvas = new PdfCanvas(stream, resources, document);
+ return new Canvas(pdfCanvas, new Rectangle(100, 100));
+ }
}
}
diff --git a/forms/src/test/java/com/itextpdf/forms/widget/AppearanceCharacteristicsTest.java b/forms/src/test/java/com/itextpdf/forms/widget/AppearanceCharacteristicsTest.java
index 3288bba41e..146645ed52 100644
--- a/forms/src/test/java/com/itextpdf/forms/widget/AppearanceCharacteristicsTest.java
+++ b/forms/src/test/java/com/itextpdf/forms/widget/AppearanceCharacteristicsTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/forms/src/test/java/com/itextpdf/forms/xfa/SecurityTestXmlParserFactory.java b/forms/src/test/java/com/itextpdf/forms/xfa/SecurityTestXmlParserFactory.java
index 699721b0ee..e74f473386 100644
--- a/forms/src/test/java/com/itextpdf/forms/xfa/SecurityTestXmlParserFactory.java
+++ b/forms/src/test/java/com/itextpdf/forms/xfa/SecurityTestXmlParserFactory.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
@@ -72,4 +72,4 @@ public InputSource resolveEntity(String publicId, String systemId) {
throw new PdfException(ExceptionTestUtil.getXxeTestMessage());
}
}
-}
\ No newline at end of file
+}
diff --git a/forms/src/test/java/com/itextpdf/forms/xfa/XFAFormTest.java b/forms/src/test/java/com/itextpdf/forms/xfa/XFAFormTest.java
index 72f2921157..8fc869598f 100644
--- a/forms/src/test/java/com/itextpdf/forms/xfa/XFAFormTest.java
+++ b/forms/src/test/java/com/itextpdf/forms/xfa/XFAFormTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/forms/src/test/java/com/itextpdf/forms/xfa/XfaSecurityTest.java b/forms/src/test/java/com/itextpdf/forms/xfa/XfaSecurityTest.java
index 888f6c4868..3c72029ac3 100644
--- a/forms/src/test/java/com/itextpdf/forms/xfa/XfaSecurityTest.java
+++ b/forms/src/test/java/com/itextpdf/forms/xfa/XfaSecurityTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/forms/src/test/java/com/itextpdf/forms/xfdf/ExceptionTestXmlParserFactory.java b/forms/src/test/java/com/itextpdf/forms/xfdf/ExceptionTestXmlParserFactory.java
index d1d37f1fba..22486b39ce 100644
--- a/forms/src/test/java/com/itextpdf/forms/xfdf/ExceptionTestXmlParserFactory.java
+++ b/forms/src/test/java/com/itextpdf/forms/xfdf/ExceptionTestXmlParserFactory.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is offered under a commercial and under the AGPL license.
diff --git a/forms/src/test/java/com/itextpdf/forms/xfdf/SecurityTestXmlParserFactory.java b/forms/src/test/java/com/itextpdf/forms/xfdf/SecurityTestXmlParserFactory.java
index fb78bc6682..02efe8a82f 100644
--- a/forms/src/test/java/com/itextpdf/forms/xfdf/SecurityTestXmlParserFactory.java
+++ b/forms/src/test/java/com/itextpdf/forms/xfdf/SecurityTestXmlParserFactory.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
@@ -69,4 +69,4 @@ public InputSource resolveEntity(String publicId, String systemId) {
throw new PdfException("Test message");
}
}
-}
\ No newline at end of file
+}
diff --git a/forms/src/test/java/com/itextpdf/forms/xfdf/XfdfReaderUnitTest.java b/forms/src/test/java/com/itextpdf/forms/xfdf/XfdfReaderUnitTest.java
index 82e27a8036..f0ec93c961 100644
--- a/forms/src/test/java/com/itextpdf/forms/xfdf/XfdfReaderUnitTest.java
+++ b/forms/src/test/java/com/itextpdf/forms/xfdf/XfdfReaderUnitTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is offered under a commercial and under the AGPL license.
diff --git a/forms/src/test/java/com/itextpdf/forms/xfdf/XfdfSecurityTest.java b/forms/src/test/java/com/itextpdf/forms/xfdf/XfdfSecurityTest.java
index 60e4be1680..aaad30fef8 100644
--- a/forms/src/test/java/com/itextpdf/forms/xfdf/XfdfSecurityTest.java
+++ b/forms/src/test/java/com/itextpdf/forms/xfdf/XfdfSecurityTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/forms/src/test/java/com/itextpdf/forms/xfdf/XfdfWriterUnitTest.java b/forms/src/test/java/com/itextpdf/forms/xfdf/XfdfWriterUnitTest.java
index 83cd0090a5..fe870b2235 100644
--- a/forms/src/test/java/com/itextpdf/forms/xfdf/XfdfWriterUnitTest.java
+++ b/forms/src/test/java/com/itextpdf/forms/xfdf/XfdfWriterUnitTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is offered under a commercial and under the AGPL license.
diff --git a/hyph/pom.xml b/hyph/pom.xml
index d92651dc98..522f49dcbb 100644
--- a/hyph/pom.xml
+++ b/hyph/pom.xml
@@ -4,7 +4,7 @@
com.itextpdf
root
- 7.2.1
+ 7.2.2
hyph
iText 7 - hyph
diff --git a/hyph/src/main/resources/com/itextpdf/hyph/da.xml b/hyph/src/main/resources/com/itextpdf/hyph/da.xml
index 5caa986a94..f61efffe43 100644
--- a/hyph/src/main/resources/com/itextpdf/hyph/da.xml
+++ b/hyph/src/main/resources/com/itextpdf/hyph/da.xml
@@ -1,4 +1,4 @@
-
+
.ex1a2 .ex3em .fal6sc .fe6st5a .flu4g3 .furch8 .ga6ner .ge3n4a
-.ge5rö
+.ge5rö
.ges6
.halb5 .halbe6 .hal6br .haup4 .hau4t .heima6 .he4r3e
.her6za .he5x .hin3 .hir8sc .ho4c .hu3sa .hy5o .ibe5 .ima6ge .in1
-.ini6 .is5chi .jagd5 .kal6k5o .ka6ph .ki4e .kop6f3 .kraf6 .kü5ra
-.lab6br .liie6 .lo6s5k .lö4s3t .ma5d .mi2t1 .no6th .no6top
+.ini6 .is5chi .jagd5 .kal6k5o .ka6ph .ki4e .kop6f3 .kraf6 .kü5ra
+.lab6br .liie6 .lo6s5k .lö4s3t .ma5d .mi2t1 .no6th .no6top
.obe8ri .ob1l .obs2 .ob6st5e .or3c .ort6s5e .ost3a .oste8r .pe4re
-.pe3ts .ph6 .po8str .rau4m3 .re5an .ro8q .ru5the .rü5be
-
+.pe3ts .ph6 .po8str .rau4m3 .re5an .ro8q .ru5the .rü5be
+
.sch8 .se6e .se5n6h .se5ra .si2e .spi6ke .st4 .sy2n
.tages5 .tan6kl .ta8th .te6e .te8str .to6der .to8nin .to6we .um1
.umpf4 .un1 .une6 .unge5n .ur1c .ur5en .ve6rin .vora8 .wah6l5 .we8ges
.we8s2t .wes3te
-.wo6r .wor3a .wun4s .zi4e .zuch8 .ände8re .öch8 aa1c aa2gr
+.wo6r .wor3a .wun4s .zi4e .zuch8 .ände8re .öch8 aa1c aa2gr
aal5e aa6r5a a5arti aa2s1t aat2s 6aba ab3art 1abdr 6abel aben6dr
-ab5erk ab5err ab5esse 1abf 1abg 1abhä ab1ir 1abko a1bl ab1la
-5ablag a6blaß ab4ler ab1lu a8blä 5a6blö abma5c
+ab5erk ab5err ab5esse 1abf 1abg 1abhä ab1ir 1abko a1bl ab1la
+5ablag a6blaß ab4ler ab1lu a8blä 5a6blö abma5c
1abn ab1ra ab1re 5a6brec ab1ro
ab1s
ab8sk abs2z 3abtei ab1ur 1abw
-5abze 5abzu ab1än abäu8 a4ce. a5chal ach5art ach5au a1che
+5abze 5abzu ab1än abäu8 a4ce. a5chal ach5art ach5au a1che
a8chent ach6er. a6ch5erf a1chi ach1l ach3m ach5n a1cho ach3re a1chu
-ach1w a1chy ach5äf ack1o acks6t ack5sta a1d 8ad. a6d5ac ad3ant
+ach1w a1chy ach5äf ack1o acks6t ack5sta a1d 8ad. a6d5ac ad3ant
ad8ar 5addi a8dein ade5o8 adi5en 1adj 1adle ad1op a2dre 3adres adt1
-1adv a6dä a1e2d ae1r a1er. 1aero 8afa a3fal af1an a5far a5fat
+1adv a6dä a1e2d ae1r a1er. 1aero 8afa a3fal af1an a5far a5fat
af1au a6fentl a2f1ex af1fr af5rau af1re 1afri af6tent af6tra aft5re
-a6f5um 8afä ag5abe 5a4gent ag8er ages5e 1aggr ag5las ag1lo a1gn
+a6f5um 8afä ag5abe 5a4gent ag8er ages5e 1aggr ag5las ag1lo a1gn
ag2ne 1agog a6g5und a1ha a1he ah5ein a4h3erh a1hi ahl1a ah1le ah4m3ar
ahn1a a5ho ahra6 ahr5ab ah1re ah8rei ahren8s ahre4s3 ahr8ti ah1ru a1hu
-ah8ö ai3d2s ai1e aif6 a3inse ai4re. a5isch. ais8e a3ismu ais6n
+ah8ö ai3d2s ai1e aif6 a3inse ai4re. a5isch. ais8e a3ismu ais6n
aiso6 a1j 1akad a4kade a1ke a1ki 1akko 5akro1 a5lal al5ans 3al8arm
al8beb al8berw alb5la 3album al1c a1le a6l5e6be a4l3ein a8lel a8lerb
a8lerh a6lert 5a6l5eth 1algi al4gli al3int al4lab al8lan al4l3ar
alle3g a1lo a4l5ob al6schm al4the
al4t3re 8a1lu alu5i a6lur
-alu3ta a1lä a6mate 8ame. 5a6meise am6m5ei am6mum am2n ampf3a
-am6schw am2ta a1mu a1mä a3nac a1nad anadi5e an3ako an3alp 3analy
+alu3ta a1lä a6mate 8ame. 5a6meise am6m5ei am6mum am2n ampf3a
+am6schw am2ta a1mu a1mä a3nac a1nad anadi5e an3ako an3alp 3analy
an3ame an3ara a1nas an5asti a1nat anat5s an8dent ande4s3 an1ec an5eis
-an1e2k 4aner. a6n5erd a8nerf a6n5erke 1anfa 5anfert 1anfä 3angab
-5angebo an3gli ang6lis an2gn 3angri ang5t6 5anhä ani5g ani4ka
+an1e2k 4aner. a6n5erd a8nerf a6n5erke 1anfa 5anfert 1anfä 3angab
+5angebo an3gli ang6lis an2gn 3angri ang5t6 5anhä ani5g ani4ka
an5i8on an1kl an6kno an4kro 1anl anma5c anmar4 3annah anne4s3 a1no
5a6n1o2d 5a6n3oma 5a6nord 1anr an1sa 5anschl an4soz an1st 5anstal
-an1s2z 5antenn an1th 5anwä a5ny an4z3ed 5anzeig 5anzieh 3anzug
-an1ä 5anäs a1nö anö8d a1os a1pa 3apfel a2ph1t
-aph5ä6 a1pi 8apl apo1c apo1s
+an1s2z 5antenn an1th 5anwä a5ny an4z3ed 5anzeig 5anzieh 3anzug
+an1ä 5anäs a1nö anö8d a1os a1pa 3apfel a2ph1t
+aph5ä6 a1pi 8apl apo1c apo1s
a6pos2t
a6poth 1appa ap1pr a1pr
-a5pä a3pü a1ra a4r3af ar3all 3arbei 2arbt ar1c 2a1re ar3ein
+a5pä a3pü a1ra a4r3af ar3all 3arbei 2arbt ar1c 2a1re ar3ein
ar2gl 2a1ri ari5es ar8kers ar6les ar4nan ar5o6ch ar1o2d a1rol ar3ony
a8ror a3ros ar5ox ar6schl 8artei ar6t5ri a1ru a1ry 1arzt arz1w
-ar8zä arä8m arö6 ar5öm ar1ü2 a1sa a6schec
+ar8zä arä8m arö6 ar5öm ar1ü2 a1sa a6schec
asch5l asch3m a6schn a3s4hi as1pa asp5l
as5tev 1asth
a1str ast3re 8a1ta ata5c ata3la a6tapf ata5pl a1te a6teli aten5a
ate5ran 6atf 6atg a1th at3hal 1athl 2a1ti 5atlant 3atlas 8atmus 6atn
-a1to a6t5ops ato6ra a6t5ort. 4a1tr a6t5ru at2t1h at5t6hä 6a1tu
-atz1w a1tä a1tü au1a au6bre auch3a au1e aue4l 5aufent
-3auffü 3aufga 1aufn auf1t 3auftr 1aufw 3auge. au4kle aule8s 6aum
+a1to a6t5ops ato6ra a6t5ort. 4a1tr a6t5ru at2t1h at5t6hä 6a1tu
+atz1w a1tä a1tü au1a au6bre auch3a au1e aue4l 5aufent
+3auffü 3aufga 1aufn auf1t 3auftr 1aufw 3auge. au4kle aule8s 6aum
au8mar aum5p 1ausb 3ausd 1ausf 1ausg au8sin
au4sta 1ausw 1ausz
-aut5eng au1th 1auto auße8 a1v ave5r6a aver6i a1w a6wes a1x
-a2xia a6xio a1ya a1z azi5er. 8aß 1ba 8ba8del ba1la ba1na
+aut5eng au1th 1auto auße8 a1v ave5r6a aver6i a1w a6wes a1x
+a2xia a6xio a1ya a1z azi5er. 8aß 1ba 8ba8del ba1la ba1na
ban6k5r ba5ot bardi6n ba1ro basten6 bau3sp 2b1b bb6le b2bli 2b1c 2b1d
1be be1a be8at. be1ch 8becht 8becke. be5el be1en bee8rei be5eta bef2
-8beff be1g2 behö8 bei1s 6b5eisen bei3tr b8el bel8o belu3t be3nac
-bend6o be6ners be6nerw be4nor ben4se6 bens5el be1nä be1nü
-be1o2 b8er. be1ra be8rac ber8gab. ber1r be1rü bes8c bes5erh
+8beff be1g2 behö8 bei1s 6b5eisen bei3tr b8el bel8o belu3t be3nac
+bend6o be6ners be6nerw be4nor ben4se6 bens5el be1nä be1nü
+be1o2 b8er. be1ra be8rac ber8gab. ber1r be1rü bes8c bes5erh
bes2p be5tha bet5sc be1un be1ur 8bex be6zwec 2b1f8
2b1g2
-bga2s5 bge1 2b1h bhole6 1bi bi1bl b6ie bi1el bi1la bilä5 bi1na
+bga2s5 bge1 2b1h bhole6 1bi bi1bl b6ie bi1el bi1la bilä5 bi1na
bi4nok
-bi6stu bi5tr bit4t5r b1j 2b1k2 bkü6 bl8 b6la.
+bi6stu bi5tr bit4t5r b1j 2b1k2 bkü6 bl8 b6la.
6b1lad 6blag 8blam 1blat b8latt 3blau. b6lav 3ble. b1leb b1led
8b1leg 8b1leh 8bleid 8bleih 6b3lein
ble4m3o 4blich b4lind
8bling b2lio 5blit b4litz b1loh 8b1los 1blu 5blum 2blun blut3a blut5sc
-3blä bläs5c 5blö 3blü blü8sc 2b1m 2b1n 1bo
+3blä bläs5c 5blö 3blü blü8sc 2b1m 2b1n 1bo
bo1ch bo5d6s boe5 8boff 8bonk bo1ra b1ort 2b1p2 b1q 1br brail6 brast8
-bre4a b5red 8bref 8b5riem b6riga bro1s b1rup b2ruz 8bröh
-brös5c 8bs b1sa b8sang b2s1ar b1sc bs3erl bs3erz b8sof b1s2p
-bst1h b3stru b5stä b6sun 2b1t b2t1h 1bu bu1ie bul6k b8ure bu6sin
+bre4a b5red 8bref 8b5riem b6riga bro1s b1rup b2ruz 8bröh
+brös5c 8bs b1sa b8sang b2s1ar b1sc bs3erl bs3erz b8sof b1s2p
+bst1h b3stru b5stä b6sun 2b1t b2t1h 1bu bu1ie bul6k b8ure bu6sin
6b1v 2b1w 1by1 by6te. 8b1z
-1bä b5ä6s5 1bü
-b6ü5bere büge6 bügel5e bür6sc 1ca cag6 ca5la ca6re
+1bä b5ä6s5 1bü
+b6ü5bere büge6 bügel5e bür6sc 1ca cag6 ca5la ca6re
ca5y c1c 1ce celi4c celich5 ce1ro c8h 2ch. 1chae ch1ah ch3akt cha6mer
8chanz 5chara 3chari 5chato 6chb 1chef 6chei ch3eil ch3eis 6cherkl
6chf 4chh 5chiad 5chias 6chins 8chj chl6 5chlor 6ch2m 2chn6 ch8nie
-5cho. 8chob choi8d 6chp ch3ren ch6res ch3rü 2chs 2cht cht5ha
+5cho. 8chob choi8d 6chp ch3ren ch6res ch3rü 2chs 2cht cht5ha
cht3hi 5chthon ch6tin 6chuh chu4la 6ch3unt chut6t 8chw 1ci ci5tr c2k
2ck. ck1ei 4ckh ck3l ck3n ck5o8f ck1r 2cks ck5stra ck6s5u c2l 1c8o
-con6ne 8corb cos6t c3q 1c6r 8c1t 1cu 1cy 5cä1 cö5 1da.
+con6ne 8corb cos6t c3q 1c6r 8c1t 1cu 1cy 5cä1 cö5 1da.
8daas 2dabg 8dabr 6dabt 6dabw 1dac da2gr 6d5alk 8d5amt dan6ce.
dani5er dan8ker 2danl danla6 6dans 8danzi 6danzu d1ap da2r1a8 2d1arb
d3arc dar6men 4d3art 8darz 1dat 8datm 2d1auf 2d1aus 2d1b 2d1c 2d1d
-d5de d3d2h ddämme8 1de 2deal de5an de3cha de1e defe6 6deff 2d1ehr
+d5de d3d2h ddämme8 1de 2deal de5an de3cha de1e defe6 6deff 2d1ehr
5d4eic de5isc de8lar del6s5e del6spr de4mag de8mun de8nep dene6r
8denge. 8dengen de5o6d 2deol de5ram 8derdb der5ein de1ro der1r d8ers
der5um de4s3am de4s3an de4sau de6sil de4sin de8sor de4spr de2su 8deul
@@ -354,65 +354,65 @@ di8tan di8tin d1j 6dje 2dju 2d1k 2d1l 2d1m
6doth dott8e 2d1p d5q dr4 1drah 8drak d5rand 6dre. 4drech
d6reck 4d3reg 8d3reic d5reife 8drem 8d1ren 2drer 8dres. 6d5rh 1dria
-d1ric 8drind droi6 dro5x 1dru 8drut drös5c 1drü drü5b
-drü8sc 2ds d1sa d6san dsat6 d1sc 5d6scha. 5dschik dse8e d8serg
-8dsl d1sp d4spak ds2po d8spä d1st d1sü 2dt d1ta d1te d1ti
-d1to dt1s6 d1tu d5tä 1du du5als du1b6 du1e duf4t3r 4d3uh du5ie
+d1ric 8drind droi6 dro5x 1dru 8drut drös5c 1drü drü5b
+drü8sc 2ds d1sa d6san dsat6 d1sc 5d6scha. 5dschik dse8e d8serg
+8dsl d1sp d4spak ds2po d8spä d1st d1sü 2dt d1ta d1te d1ti
+d1to dt1s6 d1tu d5tä 1du du5als du1b6 du1e duf4t3r 4d3uh du5ie
8duml 8dumw 2d1und du8ni 6d5unt dur2c durch3 6durl 6dursa 8durt
dus1t
-du8schr 2d1v 2d1w dwa8l 2d1z 1dä 6däh 8dänd dä6r
-dö8bl d5öl dör6fl dö8sc d5ö4st
-
-1dü ea4ben e1ac e1ah e1akt e1al. e5alf e1alg e5a8lin e1alk e1all
+du8schr 2d1v 2d1w dwa8l 2d1z 1dä 6däh 8dänd dä6r
+dö8bl d5öl dör6fl dö8sc d5ö4st
+
+1dü ea4ben e1ac e1ah e1akt e1al. e5alf e1alg e5a8lin e1alk e1all
e5alp e1alt e5alw e1am e1and ea6nim e1ar. e5arf e1ark e5arm e3art
e5at. e6ate e6a5t6l e8ats e5att e6au. e1aus e1b e6b5am ebens5e
eb4lie eb4ser eb4s3in e1che e8cherz e1chi ech3m 8ech3n ech1r ech8send
ech4su e1chu eck5an e5cl e1d ee5a ee3e ee5g e1ei ee5isc eei4s3t
-ee6lend e1ell ee5lö e1erd ee3r4e ee8reng eere6s5 ee5rä
+ee6lend e1ell ee5lö e1erd ee3r4e ee8reng eere6s5 ee5rä
ee6tat e1ex e1f e6fau e8fe8b 3effek ef3rom ege6ra eglo6si 1egy e1ha
e6h5ach eh5ans e6hap eh5auf e1he e1hi ehl3a eh1le ehl5ein eh1mu ehn5ec
-e1ho ehr1a eh1re ehre6n eh1ri eh1ru ehr5um e1hu eh1w e1hy e1hä
-e1hö e3hüt ei1a eia6s ei6bar eich3a eich5r ei4dar ei6d5ei
+e1ho ehr1a eh1re ehre6n eh1ri eh1ru ehr5um e1hu eh1w e1hy e1hä
+e1hö e3hüt ei1a eia6s ei6bar eich3a eich5r ei4dar ei6d5ei
ei8derf ei3d4sc ei1e 8eifen 3eifri 1eign eil1d ei6mab ei8mag ein1a4
ei8nat ei8nerh ei8ness ei6nete ein1g e8ini ein1k ei6n5od ei8nok ei4nor
-e3insä ei1o e1irr ei5ru ei8sab ei5schn ei6s5ent ei8sol ei4t3al
+e3insä ei1o e1irr ei5ru ei8sab ei5schn ei6s5ent ei8sol ei4t3al
eit3ar eit1h ei6thi ei8tho eit8samt ei6t5um e1j 1ekd e1ke e1ki e1k2l
e1kn ekni4 e1la e2l1al 6elan e6lanf e8lanl e6l5ans el3arb el3arm
e6l3art 5e6lasti e6lauge elbst5a e1le 6elef ele6h e6l5ehe e8leif
e6l5einh 1elek e8lel 3eleme e6lemen e6lente el5epi e4l3err e6l5ersc
elf2l elg2 e6l5ins ell8er 4e1lo e4l3ofe el8soh el8tent 5eltern e1lu
-elut2 e1lä e1lü em8dei em8meis 4emo emo5s 1emp1f 1empt 1emto
-e1mu emurk4 emurks5 e1mä en5a6ben en5achs en5ack e1nad en5af
+elut2 e1lä e1lü em8dei em8meis 4emo emo5s 1emp1f 1empt 1emto
+e1mu emurk4 emurks5 e1mä en5a6ben en5achs en5ack e1nad en5af
en5all en3alt en1am en3an. en3ant en3anz en1a6p en1ar en1a6s 6e1nat
en3auf en3aus en2ce enda6l end5erf end5erg en8dess 4ene. en5eck
e8neff e6n5ehr e6n5eim en3eis 6enem. 6enen e4nent 4ener. e8nerd
e6n3erf e4nerg 5energi e6n5erla en5ers e6nerst en5erw 6enes e6n5ess
e2nex en3glo 2eni enni6s5 ennos4 enns8 e1no e6nober eno8f en5opf
e4n3ord en8sers ens8kl en1sp ens6por en5t6ag enta5go en8terbu en6tid
-3entla ent5ric 5entwic 5entwu 1entz enu5i e3ny en8zan en1öf
-e1nös e1nüg eo1c e5o6fe e5okk e1on. e3onf e5onk e5onl e5onr
+3entla ent5ric 5entwic 5entwu 1entz enu5i e3ny en8zan en1öf
+e1nös e1nüg eo1c e5o6fe e5okk e1on. e3onf e5onk e5onl e5onr
e5opf e5ops e5or. e1ord e1org eo5r6h eo1t e1pa e8pee e6p5e6g ep5ent
-e1p2f e1pi 5epid e6pidem e1pl 5epos e6pos. ep4p3a e1pr e1pä e1q
+e1p2f e1pi 5epid e6pidem e1pl 5epos e6pos. ep4p3a e1pr e1pä e1q
e1ra. er5aal 8eraba e5rabel er5a6ben e5rabi er3abs er3ach era5e
era5k6l er3all er3amt e3rand e3rane er3ans e5ranz. e1rap er3arc
e3rari er3a6si e1rat erat3s er3auf e3raum 3erbse er1c e1re 4e5re.
er3eck er5egg er5e2h 2erei e3rei. e8reine er5einr 6eren. e4r3enm
-4erer. e6r5erm er5ero er5erst e4r3erz er3ess 5erfül er8gan.
-5ergebn er2g5h 5ergänz 5erhöhu 2e1ri eri5ak e6r5iat e4r3ind
-e6r5i6n5i6 er5ins e6r5int er5itio er1kl 3erklä 5erlös.
+4erer. e6r5erm er5ero er5erst e4r3erz er3ess 5erfül er8gan.
+5ergebn er2g5h 5ergänz 5erhöhu 2e1ri eri5ak e6r5iat e4r3ind
+e6r5i6n5i6 er5ins e6r5int er5itio er1kl 3erklä 5erlös.
ermen6s er6nab 3ernst 6e1ro. e1rod er1o2f e1rog 6e3roi ero8ide e3rol
e1rom e1ron e3rop8 e2r1or e1ros e1rot er5ox ersch4 5erstat er6t5ein
er2t1h er5t6her 2e1ru eruf4s3 e4r3uhr er3ums e5rus 5erwerb e1ry er5zwa
-er3zwu erä8m er5äs erö8 e3rös. e6r1ü2b e1sa
+er3zwu erä8m er5äs erö8 e3rös. e6r1ü2b e1sa
esa8b e8sap e6s5a6v e1sc esch4l ese1a es5ebe eserve5 e8sh es5ill
es3int es4kop e2sl eso8b e1sp espei6s5 es2po es2pu 5essenz e6stabs
-e6staf e6st5ak est3ar e8stob e1str est5res es3ur e2sz e1sü e1ta
+e6staf e6st5ak est3ar e8stob e1str est5res es3ur e2sz e1sü e1ta
et8ag etari5e eta8ta e1te eten6te et5hal e5thel e1ti 1etn e1to e1tr
et3rec e8tscha et8se et6tei et2th et2t1r e1tu etu1s et8zent et8zw
-e1tä e1tö e1tü eu1a2 eu1e eue8rei eu5fe euin5 euk2
+e1tä e1tö e1tü eu1a2 eu1e eue8rei eu5fe euin5 euk2
e1um. eu6nio e5unter eu1o6 eu5p 3europ eu1sp eu5str eu8zo e1v eval6s
-eve5r6en ever4i e1w e2wig ex1or 1exp 1extr ey3er. e1z e1ä2
-e5ö8 e1ü e8ßes fa6ch5i fade8 fa6del fa5el.
+eve5r6en ever4i e1w e2wig ex1or 1exp 1extr ey3er. e1z e1ä2
+e5ö8 e1ü e8ßes fa6ch5i fade8 fa6del fa5el.
fal6lo falt8e fa1na fan4gr 6fanl 6fap far6ba far4bl far6r5a 2f1art
fa1sc fau8str fa3y 2f1b2 6f1c 2f1d 1fe 2f1eck fe6dr feh6lei f6eim
8feins f5eis fel5en 8feltern 8femp fe5rant 4ferd. ferri8 fe8stof
@@ -420,73 +420,73 @@ fe6str fe6stum fe8tag fet6ta fex1 2ff f1fa f6f5arm f5fe ffe5in ffe6la
ffe8ler ff1f f1fla ff3lei ff4lie ff8sa ff6s5ta 2f1g2 fgewen6 4f1h 1fi
fid4 fi3ds fieb4 fi1la fi8lei fil4m5a f8in. fi1na 8finf fi8scho fi6u
6f1j 2f1k2 f8lanz fl8e 4f3lein 8flib 4fling f2lix 6f3lon 5flop 1flor
-5f8läc 3flöt 2f1m 2f1n 1fo foh1 f2on fo6na 2f1op fo5ra
+5f8läc 3flöt 2f1m 2f1n 1fo foh1 f2on fo6na 2f1op fo5ra
for8mei for8str for8th for6t5r fo5ru 6f5otte 2f1p8 f1q fr6 f5ram
-1f8ran f8raß f8re. frei1 5frei. f3reic f3rest f1rib
-8f1ric 6frig 1fris fro8na fräs5t 2fs f1sc f2s1er f5str
-fs3tät 2ft f1tak f1te ft5e6h ftere6 ft1h f1ti f5to f1tr ft5rad
-ft1sc ft2so f1tu ftwi3d4 ft1z 1fu 6f5ums 6funf fun4ka fu8ßend
-6f1v 2f1w 2f1z 1fä fä1c 8färm 6fäug
-fä8ß föde3 8föf 3för 1fü
-fün4f3u 1ga ga6bl 6gabw 8gabz g3a4der ga8ho ga5isc 4gak ga1la
+1f8ran f8raß f8re. frei1 5frei. f3reic f3rest f1rib
+8f1ric 6frig 1fris fro8na fräs5t 2fs f1sc f2s1er f5str
+fs3tät 2ft f1tak f1te ft5e6h ftere6 ft1h f1ti f5to f1tr ft5rad
+ft1sc ft2so f1tu ftwi3d4 ft1z 1fu 6f5ums 6funf fun4ka fu8ßend
+6f1v 2f1w 2f1z 1fä fä1c 8färm 6fäug
+fä8ß föde3 8föf 3för 1fü
+fün4f3u 1ga ga6bl 6gabw 8gabz g3a4der ga8ho ga5isc 4gak ga1la
6g5amt ga1na gan5erb gan6g5a ga5nj 6ganl 8gansc 6garb 2g1arc 2g1arm
ga5ro 6g3arti ga8sa ga8sc ga6stre 2g1atm 6g5auf gau5fr g5aus 2g1b g5c
6gd g1da 1ge ge1a2 ge6an ge8at. ge1e2 ge6es gef2 8geff ge1g2l ge1im
-4g3eise geist5r gel8bra gelt8s ge5lö ge8nin gen3k 6g5entf
-ge3nä ge1or ge1ra ge6rab ger8au 8gerhö ger8ins ge1ro 6g5erz.
-ge1rä ge1rü ge1s ges2p
+4g3eise geist5r gel8bra gelt8s ge5lö ge8nin gen3k 6g5entf
+ge3nä ge1or ge1ra ge6rab ger8au 8gerhö ger8ins ge1ro 6g5erz.
+ge1rä ge1rü ge1s ges2p
ge2s7te. ge2s7ten ge2s7ter ge2s7tik
ge5unt 4g3ex3 2g1f8 2g1g g1ha 6g1hei
-5ghel. g5henn 6g1hi g1ho 1ghr g1hö 1gi gi5la gi8me. gi1na
+5ghel. g5henn 6g1hi g1ho 1ghr g1hö 1gi gi5la gi8me. gi1na
4g3ins
gis1tr
g1j 2g1k 8gl. 1glad g5lag glan4z3 1glas 6glass 5glaub
g3lauf 1gle. g5leb 3gleic g3lein 5gleis 1glem 2gler 8g3leu gli8a
g2lie 3glied 1g2lik 1g2lim g6lio 1gloa 5glom 1glon 1glop g1los g4loss
-g5luf 1g2ly 1glü 2g1m gn8 6gn. 1gna 8gnach 2gnah g1nas g8neu
+g5luf 1g2ly 1glü 2g1m gn8 6gn. 1gna 8gnach 2gnah g1nas g8neu
g2nie g3nis 1gno 8gnot 1go goe1 8gof 2gog 5gogr 6g5oh goni5e 6gonist
go1ra 8gord 2g1p2 g1q 1gr4 g5rahm gra8m gra4s3t 6g1rec gre6ge 4g3reic
-g5reit 8grenn gri4e g5riem 5grif 2grig g5ring 6groh 2grot gro6ß
+g5reit 8grenn gri4e g5riem 5grif 2grig g5ring 6groh 2grot gro6ß
4grut 2gs gs1ab g5sah gs1ak gs1an gs8and gs1ar gs1au g1sc
gs1ef g5seil gs5ein g2s1er gs1in g2s1o gso2r gs1pr g2s1u 2g1t g3te
g2t1h 1gu gu5as gu2e 2gue. 6gued 4g3uh 8gums 6g5unt
gut3h gu2tu
-4g1v 2g1w gy1n g1z 1gä 8gä8m 6gärm 1gö 1gü
-6güb 1haa hab8r ha8del hade4n 8hae ha5el. haf6tr 2hal. ha1la
+4g1v 2g1w gy1n g1z 1gä 8gä8m 6gärm 1gö 1gü
+6güb 1haa hab8r ha8del hade4n 8hae ha5el. haf6tr 2hal. ha1la
hal4b5a 6hale 8han. ha1na han6dr han6ge. 2hani h5anth 6hanz 6harb
-h3arbe h3arme ha5ro ha2t1h h1atm hau6san ha8ß h1b2 h1c h1d
+h3arbe h3arme ha5ro ha2t1h h1atm hau6san ha8ß h1b2 h1c h1d
he2bl he3cho h3echt he5d6s 5heft h5e6he. hei8ds h1eif 2hein he3ism
he5ist. heit8s3 hek6ta hel8lau 8helt he6mer 1hemm 6h1emp hen5end
hen5klo hen6tri he2nu 8heo he8q her3ab he5rak her3an 4herap her3au
h3erbi he1ro he8ro8b he4r3um her6z5er he4spe he1st heta6 het5am he5th
heu3sc he1xa hey5e h1f2 h1g hgol8 h1h h1iat hie6r5i hi5kt hil1a2
hil4fr hi5nak hin4ta hi2nu hi5ob hirn5e hir6ner hi1sp hi1th hi5tr
-5hitz h1j h6jo h1k2 hlabb4 hla4ga hla6gr h5lai hl8am h1las h1laß
+5hitz h1j h6jo h1k2 hlabb4 hla4ga hla6gr h5lai hl8am h1las h1laß
hl1c h1led h3lein h5ler. h2lif h2lim h8linf hl5int h2lip
-h2lit h4lor h3lose h1läs hme5e h2nee h2nei hn3eig h2nel hne8n
+h2lit h4lor h3lose h1läs hme5e h2nee h2nei hn3eig h2nel hne8n
hne4p3f hn8erz h6netz h2nip h2nit h1nol hn5sp h2nuc h2nud h2nul hoch1
1hoh hoh8lei 2hoi ho4l3ar 1holz h2on ho1ra 6horg 5horn. ho3sl hos1p
ho4spi h1p hpi6 h1q 6hr h1rai h8rank h5raum hr1c hrcre8 h1red h3reg
h8rei. h4r3erb h8rert hrg2 h1ric hr5ins h2rom hr6t5erl hr2t1h hr6t5ra
hr8tri h6rum hr1z hs3ach h6s5amt h1sc h6s5ec h6s5erl hs8erle h4sob
-h1sp h8spaß h8spel hs6po h4spun h1str h4s3tum hs3und
-h1sü h5ta. h5tab ht3ac ht1ak ht3ang h5tanz ht1ar ht1at h5taub
+h1sp h8spaß h8spel hs6po h4spun h1str h4s3tum hs3und
+h1sü h5ta. h5tab ht3ac ht1ak ht3ang h5tanz ht1ar ht1at h5taub
h1te h2t1ec ht3eff ht3ehe h4t3eif h8teim h4t3ein ht3eis h6temp h8tentf
-hte8ren h6terfü h8tergr h4t3erh h6t5ersc h8terst h8tese h8tess
+hte8ren h6terfü h8tergr h4t3erh h6t5ersc h8terst h8tese h8tess
h2t1eu h4t3ex ht1he ht5hu h1ti ht5rak hts3ah ht1sc ht6sex ht8sk ht8so
-h1tu htz8 h5tüm hub5l hu6b5r huh1l h5uhr. huld5a6 hu8lent
-hu8lä h5up. h1v h5weib h3weis h1z hä8kl häl8s
-häma8tu8 hä8sche. hät1s häu4s3c 2hö.
-2höe 8höi hö6s hös5c hühne6 hül4s3t
-hütte8re i5adn i1af i5ak. i1al. i1al1a i1alb i1ald i5alei i1alf
+h1tu htz8 h5tüm hub5l hu6b5r huh1l h5uhr. huld5a6 hu8lent
+hu8lä h5up. h1v h5weib h3weis h1z hä8kl häl8s
+häma8tu8 hä8sche. hät1s häu4s3c 2hö.
+2höe 8höi hö6s hös5c hühne6 hül4s3t
+hütte8re i5adn i1af i5ak. i1al. i1al1a i1alb i1ald i5alei i1alf
i1alg i3alh i1alk i1all i1alp i1alr i1als i1alt i1alv i5alw i3alz
i1an. ia5na i3and ian8e ia8ne8b i1ang i3ank i5ann i1ant i1anz i6apo
i1ar. ia6rab i5arr i1as. i1asm i1ass i5ast. i1at. i5ats i1au i5azz
-i6b5eig i6b5eis ib2le i4blis i6brig i6b5unt i6büb i1che ich5ei
+i6b5eig i6b5eis ib2le i4blis i6brig i6b5unt i6büb i1che ich5ei
i6cherb i1chi ich5ins ich1l ich3m ich1n i1cho icht5an icht3r i1chu
-ich1w ick6s5te ic5l i1d id3arm 3ideal ide8na 3ideol ide5rö i6diot
-id5rec id1t ie1a ie6b5ar iebe4s3 ie2bl ieb1r ie8bra ie4bre ie8bä
+ich1w ick6s5te ic5l i1d id3arm 3ideal ide8na 3ideol ide5rö i6diot
+id5rec id1t ie1a ie6b5ar iebe4s3 ie2bl ieb1r ie8bra ie4bre ie8bä
ie2dr ie1e8 ie6f5ad ief5f ie2f1l ie4fro ief1t i1ei ie4l3ec ie8lei
ie4lek i3ell i1en. i1end ien6e i3enf i5enn ien6ne. i1enp i1enr
i5ensa ien8stal i5env i1enz ie5o ier3a4b ie4rap i2ere ie4rec ie6r5ein
@@ -496,34 +496,34 @@ i1fre ift5a if6t5r ig3art 2ige i8gess ig5he i5gla ig2ni i5go ig3rot
ig3s2p i1ha i8ham i8hans i1he i1hi ih1n ih1r i1hu i8hum ih1w 8i1i ii2s
ii2t i1j i1k i6kak i8kerz i6kes ik4ler i6k5unt 2il i5lac i1lag il3ans
i5las i1lau il6auf i1le ile8h i8lel il2fl il3ipp il6l5enn i1lo ilt8e
-i1lu i1lä i8mart imb2 i8mele i8mid imme6l5a i1mu i1mä
-i5mö ina5he i1nat in1au inau8s 8ind. in4d3an 5index ind2r 3indus
+i1lu i1lä i8mart imb2 i8mele i8mid imme6l5a i1mu i1mä
+i5mö ina5he i1nat in1au inau8s 8ind. in4d3an 5index ind2r 3indus
i5nec i2n1ei i8nerw 3infek 1info 5ingeni ing5s6o 5inhab ini5er. 5inj
-in8kät in8nan i1no inoi8d in3o4ku in5sau in1sp 5inspe 5instit
-5instru ins4ze 5intere 5interv in3the in5t2r i5ny inä2 i1när
-in1äs inö8 in5öd i1nös 2io io1a8 io1c iode4 io2di
+in8kät in8nan i1no inoi8d in3o4ku in5sau in1sp 5inspe 5instit
+5instru ins4ze 5intere 5interv in3the in5t2r i5ny inä2 i1när
+in1äs inö8 in5öd i1nös 2io io1a8 io1c iode4 io2di
ioi8 i1ol. i1om. i1on. i5onb ion2s1 i1ont i5ops i5o8pt i1or.
i3oral io3rat i5orc i1os. i1ot. i1o8x 2ip i1pa i1pi i1p2l i1pr i1q
i1ra ir6bl i1re i1ri ir8me8d ir2m1o2 ir8nak i1ro ir5rho ir6schl
-ir6sch5r i5rus i5ry i5rä i1sa i8samt i6sar i2s1au i8scheh i8schei
-isch5m isch3r ischä8 is8ele ise3ra i4s3erh is3err isi6de i8sind
-is4kop ison5e is6por i8s5tum i5sty i5sö i1ta it5ab. i2t1a2m
-i8tax i1te i8tersc i1thi i1tho i5thr it8hä i1ti i8ti8d iti6kl
+ir6sch5r i5rus i5ry i5rä i1sa i8samt i6sar i2s1au i8scheh i8schei
+isch5m isch3r ischä8 is8ele ise3ra i4s3erh is3err isi6de i8sind
+is4kop ison5e is6por i8s5tum i5sty i5sö i1ta it5ab. i2t1a2m
+i8tax i1te i8tersc i1thi i1tho i5thr it8hä i1ti i8ti8d iti6kl
itmen4 i1to i8tof it3ran it3rau i1tri itri5o it1sc it2se it5spa it8tru
-i1tu it6z5erg it6z1w i1tä itä6r5e ität2 itäts5
-i1tü i1u iu6r 2i1v i6vad iva8tin i8vei i6v5ene i8verh i2vob i8vur
-i1w iwi2 i5xa i1xe i1z ize8n i8zir i6z5w iä8m i1ä6r
-i5ät. i5äv i1ö8 iü8 i6ß5ers ja5la
+i1tu it6z5erg it6z1w i1tä itä6r5e ität2 itäts5
+i1tü i1u iu6r 2i1v i6vad iva8tin i8vei i6v5ene i8verh i2vob i8vur
+i1w iwi2 i5xa i1xe i1z ize8n i8zir i6z5w iä8m i1ä6r
+i5ät. i5äv i1ö8 iü8 i6ß5ers ja5la
je2t3r 6jm 5jo jo5as jo1ra jou6l ju5cha jugen4 jugend5 jung5s6
-3jä 1ka 8kachs 8kakz ka1la kal5d kam5t ka1na 2kanl 8kapf ka6pl
-ka5r6a 6k3arbe ka1ro kar6p5f 4k3arti 8karz ka1rä kasi5e ka6teb
+3jä 1ka 8kachs 8kakz ka1la kal5d kam5t ka1na 2kanl 8kapf ka6pl
+ka5r6a 6k3arbe ka1ro kar6p5f 4k3arti 8karz ka1rä kasi5e ka6teb
kat8ta kauf6s kau3t2 2k1b 2k1c 4k1d kehr6s kehrs5a 8keic 2k1eig 6k5ein
6k5eis ke6lar ke8leis ke8lo 8kemp k5ente. k3entf 8k5ents 6kentz ke1ra
k5erlau 2k1f8 2k1g 2k1h ki5fl 8kik king6s5 6kinh ki5os ki5sp ki5th
-8ki8ö 2k1k2 kl8 1kla 8klac k5lager kle4br k3leib 3kleid kle5isc
+8ki8ö 2k1k2 kl8 1kla 8klac k5lager kle4br k3leib 3kleid kle5isc
4k3leit k3lek 6k5ler. 5klet 2klic 8klig k2lim k2lin 5klip 5klop k3lor
-1klä 2k1m kmani5e kn8 6kner k2ni knä8 1k2o ko1a2 ko6de.
+1klä 2k1m kmani5e kn8 6kner k2ni knä8 1k2o ko1a2 ko6de.
ko1i koi8t ko6min ko1op ko1or ko6pht ko3ra kor6d5er ko5ru ko5t6sc k3ou
3kow 6k5ox 2k1p2 k1q 1kr8 4k3rad 2k1rec 4k3reic kre5ie 2krib 6krig
2krip 6kroba 2ks k1sa k6sab ksal8s k8samt k6san k1sc k2s1ex k5spat
@@ -531,177 +531,177 @@ k5spe k8spil ks6por k1spr kst8 k2s1uf 2k1t kta8l kt5a6re k8tein kte8re
k2t1h k8tinf kt3rec kt1s 1ku ku1ch kuck8 k3uhr ku5ie kum2s1 kunfts5
kun2s kunst3 ku8rau ku4ro kurz1
-4kusti ku1ta ku8ß
-6k1v 2k1w ky5n 2k1z 1kä kä4m 4k3ämi käse5 1kö
-kö1c kö1s 1kü kü1c kür6sc
-
+4kusti ku1ta ku8ß
+6k1v 2k1w ky5n 2k1z 1kä kä4m 4k3ämi käse5 1kö
+kö1c kö1s 1kü kü1c kür6sc
+
1la.
8labf 8labh lab2r 2l1abs lach3r la8dr 5ladu 8ladv 6laff laf5t la2gn
5laken 8lamb la6mer 5lampe. 2l1amt la1na 1land lan4d3a lan4d3r lan4gr
-8lanme 6lann 8lanw 6lanä 8lappa lap8pl lap6pr l8ar. la5ra lar4af
+8lanme 6lann 8lanw 6lanä 8lappa lap8pl lap6pr l8ar. la5ra lar4af
la8rag la8ran la6r5a6s l3arbe la8rei 6larm. la8sa la1sc la8sta lat8i
6l5atm 4lauss 4lauto 1law 2lb l8bab l8bauf l8bede l4b3ins l5blo
lbst5an lbst3e 8lc l1che l8chert l1chi lch3m l5cho lch5w 6ld l4d3ei
-ld1re l6düb le2bl le8bre lecht6s5 led2r 6leff le4gas 1lehr lei6br
+ld1re l6düb le2bl le8bre lecht6s5 led2r 6leff le4gas 1lehr lei6br
le8inf 8leinn 5leistu 4lektr le6l5ers lemo2 8lemp l8en. 8lends
6lendun le8nend len8erw 6l5ents 4l3entw 4lentz 8lenzy 8leoz 6lepi
le6pip 8lepo 1ler l6er. 8lerbs 6l5erde le8reis le8rend le4r3er 4l3erg
-l8ergr 6lerkl 6l5erzie 8lerö 8lesel lesi5e le3sko le3tha let1s
+l8ergr 6lerkl 6l5erzie 8lerö 8lesel lesi5e le3sko le3tha let1s
5leuc 4leuro leu4s3t le5xe 6lexp l1f 2l1g lgend8 l8gh lglie3 lglied6
-6l1h 1li li1ar li1as 2lick li8dr li1en lien6n li8ers li8ert 2ließ
+6l1h 1li li1ar li1as 2lick li8dr li1en lien6n li8ers li8ert 2ließ
3lig li8ga8b li1g6n li1l8a 8limb li1na 4l3indu lings5
4l3inh 6linj link4s3 4linkt 2lint 8linv
4lipp 5lipt 4lisam
livi5e 6l1j 6l1k l8keim l8kj lk2l lko8f lkor8 lk2sa lk2se 6ll l1la
ll3a4be l8labt ll8anl ll1b ll1c ll1d6 l1le l4l3eim l6l5eise ller3a
-l4leti l5lip l1lo ll3ort ll5ov ll6spr llte8 l1lu ll3urg l1lä
-l5lü l6lüb 2l1m l6m5o6d 6ln l1na l1no 8lobl lo6br 3loch.
+l4leti l5lip l1lo ll3ort ll5ov ll6spr llte8 l1lu ll3urg l1lä
+l5lü l6lüb 2l1m l6m5o6d 6ln l1na l1no 8lobl lo6br 3loch.
l5o4fen 5loge. 5lohn 4l3ohr 1lok l2on 4l3o4per lo1ra 2l1ord 6lorg
4lort lo1ru 1los. lo8sei 3losig lo6ve lowi5 6l1p lp2f l8pho l8pn
lp4s3te l2pt l1q 8l1r 2ls l1sa l6sarm l1sc l8sec l6s5erg l4s3ers l8sh
-l5s6la l1sp ls4por ls2pu l1str l8suni l1sü 2l1t lt5amp l4t3ein
-l5ten l6t5eng l6t5erp l4t3hei lt3her l2t1ho l6t5i6b lti1l l8trö
+l5s6la l1sp ls4por ls2pu l1str l8suni l1sü 2l1t lt5amp l4t3ein
+l5ten l6t5eng l6t5erp l4t3hei lt3her l2t1ho l6t5i6b lti1l l8trö
lt1sc lt6ser lt4s3o lt5ums lu8br lu2dr lu1en8 8lu8fe luft3a luf8tr
lu6g5r 2luh l1uhr lu5it 5luk 2l1umf 2l1umw 1lun 6l5u6nio 4l3unte lu5ol
4lurg 6lurs l3urt lu4sto
lus1tr
lu6st5re lu8su lu6tal lu6t5e6g lu8terg
-lu3the lu6t5or lu2t1r lu6ß5 l1v lve5r6u 2l1w 1ly lya6
-6lymp ly1no l8zess l8zo8f l3zwei lz5wu 3länd lä5on
-lä6sc lät1s 5läuf 2läug läu6s5c lä5v
-l1öl 1lös lö1ß6t 6l1übe 1ma
+lu3the lu6t5or lu2t1r lu6ß5 l1v lve5r6u 2l1w 1ly lya6
+6lymp ly1no l8zess l8zo8f l3zwei lz5wu 3länd lä5on
+lä6sc lät1s 5läuf 2läug läu6s5c lä5v
+l1öl 1lös lö1ß6t 6l1übe 1ma
8mabg ma5chan mad2 ma5el 4magg mag8n ma1la ma8lau mal5d 8malde mali5e
malu8 ma8lut 2m1amp 3man mand2 man3ds 8mangr mani5o 8m5anst 6mappa
-4m3arbe mar8kr ma1r4o mar8schm 3mas ma1sc ma1tö 4m5auf ma5yo 2m1b
-mb6r 2m1c 2m1d md6sä 1me me1ch me5isc 5meld mel8sa 8memp me5nal
+4m3arbe mar8kr ma1r4o mar8schm 3mas ma1sc ma1tö 4m5auf ma5yo 2m1b
+mb6r 2m1c 2m1d md6sä 1me me1ch me5isc 5meld mel8sa 8memp me5nal
men4dr men8schl men8schw 8mentsp me1ra mer4gl me1ro 3mes me6s5ei me1th
-me8ß 2m1f6 2m1g 2m1h 1mi mi1a mi6ale mi1la 2m1imm mi1na
-mi5nü mi4s3an mit1h mi5t6ra 3mitt mitta8 mi6ß5 6mj
+me8ß 2m1f6 2m1g 2m1h 1mi mi1a mi6ale mi1la 2m1imm mi1na
+mi5nü mi4s3an mit1h mi5t6ra 3mitt mitta8 mi6ß5 6mj
2m1k8 2m1l 2m1m m6mad m6m5ak m8menth m8mentw mme6ra m2mn mm5sp mm5ums
-mmut5s m8män m1n8 m5ni 1mo mo5ar mo4dr 8mof mo8gal mo4kla mol5d
+mmut5s m8män m1n8 m5ni 1mo mo5ar mo4dr 8mof mo8gal mo4kla mol5d
m2on mon8do mo4n3od
mon2s1tr
mont8a 6m5ony mopa6 mo1ra mor8d5a mo1sc mo1sp 5mot
moy5 2mp m1pa mpfa6 mpf3l mphe6 m1pi mpin6 m1pl mp2li m2plu mpo8ste
-m1pr mprä5 mp8th mput6 mpu5ts m1pö 8m1q 2m1r 2ms ms5au m1sc
-msch4l ms6po m3spri m1str 2m1t mt1ar m8tein m2t1h mt6se mt8sä
+m1pr mprä5 mp8th mput6 mpu5ts m1pö 8m1q 2m1r 2ms ms5au m1sc
+msch4l ms6po m3spri m1str 2m1t mt1ar m8tein m2t1h mt6se mt8sä
mu5e 6m5uh mumi1 1mun mun6dr muse5e mu1ta 2m1v mvol2 mvoll3 2m1w 1my
-2m1z mä6kl 1män mä1s mä5tr mäu4s3c 3mäß
-möb2 6möl 1mü 5mün 3müt 1na.
-n5ab. 8nabn n1abs n1abz na6bä na2c nach3e 3nacht 1nae na5el
+2m1z mä6kl 1män mä1s mä5tr mäu4s3c 3mäß
+möb2 6möl 1mü 5mün 3müt 1na.
+n5ab. 8nabn n1abs n1abz na6bä na2c nach3e 3nacht 1nae na5el
n1afr 1nag 1n2ah na8ha na8ho 1nai 6nair na4kol n1akt nal1a 8naly 1nama
na4mer na1mn n1amp 8n1amt 5nanc nan6ce n1and n6and. 2n1ang 1nani
1nann n1ans 8nanw 5napf. 1n2ar. na2ra 2n1arc n8ard 1nari n8ark
6n1arm 5n6ars 2n1art n8arv 6natm nat6s5e 1naue 4nauf n3aug 5naui n5auk
-na5um 6nausb 6nauto 1nav 2nax 3naz 1naß n1b2 nbau5s n1c
+na5um 6nausb 6nauto 1nav 2nax 3naz 1naß n1b2 nbau5s n1c
nche5e nch5m 2n1d nda8d n2d1ak nd5ans n2d1ei nde8lac ndel6sa n8derhi
nde4se nde8stal n2dj ndnis5 n6d5or6t nd3rec nd3rot nd8samt nd6sau
ndt1h n8dumd 1ne ne5as ne2bl 6n5ebn 2nec 5neei ne5en ne1g4l 2negy
4n1ein 8neis 4n3e4lem 8nemb 2n1emp nen1a 6n5energ nen3k 8nentb
4n3en3th 8nentl 8n5entn 8n5ents ne1ra ne5r8al ne8ras 8nerbi 6n5erde.
-nere5i6d nerfor6 6n5erhö 8nerlö 2n1err n8ers. 6n5ertra
-2n1erz nesi3e net1h neu4ra neu5sc 8neuß n1f nf5f nf2l
+nere5i6d nerfor6 6n5erhö 8nerlö 2n1err n8ers. 6n5ertra
+2n1erz nesi3e net1h neu4ra neu5sc 8neuß n1f nf5f nf2l
nflei8 nf5lin nft8st n8g5ac ng5d ng8en nge8ram ngg2 ng1h n6glic ng3rip
-ng8ru ng2se4 ng2si n2g1um n1gy n8gäl n1h nhe6r5e 1ni ni1bl
-ni5chä ni8dee n6ie ni1en nie6s5te niet5h ni8etn 4n3i6gel n6ik
+ng8ru ng2se4 ng2si n2g1um n1gy n8gäl n1h nhe6r5e 1ni ni1bl
+ni5chä ni8dee n6ie ni1en nie6s5te niet5h ni8etn 4n3i6gel n6ik
ni1la 2n1imp ni5na 2n1ind 8ninf 6n5inh ni8nit 6n5inn 2n1ins 4n1int
n6is
nis1tr
ni1th ni1tr n1j n6ji n8kad nk5ans n1ke n8kerla n1ki nk5inh
-n5klö n1k2n n8k5not nk3rot n8krü nk5spo nk6t5r n8kuh
-n6küb n5l6 nli4mi n1m nmen4s n1na n8nerg nni5o n1no nn4t3ak nnt1h
-nnu1e n1ny n1nä n1nö n1nü no5a no4b3la 4n3obs 2nobt
+n5klö n1k2n n8k5not nk3rot n8krü nk5spo nk6t5r n8kuh
+n6küb n5l6 nli4mi n1m nmen4s n1na n8nerg nni5o n1no nn4t3ak nnt1h
+nnu1e n1ny n1nä n1nö n1nü no5a no4b3la 4n3obs 2nobt
noche8 no6die no4dis no8ia no5isc 6n5o6leu no4mal noni6er 2n1onk n1ony
4n3o4per 6nopf 6nopti no3ra no4ram nor6da 4n1org 2n1ort n6os no1st
-8nost. no8tan no8ter noty6pe 6n5ox n1p2 n1q n1r nrös3 6ns n1sac
+8nost. no8tan no8ter noty6pe 6n5ox n1p2 n1q n1r nrös3 6ns n1sac
ns3ang n1sc n8self n8s5erf n8serg n6serk ns5erw n8sint n1s2pe n1spr
n6s5tat.
n6stob n1str n1ta n4t3a4go nt5anh nt3ark nt3art
n1te nt3eis nte5n6ar nte8nei nter3a nte6rei nt1ha nt6har n3ther nt5hie
n3thus n1ti nti1c n8tinh nti1t ntlo6b ntmen8 n1to nt3o4ti n1tr ntra5f
-ntra5ut nt8rea nt3rec nt8rep n4t3rin nt8rop n4t3rot n4trü nt1s
-nts6an nt2sk n1tu nt1z n1tä n1tö n8töl n1tü 1nu
+ntra5ut nt8rea nt3rec nt8rep n4t3rin nt8rop n4t3rot n4trü nt1s
+nts6an nt2sk n1tu nt1z n1tä n1tö n8töl n1tü 1nu
nu1a nu5el nu5en 4n1uhr nu5ie 8numl 6n5ums 6n5umw 2n1und 6nuni 6n5unr
2n1unt 2nup 2nu6r n5uri nu3skr nu5ta n1v 8n1w 1nys n1za n6zab n2z1ar
-n6zaus nzi4ga n8zof n6z5unt n1zw n6zwir 1näc 5näe 5näi
-n8äl nä6m nä6re n5ärz 5näus n1öl
-1nöt n5öz 5nü. 6n1ü2b 5nüß
+n6zaus nzi4ga n8zof n6z5unt n1zw n6zwir 1näc 5näe 5näi
+n8äl nä6m nä6re n5ärz 5näus n1öl
+1nöt n5öz 5nü. 6n1ü2b 5nüß
o5ab. oa2l o8ala o1a2m o1an ob1ac obe4ra o6berh 5o4bers o4beru
obe6ser 1obj o1bl o2bli ob5sk 3obst. ob8sta obst5re ob5sz o1che
oche8b o8chec o3chi och1l och3m ocho8f o3chro och3to o3chu och1w o1d
o2d1ag od2dr ode5i ode6n5e od1tr o5e6b o5e6der. oe8du o1ef o1e2l
o1e2p o1er. o5e8x o1fa of8fan 1offi of8fin of6f5la o5fla o1fr 8o1g
og2n o1ha o1he o6h5eis o1hi ohl1a oh1le oh4l3er 5ohm. oh2ni o1ho
-oh1re oh1ru o1hu oh1w o1hy o1hä o5ia o1id. o8idi oi8dr o5ids
-o5isch. oiset6 o1ism o3ist. o5i6tu o1j o1k ok2l ok3lau o8klä
+oh1re oh1ru o1hu oh1w o1hy o1hä o5ia o1id. o8idi oi8dr o5ids
+o5isch. oiset6 o1ism o3ist. o5i6tu o1j o1k ok2l ok3lau o8klä
1okta o1la old5am old5r o1le ole5in ole1r ole3u ol6gl ol2kl olk4s1
ol8lak ol8lauf. ol6lel ol8less o1lo
ol1s ol2ster
ol6sk o1lu oly1e2 5olym
-o2mab om6an o8mau ombe4 o8merz om5sp o1mu o8munt o1mä o1mö
+o2mab om6an o8mau ombe4 o8merz om5sp o1mu o8munt o1mä o1mö
o1na ona8m on1ax on8ent o6n5erb 8oni oni5er. on1k on6n5a6b o1no ono1c
-o4nokt 1ons onts8 o1nä oo8f 1oog oo2pe oo2sa o1pa 3o4pera o3pfli
+o4nokt 1ons onts8 o1nä oo8f 1oog oo2pe oo2sa o1pa 3o4pera o3pfli
opf3lo opf3r o1pi o1pl o2pli o5p6n op8pa op6pl o1pr o3p4ter 1opti
-o1pä o5pö o1q o1ra. o3rad o8radd 1oram o6rang o5ras o8rauf
+o1pä o5pö o1q o1ra. o3rad o8radd 1oram o6rang o5ras o8rauf
or5cha or4d3a4m or8dei or8deu 1ordn or4dos o1re o5re. ore2h o8r5ein
ore5isc or6enn or8fla or8fli 1orga 5orgel. or2gl o1ri 5o6rient or8nan
-or8nä o1ro or1r2h or6t5an or8tau or8tere o1rus o1ry o1rä
-or1ü2 o1sa osa3i 6ose o8serk o1sk o6ske o6ski os2kl os2ko os2kr
+or8nä o1ro or1r2h or6t5an or8tau or8tere o1rus o1ry o1rä
+or1ü2 o1sa osa3i 6ose o8serk o1sk o6ske o6ski os2kl os2ko os2kr
osni5e o2s1o2d o3s4per o4stam o6stau o3stra ost3re osu6 o6s5ur o5s6ze
o1ta ot3auf o6taus o1te o6terw o1th othe5u o2th1r o1ti o1to oto1a
-ot1re o1tri o1tro ot1sc o3tsu ot6t5erg ot2t3h ot2t5r ot8tö o1tu
+ot1re o1tri o1tro ot1sc o3tsu ot6t5erg ot2t3h ot2t5r ot8tö o1tu
ou3e ouf1 ou5f6l o5u6gr ou5ie ou6rar ou1t6a o1v o1wa o1we o6wer. o1wi
owid6 o1wo o5wu o1xe oy5al. oy1e oy1i o5yo o1z oza2r 1o2zea ozo3is
-oö8 oß5elt oß1t 3paa pa6ce 5pad pag2 1pak
+oö8 oß5elt oß1t 3paa pa6ce 5pad pag2 1pak
pa1la pa8na8t pani5el pa4nor pan1s2 1pap pap8s pa8rei par8kr paro8n
par5o6ti part8e 5partei 3partn pas6sep pa4tha 1pau 6paug pau3sc p1b
8p5c 4p1d 1pe 4peic pe5isc 2pek pen3k pen8to8 p8er pe1ra pere6 per5ea
-per5eb pe4rem 2perr per8ran 3pers 4persi pe3rü pe4sta pet2s
+per5eb pe4rem 2perr per8ran 3pers 4persi pe3rü pe4sta pet2s
p2f1ec p4fei pf1f pf2l 5pflanz pf8leg pf3lei 2pft pf3ta p1g 1ph 2ph.
2p1haf 6phb 8phd 6p5heit ph5eme 6phg phi6e 8phk 6phn p5holl pht2
ph3tha 4ph3the phu6 6phz pi1en pi5err pi1la pi1na 5pinse pioni8e 1pis
pi1s2k pi1th p1k pl8 5pla p2lau 4plei p3lein 2pler 6p5les 2plig p6lik
6p5ling p2liz plo8min 6p1m p1n 1p2o 8poh 5pol po8lan poly1 po3ny po1ra
-2porn por4t3h po5rö 5poti p1pa p6p5ei ppe6la pp5f p2p1h p1pi pp1l
+2porn por4t3h po5rö 5poti p1pa p6p5ei ppe6la pp5f p2p1h p1pi pp1l
ppp6 pp5ren
pp1s pp2ste
-p5pö pr6 3preis 1pres 2p3rig 5prinz 1prob 1prod
-5prog pro8pt pro6t5a prote5i 8proß prä3l 1präs
-präte4 1prüf p5schl 2pst 1p2sy p1t p8to8d pt1s 5p6ty 1pu
+p5pö pr6 3preis 1pres 2p3rig 5prinz 1prob 1prod
+5prog pro8pt pro6t5a prote5i 8proß prä3l 1präs
+präte4 1prüf p5schl 2pst 1p2sy p1t p8to8d pt1s 5p6ty 1pu
pu1b2 2puc pu2dr puf8fr 6p5uh pun8s pu8rei pu5s6h pu1ta p1v p3w 5py
-py5l p1z pä6der p5ä6m pä8nu 8pär pät5h
-pät1s qu6 1qui 8rabk ra6bla 3rable ra2br r1abt 6rabz ra4dan ra2dr
+py5l p1z pä6der p5ä6m pä8nu 8pär pät5h
+pät1s qu6 1qui 8rabk ra6bla 3rable ra2br r1abt 6rabz ra4dan ra2dr
5rafal ra4f3er ra5gla ra2g3n 6raha ral5am 5rald 4ralg ra8lins 2rall
ral5t 8ramei r3anal r6and ran8der ran4dr 8ranf 6ranga 5rangi ran8gli
r3angr rans5pa 8ranw r8anz. ra5or 6rapf ra5pl rap6s5er 2r1arb 1rarh
r1arm ra5ro 2r1art 6r1arz ra8tei ra6t5he 6ratl ra4t3ro r5atta raue4n
6raus. r5austa rau8tel raut5s ray1 r1b rb5lass r6bler rb4lie rbon6n
-r8brecht rb6s5tä r8ces r1che rch1l rch3m rch3re rch3tr rch1w 8rd
+r8brecht rb6s5tä r8ces r1che rch1l rch3m rch3re rch3tr rch1w 8rd
r1da r8dachs r8dap rda5ro rde5ins rdio5 r8dir rd3ost r1dr r8drau 1re.
re1ak 3reakt re3als re6am. re1as 4reben re6bl rech5a r8edi re3er
8reff 3refl 2reh 5reha r4ei. reich6s5 8reier 6reign re5imp 4r3eina
6r3einb 6reing 6r5einn 6reinr 4r3eins r3eint reli3e 8r5elt 6rempf
2remt ren5a6b ren8gl r3enni 1reno 5rente 4r3enth 8rentl 4r3entw 8rentz
-ren4zw re1on requi5 1rer rer4bl 6rerbs 4r3erd 8rerhö 8rerkl
-4r3erla 8rerlö 4r3erns 6r5ernä rer5o 6r5erreg r5ertr r5erwec
-r5erö re2sa re8schm 2ress re5u8ni 6rewo 2r1ex r1f r8ferd rf4lie
+ren4zw re1on requi5 1rer rer4bl 6rerbs 4r3erd 8rerhö 8rerkl
+4r3erla 8rerlö 4r3erns 6r5ernä rer5o 6r5erreg r5ertr r5erwec
+r5erö re2sa re8schm 2ress re5u8ni 6rewo 2r1ex r1f r8ferd rf4lie
8r1g r8gah rge4bl rge5na rgest4 rg6ne r2gni2 r8gob r4g3ret rg8sel r1h8
r2hy 5rhyt ri1ar ri5cha rid2g r2ie rieg4s5 ri8ei ri1el ri6ele ri1en
-ri3er. ri5ers. ri6fan ri8fer ri8fr 1r2ig ri8kn ri5la rimä8
+ri3er. ri5ers. ri6fan ri8fer ri8fr 1r2ig ri8kn ri5la rimä8
ri1na r8inde rin4ga rin6gr 1rinn 6rinner rino1 r8insp 4rinst
-ri1nä ri5o6ch ri1o2d ri3o6st 2r1ir r2is ri3sko ri8spr
-
+ri1nä ri5o6ch ri1o2d ri3o6st 2r1ir r2is ri3sko ri8spr
+
ri5sv r2it 6r5i6tal ri5tr ri6ve. 8r1j 6rk r1ke rkehrs5 r1ki r3klin
-r1k2n rk3str rk4t3an rk6to r6kuh rkä4s3t r1l r5li rline5a 6r1m
+r1k2n rk3str rk4t3an rk6to r6kuh rkä4s3t r1l r5li rline5a 6r1m
r6manl rma4p r4m3aph r8minf r8mob rm5sa 2rn r1na rna8be r5ne rn2ei
-r6neif r6nex r6nh rn1k r1no r6n5oc rn1sp r1nä r1nü ro6bern
+r6neif r6nex r6nh rn1k r1no r6n5oc rn1sp r1nä r1nü ro6bern
6robs ro1ch 3rock. ro5de ro1e 4rofe ro8hert 1rohr ro5id ro1in ro5isc
6rolym r2on 6roog ro6phan r3ort ro1s2p ro5s6w ro4tau ro1tr ro6ts 5rout
r1p rpe8re rp2f r2ps r2pt r1q 2rr r1ra r1re rrer6
-rr6hos r5rhö
-r1ri r1ro rro8f rr8or rror5a r1ru r3ry r1rä r1rö r1rü
+rr6hos r5rhö
+r1ri r1ro rro8f rr8or rror5a r1ru r3ry r1rä r1rö r1rü
2r1s
r2ste r2sti
r6sab r4sanf rse6e rse5na r2sh r6ska r6ski rs2kl r8sko r2sl rs2p
@@ -712,37 +712,37 @@ rt6s5o rt6s5u rt5und r8turt rube6 ru1en 1r4uf ruf4st ru1ie 2r1umg
ru6sta
rus1tr
ru6tr 1ruts r1v rven1 rvi2c r1w r1x r1za rz5ac r6z5al
-r8z1ar r8zerd r6z5erf rz8erh rz4t3h r8zum rä4ste räu8sc
-r1öf 5röhr rö5le 3röll 5römis r1ör
-rö2sc 3rümp 1sa. 1saa s3a4ben sa2bl 2s1abs 6s1abt 6sabw
+r8z1ar r8zerd r6z5erf rz8erh rz4t3h r8zum rä4ste räu8sc
+r1öf 5röhr rö5le 3röll 5römis r1ör
+rö2sc 3rümp 1sa. 1saa s3a4ben sa2bl 2s1abs 6s1abt 6sabw
3sack. 6s3a4der 1saf sa1fa 4s1aff sa5fr 1sag 1sai sa1i2k1 4s1akt 1sal
sa1la 4s3alpi 6salter salz3a 1sam s5anb san2c 1sand s5angeh 6sanl
2s1ans 6s3antr 8s1anw s1ap s6aph 8sapo sap5p6 s8ar. 2s1arb 3sarg
s1arm sa5ro 2s1art 6s1arz 1sas 1sat sat8a 2s1atl sa8tom 3s8aue s5auff
sau5i s6aur 2s1aus 5s6ause 2s1b2 2sca s4ce 8sch. 3scha. 5schade
3schaf 3schal sch5ame 8schanc 8schb 1sche 6schef 8schex 2schf 2schg
-2schh 1schi 2schk 5schlag 5schlu 6schmäß
-6schnaß 1scho 6schord 6schp 3schri 8schric 8schrig
-8schrou 6schs 2scht sch3ta sch3tr 1schu 8schunt 6schv 2schz 5schö
-5schü 2sco scre6 6scu 2s1d 1se se5an se1ap se6ben se5ec see5i6g
-se3erl 8seff se6han se8hi se8hö 6s5eid. 2s1eig s8eil 5sein.
+2schh 1schi 2schk 5schlag 5schlu 6schmäß
+6schnaß 1scho 6schord 6schp 3schri 8schric 8schrig
+8schrou 6schs 2scht sch3ta sch3tr 1schu 8schunt 6schv 2schz 5schö
+5schü 2sco scre6 6scu 2s1d 1se se5an se1ap se6ben se5ec see5i6g
+se3erl 8seff se6han se8hi se8hö 6s5eid. 2s1eig s8eil 5sein.
sei5n6e 6s5einh 3s8eit 3sel. se4lar selb4 6s3e4lem se8lerl 2s1emp
-sen3ac se5nec 6s5ents 4sentz s8er. se8reim ser5inn 8sermä
-8s5erzi 6seröf se1um 8sexa 6sexp 2s1f2 sfal8ler 2s3g2 sge5b2 s1h
+sen3ac se5nec 6s5ents 4sentz s8er. se8reim ser5inn 8sermä
+8s5erzi 6seröf se1um 8sexa 6sexp 2s1f2 sfal8ler 2s3g2 sge5b2 s1h
s8hew 5s6hip 5s4hop 1si 2siat si1b sicht6s 6s5i6dee siege6s5 si1en
-si5err si1f2 si1g2n si6g5r si8kau sik1i si4kin si2kl si8kü si1la
+si5err si1f2 si1g2n si6g5r si8kau sik1i si4kin si2kl si8kü si1la
sil6br si1na 2s1inf sin5gh 2s1inh sinne6s5 2s1ins si5ru si5str 4s1j
s1k2 6sk. 2skau skel6c skelch5 s6kele 1s2ki. 3s4kin. s6kiz s8kj
-6skn 2skow 3skrib 3skrip 2sku 8skü s1l s8lal slei3t s4low 2s1m
+6skn 2skow 3skrib 3skrip 2sku 8skü s1l s8lal slei3t s4low 2s1m
s1n 6sna 6snot 1so so1ch 2s1odo so4dor 6s5o4fen solo3 s2on so5of 4sope
so1ra 2s1ord 4sorga sou5c so3un 4s3ox sp2 8spaa 5spal 1span 2spap
-s2pec s4peis 1spek s6perg 4spers s6pes 2s1pf 8sphi 1s2phä 1spi
+s2pec s4peis 1spek s6perg 4spers s6pes 2s1pf 8sphi 1s2phä 1spi
spi4e 6s5pig 6spinse 2spis 2spla 2spol 5s6pom 6s5pos 6spoti 1spra
-3s8prec 6spreis 5spring 6sprob 1spru s2pul 1s2pur 6spy 5spän
-1spü s1q 2s1r
+3s8prec 6spreis 5spring 6sprob 1spru s2pul 1s2pur 6spy 5spän
+1spü s1q 2s1r
-
-2ssa 2sse 2ssi 2sso 2ssä 2ssö 2ssü 2s1sch
+
+2ssa 2sse 2ssi 2sso 2ssä 2ssö 2ssü 2s1sch
sse8nu ssini6s ssoi6r 2st.
1sta 4stafe 2stag
sta3la 6stale
@@ -768,7 +768,7 @@ s2ti8r
4strai
s3tral
-6s5traum 3straß
+6s5traum 3straß
3strec 6s3tref 8streib 5streif 6streno 6stres 6strev
2st5rig
@@ -776,15 +776,15 @@ s3tral
8s2t1ris
s8troma st5rose 4struf 3strum
-6sträg 2st1s6 2stt
+6sträg 2st1s6 2stt
1stu stu5a 4stuc 2stue 8stun. 2stv 2stw s2tyl
-6stz 1stä 8stäg
-1stö
-1stü 8stüch 4stür.
+6stz 1stä 8stäg
+1stö
+1stü 8stüch 4stür.
1su su2b1 3suc su1e su2fe su8mar 6sumfa 8sumk 2s1unt sup1p2 6s5u6ran
6surte 2s1v 2s1w 1sy 8syl. sy5la syn1 sy2na syne4 s1z s4zend 5s6zene.
-8szu 1sä 6s5änd 6säugi 6säuß
-5söm 2s1ü2b 1süc sü8di 1sün 5süß
+8szu 1sä 6s5änd 6säugi 6säuß
+5söm 2s1ü2b 1süc sü8di 1sün 5süß
taats3 4tab. taba6k ta8ban tab2l ta6bre 4tabs t3absc
8tabz 6t3acht ta6der 6tadr tad6s tad2t 1tafe4 1tag ta6ga6 ta8gei
tage4s tag6s5t tah8 tahl3 tai6ne. ta5ir. tak8ta tal3au 1tale ta8leng
@@ -797,12 +797,12 @@ t6chu 2t1d te2am tea4s te8ben 5techn 4teff te4g3re te6hau 2tehe te4hel
8teiw te8lam te4lar 4telek 8telem te6man te6n5ag ten8erw ten5k tens4p
ten8tro 4t3entw 8tentz te6pli 5teppi ter5a6b te3ral ter5au 8terbar
t5erbe. 6terben 8terbs 4t3erbt t5erde. ter5ebe ter5ein te8rers terf4
-8terhö 6terklä ter8nor ter6re. t8erscha t5e6sel te8stau
+8terhö 6terklä ter8nor ter6re. t8erscha t5e6sel te8stau
t3euro te1xa tex3e 8texp tex6ta 2t1f2 2t1g2 2th. th6a 5tha. 2thaa
6t1hab 6t5haf t5hah 8thak 3thal. 6thals 6t3hand 2t1hau 1the. 3t4hea
t1heb t5heil t3heit t3helf 1theo 5therap 5therf 6t5herz 1thes 1thet
5thi. 2t1hil t3him 8thir 3this t5hj 2th1l 2th1m th1n t5hob t5hof
-4tholz 6thopti 1thr6 4ths t1hum 1thy 4t1hä 2t1hö t1hü
+4tholz 6thopti 1thr6 4ths t1hum 1thy 4t1hä 2t1hö t1hü
ti1a2m ti1b tie6fer ti1en ti8gerz tig3l ti8kin ti5lat 1tilg t1ind
tin4k3l ti3spa ti5str 5tite ti5tr ti8vel ti8vr 2t1j 2t1k2 2t1l tl8a
2t1m8 2t1n 3tobe 8tobj to3cha 5tocht 8tock tode4 to8del to8du to1e
@@ -814,9 +814,9 @@ tra8far traf5t 1trag tra6gl tra6gr t3rahm 1trai t6rans tra3sc tra6st
3traue t4re. 2trec t3rech t8reck 6t1red t8ree 4t1reg 3treib 4treif
8t3reis 8trepo tre6t5r t3rev 4t3rez 1trib t6rick tri6er 2trig t8rink
tri6o5d trizi5 tro1a 3troc trocke6 troi8d tro8man. tro3ny 5tropf
-6t5rosa t5roß 5trub 5trup trut5 1träg 6t1röh
-5trüb trü3bu t1rüc t1rüs 2ts ts1ab t1sac tsa8d
-ts1ak t6s5alt ts1an ts1ar ts3auf t3schr t5schä tse6e tsee5i
+6t5rosa t5roß 5trub 5trup trut5 1träg 6t1röh
+5trüb trü3bu t1rüc t1rüs 2ts ts1ab t1sac tsa8d
+ts1ak t6s5alt ts1an ts1ar ts3auf t3schr t5schä tse6e tsee5i
tsein6s ts3ent ts1er t8serf t4serk t8sh 5t6sik t4s3int ts5ort.
t5s6por t6sprei
t1st t2ste
@@ -825,35 +825,35 @@ t8sum. t2s1u8n t2s1ur 2t1t tt5eif tte6sa tt1ha tt8ret tt1sc tt8ser
tt5s6z 1tuc tuch5a 1tu1e 6tuh t5uhr tu1i tu6it 1tumh 6t5umr 1tums
8tumt 6tund 6tunf 2t1unt tu5ra tu6rau tu6re. tu4r3er 2t1v 2t1w 1ty1
ty6a ty8la 8tym 6ty6o 2tz tz5al tz1an tz1ar t8zec tzeh6 tzehn5 t6z5ei.
-t6zor t4z3um t6zäu 5täg 6täh t5ält t8än
-täre8 8tä8st 6täuß t5öffen
-8tö8k 1tön 4tüb t6ü5ber. 5tüch 1tür.
+t6zor t4z3um t6zäu 5täg 6täh t5ält t8än
+täre8 8tä8st 6täuß t5öffen
+8tö8k 1tön 4tüb t6ü5ber. 5tüch 1tür.
u3al. u5alb u5alf u3alh u5alk u3alp u3an. ua5na u3and u5ans u5ar.
-ua6th u1au ua1y u2bab ubi5er. u6b5rit ubs2k u5bö u8büb 2uc
+ua6th u1au ua1y u2bab ubi5er. u6b5rit ubs2k u5bö u8büb 2uc
u1che u6ch5ec u1chi uch1l uch3m uch5n uch1r uch5to ucht5re u1chu uch1w
uck1a uck5in u1d ud4a u1ei u6ela uene8 u6ep u1er uer1a ue8rerl uer5o
u8esc u2est u8ev u1fa u2f1ei u4f3ent u8ferh uf1fr uf1l uf1ra uf1re
-uf1rä uf1rü uf1s2p uf1st uft1s u8gabt u8gad u6gap ugeb8 u8gn
-ugo3s4 u1ha u1he u1hi uh1le u1ho uh1re u1hu uh1w u1hä u1hö
+uf1rä uf1rü uf1s2p uf1st uft1s u8gabt u8gad u6gap ugeb8 u8gn
+ugo3s4 u1ha u1he u1hi uh1le u1ho uh1re u1hu uh1w u1hä u1hö
6ui ui5en u1ig u3ins uin8tes u5isch. u1j 6uk u1ke u1ki u1kl u8klu
u1k6n u5ky u1la uld8se u1le ul8lac ul6lau ul6le6l ul6lo ulni8 u1lo
-ulo6i ult6a ult8e u1lu ul2vr u1lä u1lö 3umfan 5umlau umo8f
-um8pho u1mu umu8s u5mö u1n1a un2al un6at unau2 6und. 5undein
-un4d3um 3undzw undü8 un8düb une2b un1ec une2h un3eis 3unfal
-1unfä 5ungea 3unglü ung2s1 un8gä 1u2nif un4it un8kro
+ulo6i ult6a ult8e u1lu ul2vr u1lä u1lö 3umfan 5umlau umo8f
+um8pho u1mu umu8s u5mö u1n1a un2al un6at unau2 6und. 5undein
+un4d3um 3undzw undü8 un8düb une2b un1ec une2h un3eis 3unfal
+1unfä 5ungea 3unglü ung2s1 un8gä 1u2nif un4it un8kro
unk5s u1no unpa2 uns2p unvol4 unvoll5 u5os. u1pa u1pi u1p2l u1pr
up4s3t up2t1a u1q u1ra ur5abs ura8d ur5ah u6rak ur3alt u6rana u6r5ans
u8rap ur5a6ri u8ratt u1re ur3eig ur8gri u1ri ur5ins 3urlau urmen6
ur8nan u1ro 3ursac ur8sau ur8sei ur4sk 3urtei u1ru uru5i6 uru6r u1ry
-ur2za ur6zä ur5ä6m u5rö u1rü urück3 u1sa
+ur2za ur6zä ur5ä6m u5rö u1rü urück3 u1sa
usa4gi u2s1ar u2s1au u8schec usch5wi u2s1ei use8kel u8sl u4st3a4b
us3tau
u2s1uf u8surn ut1ac u1tal uta8m u1tan ut1ar u1tas ut1au
u1te u8teic u4tent u8terf u6terin u4t3hei ut5ho ut1hu u1ti utine5
uti6q u1to uto5c u1tr ut1sa ut1s6p ut6stro u1tu utz5w u1u u1v uve5n
-uve3r4ä u1w u1xe u5ya uy5e6 u1yi u2z1eh u8zerh u5ö uße6n
-ußen5e 8vanb 6vang 6varb var8d va6t5a va8tei
+uve3r4ä u1w u1xe u5ya uy5e6 u1yi u2z1eh u8zerh u5ö uße6n
+ußen5e 8vanb 6vang 6varb var8d va6t5a va8tei
va2t1r 2v1b 6v5c 6vd 1ve 6ve5g6 ver1 ver5b verb8l ve2re2 verg8 ve2ru8
ve1s ve2s3p ve3xe 2v1f 2v1g 6v5h vi6el vie6w5 vi1g4 vi8leh vil6le.
8vint vi1ru vi1tr 2v1k 2v1l 2v1m 4v5n 8vo8f voi6le vol8lend vol8li
@@ -867,9 +867,9 @@ wer4ka wer8ku wer4ta wer8term we2sp
we8s4tend
we8str
-we8stö wet8ta wich6s5t 1wid wi2dr wiede4 wieder5 wik6 wim6ma
+we8stö wet8ta wich6s5t 1wid wi2dr wiede4 wieder5 wik6 wim6ma
win4d3r 5wirt wisch5l 1wj 6wk 2w1l 8w1n wo1c woche6 wol6f wor6t5r 6ws2
-w1sk 6w5t 5wunde. wun6gr wu1sc wu2t1 6w5w wy5a wärme5 wä1sc
+w1sk 6w5t 5wunde. wun6gr wu1sc wu2t1 6w5w wy5a wärme5 wä1sc
1xag x1ak x3a4men 8xamt x1an 8x1b x1c 1xe. x3e4g 1xen xe1ro x1erz
1xes 8xf x1g 8x1h 1xi 8xid xi8so 4xiste x1k 6x1l x1m 8xn 1xo 8x5o6d
8x3p2 x1r x1s6 8x1t x6tak x8terf x2t1h 1xu xu1e x5ul 6x3w x1z 5ya.
@@ -878,64 +878,64 @@ y1k2 y1lak yl1al yla8m y5lax y1le y1lo y5lu y8mn ym1p2 y3mu y1na yno2d
yn1t y1on. y1o4p y5ou ypo1 y1pr y8ps y1r yri3e yr1r2
ys5iat ys8ty
-y1t y3w y1z yä8m z5a6b zab5l 8za6d 1zah za5is 4z3ak 6z1am 5zange.
+y1t y3w y1z yä8m z5a6b zab5l 8za6d 1zah za5is 4z3ak 6z1am 5zange.
8zanl 2z1ara 6z5as z5auf 3zaun 2z1b 6z1c 6z1d 1ze ze4dik 4z3eff 8zein
-zei4ta zei8ters ze6la ze8lec zel8th 4zemp 6z5engel zen8zin 8zergä
+zei4ta zei8ters ze6la ze8lec zel8th 4zemp 6z5engel zen8zin 8zergä
zer8i ze1ro zers8 zerta8 zer8tab zer8tag 8zerz ze8ste zeu6gr 2z1ex
2z1f8 z1g 4z1h 1zi zi1en zi5es. 4z3imp zi1na 6z5inf 6z5inni zin6s5er
8zinsuf zist5r zi5th zi1tr 6z1j 2z1k 2z1l 2z1m 6z1n 1zo zo6gl 4z3oh
zo1on zor6na8 4z1p z5q 6z1r 2z1s8 2z1t z4t3end z4t3hei z8thi 1zu zu3al
zu1b4 zu1f2 6z5uhr zun2a 8zunem zunf8 8zungl zu1o zup8fi zu1s8 zu1z
2z1v zw8 z1wal 5zweck zwei3s z1wel z1wer z6werg 8z5wes 1zwi zwi1s
-6z1wo 1zy 2z1z zz8a zzi1s 1zä 1zö 6zöl. zö1le
-1zü 2z1ü2b ä1a6 äb1l ä1che ä3chi
-äch8sc äch8sp ä5chu äck5a äd1a äd5era
-ä6d5ia ä1e ä5fa äf1l äft6s äg1h
-äg3le ä6g5nan äg5str ä1he ä1hi äh1le
-äh5ne 1ähnl äh1re äh5ri äh1ru ä1hu
-äh1w 6äi ä1isc ä6ische ä5ism ä5j
-ä1k äl1c ä1le ä8lei äl6schl ämi1e
-äm8n äm8s ä5na 5änderu äne5i8 äng3l
-änk5l ä1no än6s5c ä1pa äp6s5c 3äq
-är1c ä1re äre8m 5ärgern är6gl ä1ri
-3ärmel ä1ro ärt6s5 ä1ru 3ärztl ä5rö
-ä6s5chen äsen8s äs1th äta8b ä1te äteri4
-äter5it ä6thy ä1ti 3ätk ä1to ät8schl
-äts1p ä5tu äub1l äu1e 1äug äu8ga
-äu5i ä1um. ä1us. 1äuß ä1z
-ö1b ö1che ö5chi
-öch8s2tei
-öch8str öcht6
-5ö6dem 5öffn ö1he öh1l8 öh1re ö1hu
-ö1is ö1ke 1ö2ko 1öl. öl6k5l öl8pl
-ö1mu ö5na önig6s3 ö1no ö5o6t öpf3l
-öp6s5c ö1re ör8gli ö1ri ör8tr ö1ru
-5österr ö1te ö5th ö1ti ö1tu ö1v ö1w
-öwe8 ö2z üb6e2 3ü4ber1 üb1l üb1r
-5ü2bu ü1che ü1chi ü8ch3l üch6s5c ü8ck
-ück1a ück5ers üd1a2 ü6deu üdi8t ü2d1o4
-üd5s6 üge4l5a üg1l üh5a ü1he ü8heh
-ü6h5erk üh1le üh1re üh1ru ü1hu üh1w
-ü3k ü1le ül4l5a ül8lo ül4ps ül6s5c
-ü1lu ün8da ün8fei ünk5l ün8za ün6zw
-ü5pi ü1re ü8rei ür8fl ür8fr ür8geng
-ü1ri ü1ro ür8sta
-
-ü1ru üse8n
-ü8sta ü8stes
-
- ü3ta ü1te ü1ti
-üt8tr ü1tu üt8zei ü1v ß1a8 5ßa.
-ß8as ß1b8 ß1c ß1d
-1ße ß5ec 8ße8g 8ße8h
-2ß1ei 8ßem ß1f8 ß1g ß1h
-1ßi ß1k ß1l ß1m
-
-ß1n ß1o ß1p8 ß5q
-ß1r ß1s2 ßst8 ß1ta
-ß1te ßt3hei ß1ti ß5to
-ß1tr 1ßu8 6ß5um ß1v ß1w
-ß1z
+6z1wo 1zy 2z1z zz8a zzi1s 1zä 1zö 6zöl. zö1le
+1zü 2z1ü2b ä1a6 äb1l ä1che ä3chi
+äch8sc äch8sp ä5chu äck5a äd1a äd5era
+ä6d5ia ä1e ä5fa äf1l äft6s äg1h
+äg3le ä6g5nan äg5str ä1he ä1hi äh1le
+äh5ne 1ähnl äh1re äh5ri äh1ru ä1hu
+äh1w 6äi ä1isc ä6ische ä5ism ä5j
+ä1k äl1c ä1le ä8lei äl6schl ämi1e
+äm8n äm8s ä5na 5änderu äne5i8 äng3l
+änk5l ä1no än6s5c ä1pa äp6s5c 3äq
+är1c ä1re äre8m 5ärgern är6gl ä1ri
+3ärmel ä1ro ärt6s5 ä1ru 3ärztl ä5rö
+ä6s5chen äsen8s äs1th äta8b ä1te äteri4
+äter5it ä6thy ä1ti 3ätk ä1to ät8schl
+äts1p ä5tu äub1l äu1e 1äug äu8ga
+äu5i ä1um. ä1us. 1äuß ä1z
+ö1b ö1che ö5chi
+öch8s2tei
+öch8str öcht6
+5ö6dem 5öffn ö1he öh1l8 öh1re ö1hu
+ö1is ö1ke 1ö2ko 1öl. öl6k5l öl8pl
+ö1mu ö5na önig6s3 ö1no ö5o6t öpf3l
+öp6s5c ö1re ör8gli ö1ri ör8tr ö1ru
+5österr ö1te ö5th ö1ti ö1tu ö1v ö1w
+öwe8 ö2z üb6e2 3ü4ber1 üb1l üb1r
+5ü2bu ü1che ü1chi ü8ch3l üch6s5c ü8ck
+ück1a ück5ers üd1a2 ü6deu üdi8t ü2d1o4
+üd5s6 üge4l5a üg1l üh5a ü1he ü8heh
+ü6h5erk üh1le üh1re üh1ru ü1hu üh1w
+ü3k ü1le ül4l5a ül8lo ül4ps ül6s5c
+ü1lu ün8da ün8fei ünk5l ün8za ün6zw
+ü5pi ü1re ü8rei ür8fl ür8fr ür8geng
+ü1ri ü1ro ür8sta
+
+ü1ru üse8n
+ü8sta ü8stes
+
+ ü3ta ü1te ü1ti
+üt8tr ü1tu üt8zei ü1v ß1a8 5ßa.
+ß8as ß1b8 ß1c ß1d
+1ße ß5ec 8ße8g 8ße8h
+2ß1ei 8ßem ß1f8 ß1g ß1h
+1ßi ß1k ß1l ß1m
+
+ß1n ß1o ß1p8 ß5q
+ß1r ß1s2 ßst8 ß1ta
+ß1te ßt3hei ß1ti ß5to
+ß1tr 1ßu8 6ß5um ß1v ß1w
+ß1z
2s1ta.
i2s1tal
@@ -989,42 +989,42 @@ aus3s4
ens3s4
gs3s4
.mis2s1
-s2s1b8
-
+s2s1b8
+
s2s3chen
-s2s3d
-s2s5ec
-
-
-2s2s1ei
-s2s3f
-s2s1g
-s2s3h
-s2s3k
-s2s3l
-s2s3m
-
-s2s3n
-s2s3p8
-s2s5q
-s2s3r
-s2s3s2
-sss2t8
-
-
+s2s3d
+s2s5ec
+
+
+2s2s1ei
+s2s3f
+s2s1g
+s2s3h
+s2s3k
+s2s3l
+s2s3m
+
+s2s3n
+s2s3p8
+s2s5q
+s2s3r
+s2s3s2
+sss2t8
+
+
as2s3te
is2s3te
us2s3te
-üs2s3te
-s2st3hei
-s2s3ti
-s2s1to
-s2s1tr
+üs2s3te
+s2st3hei
+s2s3ti
+s2s1to
+s2s1tr
-6ss5um
-s2s3v
-s2s3w
-s2s3z
+6ss5um
+s2s3v
+s2s3w
+s2s3z
@@ -1085,7 +1085,7 @@ s2s3z
-1ba 1be 1bo 1bá 1bé 1bí 1bó 1bú 1bi 1bu 1bü
-1ca 1ce 1co 1cá 1cé 1cí 1có 1cú 1ci 1cu 1cü
-1da 1de 1do 1dá 1dé 1dí 1dó 1dú 1di 1du 1dü
-1fa 1fe 1fo 1fá 1fé 1fí 1fó 1fú 1fi 1fu 1fü
-1ga 1ge 1go 1gá 1gé 1gí 1gó 1gú 1gi 1gu 1gü
-1ja 1je 1jo 1já 1jé 1jí 1jó 1jú 1ji 1ju 1jü
-1ka 1ke 1ko 1ká 1ké 1kí 1kó 1kú 1ki 1ku 1kü
-1la 1le 1lo 1lá 1lé 1lí 1ló 1lú 1li 1lu 1lü
-1ma 1me 1mo 1má 1mé 1mí 1mó 1mú 1mi 1mu 1mü
-1na 1ne 1no 1ná 1né 1ní 1nó 1nú 1ni 1nu 1nü
-1pa 1pe 1po 1pá 1pé 1pí 1pó 1pú 1pi 1pu 1pü
-1qa 1qe 1qo 1qá 1qé 1qí 1qó 1qú 1qi 1qu 1qü
-1ra 1re 1ro 1rá 1ré 1rí 1ró 1rú 1ri 1ru 1rü
-1sa 1se 1so 1sá 1sé 1sí 1só 1sú 1si 1su 1sü
-1ta 1te 1to 1tá 1té 1tí 1tó 1tú 1ti 1tu 1tü
-1va 1ve 1vo 1vá 1vé 1ví 1vó 1vú 1vi 1vu 1vü
-1wa 1we 1wo 1wá 1wé 1wí 1wó 1wú 1wi 1wu 1wü
-1xa 1xe 1xo 1xá 1xé 1xí 1xó 1xú 1xi 1xu 1xü
-1ya 1ye 1yo 1yá 1yé 1yí 1yó 1yú 1yi 1yu 1yü
-1za 1ze 1zo 1zá 1zé 1zí 1zó 1zú 1zi 1zu 1zü
-1ña 1ñe 1ño 1ñá 1ñé 1ñí 1ñó 1ñú 1ñi 1ñu 1ñü
+1ba 1be 1bo 1bá 1bé 1bà 1bó 1bú 1bi 1bu 1bü
+1ca 1ce 1co 1cá 1cé 1cà 1có 1cú 1ci 1cu 1cü
+1da 1de 1do 1dá 1dé 1dà 1dó 1dú 1di 1du 1dü
+1fa 1fe 1fo 1fá 1fé 1fà 1fó 1fú 1fi 1fu 1fü
+1ga 1ge 1go 1gá 1gé 1gà 1gó 1gú 1gi 1gu 1gü
+1ja 1je 1jo 1já 1jé 1jà 1jó 1jú 1ji 1ju 1jü
+1ka 1ke 1ko 1ká 1ké 1kà 1kó 1kú 1ki 1ku 1kü
+1la 1le 1lo 1lá 1lé 1là 1ló 1lú 1li 1lu 1lü
+1ma 1me 1mo 1má 1mé 1mà 1mó 1mú 1mi 1mu 1mü
+1na 1ne 1no 1ná 1né 1nà 1nó 1nú 1ni 1nu 1nü
+1pa 1pe 1po 1pá 1pé 1pà 1pó 1pú 1pi 1pu 1pü
+1qa 1qe 1qo 1qá 1qé 1qà 1qó 1qú 1qi 1qu 1qü
+1ra 1re 1ro 1rá 1ré 1rà 1ró 1rú 1ri 1ru 1rü
+1sa 1se 1so 1sá 1sé 1sà 1só 1sú 1si 1su 1sü
+1ta 1te 1to 1tá 1té 1tà 1tó 1tú 1ti 1tu 1tü
+1va 1ve 1vo 1vá 1vé 1và 1vó 1vú 1vi 1vu 1vü
+1wa 1we 1wo 1wá 1wé 1wà 1wó 1wú 1wi 1wu 1wü
+1xa 1xe 1xo 1xá 1xé 1xà 1xó 1xú 1xi 1xu 1xü
+1ya 1ye 1yo 1yá 1yé 1yà 1yó 1yú 1yi 1yu 1yü
+1za 1ze 1zo 1zá 1zé 1zà 1zó 1zú 1zi 1zu 1zü
+1ña 1ñe 1ño 1ñá 1ñé 1ñà 1ñó 1ñú 1ñi 1ñu 1ñü
-1c2ha 1c2he 1c2ho 1c2há 1c2hé 1c2hí 1c2hó 1c2hú 1c2hi 1c2hu 1c2hü
-1l2la 1l2le 1l2lo 1l2lá 1l2lé 1l2lí 1l2ló 1l2lú 1l2li 1l2lu 1l2lü
-1r2ra 1r2re 1r2ro 1r2rá 1r2ré 1r2rí 1r2ró 1r2rú 1r2ri 1r2ru 1r2rü
-1b2la 1b2le 1b2lo 1b2lá 1b2lé 1b2lí 1b2ló 1b2lú 1b2li 1b2lu 1b2lü
-1b2ra 1b2re 1b2ro 1b2rá 1b2ré 1b2rí 1b2ró 1b2rú 1b2ri 1b2ru 1b2rü
-1c2la 1c2le 1c2lo 1c2lá 1c2lé 1c2lí 1c2ló 1c2lú 1c2li 1c2lu 1c2lü
-1c2ra 1c2re 1c2ro 1c2rá 1c2ré 1c2rí 1c2ró 1c2rú 1c2ri 1c2ru 1c2rü
-1d2ra 1d2re 1d2ro 1d2rá 1d2ré 1d2rí 1d2ró 1d2rú 1d2ri 1d2ru 1d2rü
-1f2la 1f2le 1f2lo 1f2lá 1f2lé 1f2lí 1f2ló 1f2lú 1f2li 1f2lu 1f2lü
-1f2ra 1f2re 1f2ro 1f2rá 1f2ré 1f2rí 1f2ró 1f2rú 1f2ri 1f2ru 1f2rü
-1g2la 1g2le 1g2lo 1g2lá 1g2lé 1g2lí 1g2ló 1g2lú 1g2li 1g2lu 1g2lü
-1g2ra 1g2re 1g2ro 1g2rá 1g2ré 1g2rí 1g2ró 1g2rú 1g2ri 1g2ru 1g2rü
-1k2la 1k2le 1k2lo 1k2lá 1k2lé 1k2lí 1k2ló 1k2lú 1k2li 1k2lu 1k2lü
-1k2ra 1k2re 1k2ro 1k2rá 1k2ré 1k2rí 1k2ró 1k2rú 1k2ri 1k2ru 1k2rü
-1p2la 1p2le 1p2lo 1p2lá 1p2lé 1p2lí 1p2ló 1p2lú 1p2li 1p2lu 1p2lü
-1p2ra 1p2re 1p2ro 1p2rá 1p2ré 1p2rí 1p2ró 1p2rú 1p2ri 1p2ru 1p2rü
-1t2ra 1t2re 1t2ro 1t2rá 1t2ré 1t2rí 1t2ró 1t2rú 1t2ri 1t2ru 1t2rü
+1c2ha 1c2he 1c2ho 1c2há 1c2hé 1c2hà 1c2hó 1c2hú 1c2hi 1c2hu 1c2hü
+1l2la 1l2le 1l2lo 1l2lá 1l2lé 1l2là 1l2ló 1l2lú 1l2li 1l2lu 1l2lü
+1r2ra 1r2re 1r2ro 1r2rá 1r2ré 1r2rà 1r2ró 1r2rú 1r2ri 1r2ru 1r2rü
+1b2la 1b2le 1b2lo 1b2lá 1b2lé 1b2là 1b2ló 1b2lú 1b2li 1b2lu 1b2lü
+1b2ra 1b2re 1b2ro 1b2rá 1b2ré 1b2rà 1b2ró 1b2rú 1b2ri 1b2ru 1b2rü
+1c2la 1c2le 1c2lo 1c2lá 1c2lé 1c2là 1c2ló 1c2lú 1c2li 1c2lu 1c2lü
+1c2ra 1c2re 1c2ro 1c2rá 1c2ré 1c2rà 1c2ró 1c2rú 1c2ri 1c2ru 1c2rü
+1d2ra 1d2re 1d2ro 1d2rá 1d2ré 1d2rà 1d2ró 1d2rú 1d2ri 1d2ru 1d2rü
+1f2la 1f2le 1f2lo 1f2lá 1f2lé 1f2là 1f2ló 1f2lú 1f2li 1f2lu 1f2lü
+1f2ra 1f2re 1f2ro 1f2rá 1f2ré 1f2rà 1f2ró 1f2rú 1f2ri 1f2ru 1f2rü
+1g2la 1g2le 1g2lo 1g2lá 1g2lé 1g2là 1g2ló 1g2lú 1g2li 1g2lu 1g2lü
+1g2ra 1g2re 1g2ro 1g2rá 1g2ré 1g2rà 1g2ró 1g2rú 1g2ri 1g2ru 1g2rü
+1k2la 1k2le 1k2lo 1k2lá 1k2lé 1k2là 1k2ló 1k2lú 1k2li 1k2lu 1k2lü
+1k2ra 1k2re 1k2ro 1k2rá 1k2ré 1k2rà 1k2ró 1k2rú 1k2ri 1k2ru 1k2rü
+1p2la 1p2le 1p2lo 1p2lá 1p2lé 1p2là 1p2ló 1p2lú 1p2li 1p2lu 1p2lü
+1p2ra 1p2re 1p2ro 1p2rá 1p2ré 1p2rà 1p2ró 1p2rú 1p2ri 1p2ru 1p2rü
+1t2ra 1t2re 1t2ro 1t2rá 1t2ré 1t2rà 1t2ró 1t2rú 1t2ri 1t2ru 1t2rü
-b1h d1h f1h g1h j1h k1h l1h m1h n1h p1h q1h r1h s1h t1h v1h w1h x1h y1h z1h ñ1h
+b1h d1h f1h g1h j1h k1h l1h m1h n1h p1h q1h r1h s1h t1h v1h w1h x1h y1h z1h ñ1h
su2b2r su2b2l
@@ -180,29 +180,29 @@ zZ
-ä2y
+ä2y
y1a2
y1o2
o1y
-ö2y
+ö2y
u1y2
y1u2
-ö3a2
-ö3o2
-ä3a2
-ä3o2
-ä1u2
-ö1u2
-a1ä
-a1ö
-o1ä
-o1ö
-u1ä2
-u1ö2
-ä2ä
-ö2ö
-ä2ö
-ö2ä
+ö3a2
+ö3o2
+ä3a2
+ä3o2
+ä1u2
+ö1u2
+a1ä
+a1ö
+o1ä
+o1ö
+u1ä2
+u1ö2
+ä2ä
+ö2ö
+ä2ö
+ö2ä
aa1i2
aa1e2
@@ -228,13 +228,13 @@ a1uu
i1uu
e1uu
o1uu
-ää1i
-ää1e
-ää3y
-i1ää
-e1ää
-y1ää
-i1öö
+ää1i
+ää1e
+ää3y
+i1ää
+e1ää
+y1ää
+i1öö
@@ -274,9 +274,9 @@ uo1a
uo1u
-e1ö2
-ö1e2
-.ä2
+e1ö2
+ö1e2
+.ä2
diff --git a/hyph/src/main/resources/com/itextpdf/hyph/fr.xml b/hyph/src/main/resources/com/itextpdf/hyph/fr.xml
index e30d5605e7..570dc429b9 100644
--- a/hyph/src/main/resources/com/itextpdf/hyph/fr.xml
+++ b/hyph/src/main/resources/com/itextpdf/hyph/fr.xml
@@ -1,4 +1,4 @@
-
+
@@ -123,11 +123,11 @@ zZ
2'2
.a4
'a4
-.â4
-'â4
- .ab3réa
- 'ab3réa
- a1è2dre
+.â4
+'â4
+ .ab3réa
+ 'ab3réa
+ a1è2dre
.ae3s4ch
'ae3s4ch
1alcool
@@ -136,21 +136,21 @@ zZ
'amino1a2c
.ana3s4tr
'ana3s4tr
- 1a2nesthési
+ 1a2nesthési
.anti1a2
'anti1a2
.anti1e2
'anti1e2
- .anti1é2
+ .anti1é2
.anti2enne
'anti2enne
- 'anti1é2
+ 'anti1é2
.anti1s2
'anti1s2
.apo2s3ta
'apo2s3ta
apo2s3tr
- archi1é2pis
+ archi1é2pis
.as2ta
'as2ta
a2s3tro
@@ -160,17 +160,17 @@ zZ
%==================-%======================-%
%%b -->
1ba
-1bâ
+1bâ
.bai2se3main
1be
-1bé
-1bè
-1bê
+1bé
+1bè
+1bê
4be.
4bes.
2bent.
1bi
-1bî0
+1bî0
.bi1a2c
.bi1a2t
.bi1au
@@ -182,13 +182,13 @@ zZ
4bles.
2blent.
1bo
-1bô
+1bô
1b2r
4bre.
4bres.
2brent.
1bu
-1bû
+1bû
1by
@@ -196,21 +196,21 @@ zZ
1\cc
1ca
-1câ
+1câ
ca3ou3t2
1ce
-1cé
-1cè
-1cê
+1cé
+1cè
+1cê
4ce.
4ces.
2cent.
ja3cent.
ac3cent.
- é3cent.
+ é3cent.
munifi3cent.
- réti3cent.
+ réti3cent.
privatdo3cent.
inno3cent.
es3cent.
@@ -225,13 +225,13 @@ privatdo3cent.
4che.
4ches.
2chent.
- .chè2vre3feuille
+ .chè2vre3feuille
2chg
ch2l
4chle.
4chles.
chlo2r3a2c
- chlo2r3é2t
+ chlo2r3é2t
2chm
2chn
2chp
@@ -242,7 +242,7 @@ ch2r
2cht
2chw
1ci
-1cî0
+1cî0
.ci2s1alp
1c2k
4ck.
@@ -261,7 +261,7 @@ ch2r
4cles.
2clent.
1co
-1cô
+1cô
co1acc
co1acq
co1a2d
@@ -271,14 +271,14 @@ ch2r
co1assur
co1au
co1ax
- co1é2
+ co1é2
co1ef
co1en
co1ex
.con4
.cons4
.contre1s2c
- .contre3maî0tre
+ .contre3maî0tre
co2nurb
.co1o2
.co2o3lie
@@ -287,7 +287,7 @@ ch2r
4cres.
2crent.
1cu
-1cû
+1cû
1cy
.cul4
@@ -296,19 +296,19 @@ ch2r
1d'
1da
-1dâ
+1dâ
.dacryo1a2
d1d2h
1de
-1dé
-1dè
-1dê
+1dé
+1dè
+1dê
4de.
4des.
2dent.
-déca3dent.
- é3dent.
+déca3dent.
+ é3dent.
cci3dent.
inci3dent.
confi3dent.
@@ -319,53 +319,53 @@ d
impu3dent.
pru3dent.
- .dé1a2
- .dé1io
- .dé1o2
- .dé2s
-
+ .dé1a2
+ .dé1io
+ .dé1o2
+ .dé2s
+
- .dé3s2a3cr
- .dés2a3m
-
-
- .dé3s2a3tell
- .dé3s2astr
- .dé3s2c
-
+ .dé3s2a3cr
+ .dés2a3m
+
+
+ .dé3s2a3tell
+ .dé3s2astr
+ .dé3s2c
+
- .dé2s1é2
- .dé3s2é3gr
- .dé3s2ensib
- .dé3s2ert
- .dé3s2exu
-
+ .dé2s1é2
+ .dé3s2é3gr
+ .dé3s2ensib
+ .dé3s2ert
+ .dé3s2exu
+
- .dé2s1i2
- .dé3s2i3d
- .dé3s2i3gn
- .dé3s2i3li
- .dé3s2i3nen
- .dé3s2invo
- .dé3s2i3r
- .dé3s2ist
-
+ .dé2s1i2
+ .dé3s2i3d
+ .dé3s2i3gn
+ .dé3s2i3li
+ .dé3s2i3nen
+ .dé3s2invo
+ .dé3s2i3r
+ .dé3s2ist
+
- .dé3s2o3dé
- .dé3s2o3l
- .dé3s2o3pil
- .dé3s2orm
- .dé3s2orp
- .dé3s2oufr
- .dé3s2p
- .dé3s2t
- .dé2s1u2n
+ .dé3s2o3dé
+ .dé3s2o3l
+ .dé3s2o3pil
+ .dé3s2orm
+ .dé3s2orp
+ .dé3s2oufr
+ .dé3s2p
+ .dé3s2t
+ .dé2s1u2n
3d2hal
3d2houd
1di
-1dî0
+1dî0
di2s3cop
- .di1a2cé
+ .di1a2cé
.di1a2cid
dia2g3n
.di1ald
@@ -375,14 +375,14 @@ d
.di2s3h
2dlent.
1do
-1dô
+1dô
1d2r
4dre.
4dres.
2drent.
d1s2
1du
-1dû
+1dû
1dy
.dy2s3
.dy2s1a2
@@ -395,24 +395,24 @@ d1s2
.e4
'e4
-.ê4
-'ê4
-.é4
-'é4
-.è4
-'è4
- 1é2drie
- 1é2drique
- 1é2lectr
- 1é2lément
+.ê4
+'ê4
+.é4
+'é4
+.è4
+'è4
+ 1é2drie
+ 1é2drique
+ 1é2lectr
+ 1é2lément
.en1a2
'en1a2
- 1é2nerg
+ 1é2nerg
e2n1i2vr
.en1o2
'en1o2
- épi2s3cop
- épi3s4cope
+ épi2s3cop
+ épi3s4cope
e2s3cop
.eu2r1a2
'eu2r1a2
@@ -425,46 +425,46 @@ d1s2
1fa
-1fâ
+1fâ
1fe
-1fé
-1fè
-1fê
+1fé
+1fè
+1fê
4fe.
4fes.
2fent.
1fi
-1fî0
+1fî0
1f2l
4fle.
4fles.
2flent.
1fo
-1fô
+1fô
1f2r
4fre.
4fres.
2frent.
f1s2
1fu
-1fû
+1fû
1fy
1ga
-1gâ
+1gâ
1ge
-1gé
-1gè
-1gê
+1gé
+1gè
+1gê
4ge.
4ges.
2gent.
- ré3gent.
+ ré3gent.
entre3gent.
indi3gent.
dili3gent.
@@ -477,7 +477,7 @@ intelli3gent.
'ar3gent.
ser3gent.
ter3gent.
-résur3gent.
+résur3gent.
1g2ha
1g2he
@@ -485,7 +485,7 @@ r
1g2ho
1g2hy
1gi
-1gî0
+1gî0
1g2l
4gle.
4gles.
@@ -497,13 +497,13 @@ r
4gnes.
2gnent.
1go
-1gô
+1gô
1g2r
4gre.
4gres.
2grent.
1gu
-1gû
+1gû
g1s2
4gue.
4gues.
@@ -518,25 +518,25 @@ g1s2
1ha
-1hâ
+1hâ
1he
-1hé
-1hè
-1hê
- hémi1é
- hémo1p2t
+1hé
+1hè
+1hê
+ hémi1é
+ hémo1p2t
4he.
4hes.
1hi
-1hî0
+1hî0
1ho
-1hô
+1hô
1hu
-1hû
+1hû
1hy
hypera2
hypere2
- hyperé2
+ hyperé2
hyperi2
hypero2
hypers2
@@ -544,7 +544,7 @@ g1s2
hyperu2
hypo1a2
hypo1e2
- hypo1é2
+ hypo1é2
hypo1i2
hypo1o2
hypo1s2
@@ -555,11 +555,11 @@ g1s2
.i4
'i4
-.î4
-'î4
+.î4
+'î4
i1algi
i1arthr
- i1è2dre
+ i1è2dre
il2l
cil3l
@@ -572,7 +572,7 @@ g1s2
l3lion
mil3l
mil4let
-émil4l
+émil4l
semil4l
rmil4l
armil5l
@@ -610,14 +610,14 @@ chevil4l
'in2augur
.in1e2
'in1e2
- .in1é2
- 'in1é2
+ .in1é2
+ 'in1é2
.in2effab
'in2effab
- .in2é3lucta
- 'in2é3lucta
- .in2é3narra
- 'in2é3narra
+ .in2é3lucta
+ 'in2é3lucta
+ .in2é3narra
+ 'in2é3narra
.in2ept
'in2ept
.in2er
@@ -645,8 +645,8 @@ chevil4l
'intera2
.intere2
'intere2
- .interé2
- 'interé2
+ .interé2
+ 'interé2
.interi2
'interi2
.intero2
@@ -673,17 +673,17 @@ chevil4l
2jk
4je.
4jes.
-2jent.
+2jent.
1ka
-1kâ
+1kâ
1ke
-1ké
-1kè
-1kê
+1ké
+1kè
+1kê
4ke.
4kes.
2kent.
@@ -691,32 +691,32 @@ chevil4l
4kh.
.kh4
1ki
-1kî0
+1kî0
1ko
-1kô
+1kô
1k2r
1ku
-1kû
+1kû
1ky
1la
-1lâ
-1là
+1lâ
+1lÃ
la2w3re
1le
-1lé
-1lè
-1lê
+1lé
+1lè
+1lê
4le.
4les.
2lent.
.ta3lent.
iva3lent.
-équiva4lent.
+équiva4lent.
monova3lent.
polyva3lent.
re3lent.
@@ -725,7 +725,7 @@ chevil4l
inso3lent.
turbu3lent.
succu3lent.
- fécu3lent.
+ fécu3lent.
trucu3lent.
opu3lent.
corpu3lent.
@@ -733,24 +733,24 @@ chevil4l
sporu4lent.
1li
-1lî0
+1lî0
1lo
-1lô
+1lô
l1s2t
1lu
-1lû
+1lû
1ly
1ma
-1mâ
+1mâ
.ma2c3k
.macro1s2c
.ma2l1a2dres
.ma2l1a2dro
- .ma2l1aisé
+ .ma2l1aisé
.ma2l1ap
.ma2l1a2v
.ma2l1en
@@ -759,46 +759,46 @@ l1s2t
.ma2l1o2d
.ma2r1x
1me
-1mé
-1mè
-1mê
- .mé2g1oh
- .mé2sa
- .mé3san
- .mé2s1es
- .mé2s1i
- .mé2s1u2s
- .méta1s2ta
+1mé
+1mè
+1mê
+ .mé2g1oh
+ .mé2sa
+ .mé3san
+ .mé2s1es
+ .mé2s1i
+ .mé2s1u2s
+ .méta1s2ta
4me.
4mes.
- â2ment.
+ â2ment.
da2ment.
fa2ment.
amalga2ment.
cla2ment.
ra2ment.
-tempéra3ment.
+tempéra3ment.
ta2ment.
testa3ment.
qua2ment.
- è2ment.
- carê2ment.
+ è2ment.
+ carê2ment.
diaphrag2ment.
ryth2ment.
ai2ment.
rai3ment.
- abî2ment.
- éci2ment.
+ abî2ment.
+ éci2ment.
vidi2ment.
subli2ment.
- éli2ment.
+ éli2ment.
reli2ment.
mi2ment.
ani2ment.
veni2ment.
ri2ment.
- détri3ment.
+ détri3ment.
nutri3ment.
inti2ment.
esti2ment.
@@ -808,7 +808,7 @@ temp
.gem2ment.
om2ment.
.com3ment.
- ô2ment.
+ ô2ment.
slalo2ment.
chro2ment.
to2ment.
@@ -821,7 +821,7 @@ temp
or2ment.
as2ment.
au2ment.
- écu2ment.
+ écu2ment.
fu2ment.
hu2ment.
fichu3ment.
@@ -833,60 +833,60 @@ temp
tu2ment.
1mi
-1mî0
+1mî0
.milli1am
- 1m2némo
- 1m2nès
- 1m2nési
+ 1m2némo
+ 1m2nès
+ 1m2nési
1mo
-1mô
+1mô
.mono1a2
.mono1e2
- .mono1é2
+ .mono1é2
.mono1i2
- .mono1ï2dé
+ .mono1ï2dé
.mono1o2
.mono1u2
.mono1s2
- mon2t3réal
+ mon2t3réal
m1s2
1mu
-1mû
+1mû
1my
- moye2n1â2g
+ moye2n1â2g
1na
-1nâ
+1nâ
1ne
-1né
-1nè
-1nê
+1né
+1nè
+1nê
4ne.
4nes.
2nent.
- réma3nent.
+ réma3nent.
imma3nent.
perma3nent.
- .émi3nent.
-préémi3nent.
- proémi3nent.
- surémi3nent.
+ .émi3nent.
+préémi3nent.
+ proémi3nent.
+ surémi3nent.
immi3nent.
conti3nent.
perti3nent.
absti3nent.
1ni
-1nî0
+1nî0
1no
-1nô
+1nô
.no2n1obs
1nu
-1nû
+1nû
n3s2at.
n3s2ats.
n1x
@@ -897,19 +897,19 @@ n1x
.o4
'o4
-'ô4
-.ô4
+'ô4
+.ô4
o2b3long
1octet
o1d2l
- o1è2dre
+ o1è2dre
o1ioni
ombud2s3
omni1s2
o1s2tas
o1s2tat
- o1s2téro
+ o1s2téro
o1s2tim
o1s2tom
o1s2trad
@@ -925,22 +925,22 @@ n1x
1pa
-1pâ
- paléo1é2
+1pâ
+ paléo1é2
.pa2n1a2f
- .pa2n1a2mé
+ .pa2n1a2mé
.pa2n1a2ra
.pa2n1is
.pa2n1o2ph
.pa2n1opt
.pa2r1a2che
- .pa2r1a2chè
+ .pa2r1a2chè
.para1s2
- .pa2r3hé
+ .pa2r3hé
1pe
-1pé
-1pè
-1pê
+1pé
+1pè
+1pê
4pe.
4pes.
@@ -952,20 +952,20 @@ ser3pent.
.pen2ta
per3h
- pé2nul
+ pé2nul
.pe4r
.per1a2
.per1e2
- .per1é2
+ .per1é2
.per1i2
.per1o2
.per1u2
- pé1r2é2q
- .péri1os
- .péri1s2
- .péri2s3s
- .péri2s3ta
- .péri1u2
+ pé1r2é2q
+ .péri1os
+ .péri1s2
+ .péri2s3s
+ .péri2s3ta
+ .péri1u2
1p2h
.ph4
4ph.
@@ -983,27 +983,27 @@ ph2r
4phres.
2phs
2pht
- 3ph2talé
+ 3ph2talé
3ph2tis
1pi
-1pî0
+1pî0
1p2l
4ple.
4ples.
2plent.
.pluri1a
- 1p2né
+ 1p2né
1p2neu
1po
-1pô
+1pô
po1astre
poly1a2
poly1e2
- poly1é2
- poly1è2
+ poly1é2
+ poly1è2
poly1i2
poly1o2
poly1s2
@@ -1018,26 +1018,26 @@ ph2r
4pre.
4pres.
2prent.
- .pré1a2
- .pré2a3la
- .pré2au
- .pré1é2
- .pré1e2
- .pré1i2
- .pré1o2
- .pré1u2
- .pré1s2
- .pro1é2
- .pro1s2cé
+ .pré1a2
+ .pré2a3la
+ .pré2au
+ .pré1é2
+ .pré1e2
+ .pré1i2
+ .pré1o2
+ .pré1u2
+ .pré1s2
+ .pro1é2
+ .pro1s2cé
pro2s3tat
.prou3d2h
1p2sych
.psycho1a2n
- 1p2tèr
- 1p2tér
+ 1p2tèr
+ 1p2tér
1pu
.pud1d2l
-1pû
+1pû
1py
@@ -1048,33 +1048,33 @@ ph2r
4ques.
2quent.
- é3quent.
- élo3quent.
+ é3quent.
+ élo3quent.
grandilo3quent.
1ra
-1râ
+1râ
radio1a2
1re
-1ré
-1rè
-1rê
- .ré1a2
- .ré2a3le
- .ré2a3lis
- .ré2a3lit
- .ré2aux
- .ré1é2
- .ré1e2
- .ré2el
- .ré2er
- .ré2èr
- .ré1i2
- .ré2i3fi
- .ré1o2
+1ré
+1rè
+1rê
+ .ré1a2
+ .ré2a3le
+ .ré2a3lis
+ .ré2a3lit
+ .ré2aux
+ .ré1é2
+ .ré1e2
+ .ré2el
+ .ré2er
+ .ré2èr
+ .ré1i2
+ .ré2i3fi
+ .ré1o2
.re1s2
.re2s3cap
.re2s3cisi
@@ -1092,8 +1092,8 @@ grandilo3quent.
.re3s4tag
.re3s4tand
.re3s4tat
- .re3s4tén
- .re3s4tér
+ .re3s4tén
+ .re3s4tér
.re3s4tim
.re3s4tip
.re3s4toc
@@ -1104,18 +1104,18 @@ grandilo3quent.
.re4s5trin
.re3s4tu
.re3s4ty
- .réu2
-
- .ré2uss
- .rétro1a2
+ .réu2
+
+ .ré2uss
+ .rétro1a2
4re.
4res.
- 2rent.
+ 2rent.
.pa3rent.
appa3rent.
transpa3rent.
- é3rent.
+ é3rent.
tor3rent.
cur3rent.
@@ -1125,25 +1125,25 @@ transpa3rent.
2r3heur
2r3hydr
1ri
-1rî0
+1rî0
1ro
-1rô
+1rô
1ru
-1rû
+1rû
1ry
1sa
-1sâ
+1sâ
.sch4
1s2caph
- 1s2clér
+ 1s2clér
1s2cop
1s2ch
e2s3ch
-i2s3ché
+i2s3ché
i2s3chia
i2s3chio
4sch.
@@ -1151,16 +1151,16 @@ i2s3chio
4sches.
2schs
1se
-1sé
-1sè
-1sê
+1sé
+1sè
+1sê
sesqui1a2
4se.
4ses.
2sent.
ab3sent.
-pré3sent.
+pré3sent.
.res3sent.
.seu2le
@@ -1175,21 +1175,21 @@ pr
2shr
2shs
1si
-1sî0
+1sî0
1s2lav
1s2lov
1so
-1sô
+1sô
1s2patia
1s2perm
1s2por
- 1s2phèr
- 1s2phér
+ 1s2phèr
+ 1s2phér
1s2piel
1s2piros
1s2tandard
1s2tein
- stéréo1s2
+ stéréo1s2
1s2tigm
1s2tock
1s2tomos
@@ -1197,11 +1197,11 @@ pr
1s2tructu
1s2tyle
1su
-1sû
+1sû
.su2b1a2
.su3b2alt
- .su2b1é2
- .su3b2é3r
+ .su2b1é2
+ .su3b2é3r
.su2b1in
.su2b3limin
.su2b3lin
@@ -1218,7 +1218,7 @@ pr
.su3r2eau
.su3r2ell
.su3r2et
- .su2r1é2
+ .su2r1é2
.su2r3h
.su2r1i2m
.su2r1inf
@@ -1231,31 +1231,31 @@ pr
1ta
-1tâ
-1tà
+1tâ
+1tÃ
tachy1a2
tchin3t2
1te
-1té
-1tè
-1tê
- télé1e2
- télé1i2
- télé1o2b
- télé1o2p
- télé1s2
+1té
+1tè
+1tê
+ télé1e2
+ télé1i2
+ télé1o2b
+ télé1o2p
+ télé1s2
4te.
4tes.
2tent.
.la3tent.
.pa3tent.
- compé3tent.
- éni3tent.
- mécon3tent.
+ compé3tent.
+ éni3tent.
+ mécon3tent.
omnipo3tent.
ventripo3tent.
-équipo3tent.
+équipo3tent.
impo3tent.
mit3tent.
@@ -1274,9 +1274,9 @@ th2r
4thres.
2ths
1ti
-1tî0
+1tî0
1to
-1tô
+1tô
1t2r
tran2s1a2
tran3s2act
@@ -1294,7 +1294,7 @@ th2r
.tri1o2n
t1t2l
1tu
-1tû
+1tû
tung2s3
1ty
@@ -1303,8 +1303,8 @@ tung2s3
.u4
'u4
-.û4
-'û4
+.û4
+'û4
uni1o2v
uni1a2x
u2s3tr
@@ -1313,12 +1313,12 @@ tung2s3
1va
-1vâ
+1vâ
1ve
-1vé
-1vè
-1vê
- vélo1s2ki
+1vé
+1vè
+1vê
+ vélo1s2ki
4ve.
4ves.
@@ -1327,16 +1327,16 @@ conni3vent.
.sou3vent.
1vi
-1vî0
+1vî0
1vo
-1vô
+1vô
vol2t1amp
1v2r
4vre.
4vres.
2vrent.
1vu
-1vû
+1vû
1vy
@@ -1371,8 +1371,8 @@ conni3vent.
1za
1ze
-1zé
-1zè
+1zé
+1zè
4ze.
4zes.
diff --git a/hyph/src/main/resources/com/itextpdf/hyph/hu.xml b/hyph/src/main/resources/com/itextpdf/hyph/hu.xml
index 3766ac1a1b..1422343aba 100644
--- a/hyph/src/main/resources/com/itextpdf/hyph/hu.xml
+++ b/hyph/src/main/resources/com/itextpdf/hyph/hu.xml
@@ -1,9 +1,9 @@
-
+
-
+
aA
@@ -11,30 +11,30 @@ bB
cC
dD
eE
-éÉ
+éÉ
fF
gG
hH
iI
-íÍ
+ÃÃ
jJ
kK
lL
mM
nN
oO
-óÓ
-öÖ
-õÕ
+óÓ
+öÖ
+Å‘Å
pP
qQ
rR
sS
tT
uU
-úÚ
-üÜ
-üÛ
+úÚ
+üÜ
+üŰ
vV
wW
xX
@@ -71,8 +71,8 @@ zZ
% dctexfo < dchuhyph.cwi > dchuhyph.t1
% to create DCHUHYPH.T1).
%
-% MHSz10 = A Magyar Helyesírás Szab 10. kiad.
-% MHSz10 p.8-9. földolgozatlan
+% MHSz10 = A Magyar HelyesÃrás Szab 10. kiad.
+% MHSz10 p.8-9. földolgozatlan
-->
1ba
-1bá
+1bá
1be
-1bé
+1bé
1bi
-1bí
+1bÃ
1bo
-1bó
-1bö
-1bõ
+1bó
+1bö
+1bő
1bu
-1bú
-1bü
-1bû
+1bú
+1bü
+1bű
1ca
-1cá
+1cá
1ce
-1cé
+1cé
1ci
-1cí
+1cÃ
1co
-1có
-1cö
-1cõ
+1có
+1cö
+1cő
1cu
-1cú
-1cü
-1cû
+1cú
+1cü
+1cű
1csa
-1csá
+1csá
1cse
-1csé
+1csé
1csi
-1csí
+1csÃ
1cso
-1csó
-1csö
-1csõ
+1csó
+1csö
+1cső
1csu
-1csú
-1csü
-1csû
+1csú
+1csü
+1csű
1csy
1cha
-1chá
+1chá
1che
-1ché
+1ché
1chi
-1chí
+1chÃ
1cho
-1chó
-1chö
-1chõ
+1chó
+1chö
+1chő
1chu
-1chú
-1chü
-1chû
+1chú
+1chü
+1chű
1da
-1dá
+1dá
1de
-1dé
+1dé
1di
-1dí
+1dÃ
1do
-1dó
-1dö
-1dõ
+1dó
+1dö
+1dő
1du
-1dú
-1dü
-1dû
+1dú
+1dü
+1dű
1dza
-1dzá
+1dzá
1dze
-1dzé
+1dzé
1dzi
-1dzí
+1dzÃ
1dzo
-1dzó
-1dzö
-1dzõ
+1dzó
+1dzö
+1dző
1dzu
-1dzú
-1dzü
-1dzû
+1dzú
+1dzü
+1dzű
1dzsa
-1dzsá
+1dzsá
1dzse
-1dzsé
+1dzsé
1dzsi
-1dzsí
+1dzsÃ
1dzso
-1dzsó
-1dzsö
-1dzsõ
+1dzsó
+1dzsö
+1dzső
1dzsu
-1dzsú
-1dzsü
-1dzsû
+1dzsú
+1dzsü
+1dzsű
1fa
-1fá
+1fá
1fe
-1fé
+1fé
1fi
-1fí
+1fÃ
1fo
-1fó
-1fö
-1fõ
+1fó
+1fö
+1fő
1fu
-1fú
-1fü
-1fû
+1fú
+1fü
+1fű
1ga
-1gá
+1gá
1ge
-1gé
+1gé
1gi
-1gí
+1gÃ
1go
-1gó
-1gö
-1gõ
+1gó
+1gö
+1gő
1gu
-1gú
-1gü
-1gû
+1gú
+1gü
+1gű
1gya
-1gyá
+1gyá
1gye
-1gyé
+1gyé
1gyi
-1gyí
+1gyÃ
1gyo
-1gyó
-1gyö
-1gyõ
+1gyó
+1gyö
+1győ
1gyu
-1gyú
-1gyü
-1gyû
+1gyú
+1gyü
+1gyű
1ha
-1há
+1há
1he
-1hé
+1hé
1hi
-1hí
+1hÃ
1ho
-1hó
-1hö
-1hõ
+1hó
+1hö
+1hő
1hu
-1hú
-1hü
-1hû
+1hú
+1hü
+1hű
1ja
-1já
+1já
1je
-1jé
+1jé
1ji
-1jí
+1jÃ
1jo
-1jó
-1jö
-1jõ
+1jó
+1jö
+1jő
1ju
-1jú
-1jü
-1jû
+1jú
+1jü
+1jű
1ka
-1ká
+1ká
1ke
-1ké
+1ké
1ki
-1kí
+1kÃ
1ko
-1kó
-1kö
-1kõ
+1kó
+1kö
+1kő
1ku
-1kú
-1kü
-1kû
+1kú
+1kü
+1kű
1la
-1lá
+1lá
1le
-1lé
+1lé
1li
-1lí
+1lÃ
1lo
-1ló
-1lö
-1lõ
+1ló
+1lö
+1lő
1lu
-1lú
-1lü
-1lû
+1lú
+1lü
+1lű
1lya
-1lyá
+1lyá
1lye
-1lyé
+1lyé
1lyi
-1lyí
+1lyÃ
1lyo
-1lyó
-1lyö
-1lyõ
+1lyó
+1lyö
+1lyő
1lyu
-1lyú
-1lyü
-1lyû
+1lyú
+1lyü
+1lyű
1ma
-1má
+1má
1me
-1mé
+1mé
1mi
-1mí
+1mÃ
1mo
-1mó
-1mö
-1mõ
+1mó
+1mö
+1mő
1mu
-1mú
-1mü
-1mû
+1mú
+1mü
+1mű
1na
-1ná
+1ná
1ne
-1né
+1né
1ni
-1ní
+1nÃ
1no
-1nó
-1nö
-1nõ
+1nó
+1nö
+1nő
1nu
-1nú
-1nü
-1nû
+1nú
+1nü
+1nű
1nya
-1nyá
+1nyá
1nye
-1nyé
+1nyé
1nyi
-1nyí
+1nyÃ
1nyo
-1nyó
-1nyö
-1nyõ
+1nyó
+1nyö
+1nyő
1nyu
-1nyú
-1nyü
-1nyû
+1nyú
+1nyü
+1nyű
1pa
-1pá
+1pá
1pe
-1pé
+1pé
1pi
-1pí
+1pÃ
1po
-1pó
-1pö
-1põ
+1pó
+1pö
+1pő
1pu
-1pú
-1pü
-1pû
+1pú
+1pü
+1pű
1qa
-1qá
+1qá
1qe
-1qé
+1qé
1qi
-1qí
+1qÃ
1qo
-1qó
-1qö
-1qõ
+1qó
+1qö
+1qő
1qu2
-1qú
-1qü
-1qû
+1qú
+1qü
+1qű
1ra
-1rá
+1rá
1re
-1ré
+1ré
1ri
-1rí
+1rÃ
1ro
-1ró
-1rö
-1rõ
+1ró
+1rö
+1rő
1ru
-1rú
-1rü
-1rû
+1rú
+1rü
+1rű
1ry
1sa
-1sá
+1sá
1se
-1sé
+1sé
1si
-1sí
+1sÃ
1so
-1só
-1sö
-1sõ
+1só
+1sö
+1ső
1su
-1sú
-1sü
-1sû
+1sú
+1sü
+1sű
1sza
-1szá
+1szá
1sze
-1szé
+1szé
1szi
-1szí
+1szÃ
1szo
-1szó
-1szö
-1szõ
+1szó
+1szö
+1sző
1szu
-1szú
-1szü
-1szû
+1szú
+1szü
+1szű
1ta
-1tá
+1tá
1te
-1té
+1té
1ti
-1tí
+1tÃ
1to
-1tó
-1tö
-1tõ
+1tó
+1tö
+1tő
1tu
-1tú
-1tü
-1tû
+1tú
+1tü
+1tű
1tya
-1tyá
+1tyá
1tye
-1tyé
+1tyé
1tyi
-1tyí
+1tyÃ
1tyo
-1tyó
-1työ
-1tyõ
+1tyó
+1työ
+1tyő
1tyu
-1tyú
-1tyü
-1tyû
+1tyú
+1tyü
+1tyű
1va
-1vá
+1vá
1ve
-1vé
+1vé
1vi
-1ví
+1vÃ
1vo
-1vó
-1vö
-1võ
+1vó
+1vö
+1vő
1vu
-1vú
-1vü
-1vû
+1vú
+1vü
+1vű
1wa
-1wá
+1wá
1we
-1wé
+1wé
1wi
-1wí
+1wÃ
1wo
-1wó
-1wö
-1wõ
+1wó
+1wö
+1wő
1wu
-1wú
-1wü
-1wû
+1wú
+1wü
+1wű
1xa
-1xá
+1xá
1xe
-1xé
+1xé
1xi
-1xí
+1xÃ
1xo
-1xó
-1xö
-1xõ
+1xó
+1xö
+1xő
1xu
-1xú
-1xü
-1xû
+1xú
+1xü
+1xű
1za
-1zá
+1zá
1ze
-1zé
+1zé
1zi
-1zí
+1zÃ
1zo
-1zó
-1zö
-1zõ
+1zó
+1zö
+1ző
1zu
-1zú
-1zü
-1zû
+1zú
+1zü
+1zű
1zsa
-1zsá
+1zsá
1zse
-1zsé
+1zsé
1zsi
-1zsí
+1zsÃ
1zso
-1zsó
-1zsö
-1zsõ
+1zsó
+1zsö
+1zső
1zsu
-1zsú
-1zsü
-1zsû
+1zsú
+1zsü
+1zsű
a1a
-a1á
+a1á
a1e
-a1é
+a1é
a1i
-a1í
+a1Ã
a1o
-a1ó
-a1ö
-a1õ
+a1ó
+a1ö
+a1Å‘
a1u
-a1ú
-a1ü
-a1û
-á1a
-á1á
-á1e
-á1é
-á1i
-á1í
-á1o
-á1ó
-á1ö
-á1õ
-á1u
-á1ú
-á1ü
-á1û
+a1ú
+a1ü
+a1ű
+á1a
+á1á
+á1e
+á1é
+á1i
+á1Ã
+á1o
+á1ó
+á1ö
+á1ő
+á1u
+á1ú
+á1ü
+á1ű
e1a
-e1á
+e1á
e1e
-e1é
+e1é
e1i
-e1í
+e1Ã
e1o
-e1ó
-e1ö
-e1õ
+e1ó
+e1ö
+e1Å‘
e1u
-e1ú
-e1ü
-e1û
-é1a
-é1á
-é1e
-é1é
-é1i
-é1í
-é1o
-é1ó
-é1ö
-é1õ
-é1u
-é1ú
-é1ü
-é1û
+e1ú
+e1ü
+e1ű
+é1a
+é1á
+é1e
+é1é
+é1i
+é1Ã
+é1o
+é1ó
+é1ö
+é1ő
+é1u
+é1ú
+é1ü
+é1ű
i1a
-i1á
+i1á
i1e
-i1é
+i1é
i1i
-i1í
+i1Ã
i1o
-i1ó
-i1ö
-i1õ
+i1ó
+i1ö
+i1Å‘
i1u
-i1ú
-i1ü
-i1û
-í1a
-í1á
-í1e
-í1é
-í1i
-í1í
-í1o
-í1ó
-í1ö
-í1õ
-í1u
-í1ú
-í1ü
-í1û
+i1ú
+i1ü
+i1ű
+Ã1a
+Ã1á
+Ã1e
+Ã1é
+Ã1i
+Ã1Ã
+Ã1o
+Ã1ó
+Ã1ö
+Ã1Å‘
+Ã1u
+Ã1ú
+Ã1ü
+Ã1ű
o1a
-o1á
+o1á
o1e
-o1é
+o1é
o1i
-o1í
+o1Ã
o1o
-o1ó
-o1ö
-o1õ
+o1ó
+o1ö
+o1Å‘
o1u
-o1ú
-o1ü
-o1û
-ó1a
-ó1á
-ó1e
-ó1é
-ó1i
-ó1í
-ó1o
-ó1ó
-ó1ö
-ó1õ
-ó1u
-ó1ú
-ó1ü
-ó1û
-ö1a
-ö1á
-ö1e
-ö1é
-ö1i
-ö1í
-ö1o
-ö1ó
-ö1ö
-ö1õ
-ö1u
-ö1ú
-ö1ü
-ö1û
-õ1a
-õ1á
-õ1e
-õ1é
-õ1i
-õ1í
-õ1o
-õ1ó
-õ1ö
-õ1õ
-õ1u
-õ1ú
-õ1ü
-õ1û
+o1ú
+o1ü
+o1ű
+ó1a
+ó1á
+ó1e
+ó1é
+ó1i
+ó1Ã
+ó1o
+ó1ó
+ó1ö
+ó1ő
+ó1u
+ó1ú
+ó1ü
+ó1ű
+ö1a
+ö1á
+ö1e
+ö1é
+ö1i
+ö1Ã
+ö1o
+ö1ó
+ö1ö
+ö1ő
+ö1u
+ö1ú
+ö1ü
+ö1ű
+Å‘1a
+ő1á
+Å‘1e
+ő1é
+Å‘1i
+Å‘1Ã
+Å‘1o
+ő1ó
+ő1ö
+Å‘1Å‘
+Å‘1u
+ő1ú
+ő1ü
+ő1ű
u1a
-u1á
+u1á
u1e
-u1é
+u1é
u1i
-u1í
+u1Ã
u1o
-u1ó
-u1ö
-u1õ
+u1ó
+u1ö
+u1Å‘
u1u
-u1ú
-u1ü
-u1û
-ú1a
-ú1á
-ú1e
-ú1é
-ú1i
-ú1í
-ú1o
-ú1ó
-ú1ö
-ú1õ
-ú1u
-ú1ú
-ú1ü
-ú1û
-ü1a
-ü1á
-ü1e
-ü1é
-ü1i
-ü1í
-ü1o
-ü1ó
-ü1ö
-ü1õ
-ü1u
-ü1ú
-ü1ü
-ü1û
-û1a
-û1á
-û1e
-û1é
-û1i
-û1í
-û1o
-û1ó
-û1ö
-û1õ
-û1u
-û1ú
-û1ü
-û1û
-
+u1ú
+u1ü
+u1ű
+ú1a
+ú1á
+ú1e
+ú1é
+ú1i
+ú1Ã
+ú1o
+ú1ó
+ú1ö
+ú1ő
+ú1u
+ú1ú
+ú1ü
+ú1ű
+ü1a
+ü1á
+ü1e
+ü1é
+ü1i
+ü1Ã
+ü1o
+ü1ó
+ü1ö
+ü1ő
+ü1u
+ü1ú
+ü1ü
+ü1ű
+ű1a
+ű1á
+ű1e
+ű1é
+ű1i
+ű1Ã
+ű1o
+ű1ó
+ű1ö
+ű1ő
+ű1u
+ű1ú
+ű1ü
+ű1ű
+
c2s
s2z
z2s
@@ -715,130 +715,130 @@ l2ly
n2ny
t2ty
-abla2k1üveg
-ádá2z3ság
-agy1é2r1elmesz
-agyo2n1üt
-akara2t1erõ
+abla2k1üveg
+ádá2z3ság
+agy1é2r1elmesz
+agyo2n1üt
+akara2t1erő
.ala2p1a
-.ala2p1ár
-.ala2p1ér
+.ala2p1ár
+.ala2p1ér
.ala2p1i
.ala2p1okm
-.ala2p1ötl
-á2l1alrc
-a2l1elnök
+.ala2p1ötl
+á2l1alrc
+a2l1elnök
a2l1ezredes
-a2l1ispán
-.álla2m1a
-.álla2m1e
-.álla2m1érd
-.álla2m1ig
-.álla2t1áll
-.álla2t1egész
-.álla2t1id
-.álla2t1orv
-.álla2t1öv
-.álla2t1ért
-anna2k1idején
+a2l1ispán
+.álla2m1a
+.álla2m1e
+.álla2m1érd
+.álla2m1ig
+.álla2t1áll
+.álla2t1egész
+.álla2t1id
+.álla2t1orv
+.álla2t1öv
+.álla2t1ért
+anna2k1idején
anti1k2lerik
-.á2r1aján
-.á2r1alak
+.á2r1aján
+.á2r1alak
.ara2ny1al
-.ara2ny1ás
-.ara2ny1ér.
-.ara2ny1érc
-.ara2ny1ére
-.ara2ny1érték
+.ara2ny1ás
+.ara2ny1ér.
+.ara2ny1érc
+.ara2ny1ére
+.ara2ny1érték
.ara2ny1e
-.ara2ny1ó
-ár1apály
-ár1d2rág
-.á2r1e
-.á3r2end
-.á2r1in
-ásvá2ny1olaj
-.át1
-.át2alá
-.át2all
-.át2ok
+.ara2ny1ó
+ár1apály
+ár1d2rág
+.á2r1e
+.á3r2end
+.á2r1in
+ásvá2ny1olaj
+.át1
+.át2alá
+.át2all
+.át2ok
.ato2m1e
.a2z1
.a3z2ok
.a3z2on
-.az2ért
-.a3z2úr
-bá2j1ital
+.az2ért
+.a3z2úr
+bá2j1ital
ba2l1eset
ba2l1egyenes
ba2l1oldal
-ban2k1ügy
-be2l1ügy
-bélye2g1album
-.bé2r1elsz
-.bé2r1em
-.bete2g1á
+ban2k1ügy
+be2l1ügy
+bélye2g1album
+.bé2r1elsz
+.bé2r1em
+.bete2g1á
b4lokkol
.bor2s3sz
-.bõ2r1a
-.bõ2r1á
-.bõ2r1e
-.bõ2r1i
+.bő2r1a
+.bő2r1á
+.bő2r1e
+.bő2r1i
b4rekeg
-börtö2n1õr
-b2rigád
-bû2n1eset
-bû2n1ügy
-cé2l1állomás
+börtö2n1őr
+b2rigád
+bű2n1eset
+bű2n1ügy
+cé2l1állomás
com2b1izom
.csa2k1
-.csalá2d1a
-csa2l1étek
-cse2h1ország
-cseh1sz2lovák
-csen2d1élet
-csen2d1õr
-csú2cs1erõ
-csú2cs1érték
-csú2cs1idõ
-dé2l1elõtt
-dé2l1idõ
-dé2l1után
-.dí2sz1eb
-.dí2sz1egy
-.dí2sz1eln
-.dí2sz1öl
-.dí2sz1õr
-.dí2sz1elõ
-.dí2sz1emel
-.dís2z3s
-diva2t1ár
-diva2t1éksz
-diva2t1újdon
-d2rótoz
-d2rágul
-d2rága
-d2rágít
+.csalá2d1a
+csa2l1étek
+cse2h1ország
+cseh1sz2lovák
+csen2d1élet
+csen2d1Å‘r
+csú2cs1erő
+csú2cs1érték
+csú2cs1idő
+dé2l1előtt
+dé2l1idő
+dé2l1után
+.dÃ2sz1eb
+.dÃ2sz1egy
+.dÃ2sz1eln
+.dÃ2sz1öl
+.dÃ2sz1Å‘r
+.dÃ2sz1elÅ‘
+.dÃ2sz1emel
+.dÃs2z3s
+diva2t1ár
+diva2t1éksz
+diva2t1újdon
+d2rótoz
+d2rágul
+d2rága
+d2rágÃt
d4rukkol
-.éde2s1a
-.éde2s1ip
-egés2z3ség
-egészsé2g1ügy
+.éde2s1a
+.éde2s1ip
+egés2z3ség
+egészsé2g1ügy
.egy1
.egy2ek
.egy2etek
-.egy2ünk
-.egy2étek
+.egy2ünk
+.egy2étek
.egy2enek
-.egy2ért
-.egy2éb
+.egy2ért
+.egy2éb
.egy2eb
.egy2e2d1
.egye3d2i
-.egye3d2ü2l1
-.egyedü3l2i
+.egye3d2ü2l1
+.egyedü3l2i
.egy2el.
-.egy2én
+.egy2én
.egy2e2n1
.egye3n2es
.egye3n2etlen
@@ -846,163 +846,163 @@ eg
.egy2e3t2em
.egy2e2t1
.egy2ez
-.egyez3ség
-.egyhá2z1atya
-.egyhá2z1e
+.egyez3ség
+.egyhá2z1atya
+.egyhá2z1e
.egy2id
.egy2ik
.egy2iptom
-egymá2s1után
+egymá2s1után
egysze2r1egy
-.egy2üt2t1
-.együt3t2es
-éh1ínség
+.egy2üt2t1
+.együt3t2es
+éh1Ãnség
.el1
.elb2lic
.el2e
-.el2é
+.el2é
.el3egyenget
.el3ejt
-.el3él
-.el3ért
-élelmisze2r1ad
-élelmisze2r1ip
+.el3él
+.el3ért
+élelmisze2r1ad
+élelmisze2r1ip
.el3emel
-.el3emészt
+.el3emészt
.el3enged
-.el3enyész
+.el3enyész
.el3eped
-.el3ér
+.el3ér
.el3er
.el3es
-.el4eség
+.el4eség
.el3evez
-.el3évül
-.éle2t1a
-.éle2t1elv
-.éle2t1er
-.éle2t1érz
-.éle2t1év
-.éle2t1i
-.éle2t1í
-.éle2t1ö
-.éle2t1u
-.éle2t1út
+.el3évül
+.éle2t1a
+.éle2t1elv
+.éle2t1er
+.éle2t1érz
+.éle2t1év
+.éle2t1i
+.éle2t1Ã
+.éle2t1ö
+.éle2t1u
+.éle2t1út
el2it
.el3itt
-.el4ittõl
+.el4ittől
.el2iz
.elle2n1
.elle3n2e
.elle4n3eset
-.elle3n2ére
-.el2õ
-.el2ö
-.el3önt
-.el3öreg
+.elle3n2ére
+.el2Å‘
+.el2ö
+.el3önt
+.el3öreg
.el3p4r
-.elsz2láv
+.elsz2láv
.el3t4r
-.el2üls
+.el2üls
.el2vh
.embe2r1a
-.embe2r1á
-.embe2r1él
+.embe2r1á
+.embe2r1él
.embe2r1eml
.embe2r1ev
.embe2r1ism
-.embe2r1öl
-.emlé2k1érem
-.emlé2k1ir
-.emlé2k1ünn
-.ép2p1
-.ép3p2en
-.ér2c1önt
-.érde2k1ellen
-erõ2s1áram
-.érté2k1áll
-.érté2k1elmé
-.érté2k1ítél
-es2t1ebéd
-ész1ellenes
+.embe2r1öl
+.emlé2k1érem
+.emlé2k1ir
+.emlé2k1ünn
+.ép2p1
+.ép3p2en
+.ér2c1önt
+.érde2k1ellen
+erő2s1áram
+.érté2k1áll
+.érté2k1elmé
+.érté2k1Ãtél
+es2t1ebéd
+ész1ellenes
.ez1
.ez2ek
.ez2en
ez2e2r1
-eze3r2ért
-.ez2ért
-.ezre2d1év
+eze3r2ért
+.ez2ért
+.ezre2d1év
.ezre2d1orvos
-.ez2üst
-.ezüs2t1ár
-.ezüs2t1érc
-fa2gy1álló
-fa2gy1érzék
-fagylal2t1ár
-fa2j1elmélet
-.fa2j1üld
-farka2s1éh
+.ez2üst
+.ezüs2t1ár
+.ezüs2t1érc
+fa2gy1álló
+fa2gy1érzék
+fagylal2t1ár
+fa2j1elmélet
+.fa2j1üld
+farka2s1éh
farka2s1ord
-fe2gy1õr
+fe2gy1Å‘r
fe2j1adag
-feje2n1áll
+feje2n1áll
feje2s1ugr
.fe2l1
-.fé2l1
-.fe3l2é
-fe3l2ebarát
-.fe4l3ébr
-.fé3l2e
+.fé2l1
+.fe3l2é
+fe3l2ebarát
+.fe4l3ébr
+.fé3l2e
fe3l2ed
fe3l2ejt
fe3l2ekezet
fe3l2el
-fé3l2ele2m1
-.fe4l3él
+fé3l2ele2m1
+.fe4l3él
.fe4l3elev
-felelõssé2g1érz
-fe3l2emás
-.fé4l3emelet
-fé3l2énk
+felelőssé2g1érz
+fe3l2emás
+.fé4l3emelet
+fé3l2énk
.fe3l2es
.fe4l3esk
.fe4l3esz
-.fé4l3eszü
+.fé4l3eszü
fe3l2ett
-.fé4l3év
+.fé4l3év
fe3l2ez
.fe3l2ibe
-.fé3l2ig
-.fé4l3igaz3ság
-fé3l2ix
-felnõt2t1okt
-.fé3l2õ
+.fé3l2ig
+.fé4l3igaz3ság
+fé3l2ix
+felnőt2t1okt
+.fé3l2ő
.fel3p4r
-fe3l2õl
-.fe4l4ül.
-.fe3l2ülb
-.fe3l2ü2l1em
-.fe3l2ület
-.fe3l2üli
-felü2l1igér
-fe3l2üljár
-.fe3l2ülker
-.fe3l2ülm
-.fe3l2üln
-fe3l2ülrõl
-.fe3l2ülvizs
-fé2m1áru
-fé2m1öntvény
+fe3l2Å‘l
+.fe4l4ül.
+.fe3l2ülb
+.fe3l2ü2l1em
+.fe3l2ület
+.fe3l2üli
+felü2l1igér
+fe3l2üljár
+.fe3l2ülker
+.fe3l2ülm
+.fe3l2üln
+fe3l2ülről
+.fe3l2ülvizs
+fé2m1áru
+fé2m1öntvény
.fen2n1
-.fé2ny1á
-.fé2ny1erõ
-.fé2ny1érzé
-.fé2ny1év
-.fé2ny1ív
-fényké2p1alb
-fére2g1irt
-festé2k1ipar
-fésze2k1alj
+.fé2ny1á
+.fé2ny1erő
+.fé2ny1érzé
+.fé2ny1év
+.fé2ny1Ãv
+fényké2p1alb
+fére2g1irt
+festé2k1ipar
+fésze2k1alj
fiata2l1emb
fiata2l1assz
.fil2m1ip
@@ -1011,266 +1011,266 @@ fil2m1oper
.fin2n1ug
f4lancol
.fo2g1orv
-folya2m1õr
-.fö2l1
-.föl2d
-.föl2d1a
-.föl2d1éhe
-.föl2d1ig
-.föl2d1ín
-.föl2d1o
-.földe2s1úr
-.fö3l2é
-.fö4l3ébr
-.fö4l3él
-.fö3l2es
-.fö4l3esk
-.fö4l3esz
-.föl3p4r
-fö3lös
-fö3l2ött
-fö3l2öz
-.fö3l2ibe
-.fö4l4ül.
-.fö3l2ülb
-.fö3l2ü2l1em
-.fö3l2ület
-.fö3l2üli
-fölü2l1igér
-fö3l2üljár
-.fö3l2ülker
-.fö3l2ülm
-.fö3l2üln
-fö3l2ülrõl
-.fö3l2ülvizs
-.fön2n1
-f4ricskáz
-f4röcsköl
-fûré2sz1árú
-fûsze2r1árú
-fûsze2r1üzlet
-galam2b1õsz
-.galvá2n1á
-.galvá2n1e
-.gá2z1ál
-.gá2z1égõ
-.gá2z1el
-.gá2z1olaj
-.gá2z1óra
-.gá2z1öml
+folya2m1Å‘r
+.fö2l1
+.föl2d
+.föl2d1a
+.föl2d1éhe
+.föl2d1ig
+.föl2d1Ãn
+.föl2d1o
+.földe2s1úr
+.fö3l2é
+.fö4l3ébr
+.fö4l3él
+.fö3l2es
+.fö4l3esk
+.fö4l3esz
+.föl3p4r
+fö3lös
+fö3l2ött
+fö3l2öz
+.fö3l2ibe
+.fö4l4ül.
+.fö3l2ülb
+.fö3l2ü2l1em
+.fö3l2ület
+.fö3l2üli
+fölü2l1igér
+fö3l2üljár
+.fö3l2ülker
+.fö3l2ülm
+.fö3l2üln
+fö3l2ülről
+.fö3l2ülvizs
+.fön2n1
+f4ricskáz
+f4röcsköl
+fűré2sz1árú
+fűsze2r1árú
+fűsze2r1üzlet
+galam2b1Å‘sz
+.galvá2n1á
+.galvá2n1e
+.gá2z1ál
+.gá2z1égő
+.gá2z1el
+.gá2z1olaj
+.gá2z1óra
+.gá2z1öml
gaz2d1assz
.ga2z1em
-.gá2z1öngy
-ga2z3ság
-gá2z3számla
-.gáz3sz
-.gé2p1a
-.gé2p1á
-gé4p4elem
-.gé2p1emb
-.gé2p1er
-.gé2p1ip
-.gé2p1ír
-.gé2p1olaj
-gondola2t1átv
+.gá2z1öngy
+ga2z3ság
+gá2z3számla
+.gáz3sz
+.gé2p1a
+.gé2p1á
+gé4p4elem
+.gé2p1emb
+.gé2p1er
+.gé2p1ip
+.gé2p1Ãr
+.gé2p1olaj
+gondola2t1átv
gondola2t1olv
-göm2b1alak
-göm2b1öv
-görö2g1or
-.gõ2z1erõ
+göm2b1alak
+göm2b1öv
+görö2g1or
+.gő2z1erő
1g2rafi
1g2ramm
-1g2ránát
-1g2ríz
-gú2ny1irat
-gyalo2g1áld
-gyalo2g1átkelõ
+1g2ránát
+1g2rÃz
+gú2ny1irat
+gyalo2g1áld
+gyalo2g1átkelő
gyalo2g1ezr
-gyalo2g1ösv
-gyalo2g1út
-.gyá2r1ép
-.gyá2r1ig
-.gyá2r1ip
-gyarma2t1áru
-.gyá2sz1es
-.gyá2sz1év
-.gyá2sz1ünn
-.gyerme2k1á
+gyalo2g1ösv
+gyalo2g1út
+.gyá2r1ép
+.gyá2r1ig
+.gyá2r1ip
+gyarma2t1áru
+.gyá2sz1es
+.gyá2sz1év
+.gyá2sz1ünn
+.gyerme2k1á
.gyerme2k1or
-gyó2gy1erõ
-gyomo2r1ég
-gyomo2r1erõ
+gyó2gy1erő
+gyomo2r1ég
+gyomo2r1erő
gyomo2r1ideg
-gyor2s1ír
+gyor2s1Ãr
gyor2s1olv
-gyön2gy1él
-gyümöl2cs1ár
-gyümöl2cs1íz
-ha2b1üst
+gyön2gy1él
+gyümöl2cs1ár
+gyümöl2cs1Ãz
+ha2b1üst
.ha2d1ap
-.ha2d1áll
+.ha2d1áll
.ha2d1er
.ha2d1ist
.ha2d1osz
-.ha2d1ü
-.ha2j1áp
-.halá2l1es
+.ha2d1ü
+.ha2j1áp
+.halá2l1es
.ha2l1ikr
-.ha2l1ív
+.ha2l1Ãv
.han2g1a
-han2g1árny
-.han2g1erõ
-.han2g1érté
+han2g1árny
+.han2g1erő
+.han2g1érté
.hangula2t1emb
-.há2ny1ing
-.haran2g1ön
+.há2ny1ing
+.haran2g1ön
.har2c1edz
-.harma2d1év
+.harma2d1év
.harma2d1osz
-.hárma2s1ugr
+.hárma2s1ugr
harmin2c1
harmin3c2ad
harmin3c2at
harmin3c2as
harmin3c2an
-harmin3c2ért
-háro2m1
+harmin3c2ért
+háro2m1
.ha2s1izom
-.ha2s1ür
-.haszo2n1élv
-hatá2r1á
-hatá2r1ér
-hatá2r1es
-hatá2r1id
-hatá2r1inc
-hatá2r1õr
-ha2t1éves
+.ha2s1ür
+.haszo2n1élv
+hatá2r1á
+hatá2r1ér
+hatá2r1es
+hatá2r1id
+hatá2r1inc
+hatá2r1őr
+ha2t1éves
ha2t1ezer
hatva2n1
hatva3n2ad
hatva3n2at
hatva3n2as
hatva3n2an
-hatva3n2ért
-.háza2s1él
-.há2z1épí
-há2z3sor
-.he2ly1õr
-.hely2t1áll
-.hente2s1ár
-.hente2s1üz
-.hé2t1
+hatva3n2ért
+.háza2s1él
+.há2z1épÃ
+há2z3sor
+.he2ly1Å‘r
+.hely2t1áll
+.hente2s1ár
+.hente2s1üz
+.hé2t1
hetve2n1
hetve3n2es
hetve3n2ed
hetve3n2et
hetve3n2en
-hetve3n2ért
-.hí2d1ép
-.hí2r1a
-.hírla2p1ír
-.hí2r1ügy
+hetve3n2ért
+.hÃ2d1ép
+.hÃ2r1a
+.hÃrla2p1Ãr
+.hÃ2r1ügy
hite2l1int
-hite2l1ügy
+hite2l1ügy
hi2t1ok
ho2gy1isne
.hol2d1uta
-holna2p1után
+holna2p1után
ho2l1ott
-homo2k1óra
-hón1alj
-horgász3zsin
-horo2g1üt
-humo2r1érz
-.hú2s1ad
-.hú2s1ét
-.hú2s1ip
-hú2sz1év
+homo2k1óra
+hón1alj
+horgász3zsin
+horo2g1üt
+humo2r1érz
+.hú2s1ad
+.hú2s1ét
+.hú2s1ip
+hú2sz1év
huszo2n1
-hüvely2k1ujj
+hüvely2k1ujj
.ideg3gy
-.ide2g1õr
-.ide2g1össze
+.ide2g1Å‘r
+.ide2g1össze
.ide2g1orv
-igazsá2g1ér
-igazsá3g2ért
-igazsá2g1ügy
+igazsá2g1ér
+igazsá3g2ért
+igazsá2g1ügy
i2i2i
in2g1ujj
.ipa2r1eng
.ipa2r1ig
.ipa2r1is
-.ipa2r1ügy
-.ipa2r1ûz
-.irá2ny1ad
-.irá2ny1ár
-.irá2ny1elv
+.ipa2r1ügy
+.ipa2r1űz
+.irá2ny1ad
+.irá2ny1ár
+.irá2ny1elv
.iste2n1ad
-.iste2n1áld
+.iste2n1áld
.iste2n1igaz
-ítéle2t1idõ
+Ãtéle2t1idÅ‘
.izo2m1e
-já2r1õr
-játé2k1áru
-játé2k1asz
-játé2k1eng
-.jé2g1ár
-.jé2g1es
-.je2gy1ár
+já2r1őr
+játé2k1áru
+játé2k1asz
+játé2k1eng
+.jé2g1ár
+.jé2g1es
+.je2gy1ár
.je2gy1el
.je2l1ig
-jelle2m1ábr
+jelle2m1ábr
job2b1old
.jo2g1ak
.jo2g1al
-.jo2g1ál
+.jo2g1ál
.jo2g1e
-.jo2g1érv
-.jo2g1igé
+.jo2g1érv
+.jo2g1igé
.jo2g1orv
.jo2g1ut
-.jo2g1ügy
-.jó2t1áll
-káde2r1osz
-kar2d1él
-ka2r1ének
-ká2r1eset
+.jo2g1ügy
+.jó2t1áll
+káde2r1osz
+kar2d1él
+ka2r1ének
+ká2r1eset
ka2r1igaz
-ká2r1igé
+ká2r1igé
ka2r1izom
-ka2r1óra
-ka2r1öltve
-.ká2r1ör
-.ké2j1érz
-kenyé2r1ad
-kenyé2r1ellát
-kénysze2r1elad
-kénysze2r1egyez
-.ké2p1írás
-.keré2k1a
-keré2k1pár
-kerékpá2r1abr
-kereskedele2m1ügy
+ka2r1óra
+ka2r1öltve
+.ká2r1ör
+.ké2j1érz
+kenyé2r1ad
+kenyé2r1ellát
+kénysze2r1elad
+kénysze2r1egyez
+.ké2p1Ãrás
+.keré2k1a
+keré2k1pár
+kerékpá2r1abr
+kereskedele2m1ügy
keresz2t1a
-kereszté2ny1üld
-keresz2t1ölt
+kereszté2ny1üld
+keresz2t1ölt
keresz2t1utca
-.keresztü2l1e
+.keresztü2l1e
kere2t1ante
-ké2sz1áru
-.ké2t1
-.ké3t2el
-.ké2t1es
-.ké2z1ad
-.ké2z1á
-.kéze2n1áll
-.kézi1gr
-.ké2z1ir
+ké2sz1áru
+.ké2t1
+.ké3t2el
+.ké2t1es
+.ké2z1ad
+.ké2z1á
+.kéze2n1áll
+.kézi1gr
+.ké2z1ir
kilen2c1
kilen3c2ed
kilen3c2ek
kilen3c2et
-kilen3c2ért
+kilen3c2ért
kilen3c2en
kilen3c2es
kilencve2n1
@@ -1278,203 +1278,203 @@ kilencve3n2en
kilencve3n2es
kilencve3n2ed
kilencve3n2et
-kilencve3n2ért
-kilométe2r1óra
+kilencve3n2ért
+kilométe2r1óra
.ki1p4r
-.ki1pré
+.ki1pré
.ki1prepa
-.ki1prób
+.ki1prób
.ki1prov
-kirá2ly1ellen
+kirá2ly1ellen
ki2s1antant
-ki2s1áruterm
+ki2s1áruterm
.ki2s1a
.ki2s1emb
.ki2s1inas
.ki2s1ipar
-.ki2s3szám
+.ki2s3szám
.ki2s3szer
.ki2s1ujj
.ki3t4r
-k2lerikál
+k2lerikál
k2lerikal
k2lien
k2likk
k2lima
-k2líma
+k2lÃma
k2linika
k2lub
-koldus3szegény
-.kó2r1isme
-.kormá2ny1e
-.kó2r1okoz
-.ko2r1osztály
-kovács3szén
-kölcsö2n1ad
-kölcsö2n1ügy
-.köny2v1á
-.köny2v1ism
-.köny2v1íz
-.köny2v1újdon
-kö2r1irat
-.kö2r1út
-.kö2r1uta
-.körü2l1
-.körü3l2i
-.körü3l2öt
-köté2l1ideg
-.kö2z1ad
-.kö2z1ak
-.kö2z1al
-.kö2z1áll
-.kö2z1élelm
-.kö2z1élet
-közé2p1érték
-közé2p1isk
-közé2p1idõ
-közé2p1ujj
-közé2p1út
-közé2p1ut
-.kö2z1épül
-.kö2z1érd
-.kö2z1erk
-.kö2z1érthet
-.kö2z1érz
-.kö2z1étk
-.kö2z1igaz
-.kö2z1int
-.kö2z1ism
-.kö2z1í
-.kö2z1óhaj
-.kö2z1o2k1irat
-.kö2z1okt
-köz3ség
-köz3száj
-.köz3sze
-.köz3szo
-.köz3szük
-.kö2z1út
-.kö2z1ügy
-k4rajcár
-k4rakéler
-k4rákog
-kristá2ly1üveg
-kró2m1acél
-kul2cs1állás
-kulcs3szám
+koldus3szegény
+.kó2r1isme
+.kormá2ny1e
+.kó2r1okoz
+.ko2r1osztály
+kovács3szén
+kölcsö2n1ad
+kölcsö2n1ügy
+.köny2v1á
+.köny2v1ism
+.köny2v1Ãz
+.köny2v1újdon
+kö2r1irat
+.kö2r1út
+.kö2r1uta
+.körü2l1
+.körü3l2i
+.körü3l2öt
+köté2l1ideg
+.kö2z1ad
+.kö2z1ak
+.kö2z1al
+.kö2z1áll
+.kö2z1élelm
+.kö2z1élet
+közé2p1érték
+közé2p1isk
+közé2p1idő
+közé2p1ujj
+közé2p1út
+közé2p1ut
+.kö2z1épül
+.kö2z1érd
+.kö2z1erk
+.kö2z1érthet
+.kö2z1érz
+.kö2z1étk
+.kö2z1igaz
+.kö2z1int
+.kö2z1ism
+.kö2z1Ã
+.kö2z1óhaj
+.kö2z1o2k1irat
+.kö2z1okt
+köz3ség
+köz3száj
+.köz3sze
+.köz3szo
+.köz3szük
+.kö2z1út
+.kö2z1ügy
+k4rajcár
+k4rakéler
+k4rákog
+kristá2ly1üveg
+kró2m1acél
+kul2cs1állás
+kulcs3szám
.kulcs3szav
-kulcs3szó
-kultú2r1áll
-kultú2r1e
-kultú2r1él
-kultú2r1érték
-kultú2r1i
-.kú2t1á
-.kú2t1os
-kü2l1alak
-külö2n1áll
-külö2n1élés
-külö2n1ír
-külö2n1ítm
-külö2n1óra
-kü2l1ügy
-k4valifikál
+kulcs3szó
+kultú2r1áll
+kultú2r1e
+kultú2r1él
+kultú2r1érték
+kultú2r1i
+.kú2t1á
+.kú2t1os
+kü2l1alak
+külö2n1áll
+külö2n1élés
+külö2n1Ãr
+külö2n1Ãtm
+külö2n1óra
+kü2l1ügy
+k4valifikál
k4varcol
k4vartyog
-k4vaterkázik
-.lá2b1ápol
-lá2b1ujj
-laká2s1adó
-laká2s1épít
-laká2s1inség
-laká2s1ügy
+k4vaterkázik
+.lá2b1ápol
+lá2b1ujj
+laká2s1adó
+laká2s1épÃt
+laká2s1inség
+laká2s1ügy
lakato2s1inas
-la2k1osztály
-lán2c1ölt
-lánc3szem
-lán2g1elm
-lán2g1ész
-lán2g1eszû
-látsze2r1üzlet
-leá2ny1ág
-leá2ny1ál
-leá2ny1anya
-leá2ny1i
+la2k1osztály
+lán2c1ölt
+lánc3szem
+lán2g1elm
+lán2g1ész
+lán2g1eszű
+látsze2r1üzlet
+leá2ny1ág
+leá2ny1ál
+leá2ny1anya
+leá2ny1i
.le1b4l
.le3f4r
.le2g1
.le3g2ek
le3g2el
le4g3elej
-le4g3elõl
-le4g3elõször
-le4g3elsõ
+le4g3elől
+le4g3először
+le4g3első
.le3g2end
-le3g2ény
-legé2ny1élet
-legé2ny1ember
-le3g2épel
+le3g2ény
+legé2ny1élet
+legé2ny1ember
+le3g2épel
.leg3gy
le3g2ombol
-le3g2ombolyít
-le3g2orombít
+le3g2ombolyÃt
+le3g2orombÃt
le3g2ott
-le3g2ömbölyít
-le3g2örbít
-le3g2örbül
-le3g2ördít
-le3g2ördül
+le3g2ömbölyÃt
+le3g2örbÃt
+le3g2örbül
+le3g2ördÃt
+le3g2ördül
le3g2uggol
-le3g2urít
+le3g2urÃt
le3g2urul
.le3g2y
-.lé2g1
-.lé3g2i
-.lé3g2yott
-léle2k1e
-léle2k1öl
-lengye2l1ország
+.lé2g1
+.lé3g2i
+.lé3g2yott
+léle2k1e
+léle2k1öl
+lengye2l1ország
.le1p2r
-.le2s1áll
+.le2s1áll
.le1sp2r
.le1s2r
.le1st2r
-lé2t1érdek
+lé2t1érdek
let2t1orsz
-levé2l1ír
-leve2s3zöld
+levé2l1Ãr
+leve2s3zöld
lif2t1akna
-lisz2t1ár
+lisz2t1ár
lom2b1erd
-ló1t2rágya
-lovas3század
-lõsze2r1után
-löve2g1áll
+ló1t2rágya
+lovas3század
+lősze2r1után
+löve2g1áll
luxu2s1ad
-madá2r1e
-madá2r1én
-madá2r1ét
-madá2r1i
-magá2n1óra
-magá2n1út
-magá2n1ügy
+madá2r1e
+madá2r1én
+madá2r1ét
+madá2r1i
+magá2n1óra
+magá2n1út
+magá2n1ügy
maga2s1ugr
magya2r1ellen
-magya2r1ország
+magya2r1ország
mak2k1eg
-mangá2n1érc
-márvá2ny1osz
-má2s1álla
-máso2d1év
-máso2d1íz
-matró2z3sapka
-máso2d1oszt
+mangá2n1érc
+márvá2ny1osz
+má2s1álla
+máso2d1év
+máso2d1Ãz
+matró2z3sapka
+máso2d1oszt
.me2g1a
me3g2afon
-.me2g1á
+.me2g1á
.me2g1d2r
.me2g1e
-.me2g1é
+.me2g1é
.meg3f4r
.me2g3gy
meg4gy.
@@ -1482,103 +1482,103 @@ meg4gy.
.meg4gyel
.meg4gye.
.meg4gyfa
-.meg4gylekvár
+.meg4gylekvár
.meg4gylik
.meg4gypir
.me2g3i
-.me2g1í
+.me2g1Ã
.meg3p4r
.me2g1o
-.me2g1ó
-.me2g1ö
-.me2g1õ
+.me2g1ó
+.me2g1ö
+.me2g1Å‘
.me2g1s2p
.me2g1s2t
.meg3t4r
.me2g1u
-.me2g1ú
-.me2g1ü
-.me2g1û
+.me2g1ú
+.me2g1ü
+.me2g1ű
.me4g4int
-mé2g1is
-mellé2k1a
-mellé2k1á
-mellé2k1ép
-mellé2k1ér
-mellé1p2r
+mé2g1is
+mellé2k1a
+mellé2k1á
+mellé2k1ép
+mellé2k1ér
+mellé1p2r
mel2l1usz
-mel2l1ür
-melo1d2rá
+mel2l1ür
+melo1d2rá
mene2t1i
mene2t1osz
me2ny1asszony
me2nny1orsz
-méreg1d2r
-meré2sz3ség
-mérté2k1ad
-mérté2k1egység
-mér2v1ad
-.mé2sz1ég
-.mé2sz1i
-.mé2sz1o
-méte2r1ár
-mé2z3sör
-.mé2z3sz
+méreg1d2r
+meré2sz3ség
+mérté2k1ad
+mérté2k1egység
+mér2v1ad
+.mé2sz1ég
+.mé2sz1i
+.mé2sz1o
+méte2r1ár
+mé2z3sör
+.mé2z3sz
mikro1k2lima
.min2d1a
.min2d1ed
.min2d1egy
-minde2n1ár
+minde2n1ár
mindene2k1el
minde2n1eset
-minde2n1ünnen
-minde2n1ütt
-minde2n1üvé
+minde2n1ünnen
+minde2n1ütt
+minde2n1üvé
.min2d1ez
.min2d1in
-.min2d1ö
+.min2d1ö
.min2d1u
mine2k1ut
-miniszte2r1elnök
+miniszte2r1elnök
min2t1egy
motoros3szem
munka1p2r
-munká2s1á
-munká2s1a
-munkás1b2r
-munká2s1e
-munká2s1i
-munká2s1oszt
-munká2s1ott
-munká2s1õ
-munká2s3sz
+munká2s1á
+munká2s1a
+munkás1b2r
+munká2s1e
+munká2s1i
+munká2s1oszt
+munká2s1ott
+munká2s1ő
+munká2s3sz
munka1s2t
-munká2s1ú
-munká2s1ü
-munká2s3zubb
-mû1s2topp
-mû1t2rá
-nádo2r1isp
+munká2s1ú
+munká2s1ü
+munká2s3zubb
+mű1s2topp
+mű1t2rá
+nádo2r1isp
.na2gy1a
-.na2gy1á
+.na2gy1á
.na2gy1e
.na2gy1ip
-.na2gy1ü
-na2p1áll
+.na2gy1ü
+na2p1áll
.na2p1e
-.na2p1év
-.na2p1ó
-naran2cs1íz
+.na2p1év
+.na2p1ó
+naran2cs1Ãz
naran2cs3s
-ná2sz1ágy
-ná2sz1aj
-ná2sz1assz
-ná2sz1éj
-ná2sz1ind
-ná2sz1út
-ná2sz1ut
-nége2r1üld
-.né2gy1
+ná2sz1ágy
+ná2sz1aj
+ná2sz1assz
+ná2sz1éj
+ná2sz1ind
+ná2sz1út
+ná2sz1ut
+nége2r1üld
+.né2gy1
negye2d1
negye3d2et
negye3d2ek
@@ -1587,784 +1587,784 @@ negye3d2en
negye3d2em
negye3d2ed
negye3d2e.
-né3gy2es
-né3gy2en
+né3gy2es
+né3gy2en
negyve2n3
negyve3n4et
negyve3n4em
negyve3n4ed
negyve3n4e.
-nehé2z1ip
-nehé2z3ség
-nehé2z3súly
+nehé2z1ip
+nehé2z3ség
+nehé2z3súly
.ne2m1igen
-néme2t1alfö
-néme2t1ország
-néme2t1ell
+néme2t1alfö
+néme2t1ország
+néme2t1ell
neo1k2lassz
-.né2p1a
-.né2p1á
-.né2p1el
-.né2p1eposz
-.né2p1ének
-.né2p1irt
-.né2p1isk
-.né2p1ítél
-.né2p1okt
-.né2p1osz
-.né2p1u
-.né2v1a
-né2v1elõ
-né2v1utó
-néze2t1elt
-növé2ny1irtó
-nya2k1örv
-nyá2r1elõ
-nyá2r1utó
-.nyel2v1á
+.né2p1a
+.né2p1á
+.né2p1el
+.né2p1eposz
+.né2p1ének
+.né2p1irt
+.né2p1isk
+.né2p1Ãtél
+.né2p1okt
+.né2p1osz
+.né2p1u
+.né2v1a
+né2v1elő
+né2v1utó
+néze2t1elt
+növé2ny1irtó
+nya2k1örv
+nyá2r1elő
+nyá2r1utó
+.nyel2v1á
.nyel2v1a
nyel2v1eml
-nyel2v1érz
+nyel2v1érz
.nyel2v1is
.nyel2v1o
-.nyel2v1ó
-.nyel2v1ú
-nyere2g3gyá
-nyer2s1acél
+.nyel2v1ó
+.nyel2v1ú
+nyere2g3gyá
+nyer2s1acél
nyer2s1any
nyer2s1olaj
n4ylon
nyol2c1
nyol3c2a
nyolc3szor
-nyolc3szög
+nyolc3szög
nyolcva2n1
nyolcva3n2a
-nyomá2s1áll
-nyomdász3ság
+nyomá2s1áll
+nyomdász3ság
nyomo2r1eny
-.nyu2g1á
-nyugdí2j1int
-nyu2g1ellát
-nyúl2t1agy
-odáb2b1áll
-odéb2b1áll
+.nyu2g1á
+nyugdÃ2j1int
+nyu2g1ellát
+nyúl2t1agy
+odáb2b1áll
+odéb2b1áll
o2k1irat
-oktatá2s1ügy
-ola2j1ág
-ola2j1ég
+oktatá2s1ügy
+ola2j1ág
+ola2j1ég
ola2j1ip
-ola2sz1ország
-olda2l1ág
+ola2sz1ország
+olda2l1ág
olda2l1aj
-olda2l1út
-ólo2m1önt
-ólo2m1üv
+olda2l1út
+ólo2m1önt
+ólo2m1üv
oro2sz1elle
-oro2sz1ország
-or2r1üreg
-orszá2g1al
-orszá2g1ár
-orszá2g1ép
-orszá2g1érd
-ország3gyûl
-orszá2g1út
+oro2sz1ország
+or2r1üreg
+orszá2g1al
+orszá2g1ár
+orszá2g1ép
+orszá2g1érd
+ország3gyűl
+orszá2g1út
orvos3sz
osto2r1ant
-ostro2m1állap
-osztá2ly1áll
-osztá2ly1ár
-osztá2ly1e
-osztá2ly1érd
-osztá2ly1értek
-osztá2ly1i
-osztá2ly1ö
-osztá2ly1u
-ökö2r1ist
-.ö2n1ál
-.ö2n1ám
-ön1elég
-ön1elem
-ön1élet
-önéle2t1ír
-.ön1el
-.ön1érd
-.ön1erõ
-.ö2n1érz
-.ön1imád
-.ön1ind
-.ön1ism
-.ön1ur
-.õr1áll
-.õr1angy
-öre2g1any
-öre2g1apa
-öre2g1assz
-öre2g1ember
-öre2g1úr
-örö2k1érv
-örö2k1ifj
-.örö2m1a
-örö2m1érz
-örö2m1est
-örö2m1itt
-örö2m1ujj
-.õs1áll
-.õs1a
-õs1egyh
-õs1emb
-õs1er
-õs1idõ
-õsz1elõ
-.össz1a
-.össz1á
-össze1p2r
-össze1s2p
-össz3súly
-õsz1utó
-.öt1
-öt2en
-öt2öd
-öt2ös
-öt2öt
-öt2ök
-öt2ön
-ötve2n1
-ötve3n2ed
-ötve3n2et
-ötve3n2ek
-ötve3n2en
-ötve3n2es
-ötve3n2e.
-ötve3n2em
-õz1agancs
-özve2gy1a
-özve2gy1emb
-padlá2s1abl
-padlá2s3szoba
+ostro2m1állap
+osztá2ly1áll
+osztá2ly1ár
+osztá2ly1e
+osztá2ly1érd
+osztá2ly1értek
+osztá2ly1i
+osztá2ly1ö
+osztá2ly1u
+ökö2r1ist
+.ö2n1ál
+.ö2n1ám
+ön1elég
+ön1elem
+ön1élet
+önéle2t1Ãr
+.ön1el
+.ön1érd
+.ön1erő
+.ö2n1érz
+.ön1imád
+.ön1ind
+.ön1ism
+.ön1ur
+.őr1áll
+.Å‘r1angy
+öre2g1any
+öre2g1apa
+öre2g1assz
+öre2g1ember
+öre2g1úr
+örö2k1érv
+örö2k1ifj
+.örö2m1a
+örö2m1érz
+örö2m1est
+örö2m1itt
+örö2m1ujj
+.ős1áll
+.Å‘s1a
+Å‘s1egyh
+Å‘s1emb
+Å‘s1er
+ős1idő
+ősz1elő
+.össz1a
+.össz1á
+össze1p2r
+össze1s2p
+össz3súly
+ősz1utó
+.öt1
+öt2en
+öt2öd
+öt2ös
+öt2öt
+öt2ök
+öt2ön
+ötve2n1
+ötve3n2ed
+ötve3n2et
+ötve3n2ek
+ötve3n2en
+ötve3n2es
+ötve3n2e.
+ötve3n2em
+Å‘z1agancs
+özve2gy1a
+özve2gy1emb
+padlá2s1abl
+padlá2s3szoba
pamu2t1ipar
-pá2n1amer
-páncé2l1aut
-páncé2l1ing
-páncé2l1ö
-papí2r1ár
-papí2r1ip
-papí2r1íz
+pá2n1amer
+páncé2l1aut
+páncé2l1ing
+páncé2l1ö
+papÃ2r1ár
+papÃ2r1ip
+papÃ2r1Ãz
paran2cs1ad
-paran2cs1õr
+paran2cs1Å‘r
paran2cs1ural
parasz2t1assz
parasz2t1emb
-páro2s1ujj
-pár2t1akt
-pár2t1áll
-.pár2t1e
-.pár2t1éle
-.pár2t1érde
-pár2t1értek
-pár2t1ig
-pár2t1irod
-pár2t1isko
-pár2t1okt
-pár2t1uta
-.pár2t1ü
-pászto2r1élet
-pászto2r1óra
-patká2ny1irt
-pecsé2t1õr
-pé2k1üzlet
-.pén2z1a
-.pén2z1á
-pén2z1egys
-pén2z1éhes
-pén2z1embe
-pén2z1érték
-pénz2es3zsák
-pén2z1int
-pén2z1össz
-.pénz3s
-pén2z1ügy
-pénzü2gy1igaz
-pénzü2gy1õr
-pe2r1érté
+páro2s1ujj
+pár2t1akt
+pár2t1áll
+.pár2t1e
+.pár2t1éle
+.pár2t1érde
+pár2t1értek
+pár2t1ig
+pár2t1irod
+pár2t1isko
+pár2t1okt
+pár2t1uta
+.pár2t1ü
+pászto2r1élet
+pászto2r1óra
+patká2ny1irt
+pecsé2t1őr
+pé2k1üzlet
+.pén2z1a
+.pén2z1á
+pén2z1egys
+pén2z1éhes
+pén2z1embe
+pén2z1érték
+pénz2es3zsák
+pén2z1int
+pén2z1össz
+.pénz3s
+pén2z1ügy
+pénzü2gy1igaz
+pénzü2gy1őr
+pe2r1érté
pe2r1orvos
-.pe2r1új
+.pe2r1új
p2lagiz
p2letyk
p2lomba
-polgá2r1õr
+polgá2r1őr
pon2t1ered
-.pó2t1a
-.pó2t1ágy
-.pó2t1ül
+.pó2t1a
+.pó2t1ágy
+.pó2t1ül
p4rakti
p2reciz
-p2recíz
-p4rédál
-p4rédikál
-p4rémez
-p4reparál
-p4résel
+p2recÃz
+p4rédál
+p4rédikál
+p4rémez
+p4reparál
+p4résel
p4resszio
p4rezent
-p4róba
-p4róbál
-p4roblém
-p4rodukál
-p4rofitál
-p4roklamál
-proletá2r1áll
-proletá2r1oszt
+p4róba
+p4róbál
+p4roblém
+p4rodukál
+p4rofitál
+p4roklamál
+proletá2r1áll
+proletá2r1oszt
p4rolong
-p4ropagál
-p4roponál
+p4ropagál
+p4roponál
p4rostit
-p4rotezsál
-p4rovokál
-p4rüszköl
+p4rotezsál
+p4rovokál
+p4rüszköl
raj2z1eszk
raj3z1aszt
raj2z3sz
-rá2k1okoz
-rá2k1oll
-raktá2r1állo
-ran2g1idõs
-ran2g1elsõ
-reá2l1isko
-regé2ny1ír
-regé2ny1ir
-régiség3gyüjt
-ré2g1óta
-rejte2k1ajtó
-rejte2k1út
+rá2k1okoz
+rá2k1oll
+raktá2r1állo
+ran2g1idős
+ran2g1első
+reá2l1isko
+regé2ny1Ãr
+regé2ny1ir
+régiség3gyüjt
+ré2g1óta
+rejte2k1ajtó
+rejte2k1út
reke2sz1izom
-rekor2d1idõ
-ren2d1õr
-rendõ2r1áll
-rendõ2r1aut
-rendõ2r1õr
+rekor2d1idő
+ren2d1Å‘r
+rendő2r1áll
+rendő2r1aut
+rendő2r1őr
.re1p2ro
-ré2sz1össz
-rete2sz1áll
-ré2z1edé
-ré2z1üst
-rezgé2s3szám
-ré2z3szín
+ré2sz1össz
+rete2sz1áll
+ré2z1edé
+ré2z1üst
+rezgé2s3szám
+ré2z3szÃn
ri2zs3szem
roham1b2rig
roha2m1oszt
-roko2n1érte
-romá2n1ellen
+roko2n1érte
+romá2n1ellen
ro2m1eltak
ro2ssz1indulat
-rova2r1evõ
+rova2r1evő
rova2r1irt
-rová2s1írás
+rová2s1Ãrás
ro2zs3szem
-rö2p1irat
-rövi2d1ár
-sak2k1állás
-sak2k1óra
-sán2c1á
-sán2c1épí
-sanzo2n1ének
-sárgá2s3zöld
-sar2k1öv
+rö2p1irat
+rövi2d1ár
+sak2k1állás
+sak2k1óra
+sán2c1á
+sán2c1épÃ
+sanzo2n1ének
+sárgá2s3zöld
+sar2k1öv
sar2k1uta
saro2k1abl
-saro2k1ül
+saro2k1ül
sa2s1orr
.sa2s3sze
sa2s3szeg
-.sa2v1áll
+.sa2v1áll
s2ch
-segé2d1a
-segé2d1erõ
-segé2d1esz
-segé2d1ige
-segé2d1orv
-segé2ly1a
-segé2ly1á
-segé2ly1egy
-serté2s1o
-serté2s1ó
-serté2s3zsír
-sí2k1idom
-sí2n1aut
-sí2r1ásó
-sí2r1eml
-sí2r1irat
+segé2d1a
+segé2d1erő
+segé2d1esz
+segé2d1ige
+segé2d1orv
+segé2ly1a
+segé2ly1á
+segé2ly1egy
+serté2s1o
+serté2s1ó
+serté2s3zsÃr
+sÃ2k1idom
+sÃ2n1aut
+sÃ2r1ásó
+sÃ2r1eml
+sÃ2r1irat
sisa2k1ellen
s2kalp
-s2kandál
+s2kandál
s2kicc
.sk2r
s2lukk
s2makkol
s2mirgli
-sógo2r1aszz
-so2k1értel
-so2k1évi
+sógo2r1aszz
+so2k1értel
+so2k1évi
so2k1ist
so2k1oldal
-sonká2s3zsem
-so2r1áll
+sonká2s3zsem
+so2r1áll
so2r1emel
-sor2s1üld
-sö2r1ivó
-sörö2s1üveg
-spanyo2l1ország
+sor2s1üld
+sö2r1ivó
+sörö2s1üveg
+spanyo2l1ország
s2pecial
-s2peciál
-s2pékel
-s4pekulál
+s2peciál
+s2pékel
+s4pekulál
s2piccel
-s2pórol
-spor2t1ág
+s2pórol
+spor2t1ág
spor2t1e
-spor2t1élet
+spor2t1élet
spor2t1orv
-spor2t1öltö
-spor2t1õrül
-spor2t1ünn
+spor2t1öltö
+spor2t1őrül
+spor2t1ünn
.sp2r
-s2rófol
-s4tagnál
-s4tatisztál
-s4terilizál
-stílu2s1érz
-stílu2s1irány
-s4tíröl
+s2rófol
+s4tagnál
+s4tatisztál
+s4terilizál
+stÃlu2s1érz
+stÃlu2s1irány
+s4tÃröl
s4toppol
-1st2rukt
+1st2rukt
.st2
st2rand
-st2rapál
-st2rázsál
-st4réber
-sugá2r1árt
-sugá2r1ir
-sú2ly1egys
-sú2ly1emel
-své2d1ország
+st2rapál
+st2rázsál
+st4réber
+sugá2r1árt
+sugá2r1ir
+sú2ly1egys
+sú2ly1emel
+své2d1ország
szaba2d1egye
-szaba2d1elõad
+szaba2d1előad
szaba2d1elv
-szá2j1üreg
+szá2j1üreg
sza2k1avat
sza2k1ember
-sza2k1érettség
-sza2k1értel
-sza2k1értõ
-sza2k1író
+sza2k1érettség
+sza2k1értel
+sza2k1értő
+sza2k1Ãró
sza2k1iroda
sza2k1isk
sza2k1ismer
-sza2k1oktatás
+sza2k1oktatás
sza2k1orvos
-sza2k1osztály
-sza2k1üzlet
-szállá2s1ad
-szá2m1adás
-szá2m1ad
-szá2m1arány
-szá2m1elmélet
-szá2m1oszl
-szá2m1ûz
-száraz3ság
-szár2ny1épül
+sza2k1osztály
+sza2k1üzlet
+szállá2s1ad
+szá2m1adás
+szá2m1ad
+szá2m1arány
+szá2m1elmélet
+szá2m1oszl
+szá2m1űz
+száraz3ság
+szár2ny1épül
szarva2s1aga
-százalé2k1ará
-szá2z1öt
-szá2z1egy
-szá2z1éves
-szá2z1ezer
-száz3szá
-száz3szo
-szégye2n1érz
-széjje2l1
-szeké2r1út
-széke2s1egyh
-szé2l1árny
-.szé2l1ir
-.szé2l1üt
-szembe2n1áll
+százalé2k1ará
+szá2z1öt
+szá2z1egy
+szá2z1éves
+szá2z1ezer
+száz3szá
+száz3szo
+szégye2n1érz
+széjje2l1
+szeké2r1út
+széke2s1egyh
+szé2l1árny
+.szé2l1ir
+.szé2l1üt
+szembe2n1áll
sze2m1ellen
-.szemé2ly1a
-sze2m1üveg
-széná2s3szekér
-szé2n1éget
-szé2n1ellát
+.szemé2ly1a
+sze2m1üveg
+széná2s3szekér
+szé2n1éget
+szé2n1ellát
szen2t1atya
szen2t1egyh
szen2t1este
-szennye2s3zsák
+szennye2s3zsák
szenny1ir
-.szé2p1a
-szé2p1érzék
-szé2p1ír
-szé2p1ir
-szé2p1p2róza
-szer2v1átül
-3szerû.
+.szé2p1a
+szé2p1érzék
+szé2p1Ãr
+szé2p1ir
+szé2p1p2róza
+szer2v1átül
+3szerű.
szere2p1oszt
szerete2t1ado
-szerszá2m1acél
-szerzõdé2s3sz
-sze2sz1adó
-sze2sz1éget
-sze2sz1éleszt
+szerszá2m1acél
+szerződé2s3sz
+sze2sz1adó
+sze2sz1éget
+sze2sz1éleszt
sze2sz1ipar
-.szé2t1
+.szé2t1
.sz2f
szige2t1orsz
-szikratá2v1ír
-.szí2n1á
-szí2n1arany
-szí2n1érz
-szí2n1ezüst
-szí2n1igaz
-szí2n3nyom
-szí2n1s2kála
+szikratá2v1Ãr
+.szÃ2n1á
+szÃ2n1arany
+szÃ2n1érz
+szÃ2n1ezüst
+szÃ2n1igaz
+szÃ2n3nyom
+szÃ2n1s2kála
szin2t1akk
szin2t1anny
szin2t1oly
-szin2t1úgy
-3színû.
-szí2v1alak
-szí2v1átül
-szí2v1izom
-szólá2s3szabad
-szomszé2d1assz
-szovje2t1állam
+szin2t1úgy
+3szÃnű.
+szÃ2v1alak
+szÃ2v1átül
+szÃ2v1izom
+szólá2s3szabad
+szomszé2d1assz
+szovje2t1állam
szovje2t1ellen
szovje2t1orosz
-szõrö2s3szívû
-szöve2g1elem
-szöve2g1ír
+szÅ‘rö2s3szÃvű
+szöve2g1elem
+szöve2g1Ãr
.sz2t
.szt2r
-sztráj2k1õr
-szü2n1id
-szû2z1anya
-takarmá2ny1árpa
+sztráj2k1őr
+szü2n1id
+szű2z1anya
+takarmá2ny1árpa
tal2p1alatnyi
-tal2p1aláv
-taná2cs1ad
-taná2cs1e
-taná2cs1ü
-tán2c3csop
-tán2c1egy
-tán2c1est
-tán2c1ó
-ta2n1év
+tal2p1aláv
+taná2cs1ad
+taná2cs1e
+taná2cs1ü
+tán2c3csop
+tán2c1egy
+tán2c1est
+tán2c1ó
+ta2n1év
ta2n1int
tanon2c1id
tanon2c1isk
tanon2c1ott
-ta2n1óra
-ta2n1ügy
-tányé2r1akna
-tá2p1anyag
-tapasztala2t1átad
-tá2p1érték
-tár2gy1isme
-társadalo2m1áb
-társadalo2m1ell
-tár2s3szerz
-tartalé2k1alap
-tartalé2k1áll
-tava2ly1elõtt
-tá2v1ir
-tá2v1ír
-távira2t1s2tílus
-távo2l1ugr
-tá2v1úsz
-tegna2p1elõtt
-tehé2n1ist
-tehe2r1ár
+ta2n1óra
+ta2n1ügy
+tányé2r1akna
+tá2p1anyag
+tapasztala2t1átad
+tá2p1érték
+tár2gy1isme
+társadalo2m1áb
+társadalo2m1ell
+tár2s3szerz
+tartalé2k1alap
+tartalé2k1áll
+tava2ly1előtt
+tá2v1ir
+tá2v1Ãr
+távira2t1s2tÃlus
+távo2l1ugr
+tá2v1úsz
+tegna2p1előtt
+tehé2n1ist
+tehe2r1ár
tehe2r1aut
-te2j1ár
-tejfele2s3száj
-tejfölö2s3száj
-te2j1út
-.te2j1ü
-tekinté2ly1uralom
-telefo2n1áll
+te2j1ár
+tejfele2s3száj
+tejfölö2s3száj
+te2j1út
+.te2j1ü
+tekinté2ly1uralom
+telefo2n1áll
telefo2n1auto
-telefo2n1érme
-tenge2r1áram
-tenge2r1öböl
-teni2sz1üt
-tenyé2sz1áll
-tenyé2sz1idõ
-tere2m1õr
+telefo2n1érme
+tenge2r1áram
+tenge2r1öböl
+teni2sz1üt
+tenyé2sz1áll
+tenyé2sz1idő
+tere2m1Å‘r
tere2p1ism
tere2p1akad
-té2r1érz
-té2r1isz
-termé2ny1ár
-termé2s1ered
-természe2t1átala
-természe2t1ell
-természe2t1im
-ter2v1elõir
+té2r1érz
+té2r1isz
+termé2ny1ár
+termé2s1ered
+természe2t1átala
+természe2t1ell
+természe2t1im
+ter2v1előir
ter2v1oszt
tes2t1alk
-tes2t1ápol
+tes2t1ápol
tes2t1edz
-tes2t1õr
-tet2t1erõ
+tes2t1Å‘r
+tet2t1erő
texti2l1any
-texti2l1ár
+texti2l1ár
texti2l1ipar
-1thyá1ny
-tífu2sz1olt
-típu2s1áru
-típu2s1ebéd
+1thyá1ny
+tÃfu2sz1olt
+tÃpu2s1áru
+tÃpu2s1ebéd
tisztele2t1ad
-tisztessé2g1érz
-tisz2t1új
+tisztessé2g1érz
+tisz2t1új
tize2n1
-.tí2z1
-.tí3z2en
-.tí3z2es
-tí2z3szer
+.tÃ2z1
+.tÃ3z2en
+.tÃ3z2es
+tÃ2z3szer
toalet2t1aszt
-toro2ny1óra
+toro2ny1óra
toro2ny1ugr
-tor2z3szül
-továb2b1ad
-továb2b1áll
-töb2b1év
-töb2b1ezer
-töb2b1oldal
-tõké2s1áll
-tõké2s1oszt
-töl2gy1erd
-töme2g1erõ
-töme2g3gy
-törö2k1ország
-törö2k1ül
-történe2t1ír
-törvé2ny1alk
-törvé2ny1ell
-törvé2ny1er
-tör2zs1õrm
-tör2zs3szám
+tor2z3szül
+továb2b1ad
+továb2b1áll
+töb2b1év
+töb2b1ezer
+töb2b1oldal
+tőké2s1áll
+tőké2s1oszt
+töl2gy1erd
+töme2g1erő
+töme2g3gy
+törö2k1ország
+törö2k1ül
+történe2t1Ãr
+törvé2ny1alk
+törvé2ny1ell
+törvé2ny1er
+tör2zs1őrm
+tör2zs3szám
t2raccsol
-t2rágya
-t2rágyáz
-t2rakto2r1állo
-t2rancsír
+t2rágya
+t2rágyáz
+t2rakto2r1állo
+t2rancsÃr
t2ranszform
t2rappol
-t2récsel
-t4réfál
+t2récsel
+t4réfál
t2rombit
-.t2rón
-t2ró2n1örök
-t2ró2n1ut
-tudá2s3szomj
+.t2rón
+t2ró2n1örök
+t2ró2n1ut
+tudá2s3szomj
tuda2t1alatt
-tudomá2ny1egy
-tú2l1ad
-tú2l1árad
-tú2l1él
-tú2l1ér
-tú2l1erõ
-tú2l1expo
-tú2l1old
-tú2l1ór
-tû2z1áll
-tüzé2r1ezr
-tû2z1olt
-tû2z1õr
-.tû2z3sz
-tyú2k1ól
+tudomá2ny1egy
+tú2l1ad
+tú2l1árad
+tú2l1él
+tú2l1ér
+tú2l1erő
+tú2l1expo
+tú2l1old
+tú2l1ór
+tű2z1áll
+tüzé2r1ezr
+tű2z1olt
+tű2z1őr
+.tű2z3sz
+tyú2k1ól
.ugya2n1
-úgy1annyi
-úgy1is
-újon2c1állít
-ujsá2g1ár
-újsá2g1ír
-úr1assz
-utá2n3nyom
-utas3száll
-utász3száz
-út1elág
-út1épít
-út1irány
-ügyész3ség
-üg2y1int
-üg2y1ir
-üg2y1oszt
-.ük1a
-.ük1u
-ülés3szak
-.ûr1állom
-üve2g1a
-üve2g1á
-üve2g1ed
-üve2g3gy
-üve2g1ipa
-üze2m1anyag
-üzle2t1emb
-üzle2t1év
-va2d1áll
+úgy1annyi
+úgy1is
+újon2c1állÃt
+ujsá2g1ár
+újsá2g1Ãr
+úr1assz
+utá2n3nyom
+utas3száll
+utász3száz
+út1elág
+út1épÃt
+út1irány
+ügyész3ség
+üg2y1int
+üg2y1ir
+üg2y1oszt
+.ük1a
+.ük1u
+ülés3szak
+.űr1állom
+üve2g1a
+üve2g1á
+üve2g1ed
+üve2g3gy
+üve2g1ipa
+üze2m1anyag
+üzle2t1emb
+üzle2t1év
+va2d1áll
va2d1alm
-vadá2sz1e
-vadász3zs
+vadá2sz1e
+vadász3zs
va2d1emb
va2d1evez
va2d1ideg
-vá2d1irat
-va2d1õr
-vá2gy1álom
+vá2d1irat
+va2d1Å‘r
+vá2gy1álom
va2gy1is
vagyo2n1ad
-vagyo2n1átr
-va2k1ír
-vallá2s1alap
-vallá2s1ell
-vallá2s1okt
-vallás3sz
-vá2m1õr
-vándo2r1út
-vará2zs1er
-vará2zs1i
-vará2zs3sz
-váro2s1aty
-váro2s1épít
-váro2s3sz
-vá2r1õr
-vá2r1úr
-va2s1ágy
+vagyo2n1átr
+va2k1Ãr
+vallá2s1alap
+vallá2s1ell
+vallá2s1okt
+vallás3sz
+vá2m1őr
+vándo2r1út
+vará2zs1er
+vará2zs1i
+vará2zs3sz
+váro2s1aty
+váro2s1épÃt
+váro2s3sz
+vá2r1őr
+vá2r1úr
+va2s1ágy
va2s1aj
va2s1akar
-va2s1ár
-va3s2árn
+va2s1ár
+va3s2árn
va2s1ed
va2s1eg
-va2s1érc
+va2s1érc
va2s1esz
va2s1olv
-.va2s1ö
+.va2s1ö
.vas3sz
va2s1utas
-va2s1út
-vasú2t1áll
-vé2d1erõ
-vé2g1akar
-vé2g1áll
-vé2g1el
-vé3g2eláthat
-vé2g1eredmény
-vé2g1érv
-.végi2g1
-.vé2g1í
-.vé2g1ó
-vé2g1össz
+va2s1út
+vasú2t1áll
+vé2d1erő
+vé2g1akar
+vé2g1áll
+vé2g1el
+vé3g2eláthat
+vé2g1eredmény
+vé2g1érv
+.végi2g1
+.vé2g1Ã
+.vé2g1ó
+vé2g1össz
ve2gy1elem
-ve2gy1ért
+ve2gy1ért
ve2gy1ipar
-vé2n1assz
-vendé2g1ágy
-vendé2g1old
-vé2n1emb
-.vé2r1ad
-.vé2r1al
-vé2r1áldoz
-vé2r1áram
-vé2r1á2t1öml
-.vé2r1eb
-vé2r1edény
-vé2r1ellát
-vére2s3száj
-vé2r1ont
-.vé2r1ö
-verse2ny1autó
+vé2n1assz
+vendé2g1ágy
+vendé2g1old
+vé2n1emb
+.vé2r1ad
+.vé2r1al
+vé2r1áldoz
+vé2r1áram
+vé2r1á2t1öml
+.vé2r1eb
+vé2r1edény
+vé2r1ellát
+vére2s3száj
+vé2r1ont
+.vé2r1ö
+verse2ny1autó
verse2ny1ist
-verse2ny1ú
+verse2ny1ú
verse2ny1u
-ver2s1ír
+ver2s1Ãr
ver2s3szak
-vé2sz3síp
-véte2l1ár
-vezé2r1elv
-vezé2r1eszme
-vezé2r1evez
-vezé2r1ezr
-vezé2r1iga
-vezé2r1õrn
-via2sz3sárg
-ví2g1oper
-vilá2g1égés
-vilá2g1irod
-vilá2g1ismer
-vilá2g1ural
-vilá2g1ûr
-villamos3szék
-villa2ny1áram
+vé2sz3sÃp
+véte2l1ár
+vezé2r1elv
+vezé2r1eszme
+vezé2r1evez
+vezé2r1ezr
+vezé2r1iga
+vezé2r1őrn
+via2sz3sárg
+vÃ2g1oper
+vilá2g1égés
+vilá2g1irod
+vilá2g1ismer
+vilá2g1ural
+vilá2g1űr
+villamos3szék
+villa2ny1áram
.villa2ny1e
-villa2ny1égõ
-villa2ny1õra
+villa2ny1égő
+villa2ny1Å‘ra
villa2ny1oszlop
-virá2g1ágy
-virá2g1álv
-virá2g1ár
-virá2g1erd
+virá2g1ágy
+virá2g1álv
+virá2g1ár
+virá2g1erd
viszon2t1elad
-vissz1ér
+vissz1ér
vissz1eres
-vité2z3ség
-ví2z1áll
-.ví2z1át
-ví2z1ellátás
-ví2z1elnyelõ
-ví2z1elvezet
-ví2z1épít
-ví2z1esés
-ví2z1iszony
-.ví2z3s
-
-vona2t1érk
+vité2z3ség
+vÃ2z1áll
+.vÃ2z1át
+vÃ2z1ellátás
+vÃ2z1elnyelÅ‘
+vÃ2z1elvezet
+vÃ2z1épÃt
+vÃ2z1esés
+vÃ2z1iszony
+.vÃ2z3s
+
+vona2t1érk
vona2t1ind
-vörö2s1õr
-zápo2r1esõ
-zá2r1óra
-zászló2s1úr
-zu2g1ír
-zu2g1irász
+vörö2s1őr
+zápo2r1eső
+zá2r1óra
+zászló2s1úr
+zu2g1Ãr
+zu2g1irász
zu2g1utca
-.zu2g1ü
-zsá2k1utca
+.zu2g1ü
+zsá2k1utca
zse2b1atlasz
-.zsi2b1ár
-zsili2p1õr
-zsí2r1alkohol
-zsí2r1ellát
-zsoltá2r1ír
+.zsi2b1ár
+zsili2p1Å‘r
+zsÃ2r1alkohol
+zsÃ2r1ellát
+zsoltá2r1Ãr
-.á4
-.é4
-.í4
-.ó4
-.ö4
-.õ4
-.ú4
-.ü4
-.û4
-4á.
-4é.
-4í.
-4ó.
-4ö.
-4õ.
-4ú.
-4ü.
-4û.
+.á4
+.é4
+.Ã4
+.ó4
+.ö4
+.Å‘4
+.ú4
+.ü4
+.ű4
+4á.
+4é.
+4Ã.
+4ó.
+4ö.
+4Å‘.
+4ú.
+4ü.
+4ű.
'’′
aA
-áÁ
-àÀ
-ãÃ
-âÂ
+áÃ
+à À
+ãÃ
+âÂ
bB
cC
-çÇ
+çÇ
dD
eE
-éÉ
-êÊ
+éÉ
+êÊ
fF
gG
hH
iI
-íÍ
+ÃÃ
jJ
kK
lL
mM
nN
oO
-óÓ
-õÕ
-ôÔ
+óÓ
+õÕ
+ôÔ
pP
qQ
rR
sS
tT
uU
-úÚ
-üÜ
+úÚ
+üÜ
vV
wW
xX
@@ -139,133 +139,133 @@ pu-dla-gem
-
8'8
-1ba 1bá 1bâ 1bã 1be 1bé 1bê 1bi 1bí 1bo 1bó 1bô 1bõ 1bu 1bú
-1ca 1cá 1câ 1cã 1ce 1cé 1cê 1ci 1cí 1co 1có 1cô 1cõ 1cu 1cú
-1ça 1çá 1çâ 1çã 1ço 1çó 1çô 1çõ 1çu 1çú
-1da 1dá 1dâ 1dã 1de dbé 1dê 1di 1dí 1do 1dó 1dô 1dõ 1du 1dú
-1fa 1fá 1fâ 1fã 1fe dfé 1fê 1fi 1fí 1fo 1fó 1fô 1fõ 1fu 1fú
-1ga 1gá 1gâ 1gã 1ge dgé 1gê 1gi 1gí 1go 1gó 1gô 1gõ 1gu 1gú 1gü
-.ha .há .hâ .he .hé .hê .hi .hí .ho .hó .hô .hu .hú .hü .hy
-1ja 1já 1jâ 1jã 1je djé 1jê 1ji 1jí 1jo 1jó 1jô 1jõ 1ju 1jú
-1ka 1ká 1kâ 1kã 1ke 1ké 1kê 1ki 1kí 1ko 1kó 1kô 1kõ 1ku 1kú
-1la 1lá 1lâ 1lã 1le 1lé 1lê 1li 1lí 1lo 1ló 1lô 1lõ 1lu 1lú
-1ma 1má 1mâ 1mã 1me 1mé 1mê 1mi 1mí 1mo 1mó 1mô 1mõ 1mu 1mú
-1na 1ná 1nâ 1nã 1ne 1né 1nê 1ni 1ní 1no 1nó 1nô 1nõ 1nu 1nú
-1pa 1pá 1pâ 1pã 1pe 1pé 1pê 1pi 1pí 1po 1pó 1pô 1põ 1pu 1pú
-1qu 1qü
-1ra 1rá 1râ 1rã 1re 1ré 1rê 1ri 1rí 1ro 1ró 1rô 1rõ 1ru 1rú
-1sa 1sá 1sâ 1sã 1se 1sé 1sê 1si 1sí 1so 1só 1sô 1sõ 1su 1sú
-1ta 1tá 1tâ 1tã 1te 1té 1tê 1ti 1tí 1to 1tó 1tô 1tõ 1tu 1tú
-1va 1vá 1vâ 1vã 1ve 1vé 1vê 1vi 1ví 1vo 1vó 1vô 1võ 1vu 1vú
-1wa 1wá 1wâ 1wã 1we 1wé 1wê 1wi 1wí 1wo 1wó 1wô 1wõ 1wu 1wú
-1xa 1xá 1xâ 1xã 1xe 1xé 1xê 1xi 1xí 1xo 1xó 1xô 1xõ 1xu 1xú
-1ya 1yá 1yâ 1yã 1ye 1yé 1yê 1yi 1yí 1yo 1yó 1yô 1yõ 1yu 1yú
-1za 1zá 1zâ 1zã 1ze 1zé 1zê 1zi 1zí 1zo 1zó 1zô 1zõ 1zu 1zú
+1ba 1bá 1bâ 1bã 1be 1bé 1bê 1bi 1bà 1bo 1bó 1bô 1bõ 1bu 1bú
+1ca 1cá 1câ 1cã 1ce 1cé 1cê 1ci 1cà 1co 1có 1cô 1cõ 1cu 1cú
+1ça 1çá 1çâ 1çã 1ço 1çó 1çô 1çõ 1çu 1çú
+1da 1dá 1dâ 1dã 1de dbé 1dê 1di 1dà 1do 1dó 1dô 1dõ 1du 1dú
+1fa 1fá 1fâ 1fã 1fe dfé 1fê 1fi 1fà 1fo 1fó 1fô 1fõ 1fu 1fú
+1ga 1gá 1gâ 1gã 1ge dgé 1gê 1gi 1gà 1go 1gó 1gô 1gõ 1gu 1gú 1gü
+.ha .há .hâ .he .hé .hê .hi .hà .ho .hó .hô .hu .hú .hü .hy
+1ja 1já 1jâ 1jã 1je djé 1jê 1ji 1jà 1jo 1jó 1jô 1jõ 1ju 1jú
+1ka 1ká 1kâ 1kã 1ke 1ké 1kê 1ki 1kà 1ko 1kó 1kô 1kõ 1ku 1kú
+1la 1lá 1lâ 1lã 1le 1lé 1lê 1li 1là 1lo 1ló 1lô 1lõ 1lu 1lú
+1ma 1má 1mâ 1mã 1me 1mé 1mê 1mi 1mà 1mo 1mó 1mô 1mõ 1mu 1mú
+1na 1ná 1nâ 1nã 1ne 1né 1nê 1ni 1nà 1no 1nó 1nô 1nõ 1nu 1nú
+1pa 1pá 1pâ 1pã 1pe 1pé 1pê 1pi 1pà 1po 1pó 1pô 1põ 1pu 1pú
+1qu 1qü
+1ra 1rá 1râ 1rã 1re 1ré 1rê 1ri 1rà 1ro 1ró 1rô 1rõ 1ru 1rú
+1sa 1sá 1sâ 1sã 1se 1sé 1sê 1si 1sà 1so 1só 1sô 1sõ 1su 1sú
+1ta 1tá 1tâ 1tã 1te 1té 1tê 1ti 1tà 1to 1tó 1tô 1tõ 1tu 1tú
+1va 1vá 1vâ 1vã 1ve 1vé 1vê 1vi 1và 1vo 1vó 1vô 1võ 1vu 1vú
+1wa 1wá 1wâ 1wã 1we 1wé 1wê 1wi 1wà 1wo 1wó 1wô 1wõ 1wu 1wú
+1xa 1xá 1xâ 1xã 1xe 1xé 1xê 1xi 1xà 1xo 1xó 1xô 1xõ 1xu 1xú
+1ya 1yá 1yâ 1yã 1ye 1yé 1yê 1yi 1yà 1yo 1yó 1yô 1yõ 1yu 1yú
+1za 1zá 1zâ 1zã 1ze 1zé 1zê 1zi 1zà 1zo 1zó 1zô 1zõ 1zu 1zú
-1c2ha 1c2há 1c2hâ 1c2hã 1c2he 1c2hé 1c2hê 1c2hi 1c2hí 1c2ho 1c2hó 1c2hô 1c2hõ 1c2hu 1c2hú
-1l2ha 1l2há 1l2hâ 1l2hã 1l2he 1l2hé 1l2hê 1l2hi 1l2hí 1l2ho 1l2hó 1l2hô 1l2hõ 1l2hu 1l2hú
-1n2ha 1n2há 1n2hâ 1n2hã 1n2he 1n2hé 1n2hê 1n2hi 1n2hí 1n2ho 1n2hó 1n2hô 1n2hõ 1n2hu 1n2hú
+1c2ha 1c2há 1c2hâ 1c2hã 1c2he 1c2hé 1c2hê 1c2hi 1c2hà 1c2ho 1c2hó 1c2hô 1c2hõ 1c2hu 1c2hú
+1l2ha 1l2há 1l2hâ 1l2hã 1l2he 1l2hé 1l2hê 1l2hi 1l2hà 1l2ho 1l2hó 1l2hô 1l2hõ 1l2hu 1l2hú
+1n2ha 1n2há 1n2hâ 1n2hã 1n2he 1n2hé 1n2hê 1n2hi 1n2hà 1n2ho 1n2hó 1n2hô 1n2hõ 1n2hu 1n2hú
-1b2ra 1b2rá 1b2râ 1b2rã 1b2re 1b2ré 1b2rê 1b2ri 1b2rí 1b2ro 1b2ró 1b2rô 1b2rõ 1b2ru 1b2rú
-1c2ra 1c2rá 1c2râ 1c2rã 1c2re 1c2ré 1c2rê 1c2ri 1c2rí 1c2ro 1c2ró 1c2rô 1c2rõ 1c2ru 1c2rú
-1d2ra 1d2rá 1d2râ 1d2rã 1d2re 1d2ré 1d2rê 1d2ri 1d2rí 1d2ro 1d2ró 1d2rô 1d2rõ 1d2ru 1d2rú
-1f2ra 1f2rá 1f2râ 1f2rã 1f2re 1f2ré 1f2rê 1f2ri 1f2rí 1f2ro 1f2ró 1f2rô 1f2rõ 1f2ru 1f2rú
-1g2ra 1g2rá 1g2râ 1g2rã 1g2re 1g2ré 1g2rê 1g2ri 1g2rí 1g2ro 1g2ró 1g2rô 1g2rõ 1g2ru 1g2rú
-1p2ra 1p2rá 1p2râ 1p2rã 1p2re 1p2ré 1p2rê 1p2ri 1p2rí 1p2ro 1p2ró 1p2rô 1p2rõ 1p2ru 1p2rú
-1t2ra 1t2rá 1t2râ 1t2rã 1t2re 1t2ré 1t2rê 1t2ri 1t2rí 1t2ro 1t2ró 1t2rô 1t2rõ 1t2ru 1t2rú
-1v2ra 1v2rá 1v2râ 1v2rã 1v2re 1v2ré 1v2rê 1v2ri 1v2rí 1v2ro 1v2ró 1v2rô 1v2rõ 1v2ru 1v2rú
-1b2la 1b2lá 1b2lâ 1b2lã 1b2le 1b2lé 1b2lê 1b2li 1b2lí 1b2lo 1b2ló 1b2lô 1b2lõ 1b2lu 1b2lú
-1c2la 1c2lá 1c2lâ 1c2lã 1c2le 1c2lé 1c2lê 1c2li 1c2lí 1c2lo 1c2ló 1c2lô 1c2lõ 1c2lu 1c2lú
-1f2la 1f2lá 1f2lâ 1f2lã 1f2le 1f2lé 1f2lê 1f2li 1f2lí 1f2lo 1f2ló 1f2lô 1f2lõ 1f2lu 1f2lú
-1g2la 1g2lá 1g2lâ 1g2lã 1g2le 1g2lé 1g2lê 1g2li 1g2lí 1g2lo 1g2ló 1g2lô 1g2lõ 1g2lu 1g2lú
-1p2la 1p2lá 1p2lâ 1p2lã 1p2le 1p2lé 1p2lê 1p2li 1p2lí 1p2lo 1p2ló 1p2lô 1p2lõ 1p2lu 1p2lú
-1t2la 1t2lá 1t2lâ 1t2lã 1t2le 1t2lé 1t2lê 1t2li 1t2lí 1t2lo 1t2ló 1t2lô 1t2lõ 1t2lu 1t2lú
+1b2ra 1b2rá 1b2râ 1b2rã 1b2re 1b2ré 1b2rê 1b2ri 1b2rà 1b2ro 1b2ró 1b2rô 1b2rõ 1b2ru 1b2rú
+1c2ra 1c2rá 1c2râ 1c2rã 1c2re 1c2ré 1c2rê 1c2ri 1c2rà 1c2ro 1c2ró 1c2rô 1c2rõ 1c2ru 1c2rú
+1d2ra 1d2rá 1d2râ 1d2rã 1d2re 1d2ré 1d2rê 1d2ri 1d2rà 1d2ro 1d2ró 1d2rô 1d2rõ 1d2ru 1d2rú
+1f2ra 1f2rá 1f2râ 1f2rã 1f2re 1f2ré 1f2rê 1f2ri 1f2rà 1f2ro 1f2ró 1f2rô 1f2rõ 1f2ru 1f2rú
+1g2ra 1g2rá 1g2râ 1g2rã 1g2re 1g2ré 1g2rê 1g2ri 1g2rà 1g2ro 1g2ró 1g2rô 1g2rõ 1g2ru 1g2rú
+1p2ra 1p2rá 1p2râ 1p2rã 1p2re 1p2ré 1p2rê 1p2ri 1p2rà 1p2ro 1p2ró 1p2rô 1p2rõ 1p2ru 1p2rú
+1t2ra 1t2rá 1t2râ 1t2rã 1t2re 1t2ré 1t2rê 1t2ri 1t2rà 1t2ro 1t2ró 1t2rô 1t2rõ 1t2ru 1t2rú
+1v2ra 1v2rá 1v2râ 1v2rã 1v2re 1v2ré 1v2rê 1v2ri 1v2rà 1v2ro 1v2ró 1v2rô 1v2rõ 1v2ru 1v2rú
+1b2la 1b2lá 1b2lâ 1b2lã 1b2le 1b2lé 1b2lê 1b2li 1b2là 1b2lo 1b2ló 1b2lô 1b2lõ 1b2lu 1b2lú
+1c2la 1c2lá 1c2lâ 1c2lã 1c2le 1c2lé 1c2lê 1c2li 1c2là 1c2lo 1c2ló 1c2lô 1c2lõ 1c2lu 1c2lú
+1f2la 1f2lá 1f2lâ 1f2lã 1f2le 1f2lé 1f2lê 1f2li 1f2là 1f2lo 1f2ló 1f2lô 1f2lõ 1f2lu 1f2lú
+1g2la 1g2lá 1g2lâ 1g2lã 1g2le 1g2lé 1g2lê 1g2li 1g2là 1g2lo 1g2ló 1g2lô 1g2lõ 1g2lu 1g2lú
+1p2la 1p2lá 1p2lâ 1p2lã 1p2le 1p2lé 1p2lê 1p2li 1p2là 1p2lo 1p2ló 1p2lô 1p2lõ 1p2lu 1p2lú
+1t2la 1t2lá 1t2lâ 1t2lã 1t2le 1t2lé 1t2lê 1t2li 1t2là 1t2lo 1t2ló 1t2lô 1t2lõ 1t2lu 1t2lú
-a1a a1á a1â a1ã a1e a1é a1ê a2i a1í a1o a1ó a1ô a1õ a2u a1ú
-á1a á1e á2i á1o á2u ã1e ã2e2s ã2i ã2o ã2os
-e1a e1á e1â e1ã e1e e1é e1ê e2i e1í e1o e1ó e1ô e2u e1ú é2i é1o é2u ê1e ê2i ê1o
-i1a i1á i1â i1ã i1e i1é i1ê i1i i1í i1o i1ó i1ô i1õ i2u i1ú í1a í1e í1i í1o í1u
-o1a o1á o1â o1ã o1e o1é o1ê o2i o3i3n2h o1í o1o o1ó o1ô o1õ o2u o1ú
-ó2i ô1o õ2e
-u1a u1á u1ã u1e u1é u1ê u2i u1í u1o u1ó u1ô u1u u1ú ú1a ú1e ú1i ú1o
-ü2e ü2é ü2ê ü2i ü2í
+a1a a1á a1â a1ã a1e a1é a1ê a2i a1à a1o a1ó a1ô a1õ a2u a1ú
+á1a á1e á2i á1o á2u ã1e ã2e2s ã2i ã2o ã2os
+e1a e1á e1â e1ã e1e e1é e1ê e2i e1à e1o e1ó e1ô e2u e1ú é2i é1o é2u ê1e ê2i ê1o
+i1a i1á i1â i1ã i1e i1é i1ê i1i i1à i1o i1ó i1ô i1õ i2u i1ú Ã1a Ã1e Ã1i Ã1o Ã1u
+o1a o1á o1â o1ã o1e o1é o1ê o2i o3i3n2h o1à o1o o1ó o1ô o1õ o2u o1ú
+ó2i ô1o õ2e
+u1a u1á u1ã u1e u1é u1ê u2i u1à u1o u1ó u1ô u1u u1ú ú1a ú1e ú1i ú1o
+ü2e ü2é ü2ê ü2i ü2Ã
-a3i2m3b a3i2n3c a3i2n3ç a3i2n3d a3i2n3f a3i2n3g a3i3nh a3i2n3j a3i2n3l
+a3i2m3b a3i2n3c a3i2n3ç a3i2n3d a3i2n3f a3i2n3g a3i3nh a3i2n3j a3i2n3l
a3i2n3m a3i2m3p a3i2n3q a3i2n3r a3i2n3s a3i2n3t a3i2n3v a3i2n3x a3i2n3z
-a3u2m3b a3u2n3c a3u2n3ç a3u2n3d a3u2n3f a3u2n3g a3u3nh a3u2n3j a3u2n3l
+a3u2m3b a3u2n3c a3u2n3ç a3u2n3d a3u2n3f a3u2n3g a3u3nh a3u2n3j a3u2n3l
a3u2n3m a3u2m3p a3u2n3q a3u2n3r a3u2n3s a3u2n3t a3u2n3v a3u2n3x a3u2n3z
-e3i2m3b e3i2n3c e3i2n3ç e3i2n3d e3i2n3f e3i2n3g e3i3nh e3i2n3j e3i2n3l
+e3i2m3b e3i2n3c e3i2n3ç e3i2n3d e3i2n3f e3i2n3g e3i3nh e3i2n3j e3i2n3l
e3i2n3m e3i2m3p e3i2n3q e3i2n3r e3i2n3s e3i2n3t e3i2n3v e3i2n3x e3i2n3z
-e3u2m3b e3u2n3c e3u2n3ç e3u2n3d e3u2n3f e3u2n3g e3u3nh e3u2n3j e3u2n3l
+e3u2m3b e3u2n3c e3u2n3ç e3u2n3d e3u2n3f e3u2n3g e3u3nh e3u2n3j e3u2n3l
e3u2n3m e3u2m3p e3u2n3q e3u2n3r e3u2n3s e3u2n3t e3u2n3v e3u2n3x e3u2n3z
-i3u2m3b i3u2n3c i3u2n3ç i3u2n3d i3u2n3f i3u2n3g i3u3nh i3u2n3j i3u2n3l
+i3u2m3b i3u2n3c i3u2n3ç i3u2n3d i3u2n3f i3u2n3g i3u3nh i3u2n3j i3u2n3l
i3u2n3m i3u2m3p i3u2n3q i3u2n3r i3u2n3s i3u2n3t i3u2n3v i3u2n3x i3u2n3z
-o3i2m3b o3i2n3c o3i2n3ç o3i2n3d o3i2n3f o3i2n3g o3i3nh o3i2n3j o3i2n3l
+o3i2m3b o3i2n3c o3i2n3ç o3i2n3d o3i2n3f o3i2n3g o3i3nh o3i2n3j o3i2n3l
o3i2n3m o3i2m3p o3i2n3q o3i2n3r o3i2n3s o3i2n3t o3i2n3v o3i2n3x o3i2n3z
-o3u2m3b o3u2n3c o3u2n3ç o3u2n3d o3u2n3f o3u2n3g o3u3nh o3u2n3j o3u2n3l
+o3u2m3b o3u2n3c o3u2n3ç o3u2n3d o3u2n3f o3u2n3g o3u3nh o3u2n3j o3u2n3l
o3u2n3m o3u2m3p o3u2n3q o3u2n3r o3u2n3s o3u2n3t o3u2n3v o3u2n3x o3u2n3z
-u3i2m3b u3i2n3c u3i2n3ç u3i2n3d u3i2n3f u3i2n3g u3i3nh u3i2n3j u3i2n3l
+u3i2m3b u3i2n3c u3i2n3ç u3i2n3d u3i2n3f u3i2n3g u3i3nh u3i2n3j u3i2n3l
u3i2n3m u3i2m3p u3i2n3q u3i2n3r u3i2n3s u3i2n3t u3i2n3v u3i2n3x u3i2n3z
a3ir. a3i2r3d a3i2r3m a3i2r3t
e3ir. e3i2r3d e3i2r3m e3i2r3t
u3ir. u3i2r3d u3i2r3m u3i2r3t
-
-g2u2a g2u2á g2u2â g2u2e g2ü2e g2u2ê g2ü2ê g2u2i g2ü2i g2u2o
-q2u2a q2u2á q2u2â q2u2e q2ü2e q2u2ê q2ü2ê q2u2i q2ü2i q2u2o
+
+g2u2a g2u2á g2u2â g2u2e g2ü2e g2u2ê g2ü2ê g2u2i g2ü2i g2u2o
+q2u2a q2u2á q2u2â q2u2e q2ü2e q2u2ê q2ü2ê q2u2i q2ü2i q2u2o
-a2i3u a2i3ú a3i4u. a3o3e
-a2u3a a2u3á a2u3ã a3u2e a2u3e2n a2u3é a2u3ê a2u3i a2u3í a2u3o a2u3ó a2u3ô
-e2i3a e2i3á e2i3ã e2i3an e2i3e e2i3é e2i3ê e2i3en e2i3o e2i3ó e2i3ô e2i3on
-e2i3u e2i3ú e2u3a e2u3á e2u3ã e2u3an e3u2e e2u3é e2u3ê e2u3en e2u3i e2u3í
-e2u3in e2u3o e2u3ó e2u3ô e2u3on
-i3u2a i2u3á i2u3â i2u3ã i2u3an i3u2e i2u3é i2u3ê i2u3en i3u2i i2u3í i2u3in
-i3u2o i2u3ó i2u3ô i2u3on
-o2i3a o2i3á o2i3â o2i3ã o2i3an o3i2e o2i3é o2i3ê o2i3en o3i2o o2i3ó o2i3ô
-o2i3on o3i2u o2i3ú o2u3a o2u3á o2u3â o2u3ã o2u3an o3u2e o2u3é o2u3ê o2u3en
-o2u3i o2u3í o3u2o o2u3ó o2u3ô
-u2i3a u2i3á u2i3â u2i3ã u2i3an u2i3e u2i3é u3i2ê u2i3o u2i3ó u2i3ô u2i3on
-u2i3u u3i4u. u2i3ú
-
-g4u4a4i g4u4e4i g4ü4e4i g4u4ã4o g4u4ã4e g4u4õ4e
-q4u4e4i q4ü4e4i q4u4ã4o q4u4ã4e q4u4i4e
+a2i3u a2i3ú a3i4u. a3o3e
+a2u3a a2u3á a2u3ã a3u2e a2u3e2n a2u3é a2u3ê a2u3i a2u3à a2u3o a2u3ó a2u3ô
+e2i3a e2i3á e2i3ã e2i3an e2i3e e2i3é e2i3ê e2i3en e2i3o e2i3ó e2i3ô e2i3on
+e2i3u e2i3ú e2u3a e2u3á e2u3ã e2u3an e3u2e e2u3é e2u3ê e2u3en e2u3i e2u3Ã
+e2u3in e2u3o e2u3ó e2u3ô e2u3on
+i3u2a i2u3á i2u3â i2u3ã i2u3an i3u2e i2u3é i2u3ê i2u3en i3u2i i2u3à i2u3in
+i3u2o i2u3ó i2u3ô i2u3on
+o2i3a o2i3á o2i3â o2i3ã o2i3an o3i2e o2i3é o2i3ê o2i3en o3i2o o2i3ó o2i3ô
+o2i3on o3i2u o2i3ú o2u3a o2u3á o2u3â o2u3ã o2u3an o3u2e o2u3é o2u3ê o2u3en
+o2u3i o2u3à o3u2o o2u3ó o2u3ô
+u2i3a u2i3á u2i3â u2i3ã u2i3an u2i3e u2i3é u3i2ê u2i3o u2i3ó u2i3ô u2i3on
+u2i3u u3i4u. u2i3ú
+
+g4u4a4i g4u4e4i g4ü4e4i g4u4ã4o g4u4ã4e g4u4õ4e
+q4u4e4i q4ü4e4i q4u4ã4o q4u4ã4e q4u4i4e
d1l
-.su2b3l
+.su2b3l
.su3b4li3m
.su4b5li3mi3n
a1l2i2e3n
.a2n1c2h2i2e1t
.a2n1s2i2e1d
-d2i2e3t2é
+d2i2e3t2é
.h2i2e3n2a
-.h2i2e1r
+.h2i2e1r
di2o2u
-s2o3c2i2e s2o3c2i2o s2ó3c2i2o
+s2o3c2i2e s2o3c2i2o s2ó3c2i2o
.be3e2t3h2o3ven
.bud4d3l
diff --git a/hyph/src/main/resources/com/itextpdf/hyph/ru.xml b/hyph/src/main/resources/com/itextpdf/hyph/ru.xml
index b066a4b2e3..1ec9969ef2 100644
--- a/hyph/src/main/resources/com/itextpdf/hyph/ru.xml
+++ b/hyph/src/main/resources/com/itextpdf/hyph/ru.xml
@@ -1,4 +1,4 @@
-
+
- true
diff --git a/sign/pom.xml b/sign/pom.xml
index a0e0d843a6..410a60919d 100644
--- a/sign/pom.xml
+++ b/sign/pom.xml
@@ -4,7 +4,7 @@
com.itextpdf
root
- 7.2.1
+ 7.2.2
sign
iText 7 - sign
diff --git a/sign/src/main/java/com/itextpdf/signatures/BouncyCastleDigest.java b/sign/src/main/java/com/itextpdf/signatures/BouncyCastleDigest.java
index 19a5d9dc0d..a4e9fdabd4 100644
--- a/sign/src/main/java/com/itextpdf/signatures/BouncyCastleDigest.java
+++ b/sign/src/main/java/com/itextpdf/signatures/BouncyCastleDigest.java
@@ -1,7 +1,7 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: Bruno Lowagie, Paulo Soares, et al.
This program is free software; you can redistribute it and/or modify
@@ -73,27 +73,38 @@ public MessageDigest getMessageDigest(String hashAlgorithm) throws GeneralSecuri
throw new NoSuchAlgorithmException(hashAlgorithm);
}
switch (oid) {
- case "1.2.840.113549.2.2": //MD2
+ // MD2
+ case "1.2.840.113549.2.2":
return new MD2.Digest();
- case "1.2.840.113549.2.5": //MD5
+ // MD5
+ case "1.2.840.113549.2.5":
return new MD5.Digest();
- case "1.3.14.3.2.26": //SHA1
+ // SHA1
+ case "1.3.14.3.2.26":
return new SHA1.Digest();
- case "2.16.840.1.101.3.4.2.4": //SHA224
+ // SHA224
+ case "2.16.840.1.101.3.4.2.4":
return new SHA224.Digest();
- case "2.16.840.1.101.3.4.2.1": //SHA256
+ // SHA256
+ case "2.16.840.1.101.3.4.2.1":
return new SHA256.Digest();
- case "2.16.840.1.101.3.4.2.2": //SHA384
+ // SHA384
+ case "2.16.840.1.101.3.4.2.2":
return new SHA384.Digest();
- case "2.16.840.1.101.3.4.2.3": //SHA512
+ // SHA512
+ case "2.16.840.1.101.3.4.2.3":
return new SHA512.Digest();
- case "1.3.36.3.2.2": //RIPEMD128
+ // RIPEMD128
+ case "1.3.36.3.2.2":
return new RIPEMD128.Digest();
- case "1.3.36.3.2.1": //RIPEMD160
+ // RIPEMD160
+ case "1.3.36.3.2.1":
return new RIPEMD160.Digest();
- case "1.3.36.3.2.3": //RIPEMD256
+ // RIPEMD256
+ case "1.3.36.3.2.3":
return new RIPEMD256.Digest();
- case "1.2.643.2.2.9": //GOST3411
+ // GOST3411
+ case "1.2.643.2.2.9":
return new GOST3411.Digest();
default:
throw new NoSuchAlgorithmException(hashAlgorithm);
diff --git a/sign/src/main/java/com/itextpdf/signatures/CRLVerifier.java b/sign/src/main/java/com/itextpdf/signatures/CRLVerifier.java
index 49a7463c14..a4eef137c4 100644
--- a/sign/src/main/java/com/itextpdf/signatures/CRLVerifier.java
+++ b/sign/src/main/java/com/itextpdf/signatures/CRLVerifier.java
@@ -1,7 +1,7 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: Bruno Lowagie, Paulo Soares, et al.
This program is free software; you can redistribute it and/or modify
@@ -85,7 +85,8 @@ public CRLVerifier(CertificateVerifier verifier, List crls) {
* @param issuerCert its issuer
* @return a list of VerificationOK
objects.
* The list will be empty if the certificate couldn't be verified.
- * @see com.itextpdf.signatures.RootStoreVerifier#verify(java.security.cert.X509Certificate, java.security.cert.X509Certificate, java.util.Date)
+ * @see com.itextpdf.signatures.RootStoreVerifier#verify(java.security.cert.X509Certificate,
+ * java.security.cert.X509Certificate, java.util.Date)
*/
public List verify(X509Certificate signCert, X509Certificate issuerCert, Date signDate)
throws GeneralSecurityException {
@@ -94,8 +95,9 @@ public List verify(X509Certificate signCert, X509Certificate iss
// first check the list of CRLs that is provided
if (crls != null) {
for (X509CRL crl : crls) {
- if (verify(crl, signCert, issuerCert, signDate))
+ if (verify(crl, signCert, issuerCert, signDate)) {
validCrlsFound++;
+ }
}
}
// then check online if allowed
@@ -109,10 +111,12 @@ public List verify(X509Certificate signCert, X509Certificate iss
// show how many valid CRLs were found
LOGGER.info("Valid CRLs found: " + validCrlsFound);
if (validCrlsFound > 0) {
- result.add(new VerificationOK(signCert, this.getClass(), "Valid CRLs found: " + validCrlsFound + (online ? " (online)" : "")));
+ result.add(new VerificationOK(signCert, this.getClass(),
+ "Valid CRLs found: " + validCrlsFound + (online ? " (online)" : "")));
}
- if (verifier != null)
+ if (verifier != null) {
result.addAll(verifier.verify(signCert, issuerCert, signDate));
+ }
// verify using the previous verifier in the chain (if any)
return result;
}
@@ -126,12 +130,14 @@ public List verify(X509Certificate signCert, X509Certificate iss
* @return true if the verification succeeded
* @throws GeneralSecurityException thrown when certificate has been revoked
*/
- public boolean verify(X509CRL crl, X509Certificate signCert, X509Certificate issuerCert, Date signDate) throws GeneralSecurityException {
+ public boolean verify(X509CRL crl, X509Certificate signCert, X509Certificate issuerCert, Date signDate)
+ throws GeneralSecurityException {
if (crl == null || signDate == TimestampConstants.UNDEFINED_TIMESTAMP_DATE) {
return false;
}
// We only check CRLs valid on the signing date for which the issuer matches
- if (crl.getIssuerX500Principal().equals(signCert.getIssuerX500Principal()) && signDate.before(crl.getNextUpdate())) {
+ if (crl.getIssuerX500Principal().equals(signCert.getIssuerX500Principal())
+ && signDate.before(crl.getNextUpdate())) {
// the signing certificate may not be revoked
if (isSignatureValid(crl, issuerCert) && crl.isRevoked(signCert)) {
throw new VerificationException(signCert, "The certificate has been revoked.");
@@ -148,20 +154,18 @@ public boolean verify(X509CRL crl, X509Certificate signCert, X509Certificate iss
* @return an X509CRL object
*/
public X509CRL getCRL(X509Certificate signCert, X509Certificate issuerCert) {
- if (issuerCert == null)
+ if (issuerCert == null) {
issuerCert = signCert;
+ }
try {
// gets the URL from the certificate
String crlurl = CertificateUtil.getCRLURL(signCert);
- if (crlurl == null)
+ if (crlurl == null) {
return null;
+ }
LOGGER.info("Getting CRL from " + crlurl);
return (X509CRL) SignUtils.parseCrlFromStream(new URL(crlurl).openStream());
- }
- catch(IOException e) {
- return null;
- }
- catch(GeneralSecurityException e) {
+ } catch (IOException | GeneralSecurityException e) {
return null;
}
}
@@ -193,12 +197,12 @@ public boolean isSignatureValid(X509CRL crl, X509Certificate crlIssuer) {
crl.verify(anchor.getPublicKey());
return true;
} catch (GeneralSecurityException e) {
- continue;
+ // do nothing and continue
}
}
}
catch (GeneralSecurityException e) {
- return false;
+ // do nothing and return false at the end
}
return false;
}
diff --git a/sign/src/main/java/com/itextpdf/signatures/CertificateInfo.java b/sign/src/main/java/com/itextpdf/signatures/CertificateInfo.java
index 877390e154..97e30911b4 100644
--- a/sign/src/main/java/com/itextpdf/signatures/CertificateInfo.java
+++ b/sign/src/main/java/com/itextpdf/signatures/CertificateInfo.java
@@ -1,7 +1,7 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: Bruno Lowagie, Paulo Soares, et al.
This program is free software; you can redistribute it and/or modify
@@ -203,14 +203,14 @@ public X500Name(ASN1Sequence seq) {
for (int i = 0; i < set.size(); i++) {
ASN1Sequence s = (ASN1Sequence)set.getObjectAt(i);
String id = DefaultSymbols.get((ASN1ObjectIdentifier)s.getObjectAt(0));
- if (id == null)
- continue;
- List vs = values.get(id);
- if (vs == null) {
- vs = new ArrayList<>();
- values.put(id, vs);
+ if (id != null) {
+ List vs = values.get(id);
+ if (vs == null) {
+ vs = new ArrayList<>();
+ values.put(id, vs);
+ }
+ vs.add(((ASN1String) s.getObjectAt(1)).getString());
}
- vs.add(((ASN1String)s.getObjectAt(1)).getString());
}
}
}
@@ -221,7 +221,7 @@ public X500Name(ASN1Sequence seq) {
* @param dirName a directory name
*/
public X500Name(String dirName) {
- CertificateInfo.X509NameTokenizer nTok = new CertificateInfo.X509NameTokenizer(dirName);
+ CertificateInfo.X509NameTokenizer nTok = new CertificateInfo.X509NameTokenizer(dirName);
while (nTok.hasMoreTokens()) {
String token = nTok.nextToken();
@@ -240,7 +240,6 @@ public X500Name(String dirName) {
}
vs.add(value);
}
-
}
/**
@@ -251,7 +250,7 @@ public X500Name(String dirName) {
*/
public String getField(String name) {
List vs = values.get(name);
- return vs == null ? null : (String)vs.get(0);
+ return vs == null ? null : (String) vs.get(0);
}
/**
@@ -402,8 +401,9 @@ public static ASN1Primitive getIssuer(byte[] enc) {
*/
public static X500Name getSubjectFields(X509Certificate cert) {
try {
- if (cert != null)
+ if (cert != null) {
return new X500Name((ASN1Sequence)CertificateInfo.getSubject(cert.getTBSCertificate()));
+ }
}
catch (Exception e) {
throw new PdfException(e);
@@ -427,5 +427,4 @@ public static ASN1Primitive getSubject(byte[] enc) {
throw new PdfException(e);
}
}
-
}
diff --git a/sign/src/main/java/com/itextpdf/signatures/CertificateUtil.java b/sign/src/main/java/com/itextpdf/signatures/CertificateUtil.java
index 4e16e19b2c..adcf18bea3 100644
--- a/sign/src/main/java/com/itextpdf/signatures/CertificateUtil.java
+++ b/sign/src/main/java/com/itextpdf/signatures/CertificateUtil.java
@@ -1,7 +1,7 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: Bruno Lowagie, Paulo Soares, et al.
This program is free software; you can redistribute it and/or modify
@@ -156,17 +156,16 @@ public static String getOCSPURL(X509Certificate certificate) {
for (int i = 0; i < AccessDescriptions.size(); i++) {
ASN1Sequence AccessDescription = (ASN1Sequence) AccessDescriptions.getObjectAt(i);
if ( AccessDescription.size() != 2 ) {
- continue;
+ // do nothing and continue
}
else if (AccessDescription.getObjectAt(0) instanceof ASN1ObjectIdentifier) {
ASN1ObjectIdentifier id = (ASN1ObjectIdentifier)AccessDescription.getObjectAt(0);
if (SecurityIDs.ID_OCSP.equals(id.getId())) {
ASN1Primitive description = (ASN1Primitive)AccessDescription.getObjectAt(1);
- String AccessLocation = getStringFromGeneralName(description);
+ String AccessLocation = getStringFromGeneralName(description);
if (AccessLocation == null) {
return "" ;
- }
- else {
+ } else {
return AccessLocation ;
}
}
@@ -230,5 +229,4 @@ private static String getStringFromGeneralName(ASN1Primitive names) throws IOExc
ASN1TaggedObject taggedObject = (ASN1TaggedObject) names ;
return new String(ASN1OctetString.getInstance(taggedObject, false).getOctets(), "ISO-8859-1");
}
-
}
diff --git a/sign/src/main/java/com/itextpdf/signatures/CertificateVerification.java b/sign/src/main/java/com/itextpdf/signatures/CertificateVerification.java
index 5ff38485bd..918014fe0d 100644
--- a/sign/src/main/java/com/itextpdf/signatures/CertificateVerification.java
+++ b/sign/src/main/java/com/itextpdf/signatures/CertificateVerification.java
@@ -1,7 +1,7 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: Bruno Lowagie, Paulo Soares, et al.
This program is free software; you can redistribute it and/or modify
@@ -44,6 +44,7 @@ This file is part of the iText (R) project.
package com.itextpdf.signatures;
import com.itextpdf.commons.utils.DateTimeUtil;
+import com.itextpdf.signatures.exceptions.SignExceptionMessageConstant;
import com.itextpdf.signatures.logs.SignLogMessageConstant;
import org.bouncycastle.cert.ocsp.BasicOCSPResp;
import org.bouncycastle.tsp.TimeStampToken;
@@ -64,6 +65,9 @@ This file is part of the iText (R) project.
* This class consists of some methods that allow you to verify certificates.
*/
public class CertificateVerification {
+ public static final String HAS_UNSUPPORTED_EXTENSIONS = "Has unsupported critical extension";
+ public static final String CERTIFICATE_REVOKED = "Certificate revoked";
+
/**
* The Logger instance.
@@ -85,15 +89,16 @@ public static String verifyCertificate(X509Certificate cert, Collection crl
/**
* Verifies a single certificate.
*
- * @param cert the certificate to verify
- * @param crls the certificate revocation list or null
+ * @param cert the certificate to verify
+ * @param crls the certificate revocation list or null
* @param calendar the date, shall not be null
* @return a String
with the error description or null
* if no error
*/
public static String verifyCertificate(X509Certificate cert, Collection crls, Calendar calendar) {
- if (SignUtils.hasUnsupportedCriticalExtension(cert))
- return "Has unsupported critical extension";
+ if (SignUtils.hasUnsupportedCriticalExtension(cert)) {
+ return CertificateVerification.HAS_UNSUPPORTED_EXTENSIONS;
+ }
try {
cert.checkValidity(calendar.getTime());
} catch (Exception e) {
@@ -101,8 +106,9 @@ public static String verifyCertificate(X509Certificate cert, Collection crl
}
if (crls != null) {
for (CRL crl : crls) {
- if (crl.isRevoked(cert))
- return "Certificate revoked";
+ if (crl.isRevoked(cert)) {
+ return CertificateVerification.CERTIFICATE_REVOKED;
+ }
}
}
return null;
@@ -134,46 +140,56 @@ public static List verifyCertificates(Certificate[] certs
* Object[]{cert,error}
where cert
is the
* failed certificate and error
is the error message
*/
- public static List verifyCertificates(Certificate[] certs, KeyStore keystore, Collection crls, Calendar calendar) {
+ public static List verifyCertificates(Certificate[] certs, KeyStore keystore,
+ Collection crls, Calendar calendar) {
List result = new ArrayList<>();
for (int k = 0; k < certs.length; ++k) {
X509Certificate cert = (X509Certificate) certs[k];
String err = verifyCertificate(cert, crls, calendar);
- if (err != null)
+ if (err != null) {
result.add(new VerificationException(cert, err));
+ }
try {
for (X509Certificate certStoreX509 : SignUtils.getCertificates(keystore)) {
try {
- if (verifyCertificate(certStoreX509, crls, calendar) != null)
+ if (verifyCertificate(certStoreX509, crls, calendar) != null) {
continue;
+ }
try {
cert.verify(certStoreX509.getPublicKey());
return result;
} catch (Exception e) {
- continue;
+ // do nothing and continue
}
} catch (Exception ex) {
+ // Do nothing.
}
}
} catch (Exception e) {
+ // Do nothing.
}
int j;
for (j = 0; j < certs.length; ++j) {
- if (j == k)
+ if (j == k) {
continue;
+ }
X509Certificate certNext = (X509Certificate) certs[j];
try {
cert.verify(certNext.getPublicKey());
break;
} catch (Exception e) {
+ // Do nothing.
}
}
if (j == certs.length) {
- result.add(new VerificationException(cert, "Cannot be verified against the KeyStore or the certificate chain"));
+ result.add(new VerificationException(cert,
+ SignExceptionMessageConstant.CANNOT_BE_VERIFIED_CERTIFICATE_CHAIN));
}
}
- if (result.size() == 0)
- result.add(new VerificationException((Certificate) null, "Invalid state. Possible circular certificate chain"));
+ if (result.size() == 0) {
+ result.add(new VerificationException((Certificate) null,
+ SignExceptionMessageConstant.INVALID_STATE_WHILE_CHECKING_CERT_CHAIN));
+ }
return result;
}
@@ -200,7 +216,8 @@ public static List verifyCertificates(Certificate[] certs
* Object[]{cert,error}
where cert
is the
* failed certificate and error
is the error message
*/
- public static List verifyCertificates(Certificate[] certs, KeyStore keystore, Calendar calendar) {
+ public static List verifyCertificates(Certificate[] certs, KeyStore keystore,
+ Calendar calendar) {
return verifyCertificates(certs, keystore, null, calendar);
}
@@ -261,9 +278,10 @@ public static boolean verifyTimestampCertificates(TimeStampToken ts, KeyStore ke
private static void logExceptionMessages(List exceptionsThrown) {
for (Exception ex : exceptionsThrown) {
- LOGGER.error(ex.getMessage() == null ?
- SignLogMessageConstant.EXCEPTION_WITHOUT_MESSAGE : ex.getMessage(), ex);
+ LOGGER.error(ex.getMessage() == null
+ ? SignLogMessageConstant.EXCEPTION_WITHOUT_MESSAGE
+ : ex.getMessage(),
+ ex);
}
}
-
}
diff --git a/sign/src/main/java/com/itextpdf/signatures/CertificateVerifier.java b/sign/src/main/java/com/itextpdf/signatures/CertificateVerifier.java
index afdf2b9eaa..84ebdd03bf 100644
--- a/sign/src/main/java/com/itextpdf/signatures/CertificateVerifier.java
+++ b/sign/src/main/java/com/itextpdf/signatures/CertificateVerifier.java
@@ -1,7 +1,7 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: Bruno Lowagie, Paulo Soares, et al.
This program is free software; you can redistribute it and/or modify
@@ -94,8 +94,9 @@ public void setOnlineCheckingAllowed(boolean onlineCheckingAllowed) {
public List verify(X509Certificate signCert, X509Certificate issuerCert, Date signDate)
throws GeneralSecurityException {
// Check if the certificate is valid on the signDate
- if (signDate != null)
+ if (signDate != null) {
signCert.checkValidity(signDate);
+ }
// Check if the signature is valid
if (issuerCert != null) {
signCert.verify(issuerCert.getPublicKey());
diff --git a/sign/src/main/java/com/itextpdf/signatures/CrlClientOffline.java b/sign/src/main/java/com/itextpdf/signatures/CrlClientOffline.java
index 31b42ae09f..f7c804de5e 100644
--- a/sign/src/main/java/com/itextpdf/signatures/CrlClientOffline.java
+++ b/sign/src/main/java/com/itextpdf/signatures/CrlClientOffline.java
@@ -1,7 +1,7 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: Bruno Lowagie, Paulo Soares, et al.
This program is free software; you can redistribute it and/or modify
diff --git a/sign/src/main/java/com/itextpdf/signatures/CrlClientOnline.java b/sign/src/main/java/com/itextpdf/signatures/CrlClientOnline.java
index f329c6d794..48d1a1ab31 100644
--- a/sign/src/main/java/com/itextpdf/signatures/CrlClientOnline.java
+++ b/sign/src/main/java/com/itextpdf/signatures/CrlClientOnline.java
@@ -1,7 +1,7 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: Bruno Lowagie, Paulo Soares, et al.
This program is free software; you can redistribute it and/or modify
@@ -133,24 +133,27 @@ public CrlClientOnline(Certificate[] chain) {
*/
@Override
public Collection getEncoded(X509Certificate checkCert, String url) {
- if (checkCert == null)
+ if (checkCert == null) {
return null;
- List urllist = new ArrayList<>(urls);
- if (urllist.size() == 0) {
+ }
+ List urlList = new ArrayList<>(urls);
+ if (urlList.size() == 0) {
LOGGER.info("Looking for CRL for certificate " + checkCert.getSubjectDN());
try {
- if (url == null)
+ if (url == null) {
url = CertificateUtil.getCRLURL(checkCert);
- if (url == null)
+ }
+ if (url == null) {
throw new IllegalArgumentException("Passed url can not be null.");
- urllist.add(new URL(url));
+ }
+ urlList.add(new URL(url));
LOGGER.info("Found CRL url: " + url);
} catch (Exception e) {
LOGGER.info("Skipped CRL url: " + e.getMessage());
}
}
List ar = new ArrayList<>();
- for (URL urlt : urllist) {
+ for (URL urlt : urlList) {
try {
LOGGER.info("Checking CRL: " + urlt);
InputStream inp = SignUtils.getHttpResponse(urlt);
@@ -158,15 +161,17 @@ public Collection getEncoded(X509Certificate checkCert, String url) {
ByteArrayOutputStream bout = new ByteArrayOutputStream();
while (true) {
int n = inp.read(buf, 0, buf.length);
- if (n <= 0)
+ if (n <= 0) {
break;
+ }
bout.write(buf, 0, n);
}
inp.close();
ar.add(bout.toByteArray());
LOGGER.info("Added CRL found at: " + urlt);
} catch (Exception e) {
- LOGGER.info(MessageFormatUtil.format(IoLogMessageConstant.INVALID_DISTRIBUTION_POINT, e.getMessage()));
+ LOGGER.info(MessageFormatUtil.format(IoLogMessageConstant.INVALID_DISTRIBUTION_POINT,
+ e.getMessage()));
}
}
return ar;
diff --git a/sign/src/main/java/com/itextpdf/signatures/DigestAlgorithms.java b/sign/src/main/java/com/itextpdf/signatures/DigestAlgorithms.java
index dba28e658e..ecd4b59dc2 100644
--- a/sign/src/main/java/com/itextpdf/signatures/DigestAlgorithms.java
+++ b/sign/src/main/java/com/itextpdf/signatures/DigestAlgorithms.java
@@ -1,7 +1,7 @@
/*
*
* This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
* Authors: Bruno Lowagie, Paulo Soares, et al.
*
* This program is free software; you can redistribute it and/or modify
@@ -231,10 +231,11 @@ public static byte[] digest(InputStream data, MessageDigest messageDigest)
*/
public static String getDigest(String oid) {
String ret = digestNames.get(oid);
- if (ret == null)
+ if (ret == null) {
return oid;
- else
+ } else {
return ret;
+ }
}
/**
@@ -244,8 +245,9 @@ public static String getDigest(String oid) {
* @return normalized name
*/
public static String normalizeDigestName(String algo) {
- if (fixNames.containsKey(algo))
+ if (fixNames.containsKey(algo)) {
return fixNames.get(algo);
+ }
return algo;
}
@@ -258,7 +260,8 @@ public static String normalizeDigestName(String algo) {
*/
public static String getAllowedDigest(String name) {
if (name == null) {
- throw new IllegalArgumentException(SignExceptionMessageConstant.THE_NAME_OF_THE_DIGEST_ALGORITHM_IS_NULL);
+ throw new IllegalArgumentException(
+ SignExceptionMessageConstant.THE_NAME_OF_THE_DIGEST_ALGORITHM_IS_NULL);
}
return allowedDigests.get(name.toUpperCase());
}
diff --git a/sign/src/main/java/com/itextpdf/signatures/EncryptionAlgorithms.java b/sign/src/main/java/com/itextpdf/signatures/EncryptionAlgorithms.java
index f6244f96ca..848cb62f96 100644
--- a/sign/src/main/java/com/itextpdf/signatures/EncryptionAlgorithms.java
+++ b/sign/src/main/java/com/itextpdf/signatures/EncryptionAlgorithms.java
@@ -1,7 +1,7 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: Bruno Lowagie, Paulo Soares, et al.
This program is free software; you can redistribute it and/or modify
@@ -73,13 +73,18 @@ public class EncryptionAlgorithms {
algorithmNames.put("1.3.36.3.3.1.4", "RSA");
algorithmNames.put("1.2.643.2.2.19", "ECGOST3410");
- algorithmNames.put("1.2.840.10045.2.1", "ECDSA"); //Elliptic curve public key cryptography.
- algorithmNames.put("1.2.840.10045.4.1", "ECDSA"); //Elliptic curve Digital Signature Algorithm (DSA) coupled with the Secure Hashing Algorithm (SHA) algorithm.
- algorithmNames.put("1.2.840.10045.4.3", "ECDSA"); //Elliptic curve Digital Signature Algorithm (DSA).
- algorithmNames.put("1.2.840.10045.4.3.2", "ECDSA"); //Elliptic curve Digital Signature Algorithm (DSA) coupled with the Secure Hashing Algorithm (SHA256) algorithm.
- algorithmNames.put("1.2.840.10045.4.3.3", "ECDSA"); //Elliptic curve Digital Signature Algorithm (DSA) coupled with the Secure Hashing Algorithm (SHA384) algorithm.
- algorithmNames.put("1.2.840.10045.4.3.4", "ECDSA"); //Elliptic curve Digital Signature Algorithm (DSA) coupled with the Secure Hashing Algorithm (SHA512) algorithm.
-
+ // Elliptic curve public key cryptography
+ algorithmNames.put("1.2.840.10045.2.1", "ECDSA");
+ // Elliptic curve Digital Signature Algorithm (DSA) coupled with the Secure Hashing Algorithm (SHA) algorithm
+ algorithmNames.put("1.2.840.10045.4.1", "ECDSA");
+ // Elliptic curve Digital Signature Algorithm (DSA)
+ algorithmNames.put("1.2.840.10045.4.3", "ECDSA");
+ // Elliptic curve Digital Signature Algorithm (DSA) coupled with the Secure Hashing Algorithm (SHA256) algorithm
+ algorithmNames.put("1.2.840.10045.4.3.2", "ECDSA");
+ // Elliptic curve Digital Signature Algorithm (DSA) coupled with the Secure Hashing Algorithm (SHA384) algorithm
+ algorithmNames.put("1.2.840.10045.4.3.3", "ECDSA");
+ // Elliptic curve Digital Signature Algorithm (DSA) coupled with the Secure Hashing Algorithm (SHA512) algorithm
+ algorithmNames.put("1.2.840.10045.4.3.4", "ECDSA");
}
/**
@@ -89,9 +94,10 @@ public class EncryptionAlgorithms {
*/
public static String getAlgorithm(String oid) {
String ret = algorithmNames.get(oid);
- if (ret == null)
+ if (ret == null) {
return oid;
- else
+ } else {
return ret;
+ }
}
}
diff --git a/sign/src/main/java/com/itextpdf/signatures/ExternalBlankSignatureContainer.java b/sign/src/main/java/com/itextpdf/signatures/ExternalBlankSignatureContainer.java
index 309448954f..31831fd78f 100644
--- a/sign/src/main/java/com/itextpdf/signatures/ExternalBlankSignatureContainer.java
+++ b/sign/src/main/java/com/itextpdf/signatures/ExternalBlankSignatureContainer.java
@@ -1,7 +1,7 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: Bruno Lowagie, Paulo Soares, et al.
This program is free software; you can redistribute it and/or modify
@@ -89,5 +89,4 @@ public byte[] sign(InputStream data) throws GeneralSecurityException {
public void modifySigningDictionary(PdfDictionary signDic) {
signDic.putAll(sigDic);
}
-
}
diff --git a/sign/src/main/java/com/itextpdf/signatures/ICrlClient.java b/sign/src/main/java/com/itextpdf/signatures/ICrlClient.java
index 1a68886f41..7efd4fbe71 100644
--- a/sign/src/main/java/com/itextpdf/signatures/ICrlClient.java
+++ b/sign/src/main/java/com/itextpdf/signatures/ICrlClient.java
@@ -1,7 +1,7 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: Bruno Lowagie, Paulo Soares, et al.
This program is free software; you can redistribute it and/or modify
diff --git a/sign/src/main/java/com/itextpdf/signatures/IExternalDigest.java b/sign/src/main/java/com/itextpdf/signatures/IExternalDigest.java
index b1ff94c696..091a131be5 100644
--- a/sign/src/main/java/com/itextpdf/signatures/IExternalDigest.java
+++ b/sign/src/main/java/com/itextpdf/signatures/IExternalDigest.java
@@ -1,7 +1,7 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: Bruno Lowagie, Paulo Soares, et al.
This program is free software; you can redistribute it and/or modify
diff --git a/sign/src/main/java/com/itextpdf/signatures/IExternalSignature.java b/sign/src/main/java/com/itextpdf/signatures/IExternalSignature.java
index 53962bd3b3..92a29c9032 100644
--- a/sign/src/main/java/com/itextpdf/signatures/IExternalSignature.java
+++ b/sign/src/main/java/com/itextpdf/signatures/IExternalSignature.java
@@ -1,7 +1,7 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: Bruno Lowagie, Paulo Soares, et al.
This program is free software; you can redistribute it and/or modify
diff --git a/sign/src/main/java/com/itextpdf/signatures/IExternalSignatureContainer.java b/sign/src/main/java/com/itextpdf/signatures/IExternalSignatureContainer.java
index dd8f9901d4..d6ed1a2ee4 100644
--- a/sign/src/main/java/com/itextpdf/signatures/IExternalSignatureContainer.java
+++ b/sign/src/main/java/com/itextpdf/signatures/IExternalSignatureContainer.java
@@ -1,7 +1,7 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: Bruno Lowagie, Paulo Soares, et al.
This program is free software; you can redistribute it and/or modify
diff --git a/sign/src/main/java/com/itextpdf/signatures/IOcspClient.java b/sign/src/main/java/com/itextpdf/signatures/IOcspClient.java
index 90d7fbf141..b52b5dbd55 100644
--- a/sign/src/main/java/com/itextpdf/signatures/IOcspClient.java
+++ b/sign/src/main/java/com/itextpdf/signatures/IOcspClient.java
@@ -1,7 +1,7 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: Bruno Lowagie, Paulo Soares, et al.
This program is free software; you can redistribute it and/or modify
diff --git a/sign/src/main/java/com/itextpdf/signatures/ITSAClient.java b/sign/src/main/java/com/itextpdf/signatures/ITSAClient.java
index 92908419e1..6fd60b64c5 100644
--- a/sign/src/main/java/com/itextpdf/signatures/ITSAClient.java
+++ b/sign/src/main/java/com/itextpdf/signatures/ITSAClient.java
@@ -1,7 +1,7 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: Bruno Lowagie, Paulo Soares, et al.
This program is free software; you can redistribute it and/or modify
diff --git a/sign/src/main/java/com/itextpdf/signatures/ITSAInfoBouncyCastle.java b/sign/src/main/java/com/itextpdf/signatures/ITSAInfoBouncyCastle.java
index a447e06a6e..8674f11a1d 100644
--- a/sign/src/main/java/com/itextpdf/signatures/ITSAInfoBouncyCastle.java
+++ b/sign/src/main/java/com/itextpdf/signatures/ITSAInfoBouncyCastle.java
@@ -1,7 +1,7 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: Bruno Lowagie, Paulo Soares, et al.
This program is free software; you can redistribute it and/or modify
diff --git a/sign/src/main/java/com/itextpdf/signatures/KeyStoreUtil.java b/sign/src/main/java/com/itextpdf/signatures/KeyStoreUtil.java
index 483bc96a33..7278c9cf42 100644
--- a/sign/src/main/java/com/itextpdf/signatures/KeyStoreUtil.java
+++ b/sign/src/main/java/com/itextpdf/signatures/KeyStoreUtil.java
@@ -1,7 +1,7 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: Bruno Lowagie, Paulo Soares, et al.
This program is free software; you can redistribute it and/or modify
@@ -66,10 +66,11 @@ public static KeyStore loadCacertsKeyStore(String provider) {
try {
fin = new FileInputStream(file);
KeyStore k;
- if (provider == null)
+ if (provider == null) {
k = KeyStore.getInstance("JKS");
- else
+ } else {
k = KeyStore.getInstance("JKS", provider);
+ }
k.load(fin, null);
return k;
}
@@ -77,7 +78,13 @@ public static KeyStore loadCacertsKeyStore(String provider) {
throw new PdfException(e);
}
finally {
- try{if (fin != null) {fin.close();}}catch(Exception ex){}
+ try {
+ if (fin != null) {
+ fin.close();
+ }
+ } catch (Exception ex) {
+ // do nothing
+ }
}
}
@@ -89,5 +96,4 @@ public static KeyStore loadCacertsKeyStore(String provider) {
public static KeyStore loadCacertsKeyStore() {
return loadCacertsKeyStore(null);
}
-
}
diff --git a/sign/src/main/java/com/itextpdf/signatures/LtvVerification.java b/sign/src/main/java/com/itextpdf/signatures/LtvVerification.java
index 035be0475d..5d3e055c8e 100644
--- a/sign/src/main/java/com/itextpdf/signatures/LtvVerification.java
+++ b/sign/src/main/java/com/itextpdf/signatures/LtvVerification.java
@@ -1,7 +1,7 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: Bruno Lowagie, Paulo Soares, et al.
This program is free software; you can redistribute it and/or modify
@@ -59,17 +59,6 @@ This file is part of the iText (R) project.
import com.itextpdf.kernel.pdf.PdfString;
import com.itextpdf.kernel.pdf.PdfVersion;
import com.itextpdf.signatures.exceptions.SignExceptionMessageConstant;
-import org.bouncycastle.asn1.ASN1InputStream;
-import org.bouncycastle.asn1.ASN1Primitive;
-import org.bouncycastle.asn1.DEROctetString;
-import org.bouncycastle.asn1.ocsp.OCSPObjectIdentifiers;
-import org.bouncycastle.asn1.ocsp.OCSPResponse;
-import org.bouncycastle.asn1.ocsp.OCSPResponseStatus;
-import org.bouncycastle.asn1.ocsp.ResponseBytes;
-import org.bouncycastle.cert.ocsp.OCSPResp;
-import org.bouncycastle.cert.ocsp.OCSPRespBuilder;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
import java.io.ByteArrayInputStream;
import java.io.IOException;
@@ -84,6 +73,18 @@ This file is part of the iText (R) project.
import java.util.HashMap;
import java.util.List;
import java.util.Map;
+import java.util.Objects;
+import org.bouncycastle.asn1.ASN1InputStream;
+import org.bouncycastle.asn1.ASN1Primitive;
+import org.bouncycastle.asn1.DEROctetString;
+import org.bouncycastle.asn1.ocsp.OCSPObjectIdentifiers;
+import org.bouncycastle.asn1.ocsp.OCSPResponse;
+import org.bouncycastle.asn1.ocsp.OCSPResponseStatus;
+import org.bouncycastle.asn1.ocsp.ResponseBytes;
+import org.bouncycastle.cert.ocsp.OCSPResp;
+import org.bouncycastle.cert.ocsp.OCSPRespBuilder;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
/**
* Add verification according to PAdES-LTV (part 4).
@@ -190,7 +191,8 @@ public LtvVerification(PdfDocument document, String securityProviderCode){
* is not available
* @throws IOException signals that an I/O exception has occurred
*/
- public boolean addVerification(String signatureName, IOcspClient ocsp, ICrlClient crl, CertificateOption certOption, Level level, CertificateInclusion certInclude) throws IOException, GeneralSecurityException {
+ public boolean addVerification(String signatureName, IOcspClient ocsp, ICrlClient crl, CertificateOption certOption,
+ Level level, CertificateInclusion certInclude) throws IOException, GeneralSecurityException {
if (used)
throw new IllegalStateException(SignExceptionMessageConstant.VERIFICATION_ALREADY_OUTPUT);
PdfPKCS7 pk = sgnUtil.readSignatureData(signatureName, securityProviderCode);
@@ -214,7 +216,9 @@ public boolean addVerification(String signatureName, IOcspClient ocsp, ICrlClien
LOGGER.info("OCSP added");
}
}
- if (crl != null && (level == Level.CRL || level == Level.OCSP_CRL || (level == Level.OCSP_OPTIONAL_CRL && ocspEnc == null))) {
+ if (crl != null
+ && (level == Level.CRL || level == Level.OCSP_CRL
+ || (level == Level.OCSP_OPTIONAL_CRL && ocspEnc == null))) {
Collection cims = crl.getEncoded(cert, null);
if (cims != null) {
for (byte[] cim : cims) {
@@ -236,8 +240,9 @@ public boolean addVerification(String signatureName, IOcspClient ocsp, ICrlClien
vd.certs.add(cert.getEncoded());
}
}
- if (vd.crls.size() == 0 && vd.ocsps.size() == 0)
+ if (vd.crls.size() == 0 && vd.ocsps.size() == 0) {
return false;
+ }
validated.put(getSignatureHashKey(signatureName), vd);
return true;
}
@@ -253,8 +258,9 @@ private X509Certificate getParent(X509Certificate cert, Certificate[] certs) {
X509Certificate parent;
for (int i = 0; i < certs.length; i++) {
parent = (X509Certificate)certs[i];
- if (!cert.getIssuerDN().equals(parent.getSubjectDN()))
+ if (!cert.getIssuerDN().equals(parent.getSubjectDN())) {
continue;
+ }
try {
cert.verify(parent.getPublicKey());
return parent;
@@ -277,7 +283,8 @@ private X509Certificate getParent(X509Certificate cert, Certificate[] certs) {
* @throws GeneralSecurityException when requested cryptographic algorithm or security provider
* is not available
*/
- public boolean addVerification(String signatureName, Collection ocsps, Collection crls, Collection certs) throws IOException, GeneralSecurityException {
+ public boolean addVerification(String signatureName, Collection ocsps, Collection crls,
+ Collection certs) throws IOException, GeneralSecurityException {
if (used)
throw new IllegalStateException(SignExceptionMessageConstant.VERIFICATION_ALREADY_OUTPUT);
ValidationData vd = new ValidationData();
@@ -336,10 +343,11 @@ public void merge() {
used = true;
PdfDictionary catalog = document.getCatalog().getPdfObject();
PdfObject dss = catalog.get(PdfName.DSS);
- if (dss == null)
+ if (dss == null) {
createDss();
- else
+ } else {
updateDss();
+ }
}
private void updateDss() {
@@ -353,7 +361,7 @@ private void updateDss() {
dss.remove(PdfName.CRLs);
dss.remove(PdfName.Certs);
PdfDictionary vrim = dss.getAsDictionary(PdfName.VRI);
- //delete old validations
+ // delete old validations
if (vrim != null) {
for (PdfName n : vrim.keySet()) {
if (validated.containsKey(n)) {
@@ -382,25 +390,19 @@ private void updateDss() {
}
private static void deleteOldReferences(PdfArray all, PdfArray toDelete) {
- if (all == null || toDelete == null)
+ if (all == null || toDelete == null) {
return;
- for (PdfObject pi : toDelete) {
- PdfIndirectReference pir = pi.getIndirectReference();
-
- if (pir == null) {
- continue;
- }
+ }
- for (int k = 0; k < all.size(); ++k) {
- PdfIndirectReference pod = all.get(k).getIndirectReference();
+ for (PdfObject pi : toDelete) {
+ final PdfIndirectReference pir = pi.getIndirectReference();
- if (pod == null) {
- continue;
- }
+ for (int i = 0; i < all.size(); i++) {
+ final PdfIndirectReference pod = all.get(i).getIndirectReference();
- if (pir.getObjNumber() == pod.getObjNumber()) {
- all.remove(k);
- --k;
+ if (Objects.equals(pir, pod)) {
+ all.remove(i);
+ i--;
}
}
}
diff --git a/sign/src/main/java/com/itextpdf/signatures/LtvVerifier.java b/sign/src/main/java/com/itextpdf/signatures/LtvVerifier.java
index 574dd1e4c5..53969a215c 100644
--- a/sign/src/main/java/com/itextpdf/signatures/LtvVerifier.java
+++ b/sign/src/main/java/com/itextpdf/signatures/LtvVerifier.java
@@ -1,7 +1,7 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: Bruno Lowagie, Paulo Soares, et al.
This program is free software; you can redistribute it and/or modify
@@ -43,10 +43,10 @@ This file is part of the iText (R) project.
*/
package com.itextpdf.signatures;
-import com.itextpdf.forms.PdfAcroForm;
+import com.itextpdf.commons.actions.contexts.IMetaInfo;
import com.itextpdf.commons.utils.DateTimeUtil;
import com.itextpdf.commons.utils.MessageFormatUtil;
-import com.itextpdf.commons.actions.contexts.IMetaInfo;
+import com.itextpdf.forms.PdfAcroForm;
import com.itextpdf.kernel.pdf.DocumentProperties;
import com.itextpdf.kernel.pdf.PdfArray;
import com.itextpdf.kernel.pdf.PdfDictionary;
@@ -54,11 +54,7 @@ This file is part of the iText (R) project.
import com.itextpdf.kernel.pdf.PdfName;
import com.itextpdf.kernel.pdf.PdfReader;
import com.itextpdf.kernel.pdf.PdfStream;
-import org.bouncycastle.cert.ocsp.BasicOCSPResp;
-import org.bouncycastle.cert.ocsp.OCSPException;
-import org.bouncycastle.cert.ocsp.OCSPResp;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
+import com.itextpdf.signatures.LtvVerification.CertificateOption;
import java.io.ByteArrayInputStream;
import java.io.IOException;
@@ -70,8 +66,11 @@ This file is part of the iText (R) project.
import java.util.Calendar;
import java.util.Date;
import java.util.List;
-
-import static com.itextpdf.signatures.LtvVerification.CertificateOption;
+import org.bouncycastle.cert.ocsp.BasicOCSPResp;
+import org.bouncycastle.cert.ocsp.OCSPException;
+import org.bouncycastle.cert.ocsp.OCSPResp;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
/**
* Verifies the signatures in an LTV document.
@@ -115,6 +114,7 @@ public LtvVerifier(PdfDocument document) throws GeneralSecurityException {
super(null);
initLtvVerifier(document);
}
+
public LtvVerifier(PdfDocument document, String securityProviderCode) throws GeneralSecurityException {
super(null);
this.securityProviderCode = securityProviderCode;
@@ -164,8 +164,9 @@ public void setEventCountingMetaInfo(IMetaInfo metaInfo) {
* @throws GeneralSecurityException if some problems with signature or security occurred
*/
public List verify(List result) throws IOException, GeneralSecurityException {
- if (result == null)
+ if (result == null) {
result = new ArrayList<>();
+ }
while (pkcs7 != null) {
result.addAll(verifySignature());
}
@@ -198,8 +199,9 @@ public List verifySignature() throws GeneralSecurityException, I
signCert = (X509Certificate) chain[i++];
// its issuer
issuerCert = (X509Certificate) null;
- if (i < chain.length)
+ if (i < chain.length) {
issuerCert = (X509Certificate) chain[i];
+ }
// now lets verify the certificate
LOGGER.info(signCert.getSubjectDN().getName());
List list = verify(signCert, issuerCert, signDate);
@@ -242,8 +244,9 @@ public void verifyChain(Certificate[] chain) throws GeneralSecurityException {
// check if the certificate was/is valid
cert.checkValidity(signDate);
// check if the previous certificate was issued by this certificate
- if (i > 0)
- chain[i-1].verify(chain[i].getPublicKey());
+ if (i > 0) {
+ chain[i - 1].verify(chain[i].getPublicKey());
+ }
}
LOGGER.info("All certificates are valid on " + signDate.toString());
}
@@ -255,11 +258,12 @@ public void verifyChain(Certificate[] chain) throws GeneralSecurityException {
* @return a list of VerificationOK
objects.
* The list will be empty if the certificate couldn't be verified.
* @throws GeneralSecurityException if some problems with signature or security occurred
- * @see com.itextpdf.signatures.RootStoreVerifier#verify(java.security.cert.X509Certificate, java.security.cert.X509Certificate, java.util.Date)
+ * @see com.itextpdf.signatures.RootStoreVerifier#verify(java.security.cert.X509Certificate,
+ * java.security.cert.X509Certificate, java.util.Date)
*/
public List verify(X509Certificate signCert, X509Certificate issuerCert, Date signDate)
throws GeneralSecurityException {
- // we'll verify agains the rootstore (if present)
+ // we'll verify against the rootstore (if present)
RootStoreVerifier rootStoreVerifier = new RootStoreVerifier(verifier);
rootStoreVerifier.setRootStore(rootStore);
// We'll verify against a list of CRLs
@@ -293,13 +297,16 @@ public void switchToPreviousRevision() throws IOException, GeneralSecurityExcept
if (names.size() > 1) {
signatureName = names.get(names.size() - 2);
try (PdfReader readerTmp = new PdfReader(sgnUtil.extractRevision(signatureName))) {
- document = new PdfDocument(readerTmp, new DocumentProperties().setEventCountingMetaInfo(metaInfo));
- this.acroForm = PdfAcroForm.getAcroForm(document, true);
- this.sgnUtil = new SignatureUtil(document);
- names = sgnUtil.getSignatureNames();
- signatureName = names.get(names.size() - 1);
- pkcs7 = coversWholeDocument();
- LOGGER.info(MessageFormatUtil.format("Checking {0}signature {1}", pkcs7.isTsp() ? "document-level timestamp " : "", signatureName));
+ document = new PdfDocument(readerTmp, new DocumentProperties().setEventCountingMetaInfo(metaInfo));
+ this.acroForm = PdfAcroForm.getAcroForm(document, true);
+ this.sgnUtil = new SignatureUtil(document);
+ names = sgnUtil.getSignatureNames();
+ signatureName = names.get(names.size() - 1);
+ pkcs7 = coversWholeDocument();
+ LOGGER.info(
+ MessageFormatUtil.format("Checking {0}signature {1}", pkcs7.isTsp()
+ ? "document-level timestamp "
+ : "", signatureName));
}
}
else {
@@ -316,11 +323,13 @@ public void switchToPreviousRevision() throws IOException, GeneralSecurityExcept
*/
public List getCRLsFromDSS() throws GeneralSecurityException {
List crls = new ArrayList<>();
- if (dss == null)
+ if (dss == null) {
return crls;
+ }
PdfArray crlarray = dss.getAsArray(PdfName.CRLs);
- if (crlarray == null)
+ if (crlarray == null) {
return crls;
+ }
for (int i = 0; i < crlarray.size(); i++) {
PdfStream stream = crlarray.getAsStream(i);
crls.add((X509CRL) SignUtils.parseCrlFromStream(new ByteArrayInputStream(stream.getBytes())));
@@ -335,11 +344,13 @@ public List getCRLsFromDSS() throws GeneralSecurityException {
*/
public List getOCSPResponsesFromDSS() throws GeneralSecurityException {
List ocsps = new ArrayList<>();
- if (dss == null)
+ if (dss == null) {
return ocsps;
+ }
PdfArray ocsparray = dss.getAsArray(PdfName.OCSPs);
- if (ocsparray == null)
+ if (ocsparray == null) {
return ocsps;
+ }
for (int i = 0; i < ocsparray.size(); i++) {
PdfStream stream = ocsparray.getAsStream(i);
OCSPResp ocspResponse;
@@ -366,7 +377,12 @@ protected void initLtvVerifier(PdfDocument document) throws GeneralSecurityExcep
signatureName = names.get(names.size() - 1);
this.signDate = DateTimeUtil.getCurrentTimeDate();
pkcs7 = coversWholeDocument();
- LOGGER.info(MessageFormatUtil.format("Checking {0}signature {1}", pkcs7.isTsp() ? "document-level timestamp " : "", signatureName));
+ LOGGER.info(
+ MessageFormatUtil.format(
+ "Checking {0}signature {1}", pkcs7.isTsp()
+ ? "document-level timestamp "
+ : "",
+ signatureName));
}
/**
@@ -379,15 +395,13 @@ protected PdfPKCS7 coversWholeDocument() throws GeneralSecurityException {
PdfPKCS7 pkcs7 = sgnUtil.readSignatureData(signatureName, securityProviderCode);
if (sgnUtil.signatureCoversWholeDocument(signatureName)) {
LOGGER.info("The timestamp covers whole document.");
- }
- else {
+ } else {
throw new VerificationException((Certificate) null, "Signature doesn't cover whole document.");
}
if (pkcs7.verifySignatureIntegrityAndAuthenticity()) {
LOGGER.info("The signed document has not been modified.");
return pkcs7;
- }
- else {
+ } else {
throw new VerificationException((Certificate) null, "The document was altered after the final signature was applied.");
}
}
diff --git a/sign/src/main/java/com/itextpdf/signatures/OCSPVerifier.java b/sign/src/main/java/com/itextpdf/signatures/OCSPVerifier.java
index a1bb7329a4..f3d2762c16 100644
--- a/sign/src/main/java/com/itextpdf/signatures/OCSPVerifier.java
+++ b/sign/src/main/java/com/itextpdf/signatures/OCSPVerifier.java
@@ -1,7 +1,7 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: Bruno Lowagie, Paulo Soares, et al.
This program is free software; you can redistribute it and/or modify
@@ -96,18 +96,19 @@ public OCSPVerifier(CertificateVerifier verifier, List ocsps) {
*
* @return a list of VerificationOK
objects.
* The list will be empty if the certificate couldn't be verified.
- * @see com.itextpdf.signatures.RootStoreVerifier#verify(java.security.cert.X509Certificate, java.security.cert.X509Certificate, java.util.Date)
+ * @see com.itextpdf.signatures.RootStoreVerifier#verify(java.security.cert.X509Certificate,
+ * java.security.cert.X509Certificate, java.util.Date)
*/
- public List verify(X509Certificate signCert,
- X509Certificate issuerCert, Date signDate)
+ public List verify(X509Certificate signCert, X509Certificate issuerCert, Date signDate)
throws GeneralSecurityException {
List result = new ArrayList<>();
int validOCSPsFound = 0;
// first check in the list of OCSP responses that was provided
if (ocsps != null) {
for (BasicOCSPResp ocspResp : ocsps) {
- if (verify(ocspResp, signCert, issuerCert, signDate))
+ if (verify(ocspResp, signCert, issuerCert, signDate)) {
validOCSPsFound++;
+ }
}
}
// then check online if allowed
@@ -120,10 +121,13 @@ public List verify(X509Certificate signCert,
}
// show how many valid OCSP responses were found
LOGGER.info("Valid OCSPs found: " + validOCSPsFound);
- if (validOCSPsFound > 0)
- result.add(new VerificationOK(signCert, this.getClass(), "Valid OCSPs Found: " + validOCSPsFound + (online ? " (online)" : "")));
- if (verifier != null)
+ if (validOCSPsFound > 0) {
+ result.add(new VerificationOK(signCert, this.getClass(),
+ "Valid OCSPs Found: " + validOCSPsFound + (online ? " (online)" : "")));
+ }
+ if (verifier != null) {
result.addAll(verifier.verify(signCert, issuerCert, signDate));
+ }
// verify using the previous verifier in the chain (if any)
return result;
}
@@ -133,7 +137,8 @@ public List verify(X509Certificate signCert,
* Verifies a certificate against a single OCSP response
* @param ocspResp the OCSP response
* @param signCert the certificate that needs to be checked
- * @param issuerCert the certificate of CA (certificate that issued signCert). This certificate is considered trusted and valid by this method.
+ * @param issuerCert the certificate of CA (certificate that issued signCert). This certificate is considered trusted
+ * and valid by this method.
* @param signDate sign date
*
* @return {@code true}, in case successful check, otherwise false.
@@ -141,8 +146,9 @@ public List verify(X509Certificate signCert,
*/
public boolean verify(BasicOCSPResp ocspResp, X509Certificate signCert, X509Certificate issuerCert, Date signDate)
throws GeneralSecurityException {
- if (ocspResp == null)
+ if (ocspResp == null) {
return false;
+ }
// Getting the responses
SingleResp[] resp = ocspResp.getResponses();
for (int i = 0; i < resp.length; i++) {
@@ -152,7 +158,9 @@ public boolean verify(BasicOCSPResp ocspResp, X509Certificate signCert, X509Cert
}
// check if the issuer matches
try {
- if (issuerCert == null) issuerCert = signCert;
+ if (issuerCert == null) {
+ issuerCert = signCert;
+ }
if (!SignUtils.checkIfIssuersMatch(resp[i].getCertID(), issuerCert)) {
LOGGER.info("OCSP: Issuers doesn't match.");
continue;
@@ -172,7 +180,8 @@ public boolean verify(BasicOCSPResp ocspResp, X509Certificate signCert, X509Cert
}
} else {
if (signDate.after(resp[i].getNextUpdate())) {
- LOGGER.info(MessageFormatUtil.format("OCSP no longer valid: {0} after {1}", signDate, resp[i].getNextUpdate()));
+ LOGGER.info(MessageFormatUtil.format("OCSP no longer valid: {0} after {1}", signDate,
+ resp[i].getNextUpdate()));
continue;
}
}
@@ -197,7 +206,8 @@ public boolean verify(BasicOCSPResp ocspResp, X509Certificate signCert, X509Cert
*
* @throws GeneralSecurityException if OCSP response verification cannot be done or failed
*/
- public void isValidResponse(BasicOCSPResp ocspResp, X509Certificate issuerCert, Date signDate) throws GeneralSecurityException {
+ public void isValidResponse(BasicOCSPResp ocspResp, X509Certificate issuerCert, Date signDate)
+ throws GeneralSecurityException {
// OCSP response might be signed by the issuer certificate or
// the Authorized OCSP responder certificate containing the id-kp-OCSPSigning extended key usage extension
X509Certificate responderCert = null;
@@ -218,7 +228,8 @@ public void isValidResponse(BasicOCSPResp ocspResp, X509Certificate issuerCert,
List keyPurposes = null;
try {
keyPurposes = cert.getExtendedKeyUsage();
- if ((keyPurposes != null) && keyPurposes.contains(id_kp_OCSPSigning) && isSignatureValid(ocspResp, cert)) {
+ if ((keyPurposes != null) && keyPurposes.contains(id_kp_OCSPSigning)
+ && isSignatureValid(ocspResp, cert)) {
responderCert = cert;
break;
}
@@ -263,8 +274,7 @@ public void isValidResponse(BasicOCSPResp ocspResp, X509Certificate issuerCert,
throw new VerificationException(issuerCert, "Authorized OCSP responder certificate was revoked.");
}
} else {
- Logger logger = LoggerFactory.getLogger(OCSPVerifier.class);
- logger.error("Authorized OCSP responder certificate revocation status cannot be checked");
+ LOGGER.error("Authorized OCSP responder certificate revocation status cannot be checked");
// TODO DEVSIX-5207 throw exception starting from iText version 7.2, but only after OCSPVerifier
// would allow explicit setting revocation check end points/provide revocation data
}
diff --git a/sign/src/main/java/com/itextpdf/signatures/OID.java b/sign/src/main/java/com/itextpdf/signatures/OID.java
index 86ee60cdce..b0bbc5d44e 100644
--- a/sign/src/main/java/com/itextpdf/signatures/OID.java
+++ b/sign/src/main/java/com/itextpdf/signatures/OID.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
@@ -164,19 +164,20 @@ public static final class X509Extensions {
* This set consists of standard extensions which are defined in RFC specifications and are not mentioned
* as forbidden to be marked as critical.
*/
- public static final Set SUPPORTED_CRITICAL_EXTENSIONS = Collections.unmodifiableSet(new LinkedHashSet<>(Arrays.asList(
- KEY_USAGE,
- CERTIFICATE_POLICIES,
- POLICY_MAPPINGS,
- SUBJECT_ALTERNATIVE_NAME,
- ISSUER_ALTERNATIVE_NAME,
- BASIC_CONSTRAINTS,
- NAME_CONSTRAINTS,
- POLICY_CONSTRAINTS,
- EXTENDED_KEY_USAGE,
- CRL_DISTRIBUTION_POINTS,
- INHIBIT_ANY_POLICY,
- ID_PKIX_OCSP_NOCHECK
- )));
+ public static final Set SUPPORTED_CRITICAL_EXTENSIONS = Collections.unmodifiableSet(
+ new LinkedHashSet<>(Arrays.asList(
+ KEY_USAGE,
+ CERTIFICATE_POLICIES,
+ POLICY_MAPPINGS,
+ SUBJECT_ALTERNATIVE_NAME,
+ ISSUER_ALTERNATIVE_NAME,
+ BASIC_CONSTRAINTS,
+ NAME_CONSTRAINTS,
+ POLICY_CONSTRAINTS,
+ EXTENDED_KEY_USAGE,
+ CRL_DISTRIBUTION_POINTS,
+ INHIBIT_ANY_POLICY,
+ ID_PKIX_OCSP_NOCHECK
+ )));
}
}
diff --git a/sign/src/main/java/com/itextpdf/signatures/OcspClientBouncyCastle.java b/sign/src/main/java/com/itextpdf/signatures/OcspClientBouncyCastle.java
index 4a1ca62c05..62ed99b2b8 100644
--- a/sign/src/main/java/com/itextpdf/signatures/OcspClientBouncyCastle.java
+++ b/sign/src/main/java/com/itextpdf/signatures/OcspClientBouncyCastle.java
@@ -1,7 +1,7 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: Bruno Lowagie, Paulo Soares, et al.
This program is free software; you can redistribute it and/or modify
diff --git a/sign/src/main/java/com/itextpdf/signatures/PdfPKCS7.java b/sign/src/main/java/com/itextpdf/signatures/PdfPKCS7.java
index a01d2c63e6..53f22ad997 100644
--- a/sign/src/main/java/com/itextpdf/signatures/PdfPKCS7.java
+++ b/sign/src/main/java/com/itextpdf/signatures/PdfPKCS7.java
@@ -1,7 +1,7 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: Bruno Lowagie, Paulo Soares, et al.
This program is free software; you can redistribute it and/or modify
@@ -167,9 +167,10 @@ public PdfPKCS7(PrivateKey privKey, Certificate[] certChain,
this.interfaceDigest = interfaceDigest;
// message digest
digestAlgorithmOid = DigestAlgorithms.getAllowedDigest(hashAlgorithm);
- if (digestAlgorithmOid == null)
+ if (digestAlgorithmOid == null) {
throw new PdfException(SignExceptionMessageConstant.UNKNOWN_HASH_ALGORITHM)
.setMessageParams(hashAlgorithm);
+ }
// Copy the certificates
signCert = (X509Certificate) certChain[0];
@@ -298,13 +299,15 @@ public PdfPKCS7(byte[] contentsKey, PdfName filterSubtype, String provider) {
// the possible ID_PKCS7_DATA
ASN1Sequence rsaData = (ASN1Sequence) content.getObjectAt(2);
if (rsaData.size() > 1) {
- ASN1OctetString rsaDataContent = (ASN1OctetString) ((ASN1TaggedObject) rsaData.getObjectAt(1)).getObject();
+ ASN1OctetString rsaDataContent =
+ (ASN1OctetString) ((ASN1TaggedObject) rsaData.getObjectAt(1)).getObject();
this.rsaData = rsaDataContent.getOctets();
}
int next = 3;
- while (content.getObjectAt(next) instanceof ASN1TaggedObject)
+ while (content.getObjectAt(next) instanceof ASN1TaggedObject) {
++next;
+ }
// the certificates
@@ -374,7 +377,8 @@ public PdfPKCS7(byte[] contentsKey, PdfName filterSubtype, String provider) {
setMessageParams(issuer.getName() + " / " + serialNumber.toString(16));
}
signCertificateChain();
- digestAlgorithmOid = ((ASN1ObjectIdentifier) ((ASN1Sequence) signerInfo.getObjectAt(2)).getObjectAt(0)).getId();
+ digestAlgorithmOid =
+ ((ASN1ObjectIdentifier) ((ASN1Sequence) signerInfo.getObjectAt(2)).getObjectAt(0)).getId();
next = 3;
boolean foundCades = false;
if (signerInfo.getObjectAt(next) instanceof ASN1TaggedObject) {
@@ -425,7 +429,8 @@ public PdfPKCS7(byte[] contentsKey, PdfName filterSubtype, String provider) {
ESSCertIDv2 cerv2 = cerv2m[0];
AlgorithmIdentifier ai2 = cerv2.getHashAlgorithm();
byte[] enc2 = signCert.getEncoded();
- MessageDigest m2 = SignUtils.getMessageDigest(DigestAlgorithms.getDigest(ai2.getAlgorithm().getId()));
+ MessageDigest m2
+ = SignUtils.getMessageDigest(DigestAlgorithms.getDigest(ai2.getAlgorithm().getId()));
byte[] signCertHash = m2.digest(enc2);
byte[] hs2 = cerv2.getCertHash();
if (!Arrays.equals(signCertHash, hs2))
@@ -440,7 +445,8 @@ public PdfPKCS7(byte[] contentsKey, PdfName filterSubtype, String provider) {
}
if (isCades && !foundCades)
throw new IllegalArgumentException("CAdES ESS information missing.");
- digestEncryptionAlgorithmOid = ((ASN1ObjectIdentifier) ((ASN1Sequence) signerInfo.getObjectAt(next++)).getObjectAt(0)).getId();
+ digestEncryptionAlgorithmOid =
+ ((ASN1ObjectIdentifier) ((ASN1Sequence) signerInfo.getObjectAt(next++)).getObjectAt(0)).getId();
digest = ((ASN1OctetString) signerInfo.getObjectAt(next++)).getOctets();
if (next < signerInfo.size() && signerInfo.getObjectAt(next) instanceof ASN1TaggedObject) {
ASN1TaggedObject taggedObject = (ASN1TaggedObject) signerInfo.getObjectAt(next);
@@ -450,12 +456,14 @@ public PdfPKCS7(byte[] contentsKey, PdfName filterSubtype, String provider) {
if (ts != null && ts.getAttrValues().size() > 0) {
ASN1Set attributeValues = ts.getAttrValues();
ASN1Sequence tokenSequence = ASN1Sequence.getInstance(attributeValues.getObjectAt(0));
- org.bouncycastle.asn1.cms.ContentInfo contentInfo = org.bouncycastle.asn1.cms.ContentInfo.getInstance(tokenSequence);
+ org.bouncycastle.asn1.cms.ContentInfo contentInfo
+ = org.bouncycastle.asn1.cms.ContentInfo.getInstance(tokenSequence);
this.timeStampToken = new TimeStampToken(contentInfo);
}
}
if (isTsp) {
- org.bouncycastle.asn1.cms.ContentInfo contentInfoTsp = org.bouncycastle.asn1.cms.ContentInfo.getInstance(signedData);
+ org.bouncycastle.asn1.cms.ContentInfo contentInfoTsp
+ = org.bouncycastle.asn1.cms.ContentInfo.getInstance(signedData);
this.timeStampToken = new TimeStampToken(contentInfoTsp);
TimeStampTokenInfo info = timeStampToken.getTimeStampInfo();
String algOID = info.getHashAlgorithm().getAlgorithm().getId();
@@ -724,13 +732,15 @@ public void setExternalDigest(byte[] digest, byte[] rsaData, String digestEncryp
// Signing functionality.
- private Signature initSignature(PrivateKey key) throws NoSuchAlgorithmException, NoSuchProviderException, InvalidKeyException {
+ private Signature initSignature(PrivateKey key) throws NoSuchAlgorithmException, NoSuchProviderException,
+ InvalidKeyException {
Signature signature = SignUtils.getSignatureHelper(getDigestAlgorithm(), provider);
signature.initSign(key);
return signature;
}
- private Signature initSignature(PublicKey key) throws NoSuchAlgorithmException, NoSuchProviderException, InvalidKeyException {
+ private Signature initSignature(PublicKey key) throws NoSuchAlgorithmException, NoSuchProviderException,
+ InvalidKeyException {
String digestAlgorithm = getDigestAlgorithm();
if (PdfName.Adbe_x509_rsa_sha1.equals(getFilterSubtype()))
digestAlgorithm = "SHA1withRSA";
@@ -749,10 +759,11 @@ private Signature initSignature(PublicKey key) throws NoSuchAlgorithmException,
* @throws SignatureException on error
*/
public void update(byte[] buf, int off, int len) throws SignatureException {
- if (rsaData != null || digestAttr != null || isTsp)
+ if (rsaData != null || digestAttr != null || isTsp) {
messageDigest.update(buf, off, len);
- else
+ } else {
sig.update(buf, off, len);
+ }
}
// adbe.x509.rsa_sha1 (PKCS#1)
@@ -855,18 +866,17 @@ public byte[] getEncodedPKCS7(byte[] secondDigest, PdfSigner.CryptoStandard sigt
//
v = new ASN1EncodableVector();
for (Object element : certs) {
- ASN1InputStream tempstream = new ASN1InputStream(new ByteArrayInputStream(((X509Certificate) element).getEncoded()));
+ ASN1InputStream tempstream = new ASN1InputStream(
+ new ByteArrayInputStream(((X509Certificate) element).getEncoded()));
v.add(tempstream.readObject());
}
DERSet dercertificates = new DERSet(v);
// Create signerinfo structure.
- //
ASN1EncodableVector signerinfo = new ASN1EncodableVector();
// Add the signerInfo version
- //
signerinfo.add(new ASN1Integer(signerversion));
v = new ASN1EncodableVector();
@@ -882,7 +892,8 @@ public byte[] getEncodedPKCS7(byte[] secondDigest, PdfSigner.CryptoStandard sigt
// add the authenticated attribute if present
if (secondDigest != null) {
- signerinfo.add(new DERTaggedObject(false, 0, getAuthenticatedAttributeSet(secondDigest, ocsp, crlBytes, sigtype)));
+ signerinfo.add(new DERTaggedObject(false, 0,
+ getAuthenticatedAttributeSet(secondDigest, ocsp, crlBytes, sigtype)));
}
// Add the digestEncryptionAlgorithm
v = new ASN1EncodableVector();
@@ -1005,9 +1016,11 @@ private ASN1EncodableVector buildUnauthenticatedAttributes(byte[] timeStampToken
* @return the byte array representation of the authenticatedAttributes ready to be signed
* @see RFC 6960 § 4.2.1
*/
- public byte[] getAuthenticatedAttributeBytes(byte[] secondDigest, PdfSigner.CryptoStandard sigtype, Collection ocsp, Collection crlBytes) {
+ public byte[] getAuthenticatedAttributeBytes(byte[] secondDigest, PdfSigner.CryptoStandard sigtype,
+ Collection ocsp, Collection crlBytes) {
try {
- return getAuthenticatedAttributeSet(secondDigest, ocsp, crlBytes, sigtype).getEncoded(ASN1Encoding.DER);
+ return getAuthenticatedAttributeSet(secondDigest, ocsp, crlBytes, sigtype)
+ .getEncoded(ASN1Encoding.DER);
} catch (Exception e) {
throw new PdfException(e);
}
@@ -1020,7 +1033,8 @@ public byte[] getAuthenticatedAttributeBytes(byte[] secondDigest, PdfSigner.Cryp
* @param secondDigest the content digest
* @return the byte array representation of the authenticatedAttributes ready to be signed
*/
- private DERSet getAuthenticatedAttributeSet(byte[] secondDigest, Collection ocsp, Collection crlBytes, PdfSigner.CryptoStandard sigtype) {
+ private DERSet getAuthenticatedAttributeSet(byte[] secondDigest, Collection ocsp,
+ Collection crlBytes, PdfSigner.CryptoStandard sigtype) {
try {
ASN1EncodableVector attribute = new ASN1EncodableVector();
ASN1EncodableVector v = new ASN1EncodableVector();
@@ -1049,8 +1063,9 @@ private DERSet getAuthenticatedAttributeSet(byte[] secondDigest, Collection signCerts;
+ Collection signCerts;
/**
* The X.509 certificate that is used to sign the digest.
@@ -1301,11 +1319,12 @@ public Collection getCRLs() {
/**
* Helper method that tries to construct the CRLs.
*/
- private void findCRL(ASN1Sequence seq) {
+ void findCRL(ASN1Sequence seq) {
try {
crls = new ArrayList<>();
for (int k = 0; k < seq.size(); ++k) {
- ByteArrayInputStream ar = new ByteArrayInputStream(seq.getObjectAt(k).toASN1Primitive().getEncoded(ASN1Encoding.DER));
+ ByteArrayInputStream ar = new ByteArrayInputStream(
+ seq.getObjectAt(k).toASN1Primitive().getEncoded(ASN1Encoding.DER));
X509CRL crl = (X509CRL) SignUtils.parseCrlFromStream(ar);
crls.add(crl);
}
@@ -1319,7 +1338,7 @@ private void findCRL(ASN1Sequence seq) {
/**
* BouncyCastle BasicOCSPResp
*/
- private BasicOCSPResp basicResp;
+ BasicOCSPResp basicResp;
/**
* Gets the OCSP basic response if there is one.
@@ -1346,7 +1365,8 @@ public boolean isRevocationValid() {
CertificateID cid = sr.getCertID();
X509Certificate sigcer = getSigningCertificate();
X509Certificate isscer = cs[1];
- CertificateID tis = SignUtils.generateCertificateId(isscer, sigcer.getSerialNumber(), cid.getHashAlgOID());
+ CertificateID tis = SignUtils.generateCertificateId(isscer, sigcer.getSerialNumber(),
+ cid.getHashAlgOID());
return tis.equals(cid);
} catch (Exception ignored) {
}
@@ -1364,7 +1384,8 @@ private void findOcsp(ASN1Sequence seq) throws IOException {
boolean ret = false;
while (true) {
if (seq.getObjectAt(0) instanceof ASN1ObjectIdentifier
- && ((ASN1ObjectIdentifier) seq.getObjectAt(0)).getId().equals(OCSPObjectIdentifiers.id_pkix_ocsp_basic.getId())) {
+ && ((ASN1ObjectIdentifier) seq.getObjectAt(0)).getId()
+ .equals(OCSPObjectIdentifiers.id_pkix_ocsp_basic.getId())) {
break;
}
ret = true;
@@ -1380,8 +1401,9 @@ private void findOcsp(ASN1Sequence seq) throws IOException {
seq = (ASN1Sequence) tag.getObject();
ret = false;
break;
- } else
+ } else {
return;
+ }
}
}
if (ret)
diff --git a/sign/src/main/java/com/itextpdf/signatures/PdfSignature.java b/sign/src/main/java/com/itextpdf/signatures/PdfSignature.java
index d06d5d0771..75d29dd769 100644
--- a/sign/src/main/java/com/itextpdf/signatures/PdfSignature.java
+++ b/sign/src/main/java/com/itextpdf/signatures/PdfSignature.java
@@ -1,7 +1,7 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: Bruno Lowagie, Paulo Soares, et al.
This program is free software; you can redistribute it and/or modify
@@ -89,7 +89,8 @@ public PdfSignature(PdfDictionary sigDictionary) {
/**
* A name that describes the encoding of the signature value and key information in the signature dictionary.
- * @return a {@link PdfName} which usually has a value either {@link PdfName#Adbe_pkcs7_detached} or {@link PdfName#ETSI_CAdES_DETACHED}.
+ * @return a {@link PdfName} which usually has a value either {@link PdfName#Adbe_pkcs7_detached}
+ * or {@link PdfName#ETSI_CAdES_DETACHED}.
*/
public PdfName getSubFilter() {
return getPdfObject().getAsName(PdfName.SubFilter);
@@ -99,7 +100,8 @@ public PdfName getSubFilter() {
* The type of PDF object that the wrapped dictionary describes; if present, shall be {@link PdfName#Sig} for a signature
* dictionary or {@link PdfName#DocTimeStamp} for a timestamp signature dictionary. Shall be not null if it's value
* is {@link PdfName#DocTimeStamp}. The default value is: {@link PdfName#Sig}.
- * @return a {@link PdfName} that identifies type of the wrapped dictionary, returns null if it is not explicitly specified.
+ * @return a {@link PdfName} that identifies type of the wrapped dictionary,
+ * returns null if it is not explicitly specified.
*/
public PdfName getType() {
return getPdfObject().getAsName(PdfName.Type);
@@ -108,21 +110,21 @@ public PdfName getType() {
/**
* Sets the /ByteRange.
*
- * @param range an array of pairs of integers that specifies the byte range used in the digest calculation. A pair consists of the starting byte offset and the length
+ * @param range an array of pairs of integers that specifies the byte range used in the digest calculation.
+ * A pair consists of the starting byte offset and the length
*/
public void setByteRange(int[] range) {
PdfArray array = new PdfArray();
-
for (int k = 0; k < range.length; ++k) {
array.add(new PdfNumber(range[k]));
}
-
put(PdfName.ByteRange, array);
}
/**
* Gets the /ByteRange.
- * @return an array of pairs of integers that specifies the byte range used in the digest calculation. A pair consists of the starting byte offset and the length.
+ * @return an array of pairs of integers that specifies the byte range used in the digest calculation.
+ * A pair consists of the starting byte offset and the length.
*/
public PdfArray getByteRange() {
return getPdfObject().getAsArray(PdfName.ByteRange);
@@ -297,12 +299,10 @@ protected boolean isWrappedObjectMustBeIndirect() {
*/
private PdfSignatureBuildProperties getPdfSignatureBuildProperties() {
PdfDictionary buildPropDict = getPdfObject().getAsDictionary(PdfName.Prop_Build);
-
if (buildPropDict == null) {
buildPropDict = new PdfDictionary();
put(PdfName.Prop_Build, buildPropDict);
}
-
return new PdfSignatureBuildProperties(buildPropDict);
}
}
diff --git a/sign/src/main/java/com/itextpdf/signatures/PdfSignatureApp.java b/sign/src/main/java/com/itextpdf/signatures/PdfSignatureApp.java
index 935be56d5f..8fb8bbb222 100644
--- a/sign/src/main/java/com/itextpdf/signatures/PdfSignatureApp.java
+++ b/sign/src/main/java/com/itextpdf/signatures/PdfSignatureApp.java
@@ -1,7 +1,7 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: Bruno Lowagie, Paulo Soares, et al.
This program is free software; you can redistribute it and/or modify
diff --git a/sign/src/main/java/com/itextpdf/signatures/PdfSignatureAppearance.java b/sign/src/main/java/com/itextpdf/signatures/PdfSignatureAppearance.java
index 2b7bf5f699..ebe3972bd5 100644
--- a/sign/src/main/java/com/itextpdf/signatures/PdfSignatureAppearance.java
+++ b/sign/src/main/java/com/itextpdf/signatures/PdfSignatureAppearance.java
@@ -1,7 +1,7 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: Bruno Lowagie, Paulo Soares, et al.
This program is free software; you can redistribute it and/or modify
@@ -688,7 +688,8 @@ protected PdfFormXObject getAppearance() throws IOException {
float usableScale = imageScale;
if (imageScale < 0) {
- usableScale = Math.min(rotatedRect.getWidth() / image.getWidth(), rotatedRect.getHeight() / image.getHeight());
+ usableScale = Math.min(rotatedRect.getWidth() / image.getWidth(),
+ rotatedRect.getHeight() / image.getHeight());
}
float w = image.getWidth() * usableScale;
@@ -758,7 +759,8 @@ protected PdfFormXObject getAppearance() throws IOException {
switch (renderingMode) {
case NAME_AND_DESCRIPTION:
- String signedBy = CertificateInfo.getSubjectFields((X509Certificate) signCertificate).getField("CN");
+ String signedBy =
+ CertificateInfo.getSubjectFields((X509Certificate) signCertificate).getField("CN");
if (signedBy == null) {
signedBy = CertificateInfo.getSubjectFields((X509Certificate) signCertificate).getField("E");
diff --git a/sign/src/main/java/com/itextpdf/signatures/PdfSignatureBuildProperties.java b/sign/src/main/java/com/itextpdf/signatures/PdfSignatureBuildProperties.java
index aeef27241d..0f7e2ccabb 100644
--- a/sign/src/main/java/com/itextpdf/signatures/PdfSignatureBuildProperties.java
+++ b/sign/src/main/java/com/itextpdf/signatures/PdfSignatureBuildProperties.java
@@ -1,7 +1,7 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: Bruno Lowagie, Paulo Soares, et al.
This program is free software; you can redistribute it and/or modify
diff --git a/sign/src/main/java/com/itextpdf/signatures/PdfSigner.java b/sign/src/main/java/com/itextpdf/signatures/PdfSigner.java
index f9ce01350d..e36bc4e06c 100644
--- a/sign/src/main/java/com/itextpdf/signatures/PdfSigner.java
+++ b/sign/src/main/java/com/itextpdf/signatures/PdfSigner.java
@@ -1,7 +1,7 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: Bruno Lowagie, Paulo Soares, et al.
This program is free software; you can redistribute it and/or modify
@@ -250,7 +250,8 @@ public PdfSigner(PdfReader reader, OutputStream outputStream, StampingProperties
* preserved regardless of what is set in properties.
* @throws IOException if some I/O problem occurs
*/
- public PdfSigner(PdfReader reader, OutputStream outputStream, String path, StampingProperties properties) throws IOException {
+ public PdfSigner(PdfReader reader, OutputStream outputStream, String path, StampingProperties properties)
+ throws IOException {
StampingProperties localProps = new StampingProperties(properties).preserveEncryption();
if (path == null) {
temporaryOS = new ByteArrayOutputStream();
@@ -506,9 +507,11 @@ public void setFieldLockDict(PdfSigFieldLock fieldLock) {
* @throws IOException if some I/O problem occurs
* @throws GeneralSecurityException if some problem during apply security algorithms occurs
*/
- public void signDetached(IExternalDigest externalDigest, IExternalSignature externalSignature, Certificate[] chain, Collection crlList, IOcspClient ocspClient,
- ITSAClient tsaClient, int estimatedSize, CryptoStandard sigtype) throws IOException, GeneralSecurityException {
- signDetached(externalDigest, externalSignature, chain, crlList, ocspClient, tsaClient, estimatedSize, sigtype, (SignaturePolicyIdentifier) null);
+ public void signDetached(IExternalDigest externalDigest, IExternalSignature externalSignature, Certificate[] chain,
+ Collection crlList, IOcspClient ocspClient, ITSAClient tsaClient, int estimatedSize,
+ CryptoStandard sigtype) throws IOException, GeneralSecurityException {
+ signDetached(externalDigest, externalSignature, chain, crlList, ocspClient, tsaClient, estimatedSize, sigtype,
+ (SignaturePolicyIdentifier) null);
}
/**
@@ -529,9 +532,11 @@ public void signDetached(IExternalDigest externalDigest, IExternalSignature exte
* @throws IOException if some I/O problem occurs
* @throws GeneralSecurityException if some problem during apply security algorithms occurs
*/
- public void signDetached(IExternalDigest externalDigest, IExternalSignature externalSignature, Certificate[] chain, Collection crlList, IOcspClient ocspClient,
- ITSAClient tsaClient, int estimatedSize, CryptoStandard sigtype, SignaturePolicyInfo signaturePolicy) throws IOException, GeneralSecurityException {
- signDetached(externalDigest, externalSignature, chain, crlList, ocspClient, tsaClient, estimatedSize, sigtype, signaturePolicy.toSignaturePolicyIdentifier());
+ public void signDetached(IExternalDigest externalDigest, IExternalSignature externalSignature, Certificate[] chain,
+ Collection crlList, IOcspClient ocspClient, ITSAClient tsaClient, int estimatedSize,
+ CryptoStandard sigtype, SignaturePolicyInfo signaturePolicy) throws IOException, GeneralSecurityException {
+ signDetached(externalDigest, externalSignature, chain, crlList, ocspClient, tsaClient, estimatedSize, sigtype,
+ signaturePolicy.toSignaturePolicyIdentifier());
}
/**
@@ -552,8 +557,9 @@ public void signDetached(IExternalDigest externalDigest, IExternalSignature exte
* @throws IOException if some I/O problem occurs
* @throws GeneralSecurityException if some problem during apply security algorithms occurs
*/
- public void signDetached(IExternalDigest externalDigest, IExternalSignature externalSignature, Certificate[] chain, Collection crlList, IOcspClient ocspClient,
- ITSAClient tsaClient, int estimatedSize, CryptoStandard sigtype, SignaturePolicyIdentifier signaturePolicy) throws IOException, GeneralSecurityException {
+ public void signDetached(IExternalDigest externalDigest, IExternalSignature externalSignature, Certificate[] chain,
+ Collection crlList, IOcspClient ocspClient, ITSAClient tsaClient, int estimatedSize,
+ CryptoStandard sigtype, SignaturePolicyIdentifier signaturePolicy) throws IOException, GeneralSecurityException {
if (closed) {
throw new PdfException(SignExceptionMessageConstant.THIS_INSTANCE_OF_PDF_SIGNER_ALREADY_CLOSED);
}
@@ -567,8 +573,9 @@ public void signDetached(IExternalDigest externalDigest, IExternalSignature exte
Collection crlBytes = null;
int i = 0;
- while (crlBytes == null && i < chain.length)
+ while (crlBytes == null && i < chain.length) {
crlBytes = processCrl(chain[i++], crlList);
+ }
if (estimatedSize == 0) {
estimatedSize = 8192;
if (crlBytes != null) {
@@ -576,10 +583,12 @@ public void signDetached(IExternalDigest externalDigest, IExternalSignature exte
estimatedSize += element.length + 10;
}
}
- if (ocspClient != null)
+ if (ocspClient != null) {
estimatedSize += 4192;
- if (tsaClient != null)
+ }
+ if (tsaClient != null) {
estimatedSize += 4192;
+ }
}
PdfSignatureAppearance appearance = getSignatureAppearance();
appearance.setCertificate(chain[0]);
@@ -587,7 +596,9 @@ public void signDetached(IExternalDigest externalDigest, IExternalSignature exte
addDeveloperExtension(PdfDeveloperExtension.ESIC_1_7_EXTENSIONLEVEL2);
}
String hashAlgorithm = externalSignature.getHashAlgorithm();
- PdfSignature dic = new PdfSignature(PdfName.Adobe_PPKLite, sigtype == CryptoStandard.CADES ? PdfName.ETSI_CAdES_DETACHED : PdfName.Adbe_pkcs7_detached);
+ PdfSignature dic = new PdfSignature(PdfName.Adobe_PPKLite, sigtype == CryptoStandard.CADES
+ ? PdfName.ETSI_CAdES_DETACHED
+ : PdfName.Adbe_pkcs7_detached);
dic.setReason(appearance.getReason());
dic.setLocation(appearance.getLocation());
dic.setSignatureCreator(appearance.getSignatureCreator());
@@ -620,8 +631,9 @@ public void signDetached(IExternalDigest externalDigest, IExternalSignature exte
byte[] encodedSig = sgn.getEncodedPKCS7(hash, sigtype, tsaClient, ocspList, crlBytes);
- if (estimatedSize < encodedSig.length)
+ if (estimatedSize < encodedSig.length) {
throw new IOException("Not enough space");
+ }
byte[] paddedSig = new byte[estimatedSize];
System.arraycopy(encodedSig, 0, paddedSig, 0, encodedSig.length);
@@ -803,21 +815,21 @@ public static void signDeferred(PdfDocument document, String fieldName, OutputSt
* @return a collection of CRL bytes that can be embedded in a PDF
*/
protected Collection processCrl(Certificate cert, Collection crlList) {
- if (crlList == null)
+ if (crlList == null) {
return null;
+ }
List crlBytes = new ArrayList<>();
for (ICrlClient cc : crlList) {
- if (cc == null)
+ if (cc == null) {
continue;
+ }
Collection b = cc.getEncoded((X509Certificate) cert, null);
- if (b == null)
+ if (b == null) {
continue;
+ }
crlBytes.addAll(b);
}
- if (crlBytes.size() == 0)
- return null;
- else
- return crlBytes;
+ return crlBytes.size() == 0 ? null : crlBytes;
}
protected void addDeveloperExtension(PdfDeveloperExtension extension) {
@@ -1062,7 +1074,8 @@ protected PdfSigFieldLock createNewSignatureFormField(PdfAcroForm acroForm, Stri
*/
protected InputStream getRangeStream() throws IOException {
RandomAccessSourceFactory fac = new RandomAccessSourceFactory();
- return new RASInputStream(fac.createRanged(getUnderlyingSource(), range));
+ IRandomAccessSource randomAccessSource = fac.createRanged(getUnderlyingSource(), range);
+ return new RASInputStream(randomAccessSource);
}
/**
@@ -1090,8 +1103,9 @@ protected void close(PdfDictionary update) throws IOException {
throw new IllegalArgumentException("The key didn't reserve space in preclose");
bous.reset();
os.write(obj);
- if (bous.size() > lit.getBytesCount())
+ if (bous.size() > lit.getBytesCount()) {
throw new IllegalArgumentException(SignExceptionMessageConstant.TOO_BIG_KEY);
+ }
if (tempFile == null) {
System.arraycopy(bous.toByteArray(), 0, bout, (int) lit.getPosition(), (int) bous.size());
} else {
diff --git a/sign/src/main/java/com/itextpdf/signatures/PrivateKeySignature.java b/sign/src/main/java/com/itextpdf/signatures/PrivateKeySignature.java
index 8bce47bd81..07853e477b 100644
--- a/sign/src/main/java/com/itextpdf/signatures/PrivateKeySignature.java
+++ b/sign/src/main/java/com/itextpdf/signatures/PrivateKeySignature.java
@@ -1,7 +1,7 @@
/*
*
* This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
* Authors: Bruno Lowagie, Paulo Soares, et al.
*
* This program is free software; you can redistribute it and/or modify
diff --git a/sign/src/main/java/com/itextpdf/signatures/ProviderDigest.java b/sign/src/main/java/com/itextpdf/signatures/ProviderDigest.java
index a50796bbd0..293615c8c4 100644
--- a/sign/src/main/java/com/itextpdf/signatures/ProviderDigest.java
+++ b/sign/src/main/java/com/itextpdf/signatures/ProviderDigest.java
@@ -1,7 +1,7 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: Bruno Lowagie, Paulo Soares, et al.
This program is free software; you can redistribute it and/or modify
diff --git a/sign/src/main/java/com/itextpdf/signatures/RootStoreVerifier.java b/sign/src/main/java/com/itextpdf/signatures/RootStoreVerifier.java
index 305450afd8..7c3bf7080d 100644
--- a/sign/src/main/java/com/itextpdf/signatures/RootStoreVerifier.java
+++ b/sign/src/main/java/com/itextpdf/signatures/RootStoreVerifier.java
@@ -1,7 +1,7 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: Bruno Lowagie, Paulo Soares, et al.
This program is free software; you can redistribute it and/or modify
@@ -62,8 +62,7 @@ public class RootStoreVerifier extends CertificateVerifier {
/**
* Creates a RootStoreVerifier in a chain of verifiers.
*
- * @param verifier
- * the next verifier in the chain
+ * @param verifier the next verifier in the chain
*/
public RootStoreVerifier(CertificateVerifier verifier) {
super(verifier);
@@ -72,8 +71,7 @@ public RootStoreVerifier(CertificateVerifier verifier) {
/**
* Sets the Key Store against which a certificate can be checked.
*
- * @param keyStore
- * a root store
+ * @param keyStore a root store
*/
public void setRootStore(KeyStore keyStore) {
this.rootStore = keyStore;
@@ -82,17 +80,14 @@ public void setRootStore(KeyStore keyStore) {
/**
* Verifies a single certificate against a key store (if present).
*
- * @param signCert
- * the certificate to verify
- * @param issuerCert
- * the issuer certificate
- * @param signDate
- * the date the certificate needs to be valid
+ * @param signCert the certificate to verify
+ * @param issuerCert the issuer certificate
+ * @param signDate the date the certificate needs to be valid
* @return a list of VerificationOK
objects.
* The list will be empty if the certificate couldn't be verified.
*/
public List verify(X509Certificate signCert, X509Certificate issuerCert,
- Date signDate) throws GeneralSecurityException {
+ Date signDate) throws GeneralSecurityException {
// verify using the CertificateVerifier if root store is missing
if (rootStore == null)
return super.verify(signCert, issuerCert, signDate);
@@ -102,11 +97,12 @@ public List verify(X509Certificate signCert, X509Certificate iss
for (X509Certificate anchor : SignUtils.getCertificates(rootStore)) {
try {
signCert.verify(anchor.getPublicKey());
- result.add(new VerificationOK(signCert, this.getClass(), "Certificate verified against root store."));
+ result.add(new VerificationOK(signCert, this.getClass(),
+ "Certificate verified against root store."));
result.addAll(super.verify(signCert, issuerCert, signDate));
return result;
} catch (GeneralSecurityException e) {
- continue;
+ // do nothing and continue
}
}
result.addAll(super.verify(signCert, issuerCert, signDate));
diff --git a/sign/src/main/java/com/itextpdf/signatures/SecurityIDs.java b/sign/src/main/java/com/itextpdf/signatures/SecurityIDs.java
index 627a47e00a..3762f2d5ba 100644
--- a/sign/src/main/java/com/itextpdf/signatures/SecurityIDs.java
+++ b/sign/src/main/java/com/itextpdf/signatures/SecurityIDs.java
@@ -1,7 +1,7 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: Bruno Lowagie, Paulo Soares, et al.
This program is free software; you can redistribute it and/or modify
diff --git a/sign/src/main/java/com/itextpdf/signatures/SignUtils.java b/sign/src/main/java/com/itextpdf/signatures/SignUtils.java
index 67d582b2a5..6788cef0f5 100644
--- a/sign/src/main/java/com/itextpdf/signatures/SignUtils.java
+++ b/sign/src/main/java/com/itextpdf/signatures/SignUtils.java
@@ -1,7 +1,7 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: Bruno Lowagie, Paulo Soares, et al.
This program is free software; you can redistribute it and/or modify
@@ -103,6 +103,7 @@ This file is part of the iText (R) project.
import org.bouncycastle.cert.ocsp.OCSPException;
import org.bouncycastle.cert.ocsp.OCSPReq;
import org.bouncycastle.cert.ocsp.OCSPReqBuilder;
+import org.bouncycastle.cms.SignerInformationVerifier;
import org.bouncycastle.cms.jcajce.JcaSimpleSignerInfoVerifierBuilder;
import org.bouncycastle.jce.X509Principal;
import org.bouncycastle.jce.provider.X509CertParser;
@@ -117,7 +118,6 @@ This file is part of the iText (R) project.
final class SignUtils {
static String getPrivateKeyAlgorithm(PrivateKey pk) {
String algorithm = pk.getAlgorithm();
-
if (algorithm.equals("EC")) {
algorithm = "ECDSA";
}
@@ -148,7 +148,8 @@ static MessageDigest getMessageDigest(String hashAlgorithm, IExternalDigest exte
return externalDigest.getMessageDigest(hashAlgorithm);
}
- static MessageDigest getMessageDigest(String hashAlgorithm, String provider) throws NoSuchAlgorithmException, NoSuchProviderException {
+ static MessageDigest getMessageDigest(String hashAlgorithm, String provider)
+ throws NoSuchAlgorithmException, NoSuchProviderException {
if (provider == null || provider.startsWith("SunPKCS11") || provider.startsWith("SunMSCAPI")) {
return MessageDigest.getInstance(DigestAlgorithms.normalizeDigestName(hashAlgorithm));
} else {
@@ -165,15 +166,20 @@ static InputStream getHttpResponse(URL urlt) throws IOException {
return (InputStream) con.getContent();
}
- static CertificateID generateCertificateId(X509Certificate issuerCert, BigInteger serialNumber, AlgorithmIdentifier digestAlgorithmIdentifier) throws OperatorCreationException, CertificateEncodingException, OCSPException {
+ static CertificateID generateCertificateId(X509Certificate issuerCert, BigInteger serialNumber,
+ AlgorithmIdentifier digestAlgorithmIdentifier)
+ throws OperatorCreationException, CertificateEncodingException, OCSPException {
return new CertificateID(
new JcaDigestCalculatorProviderBuilder().build().get(digestAlgorithmIdentifier),
new JcaX509CertificateHolder(issuerCert), serialNumber);
}
- static CertificateID generateCertificateId(X509Certificate issuerCert, BigInteger serialNumber, ASN1ObjectIdentifier identifier) throws OperatorCreationException, CertificateEncodingException, OCSPException {
+ static CertificateID generateCertificateId(X509Certificate issuerCert, BigInteger serialNumber,
+ ASN1ObjectIdentifier identifier)
+ throws OperatorCreationException, CertificateEncodingException, OCSPException {
return new CertificateID(
- new JcaDigestCalculatorProviderBuilder().build().get(new AlgorithmIdentifier(identifier, DERNull.INSTANCE)),
+ new JcaDigestCalculatorProviderBuilder().build().get(
+ new AlgorithmIdentifier(identifier, DERNull.INSTANCE)),
new JcaX509CertificateHolder(issuerCert), serialNumber);
}
@@ -181,7 +187,9 @@ static OCSPReq generateOcspRequestWithNonce(CertificateID id) throws IOException
OCSPReqBuilder gen = new OCSPReqBuilder();
gen.addRequest(id);
- Extension ext = new Extension(OCSPObjectIdentifiers.id_pkix_ocsp_nonce, false, new DEROctetString(new DEROctetString(PdfEncryption.generateNewDocumentId()).getEncoded()));
+ DEROctetString derOctetString = new DEROctetString(
+ new DEROctetString(PdfEncryption.generateNewDocumentId()).getEncoded());
+ Extension ext = new Extension(OCSPObjectIdentifiers.id_pkix_ocsp_nonce, false, derOctetString);
gen.setRequestExtensions(new Extensions(new Extension[]{ext}));
return gen.build();
}
@@ -204,18 +212,29 @@ static InputStream getHttpResponseForOcspRequest(byte[] request, URL urlt) throw
return (InputStream) con.getContent();
}
- static boolean isSignatureValid(BasicOCSPResp validator, Certificate certStoreX509, String provider) throws OperatorCreationException, OCSPException {
- if (provider == null) provider = "BC";
- return validator.isSignatureValid(new JcaContentVerifierProviderBuilder().setProvider(provider).build(certStoreX509.getPublicKey()));
+ static boolean isSignatureValid(BasicOCSPResp validator, Certificate certStoreX509, String provider)
+ throws OperatorCreationException, OCSPException {
+ if (provider == null) {
+ provider = "BC";
+ }
+ return validator.isSignatureValid(
+ new JcaContentVerifierProviderBuilder().setProvider(provider).build(certStoreX509.getPublicKey()));
}
- static void isSignatureValid(TimeStampToken validator, X509Certificate certStoreX509, String provider) throws OperatorCreationException, TSPException {
- if (provider == null) provider = "BC";
- validator.validate(new JcaSimpleSignerInfoVerifierBuilder().setProvider(provider).build(certStoreX509));
+ static void isSignatureValid(TimeStampToken validator, X509Certificate certStoreX509, String provider)
+ throws OperatorCreationException, TSPException {
+ if (provider == null) {
+ provider = "BC";
+ }
+ SignerInformationVerifier verifier = new JcaSimpleSignerInfoVerifierBuilder().setProvider(provider)
+ .build(certStoreX509);
+ validator.validate(verifier);
}
- static boolean checkIfIssuersMatch(CertificateID certID, X509Certificate issuerCert) throws CertificateEncodingException, IOException, OCSPException {
- return certID.matchesIssuer(new X509CertificateHolder(issuerCert.getEncoded()), new BcDigestCalculatorProvider());
+ static boolean checkIfIssuersMatch(CertificateID certID, X509Certificate issuerCert)
+ throws CertificateEncodingException, IOException, OCSPException {
+ return certID.matchesIssuer(
+ new X509CertificateHolder(issuerCert.getEncoded()), new BcDigestCalculatorProvider());
}
static Date add180Sec(Date date) {
@@ -230,6 +249,7 @@ static Iterable getCertsFromOcspResponse(BasicOCSPResp ocspResp
try {
certs.add(converter.getCertificate(certHolder));
} catch (Exception ex) {
+ // do nothing
}
}
return certs;
@@ -258,7 +278,8 @@ static class TsaResponse {
InputStream tsaResponseStream;
}
- static TsaResponse getTsaResponseForUserRequest(String tsaUrl, byte[] requestBytes, String tsaUsername, String tsaPassword) throws IOException {
+ static TsaResponse getTsaResponseForUserRequest(String tsaUrl, byte[] requestBytes, String tsaUsername,
+ String tsaPassword) throws IOException {
URL url = new URL(tsaUrl);
URLConnection tsaConnection;
try {
@@ -306,10 +327,9 @@ static TsaResponse getTsaResponseForUserRequest(String tsaUrl, byte[] requestByt
// TODO DEVSIX-2534
@Deprecated
static boolean hasUnsupportedCriticalExtension(X509Certificate cert) {
- if ( cert == null ) {
+ if (cert == null) {
throw new IllegalArgumentException("X509Certificate can't be null.");
}
-
if (cert.hasUnsupportedCriticalExtension()) {
for (String oid : cert.getCriticalExtensionOIDs()) {
if (OID.X509Extensions.SUPPORTED_CRITICAL_EXTENSIONS.contains(oid)) {
@@ -328,8 +348,11 @@ static Calendar getTimeStampDate(TimeStampToken timeStampToken) {
return calendar;
}
- static Signature getSignatureHelper(String algorithm, String provider) throws NoSuchProviderException, NoSuchAlgorithmException {
- return provider == null ? Signature.getInstance(algorithm) : Signature.getInstance(algorithm, provider);
+ static Signature getSignatureHelper(String algorithm, String provider)
+ throws NoSuchProviderException, NoSuchAlgorithmException {
+ return provider == null
+ ? Signature.getInstance(algorithm)
+ : Signature.getInstance(algorithm, provider);
}
static boolean verifyCertificateSignature(X509Certificate certificate, PublicKey issuerPublicKey, String provider) {
@@ -385,7 +408,7 @@ private void tryToGetNextCertificate() {
break;
}
} catch (KeyStoreException e) {
- continue;
+ // do nothing and continue
}
}
}
diff --git a/sign/src/main/java/com/itextpdf/signatures/SignaturePermissions.java b/sign/src/main/java/com/itextpdf/signatures/SignaturePermissions.java
index b5af568dbd..0af5123bbf 100644
--- a/sign/src/main/java/com/itextpdf/signatures/SignaturePermissions.java
+++ b/sign/src/main/java/com/itextpdf/signatures/SignaturePermissions.java
@@ -1,7 +1,7 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: Bruno Lowagie, Paulo Soares, et al.
This program is free software; you can redistribute it and/or modify
@@ -133,8 +133,9 @@ public SignaturePermissions(PdfDictionary sigDict, SignaturePermissions previous
fieldLocks.add(new FieldLock(action, params.getAsArray(PdfName.Fields)));
}
PdfNumber p = params.getAsNumber(PdfName.P);
- if (p == null)
+ if (p == null) {
continue;
+ }
switch (p.intValue()) {
default:
break;
diff --git a/sign/src/main/java/com/itextpdf/signatures/SignaturePolicyInfo.java b/sign/src/main/java/com/itextpdf/signatures/SignaturePolicyInfo.java
index 77367e5c20..c14ca2e523 100644
--- a/sign/src/main/java/com/itextpdf/signatures/SignaturePolicyInfo.java
+++ b/sign/src/main/java/com/itextpdf/signatures/SignaturePolicyInfo.java
@@ -2,7 +2,7 @@
$Id$
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: Bruno Lowagie, Paulo Soares, et al.
This program is free software; you can redistribute it and/or modify
@@ -77,7 +77,8 @@ public class SignaturePolicyInfo {
* @param policyDigestAlgorithm the digestion algorithm of the signature policy
* @param policyUri the uri of the full policy description
*/
- public SignaturePolicyInfo(String policyIdentifier, byte[] policyHash, String policyDigestAlgorithm, String policyUri) {
+ public SignaturePolicyInfo(String policyIdentifier, byte[] policyHash, String policyDigestAlgorithm,
+ String policyUri) {
if (policyIdentifier == null || policyIdentifier.length() == 0) {
throw new IllegalArgumentException("Policy identifier cannot be null");
}
@@ -101,8 +102,10 @@ public SignaturePolicyInfo(String policyIdentifier, byte[] policyHash, String po
* @param policyDigestAlgorithm the digestion algorithm of the signature policy
* @param policyUri the uri of the full policy description
*/
- public SignaturePolicyInfo(String policyIdentifier, String policyHashBase64, String policyDigestAlgorithm, String policyUri) {
- this(policyIdentifier, policyHashBase64 != null ? Base64.decode(policyHashBase64) : null, policyDigestAlgorithm, policyUri);
+ public SignaturePolicyInfo(String policyIdentifier, String policyHashBase64, String policyDigestAlgorithm,
+ String policyUri) {
+ this(policyIdentifier, policyHashBase64 != null ? Base64.decode(policyHashBase64) : null,
+ policyDigestAlgorithm, policyUri);
}
public String getPolicyIdentifier() {
@@ -132,13 +135,18 @@ SignaturePolicyIdentifier toSignaturePolicyIdentifier() {
SigPolicyQualifierInfo spqi = null;
if (this.policyUri != null && this.policyUri.length() > 0) {
- spqi = new SigPolicyQualifierInfo(PKCSObjectIdentifiers.id_spq_ets_uri, new DERIA5String(this.policyUri));
+ spqi = new SigPolicyQualifierInfo(PKCSObjectIdentifiers.id_spq_ets_uri,
+ new DERIA5String(this.policyUri));
}
- signaturePolicyIdentifier = new SignaturePolicyIdentifier(new SignaturePolicyId(ASN1ObjectIdentifier
- .getInstance(new ASN1ObjectIdentifier(this.policyIdentifier.replace("urn:oid:", ""))),
- new OtherHashAlgAndValue(new AlgorithmIdentifier(new ASN1ObjectIdentifier(algId)),
- new DEROctetString(this.policyHash)), SignUtils.createSigPolicyQualifiers(spqi)));
+ ASN1ObjectIdentifier identifier = ASN1ObjectIdentifier.getInstance(
+ new ASN1ObjectIdentifier(this.policyIdentifier.replace("urn:oid:", "")));
+ OtherHashAlgAndValue otherHashAlgAndValue = new OtherHashAlgAndValue(
+ new AlgorithmIdentifier(new ASN1ObjectIdentifier(algId)),
+ new DEROctetString(this.policyHash));
+ SignaturePolicyId signaturePolicyId = new SignaturePolicyId(identifier, otherHashAlgAndValue,
+ SignUtils.createSigPolicyQualifiers(spqi));
+ signaturePolicyIdentifier = new SignaturePolicyIdentifier(signaturePolicyId);
return signaturePolicyIdentifier;
}
diff --git a/sign/src/main/java/com/itextpdf/signatures/SignatureUtil.java b/sign/src/main/java/com/itextpdf/signatures/SignatureUtil.java
index 18a6703ff8..5161f8658a 100644
--- a/sign/src/main/java/com/itextpdf/signatures/SignatureUtil.java
+++ b/sign/src/main/java/com/itextpdf/signatures/SignatureUtil.java
@@ -1,7 +1,7 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: Bruno Lowagie, Paulo Soares, et al.
This program is free software; you can redistribute it and/or modify
@@ -73,7 +73,6 @@ This file is part of the iText (R) project.
import java.util.List;
import java.util.Map;
-
/**
* Utility class that provides several convenience methods concerning digital signatures.
*/
@@ -96,7 +95,7 @@ public SignatureUtil(PdfDocument document) {
// Only create new AcroForm if there is a writer
this.acroForm = PdfAcroForm.getAcroForm(document, document.getWriter() != null);
}
-
+
/**
* Prepares an {@link PdfPKCS7} instance for the given signature.
* This method handles signature parsing and might throw an exception if
@@ -138,31 +137,38 @@ public PdfPKCS7 readSignatureData(String signatureFieldName) {
*/
public PdfPKCS7 readSignatureData(String signatureFieldName, String securityProvider) {
PdfSignature signature = getSignature(signatureFieldName);
- if (signature == null)
+ if (signature == null) {
return null;
+ }
try {
PdfName sub = signature.getSubFilter();
PdfString contents = signature.getContents();
PdfPKCS7 pk = null;
if (sub.equals(PdfName.Adbe_x509_rsa_sha1)) {
PdfString cert = signature.getPdfObject().getAsString(PdfName.Cert);
- if (cert == null)
+ if (cert == null) {
cert = signature.getPdfObject().getAsArray(PdfName.Cert).getAsString(0);
- pk = new PdfPKCS7(PdfEncodings.convertToBytes(contents.getValue(), null), cert.getValueBytes(), securityProvider);
- } else
+ }
+ pk = new PdfPKCS7(PdfEncodings.convertToBytes(contents.getValue(), null), cert.getValueBytes(),
+ securityProvider);
+ } else {
pk = new PdfPKCS7(PdfEncodings.convertToBytes(contents.getValue(), null), sub, securityProvider);
+ }
updateByteRange(pk, signature);
PdfString date = signature.getDate();
- if (date != null)
+ if (date != null) {
pk.setSignDate(PdfDate.decode(date.toString()));
+ }
String signName = signature.getName();
pk.setSignName(signName);
String reason = signature.getReason();
- if (reason != null)
+ if (reason != null) {
pk.setReason(reason);
+ }
String location = signature.getLocation();
- if (location != null)
+ if (location != null) {
pk.setLocation(location);
+ }
return pk;
} catch (Exception e) {
throw new PdfException(e);
@@ -171,7 +177,9 @@ public PdfPKCS7 readSignatureData(String signatureFieldName, String securityProv
public PdfSignature getSignature(String name) {
PdfDictionary sigDict = getSignatureDictionary(name);
- return sigDict != null ? new PdfSignature(sigDict) : null;
+ return sigDict != null
+ ? new PdfSignature(sigDict)
+ : null;
}
/**
@@ -183,8 +191,9 @@ public PdfSignature getSignature(String name) {
*/
public PdfDictionary getSignatureDictionary(String name) {
getSignatureNames();
- if (acroForm == null || !sigNames.containsKey(name))
+ if (acroForm == null || !sigNames.containsKey(name)) {
return null;
+ }
PdfFormField field = acroForm.getField(name);
PdfDictionary merged = field.getPdfObject();
return merged.getAsDictionary(PdfName.V);
@@ -196,7 +205,8 @@ private void updateByteRange(PdfPKCS7 pkcs7, PdfSignature signature) {
RandomAccessFileOrArray rf = document.getReader().getSafeFile();
InputStream rg = null;
try {
- rg = new RASInputStream(new RandomAccessSourceFactory().createRanged(rf.createSourceView(), b.toLongArray()));
+ rg = new RASInputStream(
+ new RandomAccessSourceFactory().createRanged(rf.createSourceView(), b.toLongArray()));
byte[] buf = new byte[8192];
int rd;
while ((rd = rg.read(buf, 0, buf.length)) > 0) {
@@ -220,8 +230,9 @@ private void updateByteRange(PdfPKCS7 pkcs7, PdfSignature signature) {
* @return List containing the field names that have signatures and are signed
*/
public List getSignatureNames() {
- if (sigNames != null)
+ if (sigNames != null) {
return new ArrayList<>(orderedSignatureNames);
+ }
sigNames = new HashMap<>();
orderedSignatureNames = new ArrayList<>();
populateSignatureNames();
@@ -241,10 +252,12 @@ public List getBlankSignatureNames() {
for (Map.Entry entry : acroForm.getFormFields().entrySet()) {
PdfFormField field = entry.getValue();
PdfDictionary merged = field.getPdfObject();
- if (!PdfName.Sig.equals(merged.getAsName(PdfName.FT)))
+ if (!PdfName.Sig.equals(merged.getAsName(PdfName.FT))) {
continue;
- if (sigNames.containsKey(entry.getKey()))
+ }
+ if (sigNames.containsKey(entry.getKey())) {
continue;
+ }
sigs.add(entry.getKey());
}
}
@@ -259,8 +272,9 @@ public int getTotalRevisions() {
public int getRevision(String field) {
getSignatureNames();
field = getTranslatedFieldName(field);
- if (!sigNames.containsKey(field))
+ if (!sigNames.containsKey(field)) {
return 0;
+ }
return sigNames.get(field)[1];
}
@@ -281,8 +295,9 @@ public String getTranslatedFieldName(String name) {
*/
public InputStream extractRevision(String field) {
getSignatureNames();
- if (!sigNames.containsKey(field))
+ if (!sigNames.containsKey(field)) {
return null;
+ }
int length = sigNames.get(field)[0];
RandomAccessFileOrArray raf = document.getReader().getSafeFile();
return new RASInputStream(new WindowRandomAccessSource(raf.createSourceView(), 0, length));
@@ -300,10 +315,12 @@ public InputStream extractRevision(String field) {
*/
public boolean signatureCoversWholeDocument(String name) {
getSignatureNames();
- if (!sigNames.containsKey(name))
+ if (!sigNames.containsKey(name)) {
return false;
+ }
try {
- ContentsChecker signatureReader = new ContentsChecker(document.getReader().getSafeFile().createSourceView());
+ ContentsChecker signatureReader = new ContentsChecker(
+ document.getReader().getSafeFile().createSourceView());
return signatureReader.checkWhetherSignatureCoversWholeDocument(acroForm.getField(name));
} catch (IOException e) {
throw new PdfException(e);
@@ -329,11 +346,13 @@ private void populateSignatureNames() {
for (Map.Entry entry : acroForm.getFormFields().entrySet()) {
PdfFormField field = entry.getValue();
PdfDictionary merged = field.getPdfObject();
- if (!PdfName.Sig.equals(merged.get(PdfName.FT)))
+ if (!PdfName.Sig.equals(merged.get(PdfName.FT))) {
continue;
+ }
PdfDictionary v = merged.getAsDictionary(PdfName.V);
- if (v == null)
+ if (v == null) {
continue;
+ }
PdfString contents = v.getAsString(PdfName.Contents);
if (contents == null) {
continue;
@@ -396,7 +415,8 @@ public boolean checkWhetherSignatureCoversWholeDocument(PdfFormField signatureFi
rangeIsCorrect = false;
PdfDictionary signature = (PdfDictionary) signatureField.getValue();
int[] byteRange = ((PdfArray) signature.get(PdfName.ByteRange)).toIntArray();
- if (4 != byteRange.length || 0 != byteRange[0] || tokens.getSafeFile().length() != byteRange[2] + byteRange[3]) {
+ if (4 != byteRange.length || 0 != byteRange[0]
+ || tokens.getSafeFile().length() != byteRange[2] + byteRange[3]) {
return false;
}
diff --git a/sign/src/main/java/com/itextpdf/signatures/TSAClientBouncyCastle.java b/sign/src/main/java/com/itextpdf/signatures/TSAClientBouncyCastle.java
index c41646821e..df7092445a 100644
--- a/sign/src/main/java/com/itextpdf/signatures/TSAClientBouncyCastle.java
+++ b/sign/src/main/java/com/itextpdf/signatures/TSAClientBouncyCastle.java
@@ -1,7 +1,7 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: Bruno Lowagie, Paulo Soares, et al.
This program is free software; you can redistribute it and/or modify
diff --git a/sign/src/main/java/com/itextpdf/signatures/TimestampConstants.java b/sign/src/main/java/com/itextpdf/signatures/TimestampConstants.java
index ca5648e8d4..d89bdc4b13 100644
--- a/sign/src/main/java/com/itextpdf/signatures/TimestampConstants.java
+++ b/sign/src/main/java/com/itextpdf/signatures/TimestampConstants.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is offered under a commercial and under the AGPL license.
diff --git a/sign/src/main/java/com/itextpdf/signatures/VerificationException.java b/sign/src/main/java/com/itextpdf/signatures/VerificationException.java
index b2e56814a5..f363e93249 100644
--- a/sign/src/main/java/com/itextpdf/signatures/VerificationException.java
+++ b/sign/src/main/java/com/itextpdf/signatures/VerificationException.java
@@ -1,7 +1,7 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: Bruno Lowagie, Paulo Soares, et al.
This program is free software; you can redistribute it and/or modify
@@ -44,6 +44,7 @@ This file is part of the iText (R) project.
package com.itextpdf.signatures;
import com.itextpdf.commons.utils.MessageFormatUtil;
+import com.itextpdf.signatures.exceptions.SignExceptionMessageConstant;
import java.security.GeneralSecurityException;
import java.security.cert.Certificate;
@@ -62,6 +63,7 @@ public class VerificationException extends GeneralSecurityException {
* @param message is a reason of failure
*/
public VerificationException(Certificate cert, String message) {
- super(MessageFormatUtil.format("Certificate {0} failed: {1}", cert == null ? "Unknown" : ((X509Certificate) cert).getSubjectDN().getName(), message));
+ super(MessageFormatUtil.format(SignExceptionMessageConstant.CERTIFICATE_TEMPLATE_FOR_EXCEPTION_MESSAGE,
+ cert == null ? "Unknown" : ((X509Certificate) cert).getSubjectDN().getName(), message));
}
}
diff --git a/sign/src/main/java/com/itextpdf/signatures/VerificationOK.java b/sign/src/main/java/com/itextpdf/signatures/VerificationOK.java
index 915433b72e..b5353c425a 100644
--- a/sign/src/main/java/com/itextpdf/signatures/VerificationOK.java
+++ b/sign/src/main/java/com/itextpdf/signatures/VerificationOK.java
@@ -1,7 +1,7 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: Bruno Lowagie, Paulo Soares, et al.
This program is free software; you can redistribute it and/or modify
@@ -66,7 +66,7 @@ public class VerificationOK {
* @param message the reason why the certificate could be verified
*/
public VerificationOK(X509Certificate certificate,
- Class extends CertificateVerifier> verifierClass, String message) {
+ Class extends CertificateVerifier> verifierClass, String message) {
this.certificate = certificate;
this.verifierClass = verifierClass;
this.message = message;
diff --git a/sign/src/main/java/com/itextpdf/signatures/exceptions/SignExceptionMessageConstant.java b/sign/src/main/java/com/itextpdf/signatures/exceptions/SignExceptionMessageConstant.java
index 41ec2c2ced..365ffeb671 100644
--- a/sign/src/main/java/com/itextpdf/signatures/exceptions/SignExceptionMessageConstant.java
+++ b/sign/src/main/java/com/itextpdf/signatures/exceptions/SignExceptionMessageConstant.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is offered under a commercial and under the AGPL license.
@@ -33,9 +33,12 @@ public final class SignExceptionMessageConstant {
public static final String CANNOT_DECODE_PKCS7_SIGNED_DATA_OBJECT = "Cannot decode PKCS#7 SignedData object.";
public static final String CANNOT_FIND_SIGNING_CERTIFICATE_WITH_THIS_SERIAL = "Cannot find signing certificate "
+ "with serial {0}.";
+ public static final String CANNOT_BE_VERIFIED_CERTIFICATE_CHAIN = "Cannot be verified against the KeyStore or the "
+ + "certificate chain.";
public static final String CERTIFICATION_SIGNATURE_CREATION_FAILED_DOC_SHALL_NOT_CONTAIN_SIGS = "Certification "
+ "signature creation failed. Document shall not contain any certification or approval signatures before "
+ "signing with certification signature.";
+ public static final String CERTIFICATE_TEMPLATE_FOR_EXCEPTION_MESSAGE = "Certificate {0} failed: {1}";
public static final String DICTIONARY_THIS_KEY_IS_NOT_A_NAME = "Dictionary key {0} is not a name.";
public static final String DOCUMENT_ALREADY_PRE_CLOSED = "Document has been already pre closed.";
public static final String DOCUMENT_MUST_BE_PRE_CLOSED = "Document must be preClosed.";
@@ -45,6 +48,8 @@ public final class SignExceptionMessageConstant {
public static final String FIELD_NAMES_CANNOT_CONTAIN_A_DOT = "Field names cannot contain a dot.";
public static final String FIELD_TYPE_IS_NOT_A_SIGNATURE_FIELD_TYPE = "Field type is not a signature field type.";
public static final String INVALID_HTTP_RESPONSE = "Invalid http response {0}.";
+ public static final String INVALID_STATE_WHILE_CHECKING_CERT_CHAIN = "Invalid state. Possible circular "
+ + "certificate chain.";
public static final String INVALID_TSA_RESPONSE = "Invalid TSA {0} response code {1}.";
public static final String NO_CRYPTO_DICTIONARY_DEFINED = "No crypto dictionary defined.";
public static final String NOT_A_VALID_PKCS7_OBJECT_NOT_A_SEQUENCE = "Not a valid PKCS#7 object - not a sequence";
@@ -69,5 +74,7 @@ public final class SignExceptionMessageConstant {
public static final String UNKNOWN_KEY_ALGORITHM = "Unknown key algorithm: {0}.";
public static final String VERIFICATION_ALREADY_OUTPUT = "Verification already output.";
- private SignExceptionMessageConstant(){}
+ private SignExceptionMessageConstant(){
+ // Private constructor will prevent the instantiation of this class directly
+ }
}
diff --git a/sign/src/main/java/com/itextpdf/signatures/logs/SignLogMessageConstant.java b/sign/src/main/java/com/itextpdf/signatures/logs/SignLogMessageConstant.java
index ab3d321b17..57e8734417 100644
--- a/sign/src/main/java/com/itextpdf/signatures/logs/SignLogMessageConstant.java
+++ b/sign/src/main/java/com/itextpdf/signatures/logs/SignLogMessageConstant.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is offered under a commercial and under the AGPL license.
diff --git a/sign/src/test/java/com/itextpdf/signatures/BouncyCastleDigestUnitTest.java b/sign/src/test/java/com/itextpdf/signatures/BouncyCastleDigestUnitTest.java
index e26a610f88..ab20308d63 100644
--- a/sign/src/test/java/com/itextpdf/signatures/BouncyCastleDigestUnitTest.java
+++ b/sign/src/test/java/com/itextpdf/signatures/BouncyCastleDigestUnitTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is offered under a commercial and under the AGPL license.
diff --git a/sign/src/test/java/com/itextpdf/signatures/CertificateInfoTest.java b/sign/src/test/java/com/itextpdf/signatures/CertificateInfoTest.java
index dad06c7b3c..a728ba4c00 100644
--- a/sign/src/test/java/com/itextpdf/signatures/CertificateInfoTest.java
+++ b/sign/src/test/java/com/itextpdf/signatures/CertificateInfoTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is offered under a commercial and under the AGPL license.
diff --git a/sign/src/test/java/com/itextpdf/signatures/CertificateSupportedCriticalExtensionsTest.java b/sign/src/test/java/com/itextpdf/signatures/CertificateSupportedCriticalExtensionsTest.java
index d8e3b19a17..f2f041b631 100644
--- a/sign/src/test/java/com/itextpdf/signatures/CertificateSupportedCriticalExtensionsTest.java
+++ b/sign/src/test/java/com/itextpdf/signatures/CertificateSupportedCriticalExtensionsTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/sign/src/test/java/com/itextpdf/signatures/CertificateUtilTest.java b/sign/src/test/java/com/itextpdf/signatures/CertificateUtilTest.java
new file mode 100644
index 0000000000..82bdb6d2f3
--- /dev/null
+++ b/sign/src/test/java/com/itextpdf/signatures/CertificateUtilTest.java
@@ -0,0 +1,65 @@
+/*
+ This file is part of the iText (R) project.
+ Copyright (c) 1998-2022 iText Group NV
+ Authors: iText Software.
+
+ This program is offered under a commercial and under the AGPL license.
+ For commercial licensing, contact us at https://itextpdf.com/sales. For AGPL licensing, see below.
+
+ AGPL licensing:
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU Affero General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU Affero General Public License for more details.
+
+ You should have received a copy of the GNU Affero General Public License
+ along with this program. If not, see .
+ */
+package com.itextpdf.signatures;
+
+import com.itextpdf.test.ExtendedITextTest;
+import com.itextpdf.test.annotations.type.UnitTest;
+import com.itextpdf.test.signutils.Pkcs12FileHelper;
+import org.junit.Assert;
+import org.junit.Test;
+import org.junit.experimental.categories.Category;
+
+import java.security.cert.X509Certificate;
+
+@Category(UnitTest.class)
+public class CertificateUtilTest extends ExtendedITextTest {
+
+ private static final String CERTS_SRC = "./src/test/resources/com/itextpdf/signatures/certs/";
+ private static final char[] PASSWORD = "testpass".toCharArray();
+
+ @Test
+ public void getTSAURLAdobeExtensionTest() throws Exception {
+ X509Certificate tsaCert =
+ (X509Certificate) Pkcs12FileHelper.readFirstChain(CERTS_SRC + "adobeExtensionCert.p12", PASSWORD)[0];
+ String url = CertificateUtil.getTSAURL(tsaCert);
+
+ Assert.assertEquals("https://itextpdf.com/en", url);
+ }
+
+ @Test
+ public void getTSAURLUsualTimestampCertificateTest() throws Exception {
+ X509Certificate tsaCert =
+ (X509Certificate) Pkcs12FileHelper.readFirstChain(CERTS_SRC + "tsCertRsa.p12", PASSWORD)[0];
+ String url = CertificateUtil.getTSAURL(tsaCert);
+
+ Assert.assertNull(url);
+ }
+
+ @Test
+ public void getTSAURLAdobeExtensionNotTaggedTest() throws Exception {
+ X509Certificate tsaCert = (X509Certificate)
+ Pkcs12FileHelper.readFirstChain(CERTS_SRC + "adobeExtensionCertWithoutTag.p12", PASSWORD)[0];
+
+ Assert.assertThrows(ClassCastException.class, () -> CertificateUtil.getTSAURL(tsaCert));
+ }
+}
diff --git a/sign/src/test/java/com/itextpdf/signatures/CrlClientOfflineTest.java b/sign/src/test/java/com/itextpdf/signatures/CrlClientOfflineTest.java
index 327be0d56f..649521aee8 100644
--- a/sign/src/test/java/com/itextpdf/signatures/CrlClientOfflineTest.java
+++ b/sign/src/test/java/com/itextpdf/signatures/CrlClientOfflineTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is offered under a commercial and under the AGPL license.
diff --git a/sign/src/test/java/com/itextpdf/signatures/DigestAlgorithmsManualTest.java b/sign/src/test/java/com/itextpdf/signatures/DigestAlgorithmsManualTest.java
index 0c89a16fcf..a8ede58b90 100644
--- a/sign/src/test/java/com/itextpdf/signatures/DigestAlgorithmsManualTest.java
+++ b/sign/src/test/java/com/itextpdf/signatures/DigestAlgorithmsManualTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/sign/src/test/java/com/itextpdf/signatures/DigestAlgorithmsTest.java b/sign/src/test/java/com/itextpdf/signatures/DigestAlgorithmsTest.java
index eb3fe65c66..602278530c 100644
--- a/sign/src/test/java/com/itextpdf/signatures/DigestAlgorithmsTest.java
+++ b/sign/src/test/java/com/itextpdf/signatures/DigestAlgorithmsTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
@@ -77,4 +77,4 @@ public void nonExistingNameGetAllowedDigestTest() {
public void nullNameGetAllowedDigestTest() {
Assert.assertThrows(IllegalArgumentException.class, () -> DigestAlgorithms.getAllowedDigest(null));
}
-}
\ No newline at end of file
+}
diff --git a/sign/src/test/java/com/itextpdf/signatures/EncryptionAlgorithmsManualTest.java b/sign/src/test/java/com/itextpdf/signatures/EncryptionAlgorithmsManualTest.java
index e2fa285a99..c8242cfbe3 100644
--- a/sign/src/test/java/com/itextpdf/signatures/EncryptionAlgorithmsManualTest.java
+++ b/sign/src/test/java/com/itextpdf/signatures/EncryptionAlgorithmsManualTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is offered under a commercial and under the AGPL license.
diff --git a/sign/src/test/java/com/itextpdf/signatures/EncryptionAlgorithmsTest.java b/sign/src/test/java/com/itextpdf/signatures/EncryptionAlgorithmsTest.java
index 377f8422c2..0425ef4fde 100644
--- a/sign/src/test/java/com/itextpdf/signatures/EncryptionAlgorithmsTest.java
+++ b/sign/src/test/java/com/itextpdf/signatures/EncryptionAlgorithmsTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is offered under a commercial and under the AGPL license.
diff --git a/sign/src/test/java/com/itextpdf/signatures/ExternalBlankSignatureContainerUnitTest.java b/sign/src/test/java/com/itextpdf/signatures/ExternalBlankSignatureContainerUnitTest.java
index 571a8ac097..daef3e751a 100644
--- a/sign/src/test/java/com/itextpdf/signatures/ExternalBlankSignatureContainerUnitTest.java
+++ b/sign/src/test/java/com/itextpdf/signatures/ExternalBlankSignatureContainerUnitTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is offered under a commercial and under the AGPL license.
diff --git a/sign/src/test/java/com/itextpdf/signatures/KeyStoreUtilUnitTest.java b/sign/src/test/java/com/itextpdf/signatures/KeyStoreUtilUnitTest.java
index 45156d5b93..5dd7ab3c52 100644
--- a/sign/src/test/java/com/itextpdf/signatures/KeyStoreUtilUnitTest.java
+++ b/sign/src/test/java/com/itextpdf/signatures/KeyStoreUtilUnitTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is offered under a commercial and under the AGPL license.
diff --git a/sign/src/test/java/com/itextpdf/signatures/LtvVerificationTest.java b/sign/src/test/java/com/itextpdf/signatures/LtvVerificationTest.java
index 7715480857..240bbe4fad 100644
--- a/sign/src/test/java/com/itextpdf/signatures/LtvVerificationTest.java
+++ b/sign/src/test/java/com/itextpdf/signatures/LtvVerificationTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is offered under a commercial and under the AGPL license.
@@ -22,24 +22,37 @@ This file is part of the iText (R) project.
*/
package com.itextpdf.signatures;
+import com.itextpdf.kernel.pdf.PdfArray;
+import com.itextpdf.kernel.pdf.PdfDictionary;
import com.itextpdf.kernel.pdf.PdfDocument;
+import com.itextpdf.kernel.pdf.PdfIndirectReference;
+import com.itextpdf.kernel.pdf.PdfName;
import com.itextpdf.kernel.pdf.PdfReader;
+import com.itextpdf.kernel.pdf.PdfWriter;
+import com.itextpdf.kernel.pdf.StampingProperties;
import com.itextpdf.signatures.LtvVerification.CertificateInclusion;
import com.itextpdf.signatures.LtvVerification.CertificateOption;
import com.itextpdf.signatures.LtvVerification.Level;
+import com.itextpdf.signatures.testutils.client.TestCrlClient;
import com.itextpdf.test.ExtendedITextTest;
import com.itextpdf.test.LogLevelConstants;
import com.itextpdf.test.annotations.LogMessage;
import com.itextpdf.test.annotations.LogMessages;
import com.itextpdf.test.annotations.type.UnitTest;
+import com.itextpdf.test.signutils.Pkcs12FileHelper;
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.security.GeneralSecurityException;
+import java.security.PrivateKey;
import java.security.Security;
+import java.security.cert.X509Certificate;
import java.util.ArrayList;
import java.util.List;
import org.junit.Assert;
import org.junit.BeforeClass;
+import org.junit.Ignore;
import org.junit.Test;
import org.junit.experimental.categories.Category;
@@ -50,6 +63,8 @@ public class LtvVerificationTest extends ExtendedITextTest {
private static final String SRC_PDF = SOURCE_FOLDER + "pdfWithDssDictionary.pdf";
private static final String SIG_FIELD_NAME = "Signature1";
private static final String CRL_DISTRIBUTION_POINT = "http://example.com";
+ private static final String CERT_FOLDER_PATH = "./src/test/resources/com/itextpdf/signatures/certs/";
+ private static final char[] PASSWORD = "testpass".toCharArray();
private static LtvVerification TEST_VERIFICATION;
@@ -60,6 +75,64 @@ public static void before() throws IOException {
TEST_VERIFICATION = new LtvVerification(pdfDoc);
}
+ @Test
+ @LogMessages(messages = {
+ @LogMessage(messageTemplate = "Adding verification for TestSignature", logLevel = LogLevelConstants.INFO),
+ @LogMessage(messageTemplate = "Certificate: C=BY,L=Minsk,O=iText,OU=test,CN=iTextTestRsaCert01", logLevel = LogLevelConstants.INFO),
+ @LogMessage(messageTemplate = "CRL added", logLevel = LogLevelConstants.INFO),
+ @LogMessage(messageTemplate = "Certificate: C=BY,L=Minsk,O=iText,OU=test,CN=iTextTestRoot", logLevel = LogLevelConstants.INFO)
+ })
+ public void addVerificationToDocumentWithAlreadyExistedDss() throws IOException, GeneralSecurityException {
+ String input = SOURCE_FOLDER + "signingCertHasChainWithOcspOnlyForChildCert.pdf";
+ String signatureHash = "C5CC1458AAA9B8BAB0677F9EA409983B577178A3";
+
+ try (PdfDocument pdfDocument = new PdfDocument(new PdfReader(input))) {
+ PdfDictionary dss = pdfDocument.getCatalog().getPdfObject().getAsDictionary(PdfName.DSS);
+ Assert.assertNull(dss.get(PdfName.CRLs));
+ PdfArray ocsps = dss.getAsArray(PdfName.OCSPs);
+ Assert.assertEquals(1, ocsps.size());
+ PdfIndirectReference pir = ocsps.get(0).getIndirectReference();
+
+ PdfDictionary vri = dss.getAsDictionary(PdfName.VRI);
+ Assert.assertEquals(1, vri.entrySet().size());
+ PdfDictionary vriElem = vri.getAsDictionary(new PdfName(signatureHash));
+ Assert.assertEquals(1, vriElem.entrySet().size());
+ final PdfArray vriOcsp = vriElem.getAsArray(PdfName.OCSP);
+ Assert.assertEquals(1, vriOcsp.size());
+ Assert.assertEquals(pir, vriOcsp.get(0).getIndirectReference());
+ }
+
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ try (PdfDocument pdfDocument = new PdfDocument(new PdfReader(input), new PdfWriter(baos), new StampingProperties().useAppendMode())) {
+ LtvVerification verification = new LtvVerification(pdfDocument);
+
+ String rootCertPath = CERT_FOLDER_PATH + "rootRsa.p12";
+ X509Certificate caCert = (X509Certificate) Pkcs12FileHelper.readFirstChain(rootCertPath, PASSWORD)[0];
+ PrivateKey caPrivateKey = Pkcs12FileHelper.readFirstKey(rootCertPath, PASSWORD, PASSWORD);
+
+ verification.addVerification("TestSignature", null, new TestCrlClient().addBuilderForCertIssuer(caCert, caPrivateKey),
+ CertificateOption.SIGNING_CERTIFICATE, Level.CRL, CertificateInclusion.NO);
+
+ verification.merge();
+ }
+
+ try (PdfDocument pdfDocument = new PdfDocument(new PdfReader(new ByteArrayInputStream(baos.toByteArray())))) {
+ PdfDictionary dss = pdfDocument.getCatalog().getPdfObject().getAsDictionary(PdfName.DSS);
+ Assert.assertNull(dss.get(PdfName.OCSPs));
+ PdfArray crls = dss.getAsArray(PdfName.CRLs);
+ Assert.assertEquals(1, crls.size());
+ PdfIndirectReference pir = crls.get(0).getIndirectReference();
+
+ PdfDictionary vri = dss.getAsDictionary(PdfName.VRI);
+ Assert.assertEquals(1, vri.entrySet().size());
+ PdfDictionary vriElem = vri.getAsDictionary(new PdfName(signatureHash));
+ Assert.assertEquals(1, vriElem.entrySet().size());
+ final PdfArray vriCrl = vriElem.getAsArray(PdfName.CRL);
+ Assert.assertEquals(1, vriCrl.size());
+ Assert.assertEquals(pir, vriCrl.get(0).getIndirectReference());
+ }
+ }
+
@Test
public void validateSigNameWithEmptyByteArrayCrlOcspCertTest() throws IOException, GeneralSecurityException {
List crls = new ArrayList<>();
@@ -270,6 +343,7 @@ public void validateSigNameWithoutCrlAndOcspWholeChainOcspCrlNoTest() throws Gen
CertificateInclusion.NO, false);
}
+ @Ignore("DEVSIX-6354 : Remove this ignore after closing this ticket.")
@Test
@LogMessages(messages = {
@LogMessage(messageTemplate = "Added CRL url: http://example.com", logLevel = LogLevelConstants.INFO),
@@ -281,6 +355,7 @@ public void validateSigNameSigningOcspCrlYesTest() throws GeneralSecurityExcepti
CertificateInclusion.YES, true);
}
+ @Ignore("DEVSIX-6354 : Remove this ignore after closing this ticket.")
@Test
@LogMessages(messages = {
@LogMessage(messageTemplate = "Added CRL url: http://example.com", logLevel = LogLevelConstants.INFO)
@@ -290,6 +365,7 @@ public void validateSigNameSigningOcspYesTest() throws GeneralSecurityException,
CertificateInclusion.YES, false);
}
+ @Ignore("DEVSIX-6354 : Remove this ignore after closing this ticket.")
@Test
@LogMessages(messages = {
@LogMessage(messageTemplate = "Added CRL url: http://example.com", logLevel = LogLevelConstants.INFO),
@@ -301,6 +377,7 @@ public void validateSigNameSigningCrlYesTest() throws GeneralSecurityException,
CertificateInclusion.YES, true);
}
+ @Ignore("DEVSIX-6354 : Remove this ignore after closing this ticket.")
@Test
@LogMessages(messages = {
@LogMessage(messageTemplate = "Added CRL url: http://example.com", logLevel = LogLevelConstants.INFO),
@@ -312,6 +389,7 @@ public void validateSigNameSigningOcspOptionalCrlYesTest() throws GeneralSecurit
Level.OCSP_OPTIONAL_CRL, CertificateInclusion.YES, true);
}
+ @Ignore("DEVSIX-6354 : Remove this ignore after closing this ticket.")
@Test
@LogMessages(messages = {
@LogMessage(messageTemplate = "Added CRL url: http://example.com", logLevel = LogLevelConstants.INFO),
@@ -323,6 +401,7 @@ public void validateSigNameSigningOcspCrlNoTest() throws GeneralSecurityExceptio
CertificateInclusion.NO, true);
}
+ @Ignore("DEVSIX-6354 : Remove this ignore after closing this ticket.")
@Test
@LogMessages(messages = {
@LogMessage(messageTemplate = "Added CRL url: http://example.com", logLevel = LogLevelConstants.INFO)
@@ -332,6 +411,7 @@ public void validateSigNameSigningOcspNoTest() throws GeneralSecurityException,
CertificateInclusion.NO, false);
}
+ @Ignore("DEVSIX-6354 : Remove this ignore after closing this ticket.")
@Test
@LogMessages(messages = {
@LogMessage(messageTemplate = "Added CRL url: http://example.com", logLevel = LogLevelConstants.INFO),
@@ -343,6 +423,7 @@ public void validateSigNameSigningCrlNoTest() throws GeneralSecurityException, I
CertificateInclusion.NO, true);
}
+ @Ignore("DEVSIX-6354 : Remove this ignore after closing this ticket.")
@Test
@LogMessages(messages = {
@LogMessage(messageTemplate = "Added CRL url: http://example.com", logLevel = LogLevelConstants.INFO),
@@ -354,6 +435,7 @@ public void validateSigNameSigningOcspOptionalCrlNoTest() throws GeneralSecurity
Level.OCSP_OPTIONAL_CRL, CertificateInclusion.NO, true);
}
+ @Ignore("DEVSIX-6354 : Remove this ignore after closing this ticket.")
@Test
@LogMessages(messages = {
@LogMessage(messageTemplate = "Added CRL url: http://example.com", logLevel = LogLevelConstants.INFO),
@@ -367,6 +449,7 @@ public void validateSigNameWholeChainOcspCrlYesTest() throws GeneralSecurityExce
CertificateInclusion.YES, true);
}
+ @Ignore("DEVSIX-6354 : Remove this ignore after closing this ticket.")
@Test
@LogMessages(messages = {
@LogMessage(messageTemplate = "Added CRL url: http://example.com", logLevel = LogLevelConstants.INFO),
@@ -380,6 +463,7 @@ public void validateSigNameWholeChainOcspOptionalCrlYesTest() throws IOException
CertificateInclusion.YES, true);
}
+ @Ignore("DEVSIX-6354 : Remove this ignore after closing this ticket.")
@Test
@LogMessages(messages = {
@LogMessage(messageTemplate = "Added CRL url: http://example.com", logLevel = LogLevelConstants.INFO)
@@ -389,6 +473,7 @@ public void validateSigNameWholeChainOcspYesTest() throws IOException, GeneralSe
CertificateInclusion.YES, false);
}
+ @Ignore("DEVSIX-6354 : Remove this ignore after closing this ticket.")
@Test
@LogMessages(messages = {
@LogMessage(messageTemplate = "Added CRL url: http://example.com", logLevel = LogLevelConstants.INFO),
@@ -402,6 +487,7 @@ public void validateSigNameWholeChainCrlYesTest() throws IOException, GeneralSec
CertificateInclusion.YES, true);
}
+ @Ignore("DEVSIX-6354 : Remove this ignore after closing this ticket.")
@Test
@LogMessages(messages = {
@LogMessage(messageTemplate = "Added CRL url: http://example.com", logLevel = LogLevelConstants.INFO),
@@ -415,6 +501,7 @@ public void validateSigNameWholeChainOcspCrlNoTest() throws GeneralSecurityExcep
CertificateInclusion.NO, true);
}
+ @Ignore("DEVSIX-6354 : Remove this ignore after closing this ticket.")
@Test
@LogMessages(messages = {
@LogMessage(messageTemplate = "Added CRL url: http://example.com", logLevel = LogLevelConstants.INFO),
@@ -428,6 +515,7 @@ public void validateSigNameWholeChainOcspOptionalCrlNoTest() throws IOException,
CertificateInclusion.NO, true);
}
+ @Ignore("DEVSIX-6354 : Remove this ignore after closing this ticket.")
@Test
@LogMessages(messages = {
@LogMessage(messageTemplate = "Added CRL url: http://example.com", logLevel = LogLevelConstants.INFO)
@@ -437,6 +525,7 @@ public void validateSigNameWholeChainOcspNoTest() throws IOException, GeneralSec
CertificateInclusion.NO, false);
}
+ @Ignore("DEVSIX-6354 : Remove this ignore after closing this ticket.")
@Test
@LogMessages(messages = {
@LogMessage(messageTemplate = "Added CRL url: http://example.com", logLevel = LogLevelConstants.INFO),
diff --git a/sign/src/test/java/com/itextpdf/signatures/LtvVerifierIntegrationTest.java b/sign/src/test/java/com/itextpdf/signatures/LtvVerifierIntegrationTest.java
new file mode 100644
index 0000000000..48f3926f0d
--- /dev/null
+++ b/sign/src/test/java/com/itextpdf/signatures/LtvVerifierIntegrationTest.java
@@ -0,0 +1,285 @@
+/*
+ This file is part of the iText (R) project.
+ Copyright (c) 1998-2022 iText Group NV
+ Authors: iText Software.
+
+ This program is offered under a commercial and under the AGPL license.
+ For commercial licensing, contact us at https://itextpdf.com/sales. For AGPL licensing, see below.
+
+ AGPL licensing:
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU Affero General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU Affero General Public License for more details.
+
+ You should have received a copy of the GNU Affero General Public License
+ along with this program. If not, see .
+ */
+package com.itextpdf.signatures;
+
+import com.itextpdf.kernel.pdf.PdfDocument;
+import com.itextpdf.kernel.pdf.PdfReader;
+import com.itextpdf.signatures.LtvVerification.CertificateOption;
+import com.itextpdf.test.ExtendedITextTest;
+import com.itextpdf.test.LogLevelConstants;
+import com.itextpdf.test.annotations.LogMessage;
+import com.itextpdf.test.annotations.LogMessages;
+import com.itextpdf.test.annotations.type.IntegrationTest;
+
+import java.io.IOException;
+import java.security.GeneralSecurityException;
+import java.security.Security;
+import java.util.List;
+import org.bouncycastle.jce.provider.BouncyCastleProvider;
+import org.junit.Assert;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.junit.experimental.categories.Category;
+
+@Category(IntegrationTest.class)
+public class LtvVerifierIntegrationTest extends ExtendedITextTest {
+ private static final String SOURCE_FOLDER = "./src/test/resources/com/itextpdf/signatures/LtvVerifierIntegrationTest/";
+
+
+ @BeforeClass
+ public static void before() {
+ Security.addProvider(new BouncyCastleProvider());
+ }
+
+ @Test
+ @LogMessages(messages = {
+ @LogMessage(messageTemplate = "The timestamp covers whole document.", logLevel = LogLevelConstants.INFO),
+ @LogMessage(messageTemplate = "The signed document has not been modified.", logLevel = LogLevelConstants.INFO),
+ @LogMessage(messageTemplate = "Checking signature TestSignature", logLevel = LogLevelConstants.INFO),
+ @LogMessage(messageTemplate = "Verifying signature.", logLevel = LogLevelConstants.INFO),
+ // Checking of "All certificates are valid on ..." message is impossible because current time is used in message
+ @LogMessage(messageTemplate = "C=BY,L=Minsk,O=iText,OU=test,CN=iTextTestRoot", logLevel = LogLevelConstants.INFO),
+ @LogMessage(messageTemplate = "Valid OCSPs found: 0", logLevel = LogLevelConstants.INFO),
+ @LogMessage(messageTemplate = "Valid CRLs found: 0", logLevel = LogLevelConstants.INFO),
+ @LogMessage(messageTemplate = "Switching to previous revision.", logLevel = LogLevelConstants.INFO),
+ @LogMessage(messageTemplate = "No signatures in revision", logLevel = LogLevelConstants.INFO)
+ })
+ public void verifySigningCertIsSelfSignedWithoutRevocationDataTest() throws IOException, GeneralSecurityException {
+ String src = SOURCE_FOLDER + "signingCertIsSelfSignedWithoutRevocationData.pdf";
+ try (PdfDocument pdfDocument = new PdfDocument(new PdfReader(src))) {
+ LtvVerifier verifier = new LtvVerifier(pdfDocument);
+ verifier.setVerifyRootCertificate(false);
+ List verificationOKList = verifier.verifySignature();
+ Assert.assertTrue(verificationOKList.isEmpty());
+ }
+ }
+
+ @Test
+ @LogMessages(messages = {
+ @LogMessage(messageTemplate = "The timestamp covers whole document.", logLevel = LogLevelConstants.INFO),
+ @LogMessage(messageTemplate = "The signed document has not been modified.", logLevel = LogLevelConstants.INFO),
+ @LogMessage(messageTemplate = "Checking signature TestSignature", logLevel = LogLevelConstants.INFO),
+ @LogMessage(messageTemplate = "Verifying signature.", logLevel = LogLevelConstants.INFO),
+ // Checking of "All certificates are valid on ..." message is impossible because current time is used in message
+ @LogMessage(messageTemplate = "C=BY,L=Minsk,O=iText,OU=test,CN=iTextTestRsaCert01", logLevel = LogLevelConstants.INFO),
+ @LogMessage(messageTemplate = "Valid OCSPs found: 0", logLevel = LogLevelConstants.INFO),
+ @LogMessage(messageTemplate = "Valid CRLs found: 0", logLevel = LogLevelConstants.INFO),
+ })
+ public void verifySigningCertHasChainWithoutRevocationDataTest() throws IOException, GeneralSecurityException {
+ String src = SOURCE_FOLDER + "signingCertHasChainWithoutRevocationData.pdf";
+ try (PdfDocument pdfDocument = new PdfDocument(new PdfReader(src))) {
+ LtvVerifier verifier = new LtvVerifier(pdfDocument);
+ verifier.setVerifyRootCertificate(false);
+ Exception ex = Assert.assertThrows(VerificationException.class, () -> verifier.verifySignature());
+ Assert.assertEquals("Certificate C=BY,L=Minsk,O=iText,OU=test,CN=iTextTestRsaCert01 failed: "
+ + "Couldn't verify with CRL or OCSP or trusted anchor", ex.getMessage());
+ }
+ }
+
+ @Test
+ @LogMessages(messages = {
+ @LogMessage(messageTemplate = "The timestamp covers whole document.", logLevel = LogLevelConstants.INFO, count = 2),
+ @LogMessage(messageTemplate = "The signed document has not been modified.", logLevel = LogLevelConstants.INFO, count = 2),
+ @LogMessage(messageTemplate = "Checking document-level timestamp signature TestTimestamp", logLevel = LogLevelConstants.INFO),
+ @LogMessage(messageTemplate = "Switching to previous revision.", logLevel = LogLevelConstants.INFO, count = 2),
+ @LogMessage(messageTemplate = "Checking signature TestSignature", logLevel = LogLevelConstants.INFO),
+ @LogMessage(messageTemplate = "Verifying signature.", logLevel = LogLevelConstants.INFO),
+ // Checking of "All certificates are valid on ..." message is impossible because current time is used in message
+ @LogMessage(messageTemplate = "C=BY,L=Minsk,O=iText,OU=test,CN=iTextTestRsaCert01", logLevel = LogLevelConstants.INFO),
+ @LogMessage(messageTemplate = "Valid OCSPs found: 1", logLevel = LogLevelConstants.INFO),
+ @LogMessage(messageTemplate = "Valid CRLs found: 0", logLevel = LogLevelConstants.INFO, count = 2),
+ @LogMessage(messageTemplate = "C=BY,L=Minsk,O=iText,OU=test,CN=iTextTestRoot", logLevel = LogLevelConstants.INFO),
+ @LogMessage(messageTemplate = "Valid OCSPs found: 0", logLevel = LogLevelConstants.INFO),
+ @LogMessage(messageTemplate = "No signatures in revision", logLevel = LogLevelConstants.INFO)
+ })
+ public void verifySigningCertHasChainWithOcspOnlyForChildCertNotVerifyRootTest()
+ throws IOException, GeneralSecurityException {
+
+ String src = SOURCE_FOLDER + "signingCertHasChainWithOcspOnlyForChildCert.pdf";
+ try (PdfDocument pdfDocument = new PdfDocument(new PdfReader(src))) {
+ LtvVerifier verifier = new LtvVerifier(pdfDocument);
+ verifier.setCertificateOption(CertificateOption.WHOLE_CHAIN);
+ verifier.setVerifyRootCertificate(false);
+ // iText doesn't allow adding\processing DSS with one revision in document, so document
+ // "signingCertHasChainWithOcspOnlyForChildCert.pdf" contains 2 revision. The first is
+ // dummy revision (signing cert of first revision has a chain without any revocation data).
+ // The second is main revision which verifying we want to test.
+ verifier.switchToPreviousRevision();
+
+ List verificationOKList = verifier.verifySignature();
+
+ Assert.assertEquals(2, verificationOKList.size());
+ VerificationOK verificationOK = verificationOKList.get(0);
+ Assert.assertEquals("C=BY,L=Minsk,O=iText,OU=test,CN=iTextTestRsaCert01",
+ verificationOK.certificate.getSubjectDN().getName());
+ Assert.assertEquals("Valid OCSPs Found: 1", verificationOK.message);
+
+ verificationOK = verificationOKList.get(1);
+ Assert.assertEquals("C=BY,L=Minsk,O=iText,OU=test,CN=iTextTestRoot",
+ verificationOK.certificate.getSubjectDN().getName());
+ Assert.assertEquals("Root certificate passed without checking", verificationOK.message);
+ }
+ }
+
+ @Test
+ @LogMessages(messages = {
+ @LogMessage(messageTemplate = "The timestamp covers whole document.", logLevel = LogLevelConstants.INFO, count = 2),
+ @LogMessage(messageTemplate = "The signed document has not been modified.", logLevel = LogLevelConstants.INFO, count = 2),
+ @LogMessage(messageTemplate = "Checking document-level timestamp signature TestTimestamp", logLevel = LogLevelConstants.INFO),
+ @LogMessage(messageTemplate = "Switching to previous revision.", logLevel = LogLevelConstants.INFO),
+ @LogMessage(messageTemplate = "Checking signature TestSignature", logLevel = LogLevelConstants.INFO),
+ @LogMessage(messageTemplate = "Verifying signature.", logLevel = LogLevelConstants.INFO),
+ // Checking of "All certificates are valid on ..." message is impossible because current time is used in message
+ @LogMessage(messageTemplate = "C=BY,L=Minsk,O=iText,OU=test,CN=iTextTestRsaCert01", logLevel = LogLevelConstants.INFO),
+ @LogMessage(messageTemplate = "Valid OCSPs found: 1", logLevel = LogLevelConstants.INFO),
+ @LogMessage(messageTemplate = "Valid CRLs found: 0", logLevel = LogLevelConstants.INFO, count = 2),
+ @LogMessage(messageTemplate = "C=BY,L=Minsk,O=iText,OU=test,CN=iTextTestRoot", logLevel = LogLevelConstants.INFO),
+ @LogMessage(messageTemplate = "Valid OCSPs found: 0", logLevel = LogLevelConstants.INFO)
+ })
+ public void verifySigningCertHasChainWithOcspOnlyForChildCertVerifyRootTest()
+ throws IOException, GeneralSecurityException {
+
+ String src = SOURCE_FOLDER + "signingCertHasChainWithOcspOnlyForChildCert.pdf";
+ try (PdfDocument pdfDocument = new PdfDocument(new PdfReader(src))) {
+ LtvVerifier verifier = new LtvVerifier(pdfDocument);
+ verifier.setCertificateOption(CertificateOption.WHOLE_CHAIN);
+ verifier.setVerifyRootCertificate(true);
+ // iText doesn't allow adding\processing DSS with one revision in document, so document
+ // "signingCertHasChainWithOcspOnlyForChildCert.pdf" contains 2 revision. The first is
+ // dummy revision (signing cert of first revision has a chain without any revocation data).
+ // The second is main revision which verifying we want to test.
+ verifier.switchToPreviousRevision();
+
+ Exception ex = Assert.assertThrows(VerificationException.class, () -> verifier.verifySignature());
+ Assert.assertEquals("Certificate C=BY,L=Minsk,O=iText,OU=test,CN=iTextTestRoot failed: "
+ + "Couldn't verify with CRL or OCSP or trusted anchor", ex.getMessage());
+ }
+ }
+
+ @Test
+ @LogMessages(messages = {
+ @LogMessage(messageTemplate = "The timestamp covers whole document.", logLevel = LogLevelConstants.INFO, count = 2),
+ @LogMessage(messageTemplate = "The signed document has not been modified.", logLevel = LogLevelConstants.INFO, count = 2),
+ @LogMessage(messageTemplate = "Checking document-level timestamp signature TestTimestamp", logLevel = LogLevelConstants.INFO),
+ @LogMessage(messageTemplate = "Switching to previous revision.", logLevel = LogLevelConstants.INFO),
+ @LogMessage(messageTemplate = "Checking signature TestSignature", logLevel = LogLevelConstants.INFO),
+ @LogMessage(messageTemplate = "Verifying signature.", logLevel = LogLevelConstants.INFO),
+ // Checking of "All certificates are valid on ..." message is impossible because current time is used in message
+ @LogMessage(messageTemplate = "C=BY,L=Minsk,O=iText,OU=test,CN=iTextTestRsaCertWithChain", logLevel = LogLevelConstants.INFO),
+ @LogMessage(messageTemplate = "Valid OCSPs found: 1", logLevel = LogLevelConstants.INFO),
+ @LogMessage(messageTemplate = "Valid CRLs found: 0", logLevel = LogLevelConstants.INFO, count = 2),
+ @LogMessage(messageTemplate = "C=BY,L=Minsk,O=iText,OU=test,CN=iTextTestIntermediateRsa01", logLevel = LogLevelConstants.INFO),
+ @LogMessage(messageTemplate = "Valid OCSPs found: 0", logLevel = LogLevelConstants.INFO)
+ })
+ public void verifySigningCertHas3ChainWithOcspOnlyForChildCertVerifyRootTest()
+ throws IOException, GeneralSecurityException {
+
+ String src = SOURCE_FOLDER + "signingCertHas3ChainWithOcspOnlyForChildCert.pdf";
+ try (PdfDocument pdfDocument = new PdfDocument(new PdfReader(src))) {
+ LtvVerifier verifier = new LtvVerifier(pdfDocument);
+ verifier.setCertificateOption(CertificateOption.WHOLE_CHAIN);
+ verifier.setVerifyRootCertificate(true);
+ // iText doesn't allow adding\processing DSS with one revision in document, so document
+ // "signingCertHas3ChainWithOcspOnlyForChildCert.pdf" contains 2 revision. The first is
+ // dummy revision (signing cert of first revision has a chain without any revocation data).
+ // The second is main revision which verifying we want to test.
+ verifier.switchToPreviousRevision();
+
+ Exception ex = Assert.assertThrows(VerificationException.class, () -> verifier.verifySignature());
+ Assert.assertEquals("Certificate C=BY,L=Minsk,O=iText,OU=test,CN=iTextTestIntermediateRsa01 failed: "
+ + "Couldn't verify with CRL or OCSP or trusted anchor", ex.getMessage());
+ }
+ }
+
+ @Test
+ @LogMessages(messages = {
+ @LogMessage(messageTemplate = "The timestamp covers whole document.", logLevel = LogLevelConstants.INFO, count = 2),
+ @LogMessage(messageTemplate = "The signed document has not been modified.", logLevel = LogLevelConstants.INFO, count = 2),
+ @LogMessage(messageTemplate = "Checking document-level timestamp signature TestTimestamp", logLevel = LogLevelConstants.INFO),
+ @LogMessage(messageTemplate = "Switching to previous revision.", logLevel = LogLevelConstants.INFO, count = 2),
+ @LogMessage(messageTemplate = "Checking signature TestSignature", logLevel = LogLevelConstants.INFO),
+ @LogMessage(messageTemplate = "Verifying signature.", logLevel = LogLevelConstants.INFO),
+ // Checking of "All certificates are valid on ..." message is impossible because current time is used in message
+ @LogMessage(messageTemplate = "C=BY,L=Minsk,O=iText,OU=test,CN=iTextTestRsaCert01", logLevel = LogLevelConstants.INFO),
+ @LogMessage(messageTemplate = "Valid OCSPs found: 1", logLevel = LogLevelConstants.INFO),
+ @LogMessage(messageTemplate = "Valid CRLs found: 0", logLevel = LogLevelConstants.INFO, count = 2),
+ @LogMessage(messageTemplate = "C=BY,L=Minsk,O=iText,OU=test,CN=iTextTestRoot", logLevel = LogLevelConstants.INFO),
+ @LogMessage(messageTemplate = "Valid OCSPs found: 0", logLevel = LogLevelConstants.INFO),
+ @LogMessage(messageTemplate = "No signatures in revision", logLevel = LogLevelConstants.INFO)
+ })
+ public void notTrustedRootCertificateInLatestRevisionTest()
+ throws IOException, GeneralSecurityException {
+
+ String src = SOURCE_FOLDER + "signingCertHasChainWithOcspOnlyForChildCert.pdf";
+ try (PdfDocument pdfDocument = new PdfDocument(new PdfReader(src))) {
+ LtvVerifier verifier = new LtvVerifier(pdfDocument);
+ verifier.setCertificateOption(CertificateOption.WHOLE_CHAIN);
+ verifier.setVerifyRootCertificate(true);
+ // iText doesn't allow adding\processing DSS with one revision in document, so document
+ // "signingCertHasChainWithOcspOnlyForChildCert.pdf" contains 2 revision. The first is
+ // dummy revision (signing cert of first revision has a chain without any revocation data).
+ // The second is main revision which verifying we want to test.
+ verifier.switchToPreviousRevision();
+ // TODO after implementing DEVSIX-6233, 1- pass local CRL for child certificate to LtvVerifier
+ // 2- don't manually change latestRevision field 3- don't use first signature and DSS in test PDF document
+ verifier.latestRevision = true;
+
+ List verificationOKList = verifier.verifySignature();
+
+ Assert.assertEquals(3, verificationOKList.size());
+ VerificationOK verificationOK = verificationOKList.get(0);
+ Assert.assertEquals("C=BY,L=Minsk,O=iText,OU=test,CN=iTextTestRsaCert01",
+ verificationOK.certificate.getSubjectDN().getName());
+ Assert.assertEquals("Valid OCSPs Found: 1", verificationOK.message);
+
+ verificationOK = verificationOKList.get(1);
+ Assert.assertEquals("C=BY,L=Minsk,O=iText,OU=test,CN=iTextTestRoot",
+ verificationOK.certificate.getSubjectDN().getName());
+ Assert.assertEquals("Root certificate in final revision", verificationOK.message);
+
+ verificationOK = verificationOKList.get(2);
+ Assert.assertEquals("C=BY,L=Minsk,O=iText,OU=test,CN=iTextTestRoot",
+ verificationOK.certificate.getSubjectDN().getName());
+ Assert.assertEquals("Root certificate passed without checking", verificationOK.message);
+ }
+ }
+
+ @Test
+ public void switchBetweenSeveralRevisionsTest() throws IOException, GeneralSecurityException {
+ String testInput = SOURCE_FOLDER + "severalConsequentSignatures.pdf";
+
+ try(PdfReader pdfReader = new PdfReader(testInput); PdfDocument pdfDoc = new PdfDocument(pdfReader)) {
+
+ LtvVerifier ltvVerifier = new LtvVerifier(pdfDoc);
+
+ Assert.assertEquals("timestampSig2", ltvVerifier.signatureName);
+ ltvVerifier.switchToPreviousRevision();
+ Assert.assertEquals("Signature2", ltvVerifier.signatureName);
+ ltvVerifier.switchToPreviousRevision();
+ Assert.assertEquals("timestampSig1", ltvVerifier.signatureName);
+ ltvVerifier.switchToPreviousRevision();
+ Assert.assertEquals("Signature1", ltvVerifier.signatureName);
+ ltvVerifier.switchToPreviousRevision();
+ }
+ }
+}
diff --git a/sign/src/test/java/com/itextpdf/signatures/LtvVerifierUnitTest.java b/sign/src/test/java/com/itextpdf/signatures/LtvVerifierUnitTest.java
index e5dde5f9b2..6dfd0dfab7 100644
--- a/sign/src/test/java/com/itextpdf/signatures/LtvVerifierUnitTest.java
+++ b/sign/src/test/java/com/itextpdf/signatures/LtvVerifierUnitTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is offered under a commercial and under the AGPL license.
@@ -27,9 +27,6 @@ This file is part of the iText (R) project.
import com.itextpdf.kernel.pdf.PdfReader;
import com.itextpdf.test.ExtendedITextTest;
import com.itextpdf.test.annotations.type.UnitTest;
-import org.junit.Assert;
-import org.junit.Test;
-import org.junit.experimental.categories.Category;
import java.io.FileInputStream;
import java.io.IOException;
@@ -37,10 +34,12 @@ This file is part of the iText (R) project.
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
+import org.junit.Assert;
+import org.junit.Test;
+import org.junit.experimental.categories.Category;
@Category(UnitTest.class)
public class LtvVerifierUnitTest extends ExtendedITextTest {
-
private static final String SOURCE_FOLDER = "./src/test/resources/com/itextpdf/signatures/LtvVerifierUnitTest/";
@Test
diff --git a/sign/src/test/java/com/itextpdf/signatures/OcspClientBouncyCastleTest.java b/sign/src/test/java/com/itextpdf/signatures/OcspClientBouncyCastleTest.java
index 925a78b91b..e8c41a41cb 100644
--- a/sign/src/test/java/com/itextpdf/signatures/OcspClientBouncyCastleTest.java
+++ b/sign/src/test/java/com/itextpdf/signatures/OcspClientBouncyCastleTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
@@ -127,6 +127,12 @@ public void getOcspResponseWhenRootAndCheckCertIsNullTest()
Assert.assertNull(castle.getOcspResponse(null, null, ocspServiceUrl));
}
+ @Test
+ public void getOcspResponseWhenUrlCertIsNullTest() {
+ OcspClientBouncyCastle castle = new OcspClientBouncyCastle(null);
+ Assert.assertThrows(ConnectException.class,
+ () -> castle.getOcspResponse(checkCert, rootCert, null));
+ }
@Test
@LogMessages(messages = {
diff --git a/sign/src/test/java/com/itextpdf/signatures/PdfPKCS7Test.java b/sign/src/test/java/com/itextpdf/signatures/PdfPKCS7Test.java
index b64a8779d4..547eebccf0 100644
--- a/sign/src/test/java/com/itextpdf/signatures/PdfPKCS7Test.java
+++ b/sign/src/test/java/com/itextpdf/signatures/PdfPKCS7Test.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is offered under a commercial and under the AGPL license.
@@ -24,21 +24,21 @@ This file is part of the iText (R) project.
import com.itextpdf.commons.utils.DateTimeUtil;
import com.itextpdf.commons.utils.MessageFormatUtil;
+import com.itextpdf.kernel.exceptions.KernelExceptionMessageConstant;
import com.itextpdf.kernel.exceptions.PdfException;
import com.itextpdf.kernel.pdf.PdfDocument;
import com.itextpdf.kernel.pdf.PdfReader;
-import com.itextpdf.kernel.pdf.StampingProperties;
+import com.itextpdf.signatures.PdfSigner.CryptoStandard;
import com.itextpdf.signatures.exceptions.SignExceptionMessageConstant;
-import com.itextpdf.signatures.sign.PadesSigTest;
-import com.itextpdf.signatures.testutils.SignaturesCompareTool;
import com.itextpdf.signatures.testutils.TimeTestUtil;
import com.itextpdf.signatures.testutils.client.TestTsaClient;
import com.itextpdf.test.ExtendedITextTest;
import com.itextpdf.test.annotations.type.UnitTest;
import com.itextpdf.test.signutils.Pkcs12FileHelper;
-import java.io.FileOutputStream;
import java.io.IOException;
+import java.nio.file.Files;
+import java.nio.file.Paths;
import java.security.GeneralSecurityException;
import java.security.InvalidKeyException;
import java.security.KeyStoreException;
@@ -47,10 +47,20 @@ This file is part of the iText (R) project.
import java.security.PrivateKey;
import java.security.Security;
import java.security.UnrecoverableKeyException;
+import java.security.cert.CRLException;
import java.security.cert.Certificate;
import java.security.cert.CertificateException;
+import java.security.cert.X509CRL;
import java.util.Arrays;
import java.util.Calendar;
+import java.util.Collections;
+import java.util.List;
+import java.util.stream.Collectors;
+import org.bouncycastle.asn1.ASN1InputStream;
+import org.bouncycastle.asn1.ASN1OctetString;
+import org.bouncycastle.asn1.ASN1Primitive;
+import org.bouncycastle.asn1.ocsp.BasicOCSPResponse;
+import org.bouncycastle.cert.ocsp.BasicOCSPResp;
import org.bouncycastle.jce.provider.BouncyCastleProvider;
import org.bouncycastle.tsp.TimeStampToken;
import org.junit.Assert;
@@ -227,6 +237,117 @@ public void verifyTimestampImprintCorruptedTimeStampSignatureTest() throws IOExc
Assert.assertTrue(pkcs7.verifyTimestampImprint());
}
+ @Test
+ public void findCrlIsNotNullTest() throws IOException, CRLException {
+ PdfDocument outDocument = new PdfDocument(
+ new PdfReader(SOURCE_FOLDER + "singleSignatureNotEmptyCRL.pdf"));
+ SignatureUtil sigUtil = new SignatureUtil(outDocument);
+ PdfPKCS7 pkcs7 = sigUtil.readSignatureData("Signature1");
+ List crls = pkcs7.getCRLs().stream().map(crl -> (X509CRL)crl).collect(Collectors.toList());
+ Assert.assertEquals(2, crls.size());
+ Assert.assertArrayEquals(crls.get(0).getEncoded(), Files.readAllBytes(Paths.get(SOURCE_FOLDER, "firstCrl.bin")));
+ Assert.assertArrayEquals(crls.get(1).getEncoded(), Files.readAllBytes(Paths.get(SOURCE_FOLDER, "secondCrl.bin")));
+ }
+
+ @Test
+ public void findCrlNullSequenceNoExceptionTest()
+ throws NoSuchAlgorithmException, InvalidKeyException, NoSuchProviderException {
+ PdfPKCS7 pkcs7 = createSimplePdfPKCS7();
+ pkcs7.findCRL(null);
+ Assert.assertTrue(pkcs7.getCRLs().isEmpty());
+ }
+
+ @Test
+ public void isRevocationValidWithInvalidOcspTest() throws IOException {
+ PdfDocument outDocument = new PdfDocument(
+ new PdfReader(SOURCE_FOLDER + "signatureWithInvalidOcspTest.pdf"));
+ SignatureUtil sigUtil = new SignatureUtil(outDocument);
+ PdfPKCS7 pkcs7 = sigUtil.readSignatureData("Signature1");
+ Assert.assertFalse(pkcs7.isRevocationValid());
+ }
+
+ @Test
+ public void isRevocationValidWithValidOcspTest() throws IOException {
+ PdfDocument outDocument = new PdfDocument(
+ new PdfReader(SOURCE_FOLDER + "signatureWithValidOcspTest.pdf"));
+ SignatureUtil sigUtil = new SignatureUtil(outDocument);
+ PdfPKCS7 pkcs7 = sigUtil.readSignatureData("Signature1");
+ Assert.assertTrue(pkcs7.isRevocationValid());
+ }
+
+ @Test
+ public void isRevocationValidOcspResponseIsNullTest()
+ throws NoSuchAlgorithmException, InvalidKeyException, NoSuchProviderException, IOException {
+ PdfPKCS7 pkcs7 = createSimplePdfPKCS7();
+ pkcs7.basicResp = null;
+ Assert.assertFalse(pkcs7.isRevocationValid());
+ }
+
+ @Test
+ public void isRevocationValidLackOfSignCertsTest()
+ throws NoSuchAlgorithmException, InvalidKeyException, NoSuchProviderException, IOException {
+ PdfPKCS7 pkcs7 = createSimplePdfPKCS7();
+ pkcs7.basicResp = new BasicOCSPResp(BasicOCSPResponse.getInstance(new ASN1InputStream(
+ Files.readAllBytes(Paths.get(SOURCE_FOLDER, "simpleOCSPResponse.bin"))).readObject()));
+ pkcs7.signCerts = Collections.singleton(chain[0]);
+ Assert.assertFalse(pkcs7.isRevocationValid());
+ }
+
+ @Test
+ public void isRevocationValidExceptionDuringValidationTest()
+ throws NoSuchAlgorithmException, InvalidKeyException, NoSuchProviderException, IOException {
+ PdfPKCS7 pkcs7 = createSimplePdfPKCS7();
+ pkcs7.basicResp = new BasicOCSPResp(BasicOCSPResponse.getInstance(new ASN1InputStream(
+ Files.readAllBytes(Paths.get(SOURCE_FOLDER, "simpleOCSPResponse.bin"))).readObject()));
+ pkcs7.signCerts = Arrays.asList(new Certificate[]{null, null});
+ Assert.assertFalse(pkcs7.isRevocationValid());
+ }
+
+ @Test
+ public void getEncodedPkcs1Test()
+ throws NoSuchAlgorithmException, InvalidKeyException, NoSuchProviderException, IOException {
+ String hashAlgorithm = DigestAlgorithms.SHA256;
+ PdfPKCS7 pkcs7 = new PdfPKCS7(pk, chain, hashAlgorithm, null, new BouncyCastleDigest(), true);
+ byte[] bytes = pkcs7.getEncodedPKCS1();
+ byte[] cmpBytes = Files.readAllBytes(Paths.get(SOURCE_FOLDER + "cmpBytesPkcs1.txt"));
+ ASN1OctetString outOctetString = ASN1OctetString.getInstance(bytes);
+ ASN1OctetString cmpOctetString = ASN1OctetString.getInstance(cmpBytes);
+ Assert.assertEquals(outOctetString, cmpOctetString);
+ }
+
+ @Test
+ public void getEncodedPkcs1NullPrivateKeyTest()
+ throws NoSuchAlgorithmException, InvalidKeyException, NoSuchProviderException {
+ String hashAlgorithm = DigestAlgorithms.SHA256;
+ PdfPKCS7 pkcs7 = new PdfPKCS7(null, chain, hashAlgorithm, null, new BouncyCastleDigest(), true);
+ Exception exception = Assert.assertThrows(PdfException.class, () -> pkcs7.getEncodedPKCS1());
+ Assert.assertEquals(KernelExceptionMessageConstant.UNKNOWN_PDF_EXCEPTION, exception.getMessage());
+ }
+
+ @Test
+ public void getEncodedPkcs7UnknownExceptionTest()
+ throws NoSuchAlgorithmException, InvalidKeyException, NoSuchProviderException {
+ String hashAlgorithm = DigestAlgorithms.SHA256;
+ PdfPKCS7 pkcs7 = new PdfPKCS7(pk, chain, hashAlgorithm, null, new BouncyCastleDigest(), true);
+ TestTsaClient testTsa = new TestTsaClient(Arrays.asList(chain), pk);
+ Exception exception = Assert.assertThrows(PdfException.class,
+ () -> pkcs7.getEncodedPKCS7(null, CryptoStandard.CMS, testTsa, null, null));
+ Assert.assertEquals(KernelExceptionMessageConstant.UNKNOWN_PDF_EXCEPTION, exception.getMessage());
+ }
+
+ @Test
+ public void getEncodedPkcs7Test()
+ throws NoSuchAlgorithmException, InvalidKeyException, NoSuchProviderException, IOException {
+ String hashAlgorithm = DigestAlgorithms.SHA256;
+ PdfPKCS7 pkcs7 = new PdfPKCS7(pk, chain, hashAlgorithm, null, new BouncyCastleDigest(), true);
+ byte[] bytes = pkcs7.getEncodedPKCS7();
+ byte[] cmpBytes = Files.readAllBytes(Paths.get(SOURCE_FOLDER + "cmpBytesPkcs7.txt"));
+ ASN1Primitive outStream = ASN1Primitive.fromByteArray(bytes);
+ ASN1Primitive cmpStream = ASN1Primitive.fromByteArray(cmpBytes);
+ Assert.assertEquals("SHA256withRSA", pkcs7.getDigestAlgorithm());
+ Assert.assertEquals(outStream, cmpStream);
+ }
+
// PdfPKCS7 is created here the same way it's done in PdfSigner#signDetached
private static PdfPKCS7 createSimplePdfPKCS7()
throws NoSuchAlgorithmException, InvalidKeyException, NoSuchProviderException {
diff --git a/sign/src/test/java/com/itextpdf/signatures/PdfSignatureAppearanceUnitTest.java b/sign/src/test/java/com/itextpdf/signatures/PdfSignatureAppearanceUnitTest.java
index a66c5b5265..0c84d2cd31 100644
--- a/sign/src/test/java/com/itextpdf/signatures/PdfSignatureAppearanceUnitTest.java
+++ b/sign/src/test/java/com/itextpdf/signatures/PdfSignatureAppearanceUnitTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is offered under a commercial and under the AGPL license.
diff --git a/sign/src/test/java/com/itextpdf/signatures/PdfSignatureBuildPropertiesUnitTest.java b/sign/src/test/java/com/itextpdf/signatures/PdfSignatureBuildPropertiesUnitTest.java
index 554d48fd63..5e9810a142 100644
--- a/sign/src/test/java/com/itextpdf/signatures/PdfSignatureBuildPropertiesUnitTest.java
+++ b/sign/src/test/java/com/itextpdf/signatures/PdfSignatureBuildPropertiesUnitTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is offered under a commercial and under the AGPL license.
diff --git a/sign/src/test/java/com/itextpdf/signatures/PdfSignerUnitTest.java b/sign/src/test/java/com/itextpdf/signatures/PdfSignerUnitTest.java
index af64cc7643..0730800317 100644
--- a/sign/src/test/java/com/itextpdf/signatures/PdfSignerUnitTest.java
+++ b/sign/src/test/java/com/itextpdf/signatures/PdfSignerUnitTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is offered under a commercial and under the AGPL license.
diff --git a/sign/src/test/java/com/itextpdf/signatures/ProviderDigestUnitTest.java b/sign/src/test/java/com/itextpdf/signatures/ProviderDigestUnitTest.java
index 83578241e9..223e98984d 100644
--- a/sign/src/test/java/com/itextpdf/signatures/ProviderDigestUnitTest.java
+++ b/sign/src/test/java/com/itextpdf/signatures/ProviderDigestUnitTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is offered under a commercial and under the AGPL license.
diff --git a/sign/src/test/java/com/itextpdf/signatures/SignUtilsManualTest.java b/sign/src/test/java/com/itextpdf/signatures/SignUtilsManualTest.java
index a8bb8961a0..ed0b430b18 100644
--- a/sign/src/test/java/com/itextpdf/signatures/SignUtilsManualTest.java
+++ b/sign/src/test/java/com/itextpdf/signatures/SignUtilsManualTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is offered under a commercial and under the AGPL license.
diff --git a/sign/src/test/java/com/itextpdf/signatures/SignUtilsUnitTest.java b/sign/src/test/java/com/itextpdf/signatures/SignUtilsUnitTest.java
index 4d618f3364..75de1d5460 100644
--- a/sign/src/test/java/com/itextpdf/signatures/SignUtilsUnitTest.java
+++ b/sign/src/test/java/com/itextpdf/signatures/SignUtilsUnitTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is offered under a commercial and under the AGPL license.
diff --git a/sign/src/test/java/com/itextpdf/signatures/SignaturePermissionsTest.java b/sign/src/test/java/com/itextpdf/signatures/SignaturePermissionsTest.java
index 3f77b6accb..7108c0ec9b 100644
--- a/sign/src/test/java/com/itextpdf/signatures/SignaturePermissionsTest.java
+++ b/sign/src/test/java/com/itextpdf/signatures/SignaturePermissionsTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/sign/src/test/java/com/itextpdf/signatures/SignaturePolicyInfoTest.java b/sign/src/test/java/com/itextpdf/signatures/SignaturePolicyInfoTest.java
index f46c8d18fe..6ab87a720f 100644
--- a/sign/src/test/java/com/itextpdf/signatures/SignaturePolicyInfoTest.java
+++ b/sign/src/test/java/com/itextpdf/signatures/SignaturePolicyInfoTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/sign/src/test/java/com/itextpdf/signatures/SignatureUtilTest.java b/sign/src/test/java/com/itextpdf/signatures/SignatureUtilTest.java
index 09344db7be..9435d6391b 100644
--- a/sign/src/test/java/com/itextpdf/signatures/SignatureUtilTest.java
+++ b/sign/src/test/java/com/itextpdf/signatures/SignatureUtilTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/sign/src/test/java/com/itextpdf/signatures/SignatureUtilUnitTest.java b/sign/src/test/java/com/itextpdf/signatures/SignatureUtilUnitTest.java
index f34357215f..d42e50b7f8 100644
--- a/sign/src/test/java/com/itextpdf/signatures/SignatureUtilUnitTest.java
+++ b/sign/src/test/java/com/itextpdf/signatures/SignatureUtilUnitTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is offered under a commercial and under the AGPL license.
diff --git a/sign/src/test/java/com/itextpdf/signatures/SignaturesTestUtils.java b/sign/src/test/java/com/itextpdf/signatures/SignaturesTestUtils.java
new file mode 100644
index 0000000000..fc1168a19b
--- /dev/null
+++ b/sign/src/test/java/com/itextpdf/signatures/SignaturesTestUtils.java
@@ -0,0 +1,48 @@
+/*
+ This file is part of the iText (R) project.
+ Copyright (c) 1998-2022 iText Group NV
+ Authors: iText Software.
+
+ This program is offered under a commercial and under the AGPL license.
+ For commercial licensing, contact us at https://itextpdf.com/sales. For AGPL licensing, see below.
+
+ AGPL licensing:
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU Affero General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU Affero General Public License for more details.
+
+ You should have received a copy of the GNU Affero General Public License
+ along with this program. If not, see .
+ */
+package com.itextpdf.signatures;
+
+import java.security.cert.X509Certificate;
+
+/**
+ * Class for internal usage in tests.
+ */
+public final class SignaturesTestUtils {
+
+ private static final String EXPIRED_CERTIFICATE_DATE_PREFIX_MESSAGE = "NotAfter: ";
+
+ private SignaturesTestUtils() {
+ // Empty constructor.
+ }
+
+ /**
+ * Creates string which should be return while validating expired certificate.
+ *
+ * @param certificate certificate for validation.
+ *
+ * @return expected string.
+ */
+ public static String getExpiredMessage(X509Certificate certificate) {
+ return EXPIRED_CERTIFICATE_DATE_PREFIX_MESSAGE + certificate.getNotAfter().toString();
+ }
+}
diff --git a/sign/src/test/java/com/itextpdf/signatures/TSAClientBouncyCastleTest.java b/sign/src/test/java/com/itextpdf/signatures/TSAClientBouncyCastleTest.java
new file mode 100644
index 0000000000..f46ba063c6
--- /dev/null
+++ b/sign/src/test/java/com/itextpdf/signatures/TSAClientBouncyCastleTest.java
@@ -0,0 +1,232 @@
+/*
+ This file is part of the iText (R) project.
+ Copyright (c) 1998-2022 iText Group NV
+ Authors: iText Software.
+
+ This program is offered under a commercial and under the AGPL license.
+ For commercial licensing, contact us at https://itextpdf.com/sales. For AGPL licensing, see below.
+
+ AGPL licensing:
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU Affero General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU Affero General Public License for more details.
+
+ You should have received a copy of the GNU Affero General Public License
+ along with this program. If not, see .
+ */
+package com.itextpdf.signatures;
+
+import com.itextpdf.commons.utils.MessageFormatUtil;
+import com.itextpdf.kernel.exceptions.PdfException;
+import com.itextpdf.signatures.exceptions.SignExceptionMessageConstant;
+import com.itextpdf.signatures.testutils.builder.TestTimestampTokenBuilder;
+import com.itextpdf.test.ExtendedITextTest;
+import com.itextpdf.test.annotations.type.UnitTest;
+import com.itextpdf.test.signutils.Pkcs12FileHelper;
+
+import java.security.GeneralSecurityException;
+import java.security.MessageDigest;
+import java.security.PrivateKey;
+import java.security.cert.Certificate;
+import java.util.Arrays;
+import java.util.List;
+import org.bouncycastle.tsp.TimeStampResponse;
+import org.bouncycastle.tsp.TimeStampToken;
+import org.bouncycastle.tsp.TimeStampTokenInfo;
+import org.junit.Assert;
+import org.junit.Test;
+import org.junit.experimental.categories.Category;
+
+@Category(UnitTest.class)
+public class TSAClientBouncyCastleTest extends ExtendedITextTest {
+
+ @Test
+ public void setTSAInfoTest() {
+ TSAClientBouncyCastle clientBouncyCastle = new TSAClientBouncyCastle("url");
+ CustomItsaInfoBouncyCastle infoBouncyCastle = new CustomItsaInfoBouncyCastle();
+ clientBouncyCastle.setTSAInfo(infoBouncyCastle);
+ Assert.assertEquals(infoBouncyCastle, clientBouncyCastle.tsaInfo);
+ }
+
+ @Test
+ public void testTsaClientBouncyCastleConstructor3Args() {
+ String userName = "user";
+ String password = "password";
+ String url = "url";
+
+ TSAClientBouncyCastle tsaClientBouncyCastle = new TSAClientBouncyCastle(url, userName, password);
+ Assert.assertEquals(url, tsaClientBouncyCastle.tsaURL);
+ Assert.assertEquals(userName, tsaClientBouncyCastle.tsaUsername);
+ Assert.assertEquals(password, tsaClientBouncyCastle.tsaPassword);
+ Assert.assertEquals(TSAClientBouncyCastle.DEFAULTTOKENSIZE, tsaClientBouncyCastle.tokenSizeEstimate);
+ Assert.assertEquals(TSAClientBouncyCastle.DEFAULTHASHALGORITHM, tsaClientBouncyCastle.digestAlgorithm);
+ }
+
+ @Test
+ public void testTsaClientBouncyCastleConstructorAllArgs() {
+ String userName = "user";
+ String password = "password";
+ String url = "url";
+ int tokenSize = 1024;
+ String digestAlgorithm = "SHA-1";
+
+ TSAClientBouncyCastle tsaClientBouncyCastle = new TSAClientBouncyCastle(url, userName, password,
+ tokenSize, digestAlgorithm);
+ Assert.assertEquals(url, tsaClientBouncyCastle.tsaURL);
+ Assert.assertEquals(userName, tsaClientBouncyCastle.tsaUsername);
+ Assert.assertEquals(password, tsaClientBouncyCastle.tsaPassword);
+ Assert.assertEquals(tokenSize, tsaClientBouncyCastle.tokenSizeEstimate);
+ Assert.assertEquals(digestAlgorithm, tsaClientBouncyCastle.digestAlgorithm);
+ }
+
+ @Test
+ public void testTsaClientBouncyCastleConstructor1Arg() {
+ String url = "url";
+
+ TSAClientBouncyCastle tsaClientBouncyCastle = new TSAClientBouncyCastle(url);
+ Assert.assertEquals(url, tsaClientBouncyCastle.tsaURL);
+ Assert.assertNull(tsaClientBouncyCastle.tsaUsername);
+ Assert.assertNull(tsaClientBouncyCastle.tsaPassword);
+ Assert.assertEquals(TSAClientBouncyCastle.DEFAULTTOKENSIZE, tsaClientBouncyCastle.tokenSizeEstimate);
+ Assert.assertEquals(TSAClientBouncyCastle.DEFAULTHASHALGORITHM, tsaClientBouncyCastle.digestAlgorithm);
+ }
+
+ @Test
+ public void getTokenSizeEstimateTest() {
+ String userName = "user";
+ String password = "password";
+ String url = "url";
+ String digestAlgorithm = "SHA-256";
+ int tokenSizeEstimate = 4096;
+
+ TSAClientBouncyCastle tsaClientBouncyCastle = new TSAClientBouncyCastle(url, userName, password,
+ tokenSizeEstimate, digestAlgorithm);
+ Assert.assertEquals(tokenSizeEstimate, tsaClientBouncyCastle.getTokenSizeEstimate());
+ }
+
+ @Test
+ public void setGetTsaReqPolicyTest() {
+ String regPolicy = "regPolicy";
+
+ TSAClientBouncyCastle clientBouncyCastle = new TSAClientBouncyCastle("url");
+ clientBouncyCastle.setTSAReqPolicy(regPolicy);
+ Assert.assertEquals(regPolicy, clientBouncyCastle.getTSAReqPolicy());
+ }
+
+ @Test
+ public void getMessageDigestTest() throws GeneralSecurityException {
+ String userName = "user";
+ String password = "password";
+ String url = "url";
+ String digestAlgorithm = "SHA-256";
+ int tokenSizeEstimate = 4096;
+
+ TSAClientBouncyCastle tsaClientBouncyCastle = new TSAClientBouncyCastle(url, userName, password,
+ tokenSizeEstimate, digestAlgorithm);
+ MessageDigest digest = tsaClientBouncyCastle.getMessageDigest();
+ Assert.assertNotNull(digest);
+ Assert.assertEquals(digestAlgorithm, digest.getAlgorithm());
+ }
+
+ @Test
+ public void getTimeStampTokenTest() throws Exception {
+ String allowedDigest = "SHA256";
+ String signatureAlgorithm = "SHA256withRSA";
+ String policyOid = "1.3.6.1.4.1.45794.1.1";
+
+ CustomTsaClientBouncyCastle tsaClientBouncyCastle = new CustomTsaClientBouncyCastle("", signatureAlgorithm,
+ allowedDigest);
+ tsaClientBouncyCastle.setTSAReqPolicy(policyOid);
+ CustomItsaInfoBouncyCastle itsaInfoBouncyCastle = new CustomItsaInfoBouncyCastle();
+ tsaClientBouncyCastle.setTSAInfo(itsaInfoBouncyCastle);
+ byte[] timestampTokenArray = tsaClientBouncyCastle.getTimeStampToken(tsaClientBouncyCastle
+ .getMessageDigest().digest());
+
+ TimeStampToken expectedToken = new TimeStampResponse(tsaClientBouncyCastle.getExpectedTsaResponseBytes())
+ .getTimeStampToken();
+ TimeStampTokenInfo expectedTsTokenInfo = expectedToken.getTimeStampInfo();
+ TimeStampTokenInfo resultTsTokenInfo = itsaInfoBouncyCastle.getTimeStampTokenInfo();
+
+ Assert.assertNotNull(timestampTokenArray);
+ Assert.assertNotNull(resultTsTokenInfo);
+ Assert.assertArrayEquals(expectedTsTokenInfo.getEncoded(), resultTsTokenInfo.getEncoded());
+ Assert.assertArrayEquals(expectedToken.getEncoded(), timestampTokenArray);
+ }
+
+ @Test
+ public void getTimeStampTokenFailureExceptionTest() throws Exception {
+ String allowedDigest = "MD5";
+ String signatureAlgorithm = "SHA256withRSA";
+ String url = "url";
+
+ CustomTsaClientBouncyCastle tsaClientBouncyCastle = new CustomTsaClientBouncyCastle(url, signatureAlgorithm,
+ allowedDigest);
+ tsaClientBouncyCastle.setTSAInfo(new CustomItsaInfoBouncyCastle());
+
+ byte[] digest = tsaClientBouncyCastle.getMessageDigest().digest();
+ Exception e = Assert.assertThrows(PdfException.class,
+ () -> tsaClientBouncyCastle.getTimeStampToken(digest)
+ );
+
+ Assert.assertEquals(MessageFormatUtil.format(SignExceptionMessageConstant.INVALID_TSA_RESPONSE, url, "128"),
+ e.getMessage());
+ }
+
+ private static final class CustomTsaClientBouncyCastle extends TSAClientBouncyCastle {
+ private static final char[] PASSWORD = "testpass".toCharArray();
+
+ private static final String CERTS_SRC = "./src/test/resources/com/itextpdf/signatures/certs/";
+
+ private final PrivateKey tsaPrivateKey;
+ private final List tsaCertificateChain;
+ private final String signatureAlgorithm;
+ private final String allowedDigest;
+
+ private byte[] expectedTsaResponseBytes;
+
+ public CustomTsaClientBouncyCastle(String url, String signatureAlgorithm, String allowedDigest)
+ throws Exception {
+ super(url);
+
+ this.signatureAlgorithm = signatureAlgorithm;
+ this.allowedDigest = allowedDigest;
+ tsaPrivateKey = Pkcs12FileHelper
+ .readFirstKey(CERTS_SRC + "signCertRsa01.p12", PASSWORD, PASSWORD);
+
+ String tsaCertFileName = CERTS_SRC + "tsCertRsa.p12";
+ tsaCertificateChain = Arrays.asList(Pkcs12FileHelper.readFirstChain(tsaCertFileName, PASSWORD));
+ }
+
+ public byte[] getExpectedTsaResponseBytes() {
+ return expectedTsaResponseBytes;
+ }
+
+ @Override
+ protected byte[] getTSAResponse(byte[] requestBytes) {
+ TestTimestampTokenBuilder builder = new TestTimestampTokenBuilder(tsaCertificateChain, tsaPrivateKey);
+ expectedTsaResponseBytes = builder.createTSAResponse(requestBytes, signatureAlgorithm, allowedDigest);
+ return expectedTsaResponseBytes;
+ }
+ }
+
+ private static final class CustomItsaInfoBouncyCastle implements ITSAInfoBouncyCastle {
+
+ private TimeStampTokenInfo timeStampTokenInfo;
+
+ @Override
+ public void inspectTimeStampTokenInfo(TimeStampTokenInfo info) {
+ this.timeStampTokenInfo = info;
+ }
+
+
+ public TimeStampTokenInfo getTimeStampTokenInfo() {
+ return timeStampTokenInfo;
+ }
+ }
+}
diff --git a/sign/src/test/java/com/itextpdf/signatures/VerificationOKTest.java b/sign/src/test/java/com/itextpdf/signatures/VerificationOKTest.java
index 6e7cced032..7a090e116f 100644
--- a/sign/src/test/java/com/itextpdf/signatures/VerificationOKTest.java
+++ b/sign/src/test/java/com/itextpdf/signatures/VerificationOKTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/sign/src/test/java/com/itextpdf/signatures/sign/AnnotationsSigningTest.java b/sign/src/test/java/com/itextpdf/signatures/sign/AnnotationsSigningTest.java
index 3c91a2436f..8ba93f7e99 100644
--- a/sign/src/test/java/com/itextpdf/signatures/sign/AnnotationsSigningTest.java
+++ b/sign/src/test/java/com/itextpdf/signatures/sign/AnnotationsSigningTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is offered under a commercial and under the AGPL license.
diff --git a/sign/src/test/java/com/itextpdf/signatures/sign/CrlClientOnlineTest.java b/sign/src/test/java/com/itextpdf/signatures/sign/CrlClientOnlineTest.java
index 1091e40e3c..efc0b25a28 100644
--- a/sign/src/test/java/com/itextpdf/signatures/sign/CrlClientOnlineTest.java
+++ b/sign/src/test/java/com/itextpdf/signatures/sign/CrlClientOnlineTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/sign/src/test/java/com/itextpdf/signatures/sign/EncryptedSigningTest.java b/sign/src/test/java/com/itextpdf/signatures/sign/EncryptedSigningTest.java
index dfe2eedcfc..a568992bf3 100644
--- a/sign/src/test/java/com/itextpdf/signatures/sign/EncryptedSigningTest.java
+++ b/sign/src/test/java/com/itextpdf/signatures/sign/EncryptedSigningTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is offered under a commercial and under the AGPL license.
diff --git a/sign/src/test/java/com/itextpdf/signatures/sign/LtvSigTest.java b/sign/src/test/java/com/itextpdf/signatures/sign/LtvSigTest.java
index 5f62682bd8..81d8cbca65 100644
--- a/sign/src/test/java/com/itextpdf/signatures/sign/LtvSigTest.java
+++ b/sign/src/test/java/com/itextpdf/signatures/sign/LtvSigTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
@@ -50,7 +50,9 @@ This file is part of the iText (R) project.
import com.itextpdf.kernel.pdf.StampingProperties;
import com.itextpdf.signatures.BouncyCastleDigest;
import com.itextpdf.signatures.DigestAlgorithms;
+import com.itextpdf.signatures.ICrlClient;
import com.itextpdf.signatures.IExternalSignature;
+import com.itextpdf.signatures.ITSAClient;
import com.itextpdf.signatures.LtvVerification;
import com.itextpdf.signatures.PdfSigner;
import com.itextpdf.signatures.PrivateKeySignature;
@@ -58,143 +60,206 @@ This file is part of the iText (R) project.
import com.itextpdf.signatures.testutils.client.TestCrlClient;
import com.itextpdf.signatures.testutils.client.TestOcspClient;
import com.itextpdf.signatures.testutils.client.TestTsaClient;
-import com.itextpdf.test.signutils.Pkcs12FileHelper;
import com.itextpdf.test.ExtendedITextTest;
import com.itextpdf.test.annotations.type.IntegrationTest;
-import org.bouncycastle.jce.provider.BouncyCastleProvider;
-import org.junit.Assert;
-import org.junit.BeforeClass;
-import org.junit.Test;
-import org.junit.experimental.categories.Category;
+import com.itextpdf.test.signutils.Pkcs12FileHelper;
import java.io.FileOutputStream;
import java.io.IOException;
import java.security.GeneralSecurityException;
+import java.security.KeyStoreException;
+import java.security.NoSuchAlgorithmException;
import java.security.PrivateKey;
import java.security.Security;
+import java.security.UnrecoverableKeyException;
import java.security.cert.Certificate;
+import java.security.cert.CertificateException;
import java.security.cert.X509Certificate;
import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import org.bouncycastle.jce.provider.BouncyCastleProvider;
+import org.junit.Assert;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.junit.experimental.categories.Category;
@Category(IntegrationTest.class)
public class LtvSigTest extends ExtendedITextTest {
- private static final String certsSrc = "./src/test/resources/com/itextpdf/signatures/certs/";
- private static final String sourceFolder = "./src/test/resources/com/itextpdf/signatures/sign/LtvSigTest/";
- private static final String destinationFolder = "./target/test/com/itextpdf/signatures/sign/LtvSigTest/";
+ private static final String CERTS_SRC = "./src/test/resources/com/itextpdf/signatures/certs/";
+ private static final String SOURCE_FOLDER = "./src/test/resources/com/itextpdf/signatures/sign/LtvSigTest/";
+ private static final String DESTINATION_FOLDER = "./target/test/com/itextpdf/signatures/sign/LtvSigTest/";
- private static final char[] password = "testpass".toCharArray();
+ private static final char[] PASSWORD = "testpass".toCharArray();
@BeforeClass
public static void before() {
Security.addProvider(new org.bouncycastle.jce.provider.BouncyCastleProvider());
- createOrClearDestinationFolder(destinationFolder);
+ createOrClearDestinationFolder(DESTINATION_FOLDER);
}
@Test
public void ltvEnabledTest01() throws IOException, GeneralSecurityException {
- String tsaCertFileName = certsSrc + "tsCertRsa.p12";
- String caCertFileName = certsSrc + "rootRsa.p12";
- String srcFileName = sourceFolder + "signedDoc.pdf";
- String ltvFileName = destinationFolder + "ltvEnabledTest01.pdf";
- String ltvTsFileName = destinationFolder + "ltvEnabledTsTest01.pdf";
-
- Certificate[] tsaChain = Pkcs12FileHelper.readFirstChain(tsaCertFileName, password);
- PrivateKey tsaPrivateKey = Pkcs12FileHelper.readFirstKey(tsaCertFileName, password, password);
- X509Certificate caCert = (X509Certificate) Pkcs12FileHelper.readFirstChain(caCertFileName, password)[0];
- PrivateKey caPrivateKey = Pkcs12FileHelper.readFirstKey(caCertFileName, password, password);
-
- TestTsaClient testTsa = new TestTsaClient(Arrays.asList(tsaChain), tsaPrivateKey);
- TestOcspClient testOcspClient = new TestOcspClient()
- .addBuilderForCertIssuer(caCert, caPrivateKey);
- TestCrlClient testCrlClient = new TestCrlClient(caCert, caPrivateKey);
-
- PdfDocument document = new PdfDocument(new PdfReader(srcFileName), new PdfWriter(ltvFileName), new StampingProperties().useAppendMode());
+ String tsaCertP12FileName = CERTS_SRC + "tsCertRsa.p12";
+ String caCertP12FileName = CERTS_SRC + "rootRsa.p12";
+ String srcFileName = SOURCE_FOLDER + "signedDoc.pdf";
+ String ltvFileName = DESTINATION_FOLDER + "ltvEnabledTest01.pdf";
+ String ltvTsFileName = DESTINATION_FOLDER + "ltvEnabledTsTest01.pdf";
+
+ TestCrlClient testCrlClient = prepareCrlClientForIssuer(caCertP12FileName);
+ TestOcspClient testOcspClient = prepareOcspClientForIssuer(caCertP12FileName);
+ TestTsaClient testTsa = prepareTsaClient(tsaCertP12FileName);
+
+ PdfDocument document = new PdfDocument(new PdfReader(srcFileName), new PdfWriter(ltvFileName),
+ new StampingProperties().useAppendMode());
LtvVerification ltvVerification = new LtvVerification(document);
- ltvVerification.addVerification("Signature1", testOcspClient, testCrlClient, LtvVerification.CertificateOption.SIGNING_CERTIFICATE, LtvVerification.Level.OCSP_CRL, LtvVerification.CertificateInclusion.YES);
+ ltvVerification.addVerification("Signature1", testOcspClient, testCrlClient,
+ LtvVerification.CertificateOption.SIGNING_CERTIFICATE, LtvVerification.Level.OCSP_CRL,
+ LtvVerification.CertificateInclusion.YES);
ltvVerification.merge();
document.close();
- PdfSigner signer = new PdfSigner(new PdfReader(ltvFileName), new FileOutputStream(ltvTsFileName), new StampingProperties().useAppendMode());
+ PdfSigner signer = new PdfSigner(new PdfReader(ltvFileName), new FileOutputStream(ltvTsFileName),
+ new StampingProperties().useAppendMode());
signer.timestamp(testTsa, "timestampSig1");
basicCheckLtvDoc("ltvEnabledTsTest01.pdf", "timestampSig1");
Assert.assertNull(
- SignaturesCompareTool.compareSignatures(ltvTsFileName, sourceFolder + "cmp_ltvEnabledTsTest01.pdf"));
+ SignaturesCompareTool.compareSignatures(ltvTsFileName, SOURCE_FOLDER + "cmp_ltvEnabledTsTest01.pdf"));
+ }
+
+ @Test
+ public void ltvEnabledSingleSignatureNoCrlDataTest() throws IOException, GeneralSecurityException {
+ String signCertP12FileName = CERTS_SRC + "signCertRsaWithChain.p12";
+ String tsaCertP12FileName = CERTS_SRC + "tsCertRsa.p12";
+ String intermediateCertP12FileName = CERTS_SRC + "intermediateRsa.p12";
+ String caCertP12FileName = CERTS_SRC + "rootRsa.p12";
+ String srcFileName = SOURCE_FOLDER + "helloWorldDoc.pdf";
+ String ltvFileName = DESTINATION_FOLDER + "ltvEnabledSingleSignatureNoCrlDataTest.pdf";
+
+ Certificate[] signChain = Pkcs12FileHelper.readFirstChain(signCertP12FileName, PASSWORD);
+ IExternalSignature pks = prepareSignatureHandler(signCertP12FileName);
+ TestTsaClient testTsa = prepareTsaClient(tsaCertP12FileName);
+ TestOcspClient testOcspClient = prepareOcspClientForIssuer(intermediateCertP12FileName, caCertP12FileName);
+ Collection crlNotAvailableList = Arrays.asList((ICrlClient)null, new ICrlClient() {
+ @Override
+ public Collection getEncoded(X509Certificate checkCert, String url) {
+ return null;
+ }
+ });
+
+ PdfSigner signer = new PdfSigner(new PdfReader(srcFileName), new FileOutputStream(ltvFileName),
+ new StampingProperties());
+ signer.setFieldName("Signature1");
+
+ signer.signDetached(new BouncyCastleDigest(), pks, signChain, crlNotAvailableList, testOcspClient, testTsa, 0,
+ PdfSigner.CryptoStandard.CADES);
+
+ Assert.assertNull(SignaturesCompareTool.compareSignatures(
+ ltvFileName, SOURCE_FOLDER + "cmp_ltvEnabledSingleSignatureNoCrlDataTest.pdf"));
}
@Test
- public void ltvEnabledSingleSignatureTest01() throws IOException, GeneralSecurityException {
- String signCertFileName = certsSrc + "signCertRsaWithChain.p12";
- String tsaCertFileName = certsSrc + "tsCertRsa.p12";
- String intermediateCertFileName = certsSrc + "intermediateRsa.p12";
- String caCertFileName = certsSrc + "rootRsa.p12";
- String srcFileName = sourceFolder + "helloWorldDoc.pdf";
- String ltvFileName = destinationFolder + "ltvEnabledSingleSignatureTest01.pdf";
-
- Certificate[] tsaChain = Pkcs12FileHelper.readFirstChain(tsaCertFileName, password);
- PrivateKey tsaPrivateKey = Pkcs12FileHelper.readFirstKey(tsaCertFileName, password, password);
-
- X509Certificate intermediateCert = (X509Certificate) Pkcs12FileHelper.readFirstChain(intermediateCertFileName, password)[0];
- PrivateKey intermediatePrivateKey = Pkcs12FileHelper.readFirstKey(intermediateCertFileName, password, password);
- X509Certificate caCert = (X509Certificate) Pkcs12FileHelper.readFirstChain(caCertFileName, password)[0];
- PrivateKey caPrivateKey = Pkcs12FileHelper.readFirstKey(caCertFileName, password, password);
-
- TestTsaClient testTsa = new TestTsaClient(Arrays.asList(tsaChain), tsaPrivateKey);
- TestOcspClient testOcspClient = new TestOcspClient()
- .addBuilderForCertIssuer(intermediateCert, intermediatePrivateKey)
- .addBuilderForCertIssuer(caCert, caPrivateKey);
-
- Certificate[] signChain = Pkcs12FileHelper.readFirstChain(signCertFileName, password);
- PrivateKey signPrivateKey = Pkcs12FileHelper.readFirstKey(signCertFileName, password, password);
- IExternalSignature pks = new PrivateKeySignature(signPrivateKey, DigestAlgorithms.SHA256, BouncyCastleProvider.PROVIDER_NAME);
-
- PdfSigner signer = new PdfSigner(new PdfReader(srcFileName), new FileOutputStream(ltvFileName), new StampingProperties());
+ public void ltvEnabledSingleSignatureNoOcspDataTest() throws IOException, GeneralSecurityException {
+ String signCertP12FileName = CERTS_SRC + "signCertRsaWithChain.p12";
+ String tsaCertP12FileName = CERTS_SRC + "tsCertRsa.p12";
+ String intermediateCertP12FileName = CERTS_SRC + "intermediateRsa.p12";
+ String caCertP12FileName = CERTS_SRC + "rootRsa.p12";
+ String srcFileName = SOURCE_FOLDER + "helloWorldDoc.pdf";
+ String ltvFileName = DESTINATION_FOLDER + "ltvEnabledSingleSignatureNoOcspDataTest.pdf";
+
+ Certificate[] signChain = Pkcs12FileHelper.readFirstChain(signCertP12FileName, PASSWORD);
+ IExternalSignature pks = prepareSignatureHandler(signCertP12FileName);
+ TestTsaClient testTsa = prepareTsaClient(tsaCertP12FileName);
+ TestCrlClient testCrlClient = prepareCrlClientForIssuer(caCertP12FileName, intermediateCertP12FileName);
+
+ PdfSigner signer = new PdfSigner(new PdfReader(srcFileName), new FileOutputStream(ltvFileName),
+ new StampingProperties());
signer.setFieldName("Signature1");
- signer.signDetached(new BouncyCastleDigest(), pks, signChain, null, testOcspClient, testTsa, 0, PdfSigner.CryptoStandard.CADES);
+ signer.signDetached(new BouncyCastleDigest(), pks, signChain, Collections.singletonList(testCrlClient), null,
+ testTsa, 0, PdfSigner.CryptoStandard.CADES);
- PadesSigTest.basicCheckSignedDoc(destinationFolder + "ltvEnabledSingleSignatureTest01.pdf", "Signature1");
+ Assert.assertNull(SignaturesCompareTool.compareSignatures(
+ ltvFileName, SOURCE_FOLDER + "cmp_ltvEnabledSingleSignatureNoOcspDataTest.pdf"));
}
@Test
public void secondLtvOriginalHasNoVri01() throws IOException, GeneralSecurityException {
- String tsaCertFileName = certsSrc + "tsCertRsa.p12";
- String caCertFileName = certsSrc + "rootRsa.p12";
- String srcFileName = sourceFolder + "ltvEnabledNoVriEntry.pdf";
- String ltvFileName = destinationFolder + "secondLtvOriginalHasNoVri01.pdf";
- String ltvTsFileName = destinationFolder + "secondLtvOriginalHasNoVriTs01.pdf";
-
- Certificate[] tsaChain = Pkcs12FileHelper.readFirstChain(tsaCertFileName, password);
- PrivateKey tsaPrivateKey = Pkcs12FileHelper.readFirstKey(tsaCertFileName, password, password);
- X509Certificate caCert = (X509Certificate) Pkcs12FileHelper.readFirstChain(caCertFileName, password)[0];
- PrivateKey caPrivateKey = Pkcs12FileHelper.readFirstKey(caCertFileName, password, password);
-
- TestTsaClient testTsa = new TestTsaClient(Arrays.asList(tsaChain), tsaPrivateKey);
- TestOcspClient testOcspClient = new TestOcspClient().addBuilderForCertIssuer(caCert, caPrivateKey);
- TestCrlClient testCrlClient = new TestCrlClient(caCert, caPrivateKey);
-
- PdfDocument document = new PdfDocument(new PdfReader(srcFileName), new PdfWriter(ltvFileName), new StampingProperties().useAppendMode());
+ String tsaCertFileName = CERTS_SRC + "tsCertRsa.p12";
+ String caCertFileName = CERTS_SRC + "rootRsa.p12";
+ String srcFileName = SOURCE_FOLDER + "ltvEnabledNoVriEntry.pdf";
+ String ltvFileName = DESTINATION_FOLDER + "secondLtvOriginalHasNoVri01.pdf";
+ String ltvTsFileName = DESTINATION_FOLDER + "secondLtvOriginalHasNoVriTs01.pdf";
+
+ TestCrlClient testCrlClient = prepareCrlClientForIssuer(caCertFileName);
+ TestOcspClient testOcspClient = prepareOcspClientForIssuer(caCertFileName);
+ TestTsaClient testTsa = prepareTsaClient(tsaCertFileName);
+
+ PdfDocument document = new PdfDocument(new PdfReader(srcFileName), new PdfWriter(ltvFileName),
+ new StampingProperties().useAppendMode());
LtvVerification ltvVerification = new LtvVerification(document);
- ltvVerification.addVerification("timestampSig1", testOcspClient, testCrlClient, LtvVerification.CertificateOption.SIGNING_CERTIFICATE, LtvVerification.Level.OCSP_CRL, LtvVerification.CertificateInclusion.YES);
+ ltvVerification.addVerification("timestampSig1", testOcspClient, testCrlClient,
+ LtvVerification.CertificateOption.SIGNING_CERTIFICATE, LtvVerification.Level.OCSP_CRL,
+ LtvVerification.CertificateInclusion.YES);
ltvVerification.merge();
document.close();
- PdfSigner signer = new PdfSigner(new PdfReader(ltvFileName), new FileOutputStream(ltvTsFileName), new StampingProperties().useAppendMode());
+ PdfSigner signer = new PdfSigner(new PdfReader(ltvFileName), new FileOutputStream(ltvTsFileName),
+ new StampingProperties().useAppendMode());
signer.timestamp(testTsa, "timestampSig2");
basicCheckLtvDoc("secondLtvOriginalHasNoVriTs01.pdf", "timestampSig2");
Assert.assertNull(SignaturesCompareTool.compareSignatures(
- ltvTsFileName, sourceFolder + "cmp_secondLtvOriginalHasNoVriTs01.pdf"));
+ ltvTsFileName, SOURCE_FOLDER + "cmp_secondLtvOriginalHasNoVriTs01.pdf"));
+ }
+
+ private static IExternalSignature prepareSignatureHandler(String signCertP12FileName)
+ throws KeyStoreException, IOException, CertificateException, NoSuchAlgorithmException, UnrecoverableKeyException {
+ PrivateKey signPrivateKey = Pkcs12FileHelper.readFirstKey(signCertP12FileName, PASSWORD, PASSWORD);
+ return new PrivateKeySignature(signPrivateKey, DigestAlgorithms.SHA256, BouncyCastleProvider.PROVIDER_NAME);
+ }
+
+ private static TestCrlClient prepareCrlClientForIssuer(String... issuerCertP12FileNames)
+ throws KeyStoreException, IOException, CertificateException, NoSuchAlgorithmException, UnrecoverableKeyException {
+ TestCrlClient testCrlClient = new TestCrlClient();
+ for (String issuerP12File : issuerCertP12FileNames) {
+ X509Certificate caCert = (X509Certificate) Pkcs12FileHelper.readFirstChain(issuerP12File, PASSWORD)[0];
+ PrivateKey caPrivateKey = Pkcs12FileHelper.readFirstKey(issuerP12File, PASSWORD, PASSWORD);
+ testCrlClient.addBuilderForCertIssuer(caCert, caPrivateKey);
+ }
+ return testCrlClient;
+ }
+
+ private static TestOcspClient prepareOcspClientForIssuer(String... issuerCertP12FileNames)
+ throws KeyStoreException, IOException, CertificateException, NoSuchAlgorithmException, UnrecoverableKeyException {
+
+ TestOcspClient ocspClient = new TestOcspClient();
+ for (String issuerP12File : issuerCertP12FileNames) {
+ X509Certificate issuerCertificate =
+ (X509Certificate) Pkcs12FileHelper.readFirstChain(issuerP12File, PASSWORD)[0];
+ PrivateKey issuerPrivateKey = Pkcs12FileHelper.readFirstKey(issuerP12File, PASSWORD, PASSWORD);
+ ocspClient.addBuilderForCertIssuer(issuerCertificate, issuerPrivateKey);
+ }
+
+ return ocspClient;
+ }
+
+ private static TestTsaClient prepareTsaClient(String tsaCertP12FileName)
+ throws KeyStoreException, IOException, CertificateException, NoSuchAlgorithmException, UnrecoverableKeyException {
+ Certificate[] tsaChain = Pkcs12FileHelper.readFirstChain(tsaCertP12FileName, PASSWORD);
+ PrivateKey tsaPrivateKey = Pkcs12FileHelper.readFirstKey(tsaCertP12FileName, PASSWORD, PASSWORD);
+ return new TestTsaClient(Arrays.asList(tsaChain), tsaPrivateKey);
}
private void basicCheckLtvDoc(String outFileName, String tsSigName) throws IOException, GeneralSecurityException {
- PdfDocument outDocument = new PdfDocument(new PdfReader(destinationFolder + outFileName));
+ PdfDocument outDocument = new PdfDocument(new PdfReader(DESTINATION_FOLDER + outFileName));
PdfDictionary dssDict = outDocument.getCatalog().getPdfObject().getAsDictionary(PdfName.DSS);
Assert.assertNotNull(dssDict);
Assert.assertEquals(4, dssDict.size());
outDocument.close();
- PadesSigTest.basicCheckSignedDoc(destinationFolder + outFileName, tsSigName);
+ PadesSigTest.basicCheckSignedDoc(DESTINATION_FOLDER + outFileName, tsSigName);
}
}
diff --git a/sign/src/test/java/com/itextpdf/signatures/sign/LtvWithTwoSignaturesTest.java b/sign/src/test/java/com/itextpdf/signatures/sign/LtvWithTwoSignaturesTest.java
index 0569b33ac9..a42277dd19 100644
--- a/sign/src/test/java/com/itextpdf/signatures/sign/LtvWithTwoSignaturesTest.java
+++ b/sign/src/test/java/com/itextpdf/signatures/sign/LtvWithTwoSignaturesTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
@@ -98,7 +98,7 @@ public void addLtvInfo() throws GeneralSecurityException, java.io.IOException {
TestOcspClient testOcspClient = new TestOcspClient()
.addBuilderForCertIssuer(interCert, interPrivateKey)
.addBuilderForCertIssuer(caCert, caPrivateKey);
- TestCrlClient testCrlClient = new TestCrlClient(caCert, caPrivateKey);
+ TestCrlClient testCrlClient = new TestCrlClient().addBuilderForCertIssuer(caCert, caPrivateKey);
addLtvInfo(srcFileName, ltvFileName, "Signature1", testOcspClient, testCrlClient);
addLtvInfo(ltvFileName, ltvFileName2, "Signature2", testOcspClient, testCrlClient);
diff --git a/sign/src/test/java/com/itextpdf/signatures/sign/PadesSigTest.java b/sign/src/test/java/com/itextpdf/signatures/sign/PadesSigTest.java
index 4afb60491f..7f466d548b 100644
--- a/sign/src/test/java/com/itextpdf/signatures/sign/PadesSigTest.java
+++ b/sign/src/test/java/com/itextpdf/signatures/sign/PadesSigTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/sign/src/test/java/com/itextpdf/signatures/sign/PadesSignatureLevelTest.java b/sign/src/test/java/com/itextpdf/signatures/sign/PadesSignatureLevelTest.java
index c9a01314f8..09d6ccf299 100644
--- a/sign/src/test/java/com/itextpdf/signatures/sign/PadesSignatureLevelTest.java
+++ b/sign/src/test/java/com/itextpdf/signatures/sign/PadesSignatureLevelTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
@@ -129,18 +129,13 @@ public void padesSignatureLevelTTest01() throws GeneralSecurityException, IOExce
public void padesSignatureLevelLTTest01() throws GeneralSecurityException, IOException {
String outFileName = destinationFolder + "padesSignatureLevelLTTest01.pdf";
String srcFileName = sourceFolder + "signedPAdES-T.pdf";
- String tsaCertFileName = certsSrc + "tsCertRsa.p12";
String caCertFileName = certsSrc + "rootRsa.p12";
- Certificate[] tsaChain = Pkcs12FileHelper.readFirstChain(tsaCertFileName, password);
- PrivateKey tsaPrivateKey = Pkcs12FileHelper.readFirstKey(tsaCertFileName, password, password);
-
X509Certificate caCert = (X509Certificate) Pkcs12FileHelper.readFirstChain(caCertFileName, password)[0];
PrivateKey caPrivateKey = Pkcs12FileHelper.readFirstKey(caCertFileName, password, password);
- ICrlClient crlClient = new TestCrlClient(caCert, caPrivateKey);
+ ICrlClient crlClient = new TestCrlClient().addBuilderForCertIssuer(caCert, caPrivateKey);
TestOcspClient ocspClient = new TestOcspClient().addBuilderForCertIssuer(caCert, caPrivateKey);
- TestTsaClient testTsa = new TestTsaClient(Arrays.asList(tsaChain), tsaPrivateKey);
PdfDocument document = new PdfDocument(new PdfReader(srcFileName), new PdfWriter(outFileName), new StampingProperties().useAppendMode());
LtvVerification ltvVerification = new LtvVerification(document);
@@ -148,7 +143,8 @@ public void padesSignatureLevelLTTest01() throws GeneralSecurityException, IOExc
ltvVerification.merge();
document.close();
- basicCheckDssDict("padesSignatureLevelLTTest01.pdf");
+ Assert.assertNull(SignaturesCompareTool.compareSignatures(
+ outFileName, sourceFolder + "cmp_padesSignatureLevelLTTest01.pdf"));
}
@Test
@@ -165,13 +161,7 @@ public void padesSignatureLevelLTATest01() throws GeneralSecurityException, IOEx
TestTsaClient testTsa = new TestTsaClient(Arrays.asList(tsaChain), tsaPrivateKey);
signer.timestamp(testTsa, "timestampSig1");
- PadesSigTest.basicCheckSignedDoc(destinationFolder + "padesSignatureLevelLTATest01.pdf", "timestampSig1");
- }
-
- private void basicCheckDssDict(String fileName) throws IOException {
- PdfDocument outDocument = new PdfDocument(new PdfReader(destinationFolder + fileName));
- PdfDictionary dssDict = outDocument.getCatalog().getPdfObject().getAsDictionary(PdfName.DSS);
- Assert.assertNotNull(dssDict);
- Assert.assertEquals(4, dssDict.size());
+ Assert.assertNull(SignaturesCompareTool.compareSignatures(
+ outFileName, sourceFolder + "cmp_padesSignatureLevelLTATest01.pdf"));
}
}
diff --git a/sign/src/test/java/com/itextpdf/signatures/sign/Pdf20SigningTest.java b/sign/src/test/java/com/itextpdf/signatures/sign/Pdf20SigningTest.java
index 4e39980ec8..68e3c32d9c 100644
--- a/sign/src/test/java/com/itextpdf/signatures/sign/Pdf20SigningTest.java
+++ b/sign/src/test/java/com/itextpdf/signatures/sign/Pdf20SigningTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is offered under a commercial and under the AGPL license.
diff --git a/sign/src/test/java/com/itextpdf/signatures/sign/PdfASigningTest.java b/sign/src/test/java/com/itextpdf/signatures/sign/PdfASigningTest.java
index e4a67b0b6e..e427b7a45e 100644
--- a/sign/src/test/java/com/itextpdf/signatures/sign/PdfASigningTest.java
+++ b/sign/src/test/java/com/itextpdf/signatures/sign/PdfASigningTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/sign/src/test/java/com/itextpdf/signatures/sign/PdfSignatureAppearanceTest.java b/sign/src/test/java/com/itextpdf/signatures/sign/PdfSignatureAppearanceTest.java
index 2452e514c0..23e6baa20d 100644
--- a/sign/src/test/java/com/itextpdf/signatures/sign/PdfSignatureAppearanceTest.java
+++ b/sign/src/test/java/com/itextpdf/signatures/sign/PdfSignatureAppearanceTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
@@ -130,7 +130,7 @@ public void textAutoscaleTest02() throws GeneralSecurityException, IOException {
String fileName = "textAutoscaleTest02.pdf";
String dest = DESTINATION_FOLDER + fileName;
- Rectangle rect = new Rectangle(36, 648, 100, 50);
+ Rectangle rect = new Rectangle(36, 648, 150, 50);
testSignatureAppearanceAutoscale(dest, rect, PdfSignatureAppearance.RenderingMode.DESCRIPTION);
assertAppearanceFontSize(dest, 6.83f);
diff --git a/sign/src/test/java/com/itextpdf/signatures/sign/PdfSignatureTest.java b/sign/src/test/java/com/itextpdf/signatures/sign/PdfSignatureTest.java
index 15fd0d27a9..e0a79f5db7 100644
--- a/sign/src/test/java/com/itextpdf/signatures/sign/PdfSignatureTest.java
+++ b/sign/src/test/java/com/itextpdf/signatures/sign/PdfSignatureTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is offered under a commercial and under the AGPL license.
diff --git a/sign/src/test/java/com/itextpdf/signatures/sign/SequentialSignaturesTest.java b/sign/src/test/java/com/itextpdf/signatures/sign/SequentialSignaturesTest.java
index 7985b75b47..fad763b3b3 100644
--- a/sign/src/test/java/com/itextpdf/signatures/sign/SequentialSignaturesTest.java
+++ b/sign/src/test/java/com/itextpdf/signatures/sign/SequentialSignaturesTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/sign/src/test/java/com/itextpdf/signatures/sign/SignDeferredTest.java b/sign/src/test/java/com/itextpdf/signatures/sign/SignDeferredTest.java
index ef4be470e0..6099c2b1e8 100644
--- a/sign/src/test/java/com/itextpdf/signatures/sign/SignDeferredTest.java
+++ b/sign/src/test/java/com/itextpdf/signatures/sign/SignDeferredTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/sign/src/test/java/com/itextpdf/signatures/sign/SimpleSigningTest.java b/sign/src/test/java/com/itextpdf/signatures/sign/SimpleSigningTest.java
index a737c08903..32ba63881a 100644
--- a/sign/src/test/java/com/itextpdf/signatures/sign/SimpleSigningTest.java
+++ b/sign/src/test/java/com/itextpdf/signatures/sign/SimpleSigningTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/sign/src/test/java/com/itextpdf/signatures/sign/TaggedPdfSigningTest.java b/sign/src/test/java/com/itextpdf/signatures/sign/TaggedPdfSigningTest.java
index e1054c5837..d70357f901 100644
--- a/sign/src/test/java/com/itextpdf/signatures/sign/TaggedPdfSigningTest.java
+++ b/sign/src/test/java/com/itextpdf/signatures/sign/TaggedPdfSigningTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is offered under a commercial and under the AGPL license.
diff --git a/sign/src/test/java/com/itextpdf/signatures/sign/TimestampSigTest.java b/sign/src/test/java/com/itextpdf/signatures/sign/TimestampSigTest.java
index 3a4793521c..e1493faa67 100644
--- a/sign/src/test/java/com/itextpdf/signatures/sign/TimestampSigTest.java
+++ b/sign/src/test/java/com/itextpdf/signatures/sign/TimestampSigTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/sign/src/test/java/com/itextpdf/signatures/testutils/SignTestPortUtil.java b/sign/src/test/java/com/itextpdf/signatures/testutils/SignTestPortUtil.java
index af9e551022..ac2b30df10 100644
--- a/sign/src/test/java/com/itextpdf/signatures/testutils/SignTestPortUtil.java
+++ b/sign/src/test/java/com/itextpdf/signatures/testutils/SignTestPortUtil.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/sign/src/test/java/com/itextpdf/signatures/testutils/SignaturesCompareTool.java b/sign/src/test/java/com/itextpdf/signatures/testutils/SignaturesCompareTool.java
index 36069fcf9c..bf20628e56 100644
--- a/sign/src/test/java/com/itextpdf/signatures/testutils/SignaturesCompareTool.java
+++ b/sign/src/test/java/com/itextpdf/signatures/testutils/SignaturesCompareTool.java
@@ -1,7 +1,7 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: Bruno Lowagie, Paulo Soares, et al.
This program is free software; you can redistribute it and/or modify
@@ -43,22 +43,32 @@ This file is part of the iText (R) project.
*/
package com.itextpdf.signatures.testutils;
+import com.itextpdf.commons.utils.MessageFormatUtil;
import com.itextpdf.io.util.UrlUtil;
+import com.itextpdf.kernel.pdf.PdfArray;
+import com.itextpdf.kernel.pdf.PdfDictionary;
import com.itextpdf.kernel.pdf.PdfDocument;
+import com.itextpdf.kernel.pdf.PdfName;
import com.itextpdf.kernel.pdf.PdfReader;
+import com.itextpdf.kernel.pdf.PdfStream;
import com.itextpdf.kernel.pdf.ReaderProperties;
import com.itextpdf.signatures.PdfSignature;
import com.itextpdf.signatures.SignatureUtil;
+import com.itextpdf.test.ITextTest;
import java.io.ByteArrayInputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Arrays;
+import java.util.Collections;
+import java.util.HashSet;
import java.util.List;
import java.util.Objects;
-
-import com.itextpdf.test.ITextTest;
+import java.util.Set;
+import java.util.stream.Collectors;
+import org.bouncycastle.asn1.ASN1BitString;
import org.bouncycastle.asn1.ASN1Encodable;
+import org.bouncycastle.asn1.ASN1GeneralizedTime;
import org.bouncycastle.asn1.ASN1InputStream;
import org.bouncycastle.asn1.ASN1ObjectIdentifier;
import org.bouncycastle.asn1.ASN1OctetString;
@@ -66,16 +76,29 @@ This file is part of the iText (R) project.
import org.bouncycastle.asn1.ASN1Sequence;
import org.bouncycastle.asn1.ASN1Set;
import org.bouncycastle.asn1.ASN1TaggedObject;
+import org.bouncycastle.asn1.ASN1UTCTime;
import org.bouncycastle.asn1.util.ASN1Dump;
public class SignaturesCompareTool {
private static final String OID_MESSAGE_DIGEST = "1.2.840.113549.1.9.4";
-
- // Timestamp related ids
private static final String OID_SIGNED_DATA = "1.2.840.113549.1.7.2";
private static final String OID_TST_INFO = "1.2.840.113549.1.9.16.1.4";
private static final String OID_SIGNING_TIME = "1.2.840.113549.1.9.5";
private static final String OID_SIGNATURE_TIMESTAMP_ATTRIBUTE = "1.2.840.113549.1.9.16.2.14";
+ private static final String OID_ADBE_REVOCATION_INFO_ARCHIVAL = "1.2.840.113583.1.1.8";
+ private static final String OID_OCSP_RESPONSE = "1.3.6.1.5.5.7.48.1.1";
+ private static final String OID_OCSP_NONCE_EXTENSION = "1.3.6.1.5.5.7.48.1.2";
+
+ private static final Set IGNORED_OIDS;
+
+ static {
+ HashSet tempSet = new HashSet<>();
+ tempSet.add(OID_MESSAGE_DIGEST);
+ tempSet.add(OID_TST_INFO);
+ tempSet.add(OID_SIGNING_TIME);
+ tempSet.add(OID_OCSP_NONCE_EXTENSION);
+ IGNORED_OIDS = Collections.unmodifiableSet(tempSet);
+ }
public static String compareSignatures(String dest, String cmp) {
return compareSignatures(dest, cmp, new ReaderProperties(), new ReaderProperties());
@@ -101,20 +124,13 @@ public static String compareSignatures(String dest, String cmp, ReaderProperties
ASN1Sequence outSignedData = (ASN1Sequence) getSignatureContent(sig, outSigUtil);
ASN1Sequence cmpSignedData = (ASN1Sequence) getSignatureContent(sig, cmpSigUtil);
- boolean isEqual = compareSignatureObjects(outSignedData, cmpSignedData, errorText);
+ boolean isEqual = compareSignedData(outSignedData, cmpSignedData, errorText);
if (!isEqual) {
- String sigFileName = dest.substring(0, dest.lastIndexOf("."));
- String outSigFile = sigFileName + "_" + sig + "_out.txt";
- String cmpSigFile = sigFileName + "_" + sig + "_cmp.txt";
- writeToFile(outSigFile, sig + "\n" + ASN1Dump.dumpAsString(outSignedData, true) + "\n");
- writeToFile(cmpSigFile, sig + "\n" + ASN1Dump.dumpAsString(cmpSignedData, true) + "\n");
-
- errorText.insert(0, "See signature output files: \nout: "
- + UrlUtil.getNormalizedFileUriString(outSigFile) + "\ncmp: "
- + UrlUtil.getNormalizedFileUriString(cmpSigFile) + "\n");
+ createTxtFilesFromAsn1Sequences(outSignedData, cmpSignedData, dest, sig, errorText);
}
}
+ compareDssEntries(outDocument, cmpDocument, dest, errorText);
} catch (Exception e) {
errorText.append(e.getMessage());
}
@@ -122,7 +138,119 @@ public static String compareSignatures(String dest, String cmp, ReaderProperties
return errorText.toString().isEmpty() ? null : errorText.toString();
}
- private static boolean compareSignatureObjects(ASN1Sequence outSignedData, ASN1Sequence cmpSignedData, StringBuilder errorText) {
+ private static void createTxtFilesFromAsn1Sequences(ASN1Sequence outSignedData, ASN1Sequence cmpSignedData,
+ String dest, String sig, StringBuilder errorText) throws IOException {
+ String sigFileName = dest.substring(0, dest.lastIndexOf("."));
+ String outSigFile = sigFileName + "_" + sig + "_out.txt";
+ String cmpSigFile = sigFileName + "_" + sig + "_cmp.txt";
+ writeToFile(outSigFile, sig + "\n" + ASN1Dump.dumpAsString(outSignedData, true) + "\n");
+ writeToFile(cmpSigFile, sig + "\n" + ASN1Dump.dumpAsString(cmpSignedData, true) + "\n");
+
+ errorText.insert(0, "See signature output files: " +
+ "\nout: " + UrlUtil.getNormalizedFileUriString(outSigFile) +
+ "\ncmp: " + UrlUtil.getNormalizedFileUriString(cmpSigFile) + "\n");
+ }
+
+ private static boolean compareDssEntries(PdfDocument outDocument, PdfDocument cmpDocument,
+ String dest, StringBuilder errorText) throws IOException {
+ PdfDictionary outDss = outDocument.getCatalog().getPdfObject().getAsDictionary(PdfName.DSS);
+ PdfDictionary cmpDss = cmpDocument.getCatalog().getPdfObject().getAsDictionary(PdfName.DSS);
+ if (outDss == null || cmpDss == null) {
+ if (outDss == cmpDss) {
+ return true;
+ }
+ addError(errorText, "DSS dictionaries are different");
+ return false;
+ }
+
+ boolean ocspCertificatesEqual =
+ compareRevocationDataFromDss(
+ outDss, cmpDss, PdfName.OCSPs, dest, errorText,
+ (outSequence, cmpSequence, errorStringBuilder) ->
+ SignaturesCompareTool.compareAsn1Structures(outSequence, cmpSequence, errorStringBuilder));
+ boolean crlCertificatesEqual =
+ compareRevocationDataFromDss(
+ outDss, cmpDss, PdfName.CRLs, dest, errorText,
+ (outSequence, cmpSequence, errorStringBuilder) ->
+ SignaturesCompareTool.compareSequencesWithSignatureValue(outSequence, cmpSequence, errorStringBuilder));
+
+ return ocspCertificatesEqual && crlCertificatesEqual;
+ }
+
+ private static boolean compareRevocationDataFromDss(PdfDictionary outDss, PdfDictionary cmpDss,
+ PdfName entryName, String dest,
+ StringBuilder errorText,
+ SequenceComparator comparator) throws IOException {
+ String errorMessage = entryName.getValue() + " entries inside DSS dictionaries are different";
+ PdfArray outDssEntry = outDss.getAsArray(entryName);
+ PdfArray cmpDssEntry = cmpDss.getAsArray(entryName);
+ if (outDssEntry == null || cmpDssEntry == null) {
+ if (outDssEntry == cmpDssEntry) {
+ return true;
+ }
+ addError(errorText, errorMessage);
+ return false;
+ }
+ if (outDssEntry.size() != cmpDssEntry.size()) {
+ addError(errorText, errorMessage);
+ return false;
+ }
+
+ for (int i = 0; i < outDssEntry.size(); ++i) {
+ PdfStream outDssEntryItem = outDssEntry.getAsStream(i);
+ PdfStream cmpDssEntryItem = cmpDssEntry.getAsStream(i);
+
+ if (outDssEntryItem == null || cmpDssEntryItem == null) {
+ if (outDssEntryItem == cmpDssEntryItem) {
+ continue;
+ }
+ addError(errorText, errorMessage);
+ return false;
+ }
+
+ ASN1Sequence outDecodedItem = (ASN1Sequence) ASN1Sequence.fromByteArray(outDssEntryItem.getBytes());
+ ASN1Sequence cmpDecodedItem = (ASN1Sequence) ASN1Sequence.fromByteArray(cmpDssEntryItem.getBytes());
+
+ if (!comparator.compare(outDecodedItem, cmpDecodedItem, errorText)) {
+ createTxtFilesFromAsn1Sequences(
+ outDecodedItem, cmpDecodedItem, dest, "DSS_" + entryName.getValue() + "_" + i, errorText);
+ return false;
+ }
+ }
+ return true;
+ }
+
+ private static boolean compareOcspResponses(ASN1Encodable[] outOcspResponse, ASN1Encodable[] cmpOcspResponse,
+ StringBuilder errorText) throws IOException {
+ if (outOcspResponse.length != 2 || cmpOcspResponse.length != 2) {
+ addError(errorText, "OCSP response has unexpected structure");
+ }
+ ASN1OctetString outResponseString = (ASN1OctetString) outOcspResponse[1];
+ ASN1OctetString cmpResponseString = (ASN1OctetString) cmpOcspResponse[1];
+ if (outResponseString.equals(cmpResponseString)) {
+ return true;
+ }
+
+ ASN1Sequence parsedOutResponse = (ASN1Sequence) ASN1Sequence.fromByteArray(outResponseString.getOctets());
+ ASN1Sequence parsedCmpResponse = (ASN1Sequence) ASN1Sequence.fromByteArray(cmpResponseString.getOctets());
+
+ return compareSequencesWithSignatureValue(parsedOutResponse, parsedCmpResponse, errorText);
+ }
+
+ /**
+ * SignedData is top-level CMS-object for signatures, see "5.1. SignedData Type" at
+ * https://datatracker.ietf.org/doc/html/rfc5652#section-5.1 .
+ *
+ * @param outSignedData current output signed data
+ * @param cmpSignedData reference signed data used for comparison as a ground truth
+ * @param errorText string builder in order to accumulate errors
+ *
+ * @return true if signed data objects are the similar, false otherwise
+ *
+ * @throws IOException is thrown if object data parsing failed
+ */
+ private static boolean compareSignedData(ASN1Sequence outSignedData, ASN1Sequence cmpSignedData,
+ StringBuilder errorText) throws IOException {
if (outSignedData.size() != cmpSignedData.size() || outSignedData.size() != 2) {
addError(errorText, "Signature top level elements count is incorrect (should be exactly 2):",
String.valueOf(outSignedData.size()),
@@ -185,21 +313,26 @@ private static boolean compareSignatureObjects(ASN1Sequence outSignedData, ASN1S
return false;
}
- ASN1Sequence outSignerInfo = (ASN1Sequence) cmpSignerInfos.getObjectAt(0);
- ASN1Sequence cmpSignerInfo = (ASN1Sequence) outSignerInfos.getObjectAt(0);
- if (cmpSignerInfo.size() != outSignerInfo.size()) {
- addError(errorText, "Incorrect SignerInfo entries count", String.valueOf(outSignerInfo.size()),
- String.valueOf(cmpSignerInfo.size()));
+ ASN1Sequence outSignerInfo = (ASN1Sequence) outSignerInfos.getObjectAt(0);
+ ASN1Sequence cmpSignerInfo = (ASN1Sequence) cmpSignerInfos.getObjectAt(0);
+
+ return compareSequencesWithSignatureValue(outSignerInfo, cmpSignerInfo, errorText);
+ }
+
+ private static boolean compareSequencesWithSignatureValue(ASN1Sequence outSequence, ASN1Sequence cmpSequence,
+ StringBuilder errorText) throws IOException {
+ if (cmpSequence.size() != outSequence.size()) {
+ addError(errorText, "Incorrect SignerInfo entries count", String.valueOf(outSequence.size()),
+ String.valueOf(cmpSequence.size()));
return false;
}
- for (int i = 0; i < cmpSignerInfo.size(); i++) {
-
- // Skipping comparison of ASN1OctetString fields in SignerInfo. SignerInfo is expected to have
- // a single field of ASN1OctetString which is SignatureValue, that is expected to be
- // different in each signature instance.
- if (outSignerInfo.getObjectAt(i) instanceof ASN1OctetString) {
- if (cmpSignerInfo.getObjectAt(i) instanceof ASN1OctetString) {
+ for (int i = 0; i < cmpSequence.size(); i++) {
+ // Skipping comparison of encoded strings fields which are SignatureValue fields.
+ // They are expected to be different.
+ if (outSequence.getObjectAt(i) instanceof ASN1OctetString ||
+ outSequence.getObjectAt(i) instanceof ASN1BitString) {
+ if (outSequence.getObjectAt(i).getClass().equals(cmpSequence.getObjectAt(i).getClass())) {
continue;
} else {
addError(errorText, "Signature values indexes are different!", null, null);
@@ -208,16 +341,16 @@ private static boolean compareSignatureObjects(ASN1Sequence outSignedData, ASN1S
}
if (!compareAsn1Structures(
- outSignerInfo.getObjectAt(i).toASN1Primitive(),
- cmpSignerInfo.getObjectAt(i).toASN1Primitive(), errorText)) {
+ outSequence.getObjectAt(i).toASN1Primitive(),
+ cmpSequence.getObjectAt(i).toASN1Primitive(), errorText)) {
return false;
}
}
-
return true;
}
- private static boolean compareAsn1Structures(ASN1Primitive out, ASN1Primitive cmp, StringBuilder errorText) {
+ private static boolean compareAsn1Structures(ASN1Primitive out, ASN1Primitive cmp,
+ StringBuilder errorText) throws IOException {
if (!out.getClass().equals(cmp.getClass())) {
addError(errorText, "ASN1 objects types are different", out.getClass().getName(),
cmp.getClass().getName());
@@ -226,17 +359,20 @@ private static boolean compareAsn1Structures(ASN1Primitive out, ASN1Primitive cm
if (cmp instanceof ASN1TaggedObject) {
return compareAsn1Structures(
- ((ASN1TaggedObject) cmp).getObject(), ((ASN1TaggedObject) out).getObject(), errorText);
+ ((ASN1TaggedObject) out).getObject(), ((ASN1TaggedObject) cmp).getObject(), errorText);
} else if (cmp instanceof ASN1Sequence) {
if (!compareContainers(((ASN1Sequence) out).toArray(), ((ASN1Sequence) cmp).toArray(), errorText)) {
- addError(errorText, "ASN1Sequence objects are different", null, null);
+ addError(errorText, "ASN1Sequence objects are different");
return false;
}
} else if (cmp instanceof ASN1Set) {
if (!compareContainers(((ASN1Set) out).toArray(), ((ASN1Set) cmp).toArray(), errorText)) {
- addError(errorText, "ASN1Set objects are different", null, null);
+ addError(errorText, "ASN1Set objects are different");
return false;
}
+ } else if (cmp instanceof ASN1GeneralizedTime || cmp instanceof ASN1UTCTime) {
+ // Ignore time values since usually they shouldn't be equal
+ return true;
} else {
if (!cmp.equals(out)) {
addError(errorText, "ASN1 objects are different",
@@ -248,7 +384,7 @@ private static boolean compareAsn1Structures(ASN1Primitive out, ASN1Primitive cm
}
private static boolean compareContainers(ASN1Encodable[] outArray,
- ASN1Encodable[] cmpArray, StringBuilder errorText) {
+ ASN1Encodable[] cmpArray, StringBuilder errorText) throws IOException {
if (cmpArray.length != outArray.length) {
addError(errorText, "Container lengths are different",
Integer.toString(outArray.length), Integer.toString(cmpArray.length));
@@ -262,15 +398,18 @@ private static boolean compareContainers(ASN1Encodable[] outArray,
return false;
}
- // Message digest, timestamp token info and signing time should be ignored during comparing.
- if (OID_MESSAGE_DIGEST.equals(cmpASN1ObjectId) ||
- OID_TST_INFO.equals(cmpASN1ObjectId) || OID_SIGNING_TIME.equals(cmpASN1ObjectId)) {
+ if (IGNORED_OIDS.contains(cmpASN1ObjectId)) {
return true;
}
- // Signature timestamp attribute (nested timestamp signature) should be processed as separated signature.
if (OID_SIGNATURE_TIMESTAMP_ATTRIBUTE.equals(cmpASN1ObjectId)) {
return compareTimestampAttributes(outArray, cmpArray, errorText);
}
+ if (OID_OCSP_RESPONSE.equals(cmpASN1ObjectId)) {
+ return compareOcspResponses(outArray, cmpArray, errorText);
+ }
+ if (OID_ADBE_REVOCATION_INFO_ARCHIVAL.equals(cmpASN1ObjectId)) {
+ return compareRevocationInfoArchivalAttribute(outArray, cmpArray, errorText);
+ }
for (int i = 0; i < cmpArray.length; i++) {
if (!compareAsn1Structures(outArray[i].toASN1Primitive(), cmpArray[i].toASN1Primitive(), errorText)) {
return false;
@@ -279,20 +418,124 @@ private static boolean compareContainers(ASN1Encodable[] outArray,
return true;
}
- private static boolean compareTimestampAttributes(ASN1Encodable[] out, ASN1Encodable[] cmp, StringBuilder errorText) {
+ /**
+ * See ISO 32000-2, 12.8.3.3.2 "Revocation of CMS-based signatures"
+ *
+ * @param out out signature revocation info attribute value
+ * @param cmp cmp signature revocation info attribute value
+ * @param errorText string builder in order to accumulate errors
+ *
+ * @return true if signed data objects are the similar, false otherwise
+ */
+ private static boolean compareRevocationInfoArchivalAttribute(ASN1Encodable[] out, ASN1Encodable[] cmp,
+ StringBuilder errorText) throws IOException {
+ String structureIsInvalidError = "Signature revocation info archival attribute structure is invalid";
+ if (!isExpectedRevocationInfoArchivalAttributeStructure(out)
+ || !isExpectedRevocationInfoArchivalAttributeStructure(cmp)) {
+ addError(errorText, structureIsInvalidError,
+ String.join("", Arrays.stream(out).map(e -> ASN1Dump.dumpAsString(e)).collect(Collectors.toList())),
+ String.join("", Arrays.stream(cmp).map(e -> ASN1Dump.dumpAsString(e)).collect(Collectors.toList())));
+ return false;
+ }
+
+ ASN1Sequence outSequence = ((ASN1Sequence) ((ASN1Set) out[1]).getObjectAt(0).toASN1Primitive());
+ ASN1Sequence cmpSequence = ((ASN1Sequence) ((ASN1Set) cmp[1]).getObjectAt(0).toASN1Primitive());
+ if (outSequence.size() != cmpSequence.size()) {
+ addError(errorText,
+ "Signature revocation info archival attributes have different sets of revocation info types (different sizes)",
+ String.valueOf(outSequence.size()), String.valueOf(cmpSequence.size()));
+ return false;
+ }
+
+ for (int i = 0; i < outSequence.size(); i++) {
+ if (!(outSequence.getObjectAt(i) instanceof ASN1TaggedObject)
+ || !(cmpSequence.getObjectAt(i) instanceof ASN1TaggedObject)) {
+ addError(errorText, structureIsInvalidError,
+ String.join("", Arrays.stream(out).map(e -> ASN1Dump.dumpAsString(e)).collect(Collectors.toList())),
+ String.join("", Arrays.stream(cmp).map(e -> ASN1Dump.dumpAsString(e)).collect(Collectors.toList())));
+ return false;
+ }
+ ASN1TaggedObject outTaggedObject = (ASN1TaggedObject) outSequence.getObjectAt(i);
+ ASN1TaggedObject cmpTaggedObject = (ASN1TaggedObject) cmpSequence.getObjectAt(i);
+ if (outTaggedObject.getTagNo() != cmpTaggedObject.getTagNo()) {
+ addError(errorText,
+ "Signature revocation info archival attributes have different tagged objects tag numbers",
+ String.valueOf(outTaggedObject.getTagNo()), String.valueOf(cmpTaggedObject.getTagNo()));
+ return false;
+ }
+
+ if (!(outTaggedObject.getObject() instanceof ASN1Sequence)
+ || !(cmpTaggedObject.getObject() instanceof ASN1Sequence)) {
+ addError(errorText, structureIsInvalidError,
+ String.join("", Arrays.stream(out).map(e -> ASN1Dump.dumpAsString(e)).collect(Collectors.toList())),
+ String.join("", Arrays.stream(cmp).map(e -> ASN1Dump.dumpAsString(e)).collect(Collectors.toList())));
+ return false;
+ }
+
+ // revocation entries can be either CRLs or OCSPs in most cases
+ ASN1Sequence outRevocationEntries = (ASN1Sequence) outTaggedObject.getObject();
+ ASN1Sequence cmpRevocationEntries = (ASN1Sequence) cmpTaggedObject.getObject();
+ if (outRevocationEntries.size() != cmpRevocationEntries.size()) {
+ addError(errorText,
+ "Signature revocation info archival attributes have different number of entries",
+ String.valueOf(outRevocationEntries.size()), String.valueOf(cmpRevocationEntries.size()));
+ return false;
+ }
+
+ if (outTaggedObject.getTagNo() == 0) {
+ // CRL revocation info case
+ for (int j = 0; j < outRevocationEntries.size(); j++) {
+ if (!(outRevocationEntries.getObjectAt(j) instanceof ASN1Sequence)
+ || !(outRevocationEntries.getObjectAt(j) instanceof ASN1Sequence)) {
+ addError(errorText,
+ "Signature revocation info attribute has unexpected CRL entry type",
+ outRevocationEntries.getObjectAt(j).getClass().getName().toString(),
+ cmpRevocationEntries.getObjectAt(j).getClass().getName().toString());
+ return false;
+ }
+ if (!compareSequencesWithSignatureValue(
+ ((ASN1Sequence) outRevocationEntries.getObjectAt(j)),
+ ((ASN1Sequence) cmpRevocationEntries.getObjectAt(j)), errorText)) {
+ addError(errorText,
+ MessageFormatUtil.format(
+ "Signature revocation info attribute CRLs at {0} are different",
+ String.valueOf(j)));
+ return false;
+ }
+ }
+ } else {
+ if (!compareAsn1Structures(outRevocationEntries, cmpRevocationEntries, errorText)) {
+ addError(errorText, "Revocation info attribute entries are different");
+ return false;
+ }
+ }
+ }
+ return true;
+ }
+
+ private static boolean isExpectedRevocationInfoArchivalAttributeStructure(ASN1Encodable[] container) {
+ return container.length == 2
+ && container[1] instanceof ASN1Set
+ && ((ASN1Set) container[1]).size() == 1
+ && ((ASN1Set) container[1]).getObjectAt(0).toASN1Primitive() instanceof ASN1Sequence;
+ }
+
+ private static boolean compareTimestampAttributes(ASN1Encodable[] out, ASN1Encodable[] cmp,
+ StringBuilder errorText) throws IOException {
if (cmp.length == 2) {
if (cmp[1] instanceof ASN1Set && out[1] instanceof ASN1Set) {
ASN1Primitive outSequence = ((ASN1Set) out[1]).getObjectAt(0).toASN1Primitive();
ASN1Primitive cmpSequence = ((ASN1Set) cmp[1]).getObjectAt(0).toASN1Primitive();
if (outSequence instanceof ASN1Sequence && cmpSequence instanceof ASN1Sequence) {
- return compareSignatureObjects((ASN1Sequence) outSequence, (ASN1Sequence) cmpSequence, errorText);
+ return compareSignedData((ASN1Sequence) outSequence, (ASN1Sequence) cmpSequence, errorText);
}
}
}
- addError(errorText,
- "Signature timestamp attribute structure is invalid", Arrays.toString(out), Arrays.toString(cmp));
+ addError(errorText, "Signature timestamp attribute structure is invalid",
+ String.join("", Arrays.stream(out).map(e -> ASN1Dump.dumpAsString(e)).collect(Collectors.toList())),
+ String.join("", Arrays.stream(cmp).map(e -> ASN1Dump.dumpAsString(e)).collect(Collectors.toList())));
return false;
}
@@ -336,6 +579,10 @@ private static void writeToFile(String path, String content) throws IOException
}
}
+ private static void addError(StringBuilder errorBuilder, String errorText) {
+ addError(errorBuilder, errorText, null, null);
+ }
+
private static void addError(StringBuilder errorBuilder, String errorText, String out, String cmp) {
errorBuilder.append(errorText);
if (null != out) {
@@ -348,4 +595,9 @@ private static void addError(StringBuilder errorBuilder, String errorText, Strin
errorBuilder.append("\n\n");
}
+
+ @FunctionalInterface
+ interface SequenceComparator {
+ boolean compare(ASN1Sequence outSequence, ASN1Sequence cmpSequence, StringBuilder errorText) throws IOException;
+ }
}
diff --git a/sign/src/test/java/com/itextpdf/signatures/testutils/TimeTestUtil.java b/sign/src/test/java/com/itextpdf/signatures/testutils/TimeTestUtil.java
index 81fa41004d..ac0d9fe324 100644
--- a/sign/src/test/java/com/itextpdf/signatures/testutils/TimeTestUtil.java
+++ b/sign/src/test/java/com/itextpdf/signatures/testutils/TimeTestUtil.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/sign/src/test/java/com/itextpdf/signatures/testutils/X509MockCertificate.java b/sign/src/test/java/com/itextpdf/signatures/testutils/X509MockCertificate.java
index 247f84a4cd..b3120d6c0b 100644
--- a/sign/src/test/java/com/itextpdf/signatures/testutils/X509MockCertificate.java
+++ b/sign/src/test/java/com/itextpdf/signatures/testutils/X509MockCertificate.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/sign/src/test/java/com/itextpdf/signatures/testutils/builder/TestCrlBuilder.java b/sign/src/test/java/com/itextpdf/signatures/testutils/builder/TestCrlBuilder.java
index c718bda7bd..5786c18d52 100644
--- a/sign/src/test/java/com/itextpdf/signatures/testutils/builder/TestCrlBuilder.java
+++ b/sign/src/test/java/com/itextpdf/signatures/testutils/builder/TestCrlBuilder.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
@@ -42,8 +42,8 @@ This file is part of the iText (R) project.
*/
package com.itextpdf.signatures.testutils.builder;
-
import com.itextpdf.commons.utils.DateTimeUtil;
+
import java.io.IOException;
import java.security.PrivateKey;
import java.security.cert.CertificateEncodingException;
@@ -62,12 +62,15 @@ public class TestCrlBuilder {
private static final String SIGN_ALG = "SHA256withRSA";
- private X509v2CRLBuilder crlBuilder;
+ private final PrivateKey issuerPrivateKey;
+ private final X509v2CRLBuilder crlBuilder;
private Date nextUpdate = DateTimeUtil.addDaysToDate(DateTimeUtil.getCurrentTimeDate(), 30);
- public TestCrlBuilder(X509Certificate caCert, Date thisUpdate) throws CertificateEncodingException {
- X500Name issuerDN = new X500Name(PrincipalUtil.getIssuerX509Principal(caCert).getName());
- crlBuilder = new X509v2CRLBuilder(issuerDN, thisUpdate);
+ public TestCrlBuilder(X509Certificate issuerCert, PrivateKey issuerPrivateKey, Date thisUpdate)
+ throws CertificateEncodingException {
+ String issuerCertSubjectDn = PrincipalUtil.getSubjectX509Principal(issuerCert).getName();
+ this.crlBuilder = new X509v2CRLBuilder(new X500Name(issuerCertSubjectDn), thisUpdate);
+ this.issuerPrivateKey = issuerPrivateKey;
}
public void setNextUpdate(Date nextUpdate) {
@@ -81,8 +84,10 @@ public void addCrlEntry(X509Certificate certificate, Date revocationDate, int re
crlBuilder.addCRLEntry(certificate.getSerialNumber(), revocationDate, reason);
}
- public byte[] makeCrl(PrivateKey caPrivateKey) throws IOException, OperatorCreationException {
- ContentSigner signer = new JcaContentSignerBuilder(SIGN_ALG).setProvider(BouncyCastleProvider.PROVIDER_NAME).build(caPrivateKey);
+ public byte[] makeCrl() throws IOException, OperatorCreationException {
+ ContentSigner signer =
+ new JcaContentSignerBuilder(SIGN_ALG).setProvider(BouncyCastleProvider.PROVIDER_NAME)
+ .build(issuerPrivateKey);
crlBuilder.setNextUpdate(nextUpdate);
X509CRLHolder crl = crlBuilder.build(signer);
return crl.getEncoded();
diff --git a/sign/src/test/java/com/itextpdf/signatures/testutils/builder/TestOcspResponseBuilder.java b/sign/src/test/java/com/itextpdf/signatures/testutils/builder/TestOcspResponseBuilder.java
index 3a7866a0b4..b2f8a866c4 100644
--- a/sign/src/test/java/com/itextpdf/signatures/testutils/builder/TestOcspResponseBuilder.java
+++ b/sign/src/test/java/com/itextpdf/signatures/testutils/builder/TestOcspResponseBuilder.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/sign/src/test/java/com/itextpdf/signatures/testutils/builder/TestTimestampTokenBuilder.java b/sign/src/test/java/com/itextpdf/signatures/testutils/builder/TestTimestampTokenBuilder.java
index 12d6ad3794..a3425b96f1 100644
--- a/sign/src/test/java/com/itextpdf/signatures/testutils/builder/TestTimestampTokenBuilder.java
+++ b/sign/src/test/java/com/itextpdf/signatures/testutils/builder/TestTimestampTokenBuilder.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
@@ -45,14 +45,18 @@ This file is part of the iText (R) project.
import com.itextpdf.commons.utils.DateTimeUtil;
import com.itextpdf.commons.utils.SystemUtil;
import com.itextpdf.signatures.DigestAlgorithms;
+
import java.io.IOException;
import java.math.BigInteger;
import java.security.PrivateKey;
import java.security.cert.Certificate;
import java.security.cert.CertificateEncodingException;
import java.security.cert.X509Certificate;
+import java.util.Collections;
import java.util.Date;
+import java.util.HashSet;
import java.util.List;
+import java.util.Set;
import org.bouncycastle.asn1.ASN1ObjectIdentifier;
import org.bouncycastle.asn1.x509.AlgorithmIdentifier;
import org.bouncycastle.cert.jcajce.JcaCertStore;
@@ -66,12 +70,16 @@ This file is part of the iText (R) project.
import org.bouncycastle.operator.jcajce.JcaDigestCalculatorProviderBuilder;
import org.bouncycastle.tsp.TSPException;
import org.bouncycastle.tsp.TimeStampRequest;
+import org.bouncycastle.tsp.TimeStampResponseGenerator;
import org.bouncycastle.tsp.TimeStampToken;
import org.bouncycastle.tsp.TimeStampTokenGenerator;
public class TestTimestampTokenBuilder {
private static final String SIGN_ALG = "SHA256withRSA";
+ // just a more or less random oid of timestamp policy
+ private static final String POLICY_OID = "1.3.6.1.4.1.45794.1.1";
+
private List tsaCertificateChain;
private PrivateKey tsaPrivateKey;
@@ -84,19 +92,8 @@ public TestTimestampTokenBuilder(List tsaCertificateChain, PrivateK
}
public byte[] createTimeStampToken(TimeStampRequest request) throws OperatorCreationException, TSPException, IOException, CertificateEncodingException {
- ContentSigner signer = new JcaContentSignerBuilder(SIGN_ALG).build(tsaPrivateKey);
- DigestCalculatorProvider digestCalcProviderProvider = new JcaDigestCalculatorProviderBuilder().build();
-
- SignerInfoGenerator siGen =
- new JcaSignerInfoGeneratorBuilder(digestCalcProviderProvider)
- .build(signer, (X509Certificate) tsaCertificateChain.get(0));
-
- // just a more or less random oid of timestamp policy
- ASN1ObjectIdentifier policy = new ASN1ObjectIdentifier("1.3.6.1.4.1.45794.1.1");
-
- String digestForTsSigningCert = DigestAlgorithms.getAllowedDigest("SHA1");
- DigestCalculator dgCalc = digestCalcProviderProvider.get(new AlgorithmIdentifier(new ASN1ObjectIdentifier(digestForTsSigningCert)));
- TimeStampTokenGenerator tsTokGen = new TimeStampTokenGenerator(siGen, dgCalc, policy);
+ TimeStampTokenGenerator tsTokGen = createTimeStampTokenGenerator(tsaPrivateKey,
+ tsaCertificateChain.get(0), SIGN_ALG, "SHA1", POLICY_OID);
tsTokGen.setAccuracySeconds(1);
// TODO setting this is somewhat wrong. Acrobat and openssl recognize timestamp tokens generated with this line as corrupted
@@ -111,4 +108,35 @@ public byte[] createTimeStampToken(TimeStampRequest request) throws OperatorCrea
TimeStampToken tsToken = tsTokGen.generate(request, serialNumber, genTime);
return tsToken.getEncoded();
}
+
+ public byte[] createTSAResponse(byte[] requestBytes, String signatureAlgorithm, String allowedDigest) {
+ try {
+ String digestForTsSigningCert = DigestAlgorithms.getAllowedDigest(allowedDigest);
+ TimeStampTokenGenerator tokenGenerator = createTimeStampTokenGenerator(tsaPrivateKey,
+ tsaCertificateChain.get(0), signatureAlgorithm, allowedDigest, POLICY_OID);
+
+ Set algorithms = new HashSet<>(Collections.singletonList(digestForTsSigningCert));
+ TimeStampResponseGenerator generator = new TimeStampResponseGenerator(tokenGenerator, algorithms);
+ TimeStampRequest request = new TimeStampRequest(requestBytes);
+ return generator.generate(request, request.getNonce(), new Date()).getEncoded();
+ } catch (Exception e) {
+ return null;
+ }
+ }
+
+ private static TimeStampTokenGenerator createTimeStampTokenGenerator(PrivateKey pk, Certificate cert,
+ String signatureAlgorithm, String allowedDigest, String policyOid)
+ throws TSPException, OperatorCreationException, CertificateEncodingException {
+ ContentSigner signer = new JcaContentSignerBuilder(signatureAlgorithm).build(pk);
+ DigestCalculatorProvider digestCalcProviderProvider = new JcaDigestCalculatorProviderBuilder().build();
+ SignerInfoGenerator siGen =
+ new JcaSignerInfoGeneratorBuilder(digestCalcProviderProvider)
+ .build(signer, (X509Certificate) cert);
+
+ String digestForTsSigningCert = DigestAlgorithms.getAllowedDigest(allowedDigest);
+ DigestCalculator dgCalc = digestCalcProviderProvider.get(
+ new AlgorithmIdentifier(new ASN1ObjectIdentifier(digestForTsSigningCert)));
+ ASN1ObjectIdentifier policy = new ASN1ObjectIdentifier(policyOid);
+ return new TimeStampTokenGenerator(siGen, dgCalc, policy);
+ }
}
diff --git a/sign/src/test/java/com/itextpdf/signatures/testutils/cert/TestCertificateBuilder.java b/sign/src/test/java/com/itextpdf/signatures/testutils/cert/TestCertificateBuilder.java
index c2b4ff7f68..fe16f93628 100644
--- a/sign/src/test/java/com/itextpdf/signatures/testutils/cert/TestCertificateBuilder.java
+++ b/sign/src/test/java/com/itextpdf/signatures/testutils/cert/TestCertificateBuilder.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/sign/src/test/java/com/itextpdf/signatures/testutils/client/TestCrlClient.java b/sign/src/test/java/com/itextpdf/signatures/testutils/client/TestCrlClient.java
index d6a3087230..2b50e3cbdd 100644
--- a/sign/src/test/java/com/itextpdf/signatures/testutils/client/TestCrlClient.java
+++ b/sign/src/test/java/com/itextpdf/signatures/testutils/client/TestCrlClient.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
@@ -46,36 +46,46 @@ This file is part of the iText (R) project.
import com.itextpdf.kernel.exceptions.PdfException;
import com.itextpdf.signatures.ICrlClient;
import com.itextpdf.signatures.testutils.builder.TestCrlBuilder;
+
import java.security.PrivateKey;
import java.security.cert.CertificateEncodingException;
import java.security.cert.X509Certificate;
+import java.util.ArrayList;
import java.util.Collection;
-import java.util.Collections;
+import java.util.Date;
+import java.util.List;
+import java.util.stream.Collectors;
public class TestCrlClient implements ICrlClient {
- private final TestCrlBuilder crlBuilder;
- private final PrivateKey caPrivateKey;
+ private final List crlBuilders;
+
+ public TestCrlClient() {
+ crlBuilders = new ArrayList<>();
+ }
- public TestCrlClient(TestCrlBuilder crlBuilder, PrivateKey caPrivateKey) {
- this.crlBuilder = crlBuilder;
- this.caPrivateKey = caPrivateKey;
+ public TestCrlClient addBuilderForCertIssuer(TestCrlBuilder crlBuilder) {
+ crlBuilders.add(crlBuilder);
+ return this;
}
- public TestCrlClient(X509Certificate caCert, PrivateKey caPrivateKey) throws CertificateEncodingException {
- this.crlBuilder = new TestCrlBuilder(caCert, DateTimeUtil.addDaysToDate(DateTimeUtil.getCurrentTimeDate(), -1));
- this.caPrivateKey = caPrivateKey;
+ public TestCrlClient addBuilderForCertIssuer(X509Certificate issuerCert, PrivateKey issuerPrivateKey)
+ throws CertificateEncodingException {
+ Date yesterday = DateTimeUtil.addDaysToDate(DateTimeUtil.getCurrentTimeDate(), -1);
+ crlBuilders.add(new TestCrlBuilder(issuerCert, issuerPrivateKey, yesterday));
+ return this;
}
@Override
public Collection getEncoded(X509Certificate checkCert, String url) {
- Collection crls = null;
- try {
- byte[] crl = crlBuilder.makeCrl(caPrivateKey);
- crls = Collections.singletonList(crl);
- } catch (Exception ignore) {
- throw new PdfException(ignore);
- }
- return crls;
+ return crlBuilders.stream()
+ .map(testCrlBuilder -> {
+ try {
+ return testCrlBuilder.makeCrl();
+ } catch (Exception ignore) {
+ throw new PdfException(ignore);
+ }
+ })
+ .collect(Collectors.toList());
}
}
diff --git a/sign/src/test/java/com/itextpdf/signatures/testutils/client/TestOcspClient.java b/sign/src/test/java/com/itextpdf/signatures/testutils/client/TestOcspClient.java
index 27565b7996..ac4237d4cd 100644
--- a/sign/src/test/java/com/itextpdf/signatures/testutils/client/TestOcspClient.java
+++ b/sign/src/test/java/com/itextpdf/signatures/testutils/client/TestOcspClient.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/sign/src/test/java/com/itextpdf/signatures/testutils/client/TestTsaClient.java b/sign/src/test/java/com/itextpdf/signatures/testutils/client/TestTsaClient.java
index 35411559bf..5d2bd183c3 100644
--- a/sign/src/test/java/com/itextpdf/signatures/testutils/client/TestTsaClient.java
+++ b/sign/src/test/java/com/itextpdf/signatures/testutils/client/TestTsaClient.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/sign/src/test/java/com/itextpdf/signatures/verify/CertificateVerificationClassTest.java b/sign/src/test/java/com/itextpdf/signatures/verify/CertificateVerificationClassTest.java
index bd5ddcbb11..c780755ec5 100644
--- a/sign/src/test/java/com/itextpdf/signatures/verify/CertificateVerificationClassTest.java
+++ b/sign/src/test/java/com/itextpdf/signatures/verify/CertificateVerificationClassTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
@@ -42,15 +42,24 @@ This file is part of the iText (R) project.
*/
package com.itextpdf.signatures.verify;
+import com.itextpdf.commons.utils.DateTimeUtil;
+import com.itextpdf.commons.utils.MessageFormatUtil;
import com.itextpdf.signatures.CertificateVerification;
+import com.itextpdf.signatures.SignaturesTestUtils;
import com.itextpdf.signatures.VerificationException;
+import com.itextpdf.signatures.exceptions.SignExceptionMessageConstant;
+import com.itextpdf.signatures.testutils.SignTestPortUtil;
+import com.itextpdf.signatures.testutils.builder.TestCrlBuilder;
+import com.itextpdf.signatures.testutils.client.TestCrlClient;
import com.itextpdf.signatures.testutils.client.TestTsaClient;
-import com.itextpdf.test.annotations.LogMessage;
-import com.itextpdf.test.annotations.LogMessages;
-import com.itextpdf.test.signutils.Pkcs12FileHelper;
import com.itextpdf.test.ExtendedITextTest;
import com.itextpdf.test.ITextTest;
+import com.itextpdf.test.annotations.LogMessage;
+import com.itextpdf.test.annotations.LogMessages;
import com.itextpdf.test.annotations.type.UnitTest;
+import com.itextpdf.test.signutils.Pkcs12FileHelper;
+
+import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.security.KeyStore;
import java.security.KeyStoreException;
@@ -58,13 +67,20 @@ This file is part of the iText (R) project.
import java.security.NoSuchProviderException;
import java.security.PrivateKey;
import java.security.Security;
+import java.security.UnrecoverableKeyException;
+import java.security.cert.CRL;
+import java.security.cert.CRLException;
import java.security.cert.Certificate;
import java.security.cert.CertificateException;
+import java.security.cert.X509Certificate;
+import java.util.ArrayList;
import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
import java.util.List;
-
import org.bouncycastle.asn1.ASN1Sequence;
import org.bouncycastle.asn1.cms.ContentInfo;
+import org.bouncycastle.asn1.x509.CRLReason;
import org.bouncycastle.jce.provider.BouncyCastleProvider;
import org.bouncycastle.tsp.TimeStampToken;
import org.junit.AfterClass;
@@ -78,9 +94,10 @@ public class CertificateVerificationClassTest extends ExtendedITextTest {
// Such messageTemplate is equal to any log message. This is required for porting reasons.
private static final String ANY_LOG_MESSAGE = "{0}";
+ private static final int COUNTER_TO_MAKE_CRL_AVAILABLE_AT_THE_CURRENT_TIME = -1;
- private static final String certsSrc = "./src/test/resources/com/itextpdf/signatures/certs/";
- private static final char[] password = "testpass".toCharArray();
+ private static final String CERTS_SRC = "./src/test/resources/com/itextpdf/signatures/certs/";
+ private static final char[] PASSWORD = "testpass".toCharArray();
@BeforeClass
public static void before() {
@@ -95,10 +112,10 @@ public static void after() {
@Test
public void validCertificateChain01() throws CertificateException, NoSuchAlgorithmException, KeyStoreException, IOException, NoSuchProviderException {
- Certificate[] certChain = Pkcs12FileHelper.readFirstChain(certsSrc + "signCertRsaWithChain.p12", password);
+ Certificate[] certChain = Pkcs12FileHelper.readFirstChain(CERTS_SRC + "signCertRsaWithChain.p12", PASSWORD);
- String caCertFileName = certsSrc + "rootRsa.p12";
- KeyStore caKeyStore = Pkcs12FileHelper.initStore(caCertFileName, password);
+ String caCertFileName = CERTS_SRC + "rootRsa.p12";
+ KeyStore caKeyStore = Pkcs12FileHelper.initStore(caCertFileName, PASSWORD);
List verificationExceptions = CertificateVerification.verifyCertificates(certChain, caKeyStore);
@@ -107,9 +124,9 @@ public void validCertificateChain01() throws CertificateException, NoSuchAlgorit
@Test
public void timestampCertificateAndKeyStoreCorrespondTest() throws Exception {
- String tsaCertFileName = certsSrc + "tsCertRsa.p12";
+ String tsaCertFileName = CERTS_SRC + "tsCertRsa.p12";
- KeyStore caKeyStore = Pkcs12FileHelper.initStore(tsaCertFileName, password);
+ KeyStore caKeyStore = Pkcs12FileHelper.initStore(tsaCertFileName, PASSWORD);
Assert.assertTrue(verifyTimestampCertificates(tsaCertFileName, caKeyStore));
}
@@ -117,10 +134,10 @@ public void timestampCertificateAndKeyStoreCorrespondTest() throws Exception {
@Test
@LogMessages(messages = @LogMessage(messageTemplate = "certificate hash does not match certID hash."))
public void timestampCertificateAndKeyStoreDoNotCorrespondTest() throws Exception {
- String tsaCertFileName = certsSrc + "tsCertRsa.p12";
- String notTsaCertFileName = certsSrc + "rootRsa.p12";
+ String tsaCertFileName = CERTS_SRC + "tsCertRsa.p12";
+ String notTsaCertFileName = CERTS_SRC + "rootRsa.p12";
- KeyStore caKeyStore = Pkcs12FileHelper.initStore(notTsaCertFileName, password);
+ KeyStore caKeyStore = Pkcs12FileHelper.initStore(notTsaCertFileName, PASSWORD);
Assert.assertFalse(verifyTimestampCertificates(tsaCertFileName, caKeyStore));
}
@@ -128,14 +145,202 @@ public void timestampCertificateAndKeyStoreDoNotCorrespondTest() throws Exceptio
@Test
@LogMessages(messages = @LogMessage(messageTemplate = ANY_LOG_MESSAGE))
public void keyStoreWithoutCertificatesTest() throws Exception {
- String tsaCertFileName = certsSrc + "tsCertRsa.p12";
+ String tsaCertFileName = CERTS_SRC + "tsCertRsa.p12";
Assert.assertFalse(verifyTimestampCertificates(tsaCertFileName, null));
}
+ @Test
+ public void expiredCertificateTest()
+ throws CertificateException, KeyStoreException, IOException, NoSuchAlgorithmException {
+
+ final X509Certificate expiredCert =
+ (X509Certificate) Pkcs12FileHelper.readFirstChain(CERTS_SRC + "expiredCert.p12", PASSWORD)[0];
+
+ final String verificationResult = CertificateVerification.verifyCertificate(expiredCert, null);
+ final String expectedResultString = SignaturesTestUtils.getExpiredMessage(expiredCert);
+
+ Assert.assertEquals(expectedResultString, verificationResult);
+ }
+
+ @Test
+ public void unsupportedCriticalExtensionTest()
+ throws CertificateException, KeyStoreException, IOException, NoSuchAlgorithmException {
+
+ final X509Certificate unsupportedExtensionCert = (X509Certificate) Pkcs12FileHelper.readFirstChain(
+ CERTS_SRC + "unsupportedCriticalExtensionCert.p12", PASSWORD)[0];
+
+ final String verificationResult = CertificateVerification.verifyCertificate(unsupportedExtensionCert, null);
+
+ Assert.assertEquals(CertificateVerification.HAS_UNSUPPORTED_EXTENSIONS, verificationResult);
+ }
+
+ @Test
+ public void clrWithGivenCertificateTest()
+ throws CertificateException, KeyStoreException, IOException, NoSuchAlgorithmException,
+ UnrecoverableKeyException, CRLException {
+
+ final String caCertFileName = CERTS_SRC + "rootRsa.p12";
+ X509Certificate caCert = (X509Certificate) Pkcs12FileHelper.readFirstChain(caCertFileName, PASSWORD)[0];
+ PrivateKey caPrivateKey = Pkcs12FileHelper.readFirstKey(caCertFileName, PASSWORD, PASSWORD);
+
+ final String checkCertFileName = CERTS_SRC + "signCertRsa01.p12";
+ X509Certificate checkCert = (X509Certificate) Pkcs12FileHelper.readFirstChain(checkCertFileName, PASSWORD)[0];
+
+ TestCrlBuilder crlBuilder = new TestCrlBuilder(caCert, caPrivateKey,
+ DateTimeUtil.addDaysToDate(DateTimeUtil.getCurrentTimeDate(),
+ COUNTER_TO_MAKE_CRL_AVAILABLE_AT_THE_CURRENT_TIME));
+ crlBuilder.addCrlEntry(caCert, DateTimeUtil.addDaysToDate(DateTimeUtil.getCurrentTimeDate(),
+ COUNTER_TO_MAKE_CRL_AVAILABLE_AT_THE_CURRENT_TIME),
+ CRLReason.keyCompromise);
+
+ TestCrlBuilder crlForCheckBuilder = new TestCrlBuilder(caCert, caPrivateKey,
+ DateTimeUtil.addDaysToDate(DateTimeUtil.getCurrentTimeDate(),
+ COUNTER_TO_MAKE_CRL_AVAILABLE_AT_THE_CURRENT_TIME));
+ crlForCheckBuilder.addCrlEntry(checkCert, DateTimeUtil.addDaysToDate(DateTimeUtil.getCurrentTimeDate(),
+ COUNTER_TO_MAKE_CRL_AVAILABLE_AT_THE_CURRENT_TIME),
+ CRLReason.keyCompromise);
+
+ TestCrlClient crlClient = new TestCrlClient().addBuilderForCertIssuer(crlBuilder);
+ TestCrlClient crlForCheckClient = new TestCrlClient().addBuilderForCertIssuer(crlForCheckBuilder);
+
+ Collection crlBytesForRootCertCollection = crlClient.getEncoded(caCert, null);
+ Collection crlBytesForCheckCertCollection = crlForCheckClient.getEncoded(checkCert, null);
+
+ List crls = new ArrayList<>();
+ for (byte[] crlBytes : crlBytesForRootCertCollection) {
+ crls.add(SignTestPortUtil.parseCrlFromStream(new ByteArrayInputStream(crlBytes)));
+ }
+ for (byte[] crlBytes : crlBytesForCheckCertCollection) {
+ crls.add(SignTestPortUtil.parseCrlFromStream(new ByteArrayInputStream(crlBytes)));
+ }
+
+ final String verificationResult = CertificateVerification.verifyCertificate(checkCert, crls);
+
+ Assert.assertEquals(CertificateVerification.CERTIFICATE_REVOKED, verificationResult);
+ }
+
+ @Test
+ public void validCertWithEmptyCrlCollectionTest()
+ throws CertificateException, KeyStoreException, IOException, NoSuchAlgorithmException {
+ final String caCertFileName = CERTS_SRC + "rootRsa.p12";
+ X509Certificate rootCert = (X509Certificate) Pkcs12FileHelper.readFirstChain(caCertFileName, PASSWORD)[0];
+
+ final String verificationResult = CertificateVerification.verifyCertificate(rootCert, Collections.emptyList());
+
+ Assert.assertNull(verificationResult);
+ }
+
+ @Test
+ public void validCertWithCrlDoesNotContainCertTest()
+ throws CertificateException, KeyStoreException, IOException, NoSuchAlgorithmException,
+ UnrecoverableKeyException, CRLException {
+ final int COUNTER_TO_MAKE_CRL_AVAILABLE_AT_THE_CURRENT_TIME = -1;
+ final String rootCertFileName = CERTS_SRC + "rootRsa.p12";
+ X509Certificate rootCert = (X509Certificate) Pkcs12FileHelper.readFirstChain(rootCertFileName, PASSWORD)[0];
+
+ final String certForAddingToCrlName = CERTS_SRC + "signCertRsa01.p12";
+ X509Certificate certForCrl = (X509Certificate) Pkcs12FileHelper.readFirstChain(certForAddingToCrlName,
+ PASSWORD)[0];
+ PrivateKey caPrivateKey = Pkcs12FileHelper.readFirstKey(certForAddingToCrlName, PASSWORD, PASSWORD);
+
+ TestCrlBuilder crlForCheckBuilder = new TestCrlBuilder(certForCrl, caPrivateKey,
+ DateTimeUtil.addDaysToDate(DateTimeUtil.getCurrentTimeDate(),
+ COUNTER_TO_MAKE_CRL_AVAILABLE_AT_THE_CURRENT_TIME));
+
+ TestCrlClient crlClient = new TestCrlClient().addBuilderForCertIssuer(crlForCheckBuilder);
+
+ Collection crlBytesForRootCertCollection = crlClient.getEncoded(certForCrl, null);
+
+ final List crls = new ArrayList<>();
+ for (byte[] crlBytes : crlBytesForRootCertCollection) {
+ crls.add(SignTestPortUtil.parseCrlFromStream(new ByteArrayInputStream(crlBytes)));
+ }
+
+ Assert.assertNull(CertificateVerification.verifyCertificate(rootCert, crls));
+ }
+
+ @Test
+ public void emptyCertChainTest() {
+ Certificate[] emptyCertChain = new Certificate[] {};
+ final String expectedResult = MessageFormatUtil.format("Certificate Unknown failed: {0}",
+ SignExceptionMessageConstant.INVALID_STATE_WHILE_CHECKING_CERT_CHAIN);
+
+ List resultedExceptionList = CertificateVerification.verifyCertificates(emptyCertChain,
+ null, (Collection) null);
+
+ Assert.assertEquals(1, resultedExceptionList.size());
+ Assert.assertEquals(expectedResult, resultedExceptionList.get(0).getMessage());
+ }
+
+ @Test
+ public void validCertChainWithEmptyKeyStoreTest()
+ throws CertificateException, KeyStoreException, IOException, NoSuchAlgorithmException,
+ NoSuchProviderException {
+ final String validCertChainFileName = CERTS_SRC + "signCertRsaWithChain.p12";
+ final String emptyCertChain = CERTS_SRC + "emptyCertChain.p12";
+
+ Certificate[] validCertChain = Pkcs12FileHelper.readFirstChain(validCertChainFileName, PASSWORD);
+ KeyStore emptyKeyStore = Pkcs12FileHelper.initStore(emptyCertChain, PASSWORD);
+
+ List resultedExceptionList = CertificateVerification.verifyCertificates(validCertChain,
+ emptyKeyStore, (Collection) null);
+
+ final String expectedResult = MessageFormatUtil.format(
+ SignExceptionMessageConstant.CERTIFICATE_TEMPLATE_FOR_EXCEPTION_MESSAGE,
+ ((X509Certificate) validCertChain[2]).getSubjectDN().getName(),
+ SignExceptionMessageConstant.CANNOT_BE_VERIFIED_CERTIFICATE_CHAIN);
+
+ Assert.assertEquals(1, resultedExceptionList.size());
+ Assert.assertEquals(expectedResult, resultedExceptionList.get(0).getMessage());
+ }
+
+ @Test
+ public void validCertChainWithRootCertAsKeyStoreTest()
+ throws CertificateException, KeyStoreException, IOException, NoSuchAlgorithmException,
+ NoSuchProviderException {
+ final String validCertChainFileName = CERTS_SRC + "signCertRsaWithChain.p12";
+ final String emptyCertChain = CERTS_SRC + "rootRsa.p12";
+
+ Certificate[] validCertChain = Pkcs12FileHelper.readFirstChain(validCertChainFileName, PASSWORD);
+ KeyStore emptyKeyStore = Pkcs12FileHelper.initStore(emptyCertChain, PASSWORD);
+
+ List resultedExceptionList = CertificateVerification.verifyCertificates(validCertChain,
+ emptyKeyStore, (Collection) null);
+
+ Assert.assertEquals(0, resultedExceptionList.size());
+ }
+
+ @Test
+ public void certChainWithExpiredCertTest()
+ throws CertificateException, KeyStoreException, IOException, NoSuchAlgorithmException {
+ final String validCertChainFileName = CERTS_SRC + "signCertRsaWithExpiredChain.p12";
+
+ Certificate[] validCertChain = Pkcs12FileHelper.readFirstChain(validCertChainFileName, PASSWORD);
+
+ X509Certificate expectedExpiredCert = (X509Certificate) validCertChain[1];
+ final String expiredCertName = expectedExpiredCert.getSubjectDN().getName();
+ X509Certificate rootCert = (X509Certificate) validCertChain[2];
+ final String rootCertName = rootCert.getSubjectDN().getName();
+
+ List resultedExceptionList = CertificateVerification.verifyCertificates(validCertChain,
+ null, (Collection) null);
+
+ Assert.assertEquals(2, resultedExceptionList.size());
+ final String expectedFirstResultMessage = MessageFormatUtil.format(
+ SignExceptionMessageConstant.CERTIFICATE_TEMPLATE_FOR_EXCEPTION_MESSAGE,
+ expiredCertName, SignaturesTestUtils.getExpiredMessage(expectedExpiredCert));
+ final String expectedSecondResultMessage = MessageFormatUtil.format(
+ SignExceptionMessageConstant.CERTIFICATE_TEMPLATE_FOR_EXCEPTION_MESSAGE,
+ rootCertName, SignExceptionMessageConstant.CANNOT_BE_VERIFIED_CERTIFICATE_CHAIN);
+
+ Assert.assertEquals(expectedFirstResultMessage, resultedExceptionList.get(0).getMessage());
+ Assert.assertEquals(expectedSecondResultMessage, resultedExceptionList.get(1).getMessage());
+ }
+
private static boolean verifyTimestampCertificates(String tsaClientCertificate, KeyStore caKeyStore) throws Exception {
- Certificate[] tsaChain = Pkcs12FileHelper.readFirstChain(tsaClientCertificate, password);
- PrivateKey tsaPrivateKey = Pkcs12FileHelper.readFirstKey(tsaClientCertificate, password, password);
+ Certificate[] tsaChain = Pkcs12FileHelper.readFirstChain(tsaClientCertificate, PASSWORD);
+ PrivateKey tsaPrivateKey = Pkcs12FileHelper.readFirstKey(tsaClientCertificate, PASSWORD, PASSWORD);
TestTsaClient testTsaClient = new TestTsaClient(Arrays.asList(tsaChain), tsaPrivateKey);
diff --git a/sign/src/test/java/com/itextpdf/signatures/verify/CrlVerifierTest.java b/sign/src/test/java/com/itextpdf/signatures/verify/CrlVerifierTest.java
index 6e93588c4d..8485f3d428 100644
--- a/sign/src/test/java/com/itextpdf/signatures/verify/CrlVerifierTest.java
+++ b/sign/src/test/java/com/itextpdf/signatures/verify/CrlVerifierTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
@@ -79,15 +79,19 @@ public static void before() {
@Test
public void validCrl01() throws GeneralSecurityException, IOException {
- X509Certificate caCert = (X509Certificate) Pkcs12FileHelper.readFirstChain(certsSrc + "rootRsa.p12", password)[0];
- TestCrlBuilder crlBuilder = new TestCrlBuilder(caCert, DateTimeUtil.addDaysToDate(DateTimeUtil.getCurrentTimeDate(), -1));
+ String caCertP12FileName = certsSrc + "rootRsa.p12";
+ X509Certificate caCert = (X509Certificate) Pkcs12FileHelper.readFirstChain(caCertP12FileName, password)[0];
+ PrivateKey caPrivateKey = Pkcs12FileHelper.readFirstKey(caCertP12FileName, password, password);
+ TestCrlBuilder crlBuilder = new TestCrlBuilder(caCert, caPrivateKey, DateTimeUtil.addDaysToDate(DateTimeUtil.getCurrentTimeDate(), -1));
Assert.assertTrue(verifyTest(crlBuilder));
}
@Test
public void invalidRevokedCrl01() throws GeneralSecurityException, IOException {
- X509Certificate caCert = (X509Certificate) Pkcs12FileHelper.readFirstChain(certsSrc + "rootRsa.p12", password)[0];
- TestCrlBuilder crlBuilder = new TestCrlBuilder(caCert, DateTimeUtil.addDaysToDate(DateTimeUtil.getCurrentTimeDate(), -1));
+ String caCertP12FileName = certsSrc + "rootRsa.p12";
+ X509Certificate caCert = (X509Certificate) Pkcs12FileHelper.readFirstChain(caCertP12FileName, password)[0];
+ PrivateKey caPrivateKey = Pkcs12FileHelper.readFirstKey(caCertP12FileName, password, password);
+ TestCrlBuilder crlBuilder = new TestCrlBuilder(caCert, caPrivateKey, DateTimeUtil.addDaysToDate(DateTimeUtil.getCurrentTimeDate(), -1));
String checkCertFileName = certsSrc + "signCertRsa01.p12";
X509Certificate checkCert = (X509Certificate) Pkcs12FileHelper.readFirstChain(checkCertFileName, password)[0];
@@ -98,8 +102,10 @@ public void invalidRevokedCrl01() throws GeneralSecurityException, IOException {
@Test
public void invalidOutdatedCrl01() throws GeneralSecurityException, IOException {
- X509Certificate caCert = (X509Certificate) Pkcs12FileHelper.readFirstChain(certsSrc + "rootRsa.p12", password)[0];
- TestCrlBuilder crlBuilder = new TestCrlBuilder(caCert, DateTimeUtil.addDaysToDate(DateTimeUtil.getCurrentTimeDate(), -2));
+ String caCertP12FileName = certsSrc + "rootRsa.p12";
+ X509Certificate caCert = (X509Certificate) Pkcs12FileHelper.readFirstChain(caCertP12FileName, password)[0];
+ PrivateKey caPrivateKey = Pkcs12FileHelper.readFirstKey(caCertP12FileName, password, password);
+ TestCrlBuilder crlBuilder = new TestCrlBuilder(caCert, caPrivateKey, DateTimeUtil.addDaysToDate(DateTimeUtil.getCurrentTimeDate(), -2));
crlBuilder.setNextUpdate(DateTimeUtil.addDaysToDate(DateTimeUtil.getCurrentTimeDate(), -1));
Assert.assertFalse(verifyTest(crlBuilder));
@@ -108,12 +114,11 @@ public void invalidOutdatedCrl01() throws GeneralSecurityException, IOException
private boolean verifyTest(TestCrlBuilder crlBuilder) throws GeneralSecurityException, IOException {
String caCertFileName = certsSrc + "rootRsa.p12";
X509Certificate caCert = (X509Certificate) Pkcs12FileHelper.readFirstChain(caCertFileName, password)[0];
- PrivateKey caPrivateKey = Pkcs12FileHelper.readFirstKey(caCertFileName, password, password);
String checkCertFileName = certsSrc + "signCertRsa01.p12";
X509Certificate checkCert = (X509Certificate) Pkcs12FileHelper.readFirstChain(checkCertFileName, password)[0];
- TestCrlClient crlClient = new TestCrlClient(crlBuilder, caPrivateKey);
+ TestCrlClient crlClient = new TestCrlClient().addBuilderForCertIssuer(crlBuilder);
Collection crlBytesCollection = crlClient.getEncoded(checkCert, null);
boolean verify = false;
diff --git a/sign/src/test/java/com/itextpdf/signatures/verify/LtvVerifierTest.java b/sign/src/test/java/com/itextpdf/signatures/verify/LtvVerifierTest.java
index 7c1864af87..01219cd5b6 100644
--- a/sign/src/test/java/com/itextpdf/signatures/verify/LtvVerifierTest.java
+++ b/sign/src/test/java/com/itextpdf/signatures/verify/LtvVerifierTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/sign/src/test/java/com/itextpdf/signatures/verify/OcspCertificateVerificationTest.java b/sign/src/test/java/com/itextpdf/signatures/verify/OcspCertificateVerificationTest.java
index c7ba7e19e1..ad1bccaa4a 100644
--- a/sign/src/test/java/com/itextpdf/signatures/verify/OcspCertificateVerificationTest.java
+++ b/sign/src/test/java/com/itextpdf/signatures/verify/OcspCertificateVerificationTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is offered under a commercial and under the AGPL license.
diff --git a/sign/src/test/java/com/itextpdf/signatures/verify/OcspVerifierTest.java b/sign/src/test/java/com/itextpdf/signatures/verify/OcspVerifierTest.java
index f1e4d942a6..87e85f447b 100644
--- a/sign/src/test/java/com/itextpdf/signatures/verify/OcspVerifierTest.java
+++ b/sign/src/test/java/com/itextpdf/signatures/verify/OcspVerifierTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/sign/src/test/java/com/itextpdf/signatures/verify/pdfinsecurity/IncrementalSavingAttackTest.java b/sign/src/test/java/com/itextpdf/signatures/verify/pdfinsecurity/IncrementalSavingAttackTest.java
index 2cd1a8d3dc..e09442d0a5 100644
--- a/sign/src/test/java/com/itextpdf/signatures/verify/pdfinsecurity/IncrementalSavingAttackTest.java
+++ b/sign/src/test/java/com/itextpdf/signatures/verify/pdfinsecurity/IncrementalSavingAttackTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/sign/src/test/java/com/itextpdf/signatures/verify/pdfinsecurity/SignatureWrappingAttackTest.java b/sign/src/test/java/com/itextpdf/signatures/verify/pdfinsecurity/SignatureWrappingAttackTest.java
index 1388cebad0..912766a8ac 100644
--- a/sign/src/test/java/com/itextpdf/signatures/verify/pdfinsecurity/SignatureWrappingAttackTest.java
+++ b/sign/src/test/java/com/itextpdf/signatures/verify/pdfinsecurity/SignatureWrappingAttackTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/sign/src/test/resources/com/itextpdf/signatures/LtvVerificationTest/signingCertHasChainWithOcspOnlyForChildCert.pdf b/sign/src/test/resources/com/itextpdf/signatures/LtvVerificationTest/signingCertHasChainWithOcspOnlyForChildCert.pdf
new file mode 100644
index 0000000000..adac87bc31
Binary files /dev/null and b/sign/src/test/resources/com/itextpdf/signatures/LtvVerificationTest/signingCertHasChainWithOcspOnlyForChildCert.pdf differ
diff --git a/sign/src/test/resources/com/itextpdf/signatures/LtvVerifierIntegrationTest/severalConsequentSignatures.pdf b/sign/src/test/resources/com/itextpdf/signatures/LtvVerifierIntegrationTest/severalConsequentSignatures.pdf
new file mode 100644
index 0000000000..f161581d43
Binary files /dev/null and b/sign/src/test/resources/com/itextpdf/signatures/LtvVerifierIntegrationTest/severalConsequentSignatures.pdf differ
diff --git a/sign/src/test/resources/com/itextpdf/signatures/LtvVerifierIntegrationTest/signingCertHas3ChainWithOcspOnlyForChildCert.pdf b/sign/src/test/resources/com/itextpdf/signatures/LtvVerifierIntegrationTest/signingCertHas3ChainWithOcspOnlyForChildCert.pdf
new file mode 100644
index 0000000000..7832ac6f8b
Binary files /dev/null and b/sign/src/test/resources/com/itextpdf/signatures/LtvVerifierIntegrationTest/signingCertHas3ChainWithOcspOnlyForChildCert.pdf differ
diff --git a/sign/src/test/resources/com/itextpdf/signatures/LtvVerifierIntegrationTest/signingCertHasChainWithOcspOnlyForChildCert.pdf b/sign/src/test/resources/com/itextpdf/signatures/LtvVerifierIntegrationTest/signingCertHasChainWithOcspOnlyForChildCert.pdf
new file mode 100644
index 0000000000..b11df0f64a
Binary files /dev/null and b/sign/src/test/resources/com/itextpdf/signatures/LtvVerifierIntegrationTest/signingCertHasChainWithOcspOnlyForChildCert.pdf differ
diff --git a/sign/src/test/resources/com/itextpdf/signatures/LtvVerifierIntegrationTest/signingCertHasChainWithoutRevocationData.pdf b/sign/src/test/resources/com/itextpdf/signatures/LtvVerifierIntegrationTest/signingCertHasChainWithoutRevocationData.pdf
new file mode 100644
index 0000000000..8932e3c7a9
Binary files /dev/null and b/sign/src/test/resources/com/itextpdf/signatures/LtvVerifierIntegrationTest/signingCertHasChainWithoutRevocationData.pdf differ
diff --git a/sign/src/test/resources/com/itextpdf/signatures/LtvVerifierIntegrationTest/signingCertIsSelfSignedWithoutRevocationData.pdf b/sign/src/test/resources/com/itextpdf/signatures/LtvVerifierIntegrationTest/signingCertIsSelfSignedWithoutRevocationData.pdf
new file mode 100644
index 0000000000..88b194e2e8
Binary files /dev/null and b/sign/src/test/resources/com/itextpdf/signatures/LtvVerifierIntegrationTest/signingCertIsSelfSignedWithoutRevocationData.pdf differ
diff --git a/sign/src/test/resources/com/itextpdf/signatures/PdfPKCS7Test/cmpBytesPkcs1.txt b/sign/src/test/resources/com/itextpdf/signatures/PdfPKCS7Test/cmpBytesPkcs1.txt
new file mode 100644
index 0000000000..8925e13562
Binary files /dev/null and b/sign/src/test/resources/com/itextpdf/signatures/PdfPKCS7Test/cmpBytesPkcs1.txt differ
diff --git a/sign/src/test/resources/com/itextpdf/signatures/PdfPKCS7Test/cmpBytesPkcs7.txt b/sign/src/test/resources/com/itextpdf/signatures/PdfPKCS7Test/cmpBytesPkcs7.txt
new file mode 100644
index 0000000000..cdd160abff
Binary files /dev/null and b/sign/src/test/resources/com/itextpdf/signatures/PdfPKCS7Test/cmpBytesPkcs7.txt differ
diff --git a/sign/src/test/resources/com/itextpdf/signatures/PdfPKCS7Test/firstCrl.bin b/sign/src/test/resources/com/itextpdf/signatures/PdfPKCS7Test/firstCrl.bin
new file mode 100644
index 0000000000..950b5c4c7c
Binary files /dev/null and b/sign/src/test/resources/com/itextpdf/signatures/PdfPKCS7Test/firstCrl.bin differ
diff --git a/sign/src/test/resources/com/itextpdf/signatures/PdfPKCS7Test/secondCrl.bin b/sign/src/test/resources/com/itextpdf/signatures/PdfPKCS7Test/secondCrl.bin
new file mode 100644
index 0000000000..39a1ffcc1a
Binary files /dev/null and b/sign/src/test/resources/com/itextpdf/signatures/PdfPKCS7Test/secondCrl.bin differ
diff --git a/sign/src/test/resources/com/itextpdf/signatures/PdfPKCS7Test/signatureWithInvalidOcspTest.pdf b/sign/src/test/resources/com/itextpdf/signatures/PdfPKCS7Test/signatureWithInvalidOcspTest.pdf
new file mode 100644
index 0000000000..16e49fedb5
Binary files /dev/null and b/sign/src/test/resources/com/itextpdf/signatures/PdfPKCS7Test/signatureWithInvalidOcspTest.pdf differ
diff --git a/sign/src/test/resources/com/itextpdf/signatures/PdfPKCS7Test/signatureWithValidOcspTest.pdf b/sign/src/test/resources/com/itextpdf/signatures/PdfPKCS7Test/signatureWithValidOcspTest.pdf
new file mode 100644
index 0000000000..d7fa4dec1f
Binary files /dev/null and b/sign/src/test/resources/com/itextpdf/signatures/PdfPKCS7Test/signatureWithValidOcspTest.pdf differ
diff --git a/sign/src/test/resources/com/itextpdf/signatures/PdfPKCS7Test/simpleOCSPResponse.bin b/sign/src/test/resources/com/itextpdf/signatures/PdfPKCS7Test/simpleOCSPResponse.bin
new file mode 100644
index 0000000000..fe80cb291c
Binary files /dev/null and b/sign/src/test/resources/com/itextpdf/signatures/PdfPKCS7Test/simpleOCSPResponse.bin differ
diff --git a/sign/src/test/resources/com/itextpdf/signatures/PdfPKCS7Test/singleSignatureNotEmptyCRL.pdf b/sign/src/test/resources/com/itextpdf/signatures/PdfPKCS7Test/singleSignatureNotEmptyCRL.pdf
new file mode 100644
index 0000000000..5bb2bd7216
Binary files /dev/null and b/sign/src/test/resources/com/itextpdf/signatures/PdfPKCS7Test/singleSignatureNotEmptyCRL.pdf differ
diff --git a/sign/src/test/resources/com/itextpdf/signatures/certs/adobeExtensionCert.p12 b/sign/src/test/resources/com/itextpdf/signatures/certs/adobeExtensionCert.p12
new file mode 100644
index 0000000000..fa9edfff1f
Binary files /dev/null and b/sign/src/test/resources/com/itextpdf/signatures/certs/adobeExtensionCert.p12 differ
diff --git a/sign/src/test/resources/com/itextpdf/signatures/certs/adobeExtensionCertWithoutTag.p12 b/sign/src/test/resources/com/itextpdf/signatures/certs/adobeExtensionCertWithoutTag.p12
new file mode 100644
index 0000000000..a2f02b32f6
Binary files /dev/null and b/sign/src/test/resources/com/itextpdf/signatures/certs/adobeExtensionCertWithoutTag.p12 differ
diff --git a/sign/src/test/resources/com/itextpdf/signatures/certs/emptyCertChain.p12 b/sign/src/test/resources/com/itextpdf/signatures/certs/emptyCertChain.p12
new file mode 100644
index 0000000000..63da920776
Binary files /dev/null and b/sign/src/test/resources/com/itextpdf/signatures/certs/emptyCertChain.p12 differ
diff --git a/sign/src/test/resources/com/itextpdf/signatures/certs/expiredCert.p12 b/sign/src/test/resources/com/itextpdf/signatures/certs/expiredCert.p12
new file mode 100644
index 0000000000..b978938b87
Binary files /dev/null and b/sign/src/test/resources/com/itextpdf/signatures/certs/expiredCert.p12 differ
diff --git a/sign/src/test/resources/com/itextpdf/signatures/certs/unsupportedCriticalExtensionCert.p12 b/sign/src/test/resources/com/itextpdf/signatures/certs/unsupportedCriticalExtensionCert.p12
new file mode 100644
index 0000000000..696ae202ca
Binary files /dev/null and b/sign/src/test/resources/com/itextpdf/signatures/certs/unsupportedCriticalExtensionCert.p12 differ
diff --git a/sign/src/test/resources/com/itextpdf/signatures/sign/LtvSigTest/cmp_ltvEnabledSingleSignatureNoCrlDataTest.pdf b/sign/src/test/resources/com/itextpdf/signatures/sign/LtvSigTest/cmp_ltvEnabledSingleSignatureNoCrlDataTest.pdf
new file mode 100644
index 0000000000..4bc602ad0e
Binary files /dev/null and b/sign/src/test/resources/com/itextpdf/signatures/sign/LtvSigTest/cmp_ltvEnabledSingleSignatureNoCrlDataTest.pdf differ
diff --git a/sign/src/test/resources/com/itextpdf/signatures/sign/LtvSigTest/cmp_ltvEnabledSingleSignatureNoOcspDataTest.pdf b/sign/src/test/resources/com/itextpdf/signatures/sign/LtvSigTest/cmp_ltvEnabledSingleSignatureNoOcspDataTest.pdf
new file mode 100644
index 0000000000..1badff0716
Binary files /dev/null and b/sign/src/test/resources/com/itextpdf/signatures/sign/LtvSigTest/cmp_ltvEnabledSingleSignatureNoOcspDataTest.pdf differ
diff --git a/sign/src/test/resources/com/itextpdf/signatures/sign/PadesSignatureLevelTest/cmp_padesSignatureLevelLTATest01.pdf b/sign/src/test/resources/com/itextpdf/signatures/sign/PadesSignatureLevelTest/cmp_padesSignatureLevelLTATest01.pdf
index 07d89a7805..7d6d4c189d 100644
Binary files a/sign/src/test/resources/com/itextpdf/signatures/sign/PadesSignatureLevelTest/cmp_padesSignatureLevelLTATest01.pdf and b/sign/src/test/resources/com/itextpdf/signatures/sign/PadesSignatureLevelTest/cmp_padesSignatureLevelLTATest01.pdf differ
diff --git a/styled-xml-parser/pom.xml b/styled-xml-parser/pom.xml
index ff6a99d6d0..e2671c9ef2 100644
--- a/styled-xml-parser/pom.xml
+++ b/styled-xml-parser/pom.xml
@@ -4,7 +4,7 @@
com.itextpdf
root
- 7.2.1
+ 7.2.2
styled-xml-parser
iText 7 - Styled XML Parser
diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/CommonAttributeConstants.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/CommonAttributeConstants.java
index 86220be044..7cb90489b1 100644
--- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/CommonAttributeConstants.java
+++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/CommonAttributeConstants.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/CssRuleSetComparator.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/CssRuleSetComparator.java
index 78b9005e14..31f311b97f 100644
--- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/CssRuleSetComparator.java
+++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/CssRuleSetComparator.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: Bruno Lowagie, Paulo Soares, et al.
This program is free software; you can redistribute it and/or modify
diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/IXmlParser.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/IXmlParser.java
index 3ea1ed7ea7..cc336cdb26 100644
--- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/IXmlParser.java
+++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/IXmlParser.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: Bruno Lowagie, Paulo Soares, et al.
This program is free software; you can redistribute it and/or modify
diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/PortUtil.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/PortUtil.java
index 9a349ae682..628484ee45 100644
--- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/PortUtil.java
+++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/PortUtil.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: Bruno Lowagie, Paulo Soares, et al.
This program is free software; you can redistribute it and/or modify
diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/CommonCssConstants.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/CommonCssConstants.java
index 75eaeaadc9..29a9d214ff 100644
--- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/CommonCssConstants.java
+++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/CommonCssConstants.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: Bruno Lowagie, Paulo Soares, et al.
This program is free software; you can redistribute it and/or modify
diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/CssAtRule.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/CssAtRule.java
index 2b9c595253..9ad87a4c1e 100644
--- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/CssAtRule.java
+++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/CssAtRule.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: Bruno Lowagie, Paulo Soares, et al.
This program is free software; you can redistribute it and/or modify
diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/CssContextNode.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/CssContextNode.java
index c4deab02fe..af4f33a0d2 100644
--- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/CssContextNode.java
+++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/CssContextNode.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: Bruno Lowagie, Paulo Soares, et al.
This program is free software; you can redistribute it and/or modify
diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/CssDeclaration.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/CssDeclaration.java
index c261cfee8f..4064cf8986 100644
--- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/CssDeclaration.java
+++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/CssDeclaration.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: Bruno Lowagie, Paulo Soares, et al.
This program is free software; you can redistribute it and/or modify
diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/CssFontFaceRule.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/CssFontFaceRule.java
index 31db95c1a6..ee8698ee56 100644
--- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/CssFontFaceRule.java
+++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/CssFontFaceRule.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: Bruno Lowagie, Paulo Soares, et al.
This program is free software; you can redistribute it and/or modify
@@ -71,7 +71,10 @@ public CssFontFaceRule() {
* @return the properties
*/
public List getProperties() {
- return new ArrayList<>(properties) ;
+ if (properties==null) {
+ return new ArrayList<>();
+ }
+ return new ArrayList<>(properties);
}
/* (non-Javadoc)
@@ -89,7 +92,7 @@ public void addBodyCssDeclarations(List cssDeclarations) {
public String toString() {
StringBuilder sb = new StringBuilder();
sb.append("@").append(getRuleName()).append(" {").append("\n");
- for (CssDeclaration declaration : properties) {
+ for (CssDeclaration declaration : getProperties()) {
sb.append(" ");
sb.append(declaration);
sb.append(";\n");
diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/CssNestedAtRule.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/CssNestedAtRule.java
index 703ce4abd9..e87c78fc31 100644
--- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/CssNestedAtRule.java
+++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/CssNestedAtRule.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: Bruno Lowagie, Paulo Soares, et al.
This program is free software; you can redistribute it and/or modify
diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/CssNestedAtRuleFactory.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/CssNestedAtRuleFactory.java
index a2ce10e03f..949c696d86 100644
--- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/CssNestedAtRuleFactory.java
+++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/CssNestedAtRuleFactory.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: Bruno Lowagie, Paulo Soares, et al.
This program is free software; you can redistribute it and/or modify
diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/CssRuleName.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/CssRuleName.java
index a8698c9ac5..7f7f23c5e7 100644
--- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/CssRuleName.java
+++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/CssRuleName.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: Bruno Lowagie, Paulo Soares, et al.
This program is free software; you can redistribute it and/or modify
diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/CssRuleSet.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/CssRuleSet.java
index 49c1cff36c..680b029cd1 100644
--- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/CssRuleSet.java
+++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/CssRuleSet.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: Bruno Lowagie, Paulo Soares, et al.
This program is free software; you can redistribute it and/or modify
diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/CssRuleSetComparator.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/CssRuleSetComparator.java
index 806b498098..ddffbebc33 100644
--- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/CssRuleSetComparator.java
+++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/CssRuleSetComparator.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: Bruno Lowagie, Paulo Soares, et al.
This program is free software; you can redistribute it and/or modify
diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/CssSemicolonAtRule.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/CssSemicolonAtRule.java
index 2126337521..f062240322 100644
--- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/CssSemicolonAtRule.java
+++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/CssSemicolonAtRule.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: Bruno Lowagie, Paulo Soares, et al.
This program is free software; you can redistribute it and/or modify
diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/CssStatement.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/CssStatement.java
index 9ec0df48e4..ec6e7025d5 100644
--- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/CssStatement.java
+++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/CssStatement.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: Bruno Lowagie, Paulo Soares, et al.
This program is free software; you can redistribute it and/or modify
diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/CssStyleSheet.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/CssStyleSheet.java
index 15e43cfd2e..6bdf23c643 100644
--- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/CssStyleSheet.java
+++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/CssStyleSheet.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: Bruno Lowagie, Paulo Soares, et al.
This program is free software; you can redistribute it and/or modify
diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/ICssResolver.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/ICssResolver.java
index 365902f19c..b1494edafc 100644
--- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/ICssResolver.java
+++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/ICssResolver.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: Bruno Lowagie, Paulo Soares, et al.
This program is free software; you can redistribute it and/or modify
diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/font/CssFontFace.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/font/CssFontFace.java
index 184c6589aa..d1e3c92a92 100644
--- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/font/CssFontFace.java
+++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/font/CssFontFace.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is offered under a commercial and under the AGPL license.
diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/media/CssMediaRule.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/media/CssMediaRule.java
index 3989bd732f..030f5342fd 100644
--- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/media/CssMediaRule.java
+++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/media/CssMediaRule.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: Bruno Lowagie, Paulo Soares, et al.
This program is free software; you can redistribute it and/or modify
diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/media/MediaDeviceDescription.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/media/MediaDeviceDescription.java
index c8a59a161a..b1f7f06689 100644
--- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/media/MediaDeviceDescription.java
+++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/media/MediaDeviceDescription.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: Bruno Lowagie, Paulo Soares, et al.
This program is free software; you can redistribute it and/or modify
diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/media/MediaExpression.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/media/MediaExpression.java
index 50032b879d..07a255f59c 100644
--- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/media/MediaExpression.java
+++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/media/MediaExpression.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: Bruno Lowagie, Paulo Soares, et al.
This program is free software; you can redistribute it and/or modify
@@ -203,7 +203,8 @@ public boolean matches(MediaDeviceDescription deviceDescription) {
*/
private static float parseAbsoluteLength(String value) {
if (CssTypesValidationUtils.isRelativeValue(value)) {
- // TODO here should be used default font size of the browser, it probably should be fetched from the more generic place than private class constant
+ // TODO DEVSIX-6365 Use some shared default value (from default.css or CssDefaults)
+ // rather than a constant of this class
return CssDimensionParsingUtils.parseRelativeValue(value, DEFAULT_FONT_SIZE);
} else {
return CssDimensionParsingUtils.parseAbsoluteLength(value);
diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/media/MediaFeature.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/media/MediaFeature.java
index df2bf76b73..c6e813074a 100644
--- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/media/MediaFeature.java
+++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/media/MediaFeature.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: Bruno Lowagie, Paulo Soares, et al.
This program is free software; you can redistribute it and/or modify
diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/media/MediaQuery.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/media/MediaQuery.java
index 497342fca6..b859fb5e58 100644
--- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/media/MediaQuery.java
+++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/media/MediaQuery.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: Bruno Lowagie, Paulo Soares, et al.
This program is free software; you can redistribute it and/or modify
diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/media/MediaQueryParser.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/media/MediaQueryParser.java
index 6b768a7bd7..8a3889a9c1 100644
--- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/media/MediaQueryParser.java
+++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/media/MediaQueryParser.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: Bruno Lowagie, Paulo Soares, et al.
This program is free software; you can redistribute it and/or modify
diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/media/MediaRuleConstants.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/media/MediaRuleConstants.java
index 94f7e6f5d7..a54ca0987a 100644
--- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/media/MediaRuleConstants.java
+++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/media/MediaRuleConstants.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: Bruno Lowagie, Paulo Soares, et al.
This program is free software; you can redistribute it and/or modify
diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/media/MediaType.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/media/MediaType.java
index 80ee825b37..a6feaca43d 100644
--- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/media/MediaType.java
+++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/media/MediaType.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: Bruno Lowagie, Paulo Soares, et al.
This program is free software; you can redistribute it and/or modify
diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/page/CssMarginRule.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/page/CssMarginRule.java
index 190d7ee7ab..313c99465e 100644
--- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/page/CssMarginRule.java
+++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/page/CssMarginRule.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: Bruno Lowagie, Paulo Soares, et al.
This program is free software; you can redistribute it and/or modify
@@ -72,6 +72,7 @@ public CssMarginRule(String ruleName) {
*/
@Override
public void addBodyCssDeclarations(List cssDeclarations) {
+ // TODO DEVSIX-6364 Fix the body declarations duplication for each pageSelector part
for (ICssSelector pageSelector : pageSelectors) {
this.body.add(new CssNonStandardRuleSet(new CssPageMarginBoxSelector(getRuleName(), pageSelector), cssDeclarations));
}
diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/page/CssNonStandardRuleSet.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/page/CssNonStandardRuleSet.java
index 182edd854a..c8c76ae8d1 100644
--- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/page/CssNonStandardRuleSet.java
+++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/page/CssNonStandardRuleSet.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: Bruno Lowagie, Paulo Soares, et al.
This program is free software; you can redistribute it and/or modify
diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/page/CssPageRule.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/page/CssPageRule.java
index 2f463a7ad8..3c4b7e6f03 100644
--- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/page/CssPageRule.java
+++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/page/CssPageRule.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: Bruno Lowagie, Paulo Soares, et al.
This program is free software; you can redistribute it and/or modify
@@ -85,16 +85,17 @@ public CssPageRule(String ruleParameters) {
*/
@Override
public void addBodyCssDeclarations(List cssDeclarations) {
- // TODO Due to this for-loop, on toString method call for the CssPageRule instance
+ // TODO DEVSIX-6364 Fix the body declarations duplication for each pageSelector part
+ // Due to this for-loop, on toString method call for the CssPageRule instance
// all the body declarations will be duplicated for each pageSelector part.
// This potentially could lead to a nasty behaviour when declarations will double
- // for each read-write iteration of the same css-file (however, this use case seems
- // to be unlikely to happen).
- // Possible solution would be to split single page rule with compound selector into
+ // for each read-write iteration of the same css-file (however, this use case seems
+ // to be unlikely to happen).
+ // Possible solution would be to split single page rule with compound selector into
// several page rules with simple selectors on addition of the page rule to it's parent.
//
// Also, the same concerns this method implementation in CssMarginRule class.
- //
+ //
// See CssStyleSheetParserTest#test11 test.
for (ICssSelector pageSelector : pageSelectors) {
this.body.add(new CssNonStandardRuleSet(pageSelector, cssDeclarations));
diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/page/PageContextConstants.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/page/PageContextConstants.java
index 125db63ff2..b07e69058e 100644
--- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/page/PageContextConstants.java
+++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/page/PageContextConstants.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: Bruno Lowagie, Paulo Soares, et al.
This program is free software; you can redistribute it and/or modify
diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/page/PageContextNode.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/page/PageContextNode.java
index abac9b6b40..c1ec5e4307 100644
--- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/page/PageContextNode.java
+++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/page/PageContextNode.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: Bruno Lowagie, Paulo Soares, et al.
This program is free software; you can redistribute it and/or modify
diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/page/PageMarginBoxContextNode.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/page/PageMarginBoxContextNode.java
index cbf6b118b8..817e7ee1e2 100644
--- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/page/PageMarginBoxContextNode.java
+++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/page/PageMarginBoxContextNode.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: Bruno Lowagie, Paulo Soares, et al.
This program is free software; you can redistribute it and/or modify
diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/parse/CssDeclarationValueTokenizer.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/parse/CssDeclarationValueTokenizer.java
index 2429716d27..62ae527eff 100644
--- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/parse/CssDeclarationValueTokenizer.java
+++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/parse/CssDeclarationValueTokenizer.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: Bruno Lowagie, Paulo Soares, et al.
This program is free software; you can redistribute it and/or modify
diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/parse/CssPageSelectorParser.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/parse/CssPageSelectorParser.java
index e81f235910..7c8fc4481d 100644
--- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/parse/CssPageSelectorParser.java
+++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/parse/CssPageSelectorParser.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: Bruno Lowagie, Paulo Soares, et al.
This program is free software; you can redistribute it and/or modify
diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/parse/CssRuleSetParser.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/parse/CssRuleSetParser.java
index 67ec6e6b06..3edc639d01 100644
--- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/parse/CssRuleSetParser.java
+++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/parse/CssRuleSetParser.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: Bruno Lowagie, Paulo Soares, et al.
This program is free software; you can redistribute it and/or modify
diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/parse/CssSelectorParser.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/parse/CssSelectorParser.java
index 609e0573b1..601299f0e8 100644
--- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/parse/CssSelectorParser.java
+++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/parse/CssSelectorParser.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: Bruno Lowagie, Paulo Soares, et al.
This program is free software; you can redistribute it and/or modify
diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/parse/CssStyleSheetParser.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/parse/CssStyleSheetParser.java
index feccc896d4..21a5e9bb8b 100644
--- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/parse/CssStyleSheetParser.java
+++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/parse/CssStyleSheetParser.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: Bruno Lowagie, Paulo Soares, et al.
This program is free software; you can redistribute it and/or modify
diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/parse/syntax/AtRuleBlockState.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/parse/syntax/AtRuleBlockState.java
index bb41c6aa46..380cb96a17 100644
--- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/parse/syntax/AtRuleBlockState.java
+++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/parse/syntax/AtRuleBlockState.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: Bruno Lowagie, Paulo Soares, et al.
This program is free software; you can redistribute it and/or modify
diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/parse/syntax/BlockState.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/parse/syntax/BlockState.java
index c665fe931d..220738d288 100644
--- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/parse/syntax/BlockState.java
+++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/parse/syntax/BlockState.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: Bruno Lowagie, Paulo Soares, et al.
This program is free software; you can redistribute it and/or modify
diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/parse/syntax/CommentEndState.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/parse/syntax/CommentEndState.java
index 9837b5595b..9f20513bc3 100644
--- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/parse/syntax/CommentEndState.java
+++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/parse/syntax/CommentEndState.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: Bruno Lowagie, Paulo Soares, et al.
This program is free software; you can redistribute it and/or modify
diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/parse/syntax/CommentInnerState.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/parse/syntax/CommentInnerState.java
index b6d2395d63..b3fc99d5e9 100644
--- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/parse/syntax/CommentInnerState.java
+++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/parse/syntax/CommentInnerState.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: Bruno Lowagie, Paulo Soares, et al.
This program is free software; you can redistribute it and/or modify
diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/parse/syntax/CommentStartState.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/parse/syntax/CommentStartState.java
index f1411db069..503445b444 100644
--- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/parse/syntax/CommentStartState.java
+++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/parse/syntax/CommentStartState.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: Bruno Lowagie, Paulo Soares, et al.
This program is free software; you can redistribute it and/or modify
diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/parse/syntax/ConditionalGroupAtRuleBlockState.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/parse/syntax/ConditionalGroupAtRuleBlockState.java
index 302f1e475c..03a26ec67a 100644
--- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/parse/syntax/ConditionalGroupAtRuleBlockState.java
+++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/parse/syntax/ConditionalGroupAtRuleBlockState.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: Bruno Lowagie, Paulo Soares, et al.
This program is free software; you can redistribute it and/or modify
@@ -65,7 +65,6 @@ class ConditionalGroupAtRuleBlockState implements IParserState {
* @see com.itextpdf.styledxmlparser.css.parse.syntax.IParserState#process(char)
*/
@Override
- // TODO use UnknownState?
public void process(char ch) {
if (ch == '/') {
controller.enterCommentStartState();
diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/parse/syntax/CssParserStateController.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/parse/syntax/CssParserStateController.java
index a921c18fc1..1d2b2016fc 100644
--- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/parse/syntax/CssParserStateController.java
+++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/parse/syntax/CssParserStateController.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: Bruno Lowagie, Paulo Soares, et al.
This program is free software; you can redistribute it and/or modify
@@ -344,7 +344,7 @@ void storeSemicolonAtRule() {
void finishAtRuleBlock() {
List storedProps = storedPropertiesWithoutSelector.pop();
CssNestedAtRule atRule = nestedAtRules.pop();
- if (isCurrentRuleSupported) {
+ if (isCurrentRuleSupported ) {
processFinishedAtRuleBlock(atRule);
if (!storedProps.isEmpty()) {
atRule.addBodyCssDeclarations(storedProps);
diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/parse/syntax/IParserState.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/parse/syntax/IParserState.java
index 58d00e7c8a..4d9fe0820a 100644
--- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/parse/syntax/IParserState.java
+++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/parse/syntax/IParserState.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: Bruno Lowagie, Paulo Soares, et al.
This program is free software; you can redistribute it and/or modify
diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/parse/syntax/RuleState.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/parse/syntax/RuleState.java
index 3db1fb63f2..cd439c19d9 100644
--- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/parse/syntax/RuleState.java
+++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/parse/syntax/RuleState.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: Bruno Lowagie, Paulo Soares, et al.
This program is free software; you can redistribute it and/or modify
diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/parse/syntax/UnknownState.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/parse/syntax/UnknownState.java
index c4968a30c7..9e6810c57f 100644
--- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/parse/syntax/UnknownState.java
+++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/parse/syntax/UnknownState.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: Bruno Lowagie, Paulo Soares, et al.
This program is free software; you can redistribute it and/or modify
diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/pseudo/CssPseudoElementNode.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/pseudo/CssPseudoElementNode.java
index 450d364dd0..099d314b7d 100644
--- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/pseudo/CssPseudoElementNode.java
+++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/pseudo/CssPseudoElementNode.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: Bruno Lowagie, Paulo Soares, et al.
This program is free software; you can redistribute it and/or modify
diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/pseudo/CssPseudoElementUtil.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/pseudo/CssPseudoElementUtil.java
index c480404e7c..7d081f58d8 100644
--- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/pseudo/CssPseudoElementUtil.java
+++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/pseudo/CssPseudoElementUtil.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: Bruno Lowagie, Paulo Soares, et al.
This program is free software; you can redistribute it and/or modify
diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/AbstractCssContext.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/AbstractCssContext.java
index 5e4315e753..56eae761ca 100644
--- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/AbstractCssContext.java
+++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/AbstractCssContext.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/CssDefaults.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/CssDefaults.java
index 86221df56d..27de4860af 100644
--- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/CssDefaults.java
+++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/CssDefaults.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: Bruno Lowagie, Paulo Soares, et al.
This program is free software; you can redistribute it and/or modify
diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/CssInheritance.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/CssInheritance.java
index 7104e74603..419b0967bf 100644
--- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/CssInheritance.java
+++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/CssInheritance.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: Bruno Lowagie, Paulo Soares, et al.
This program is free software; you can redistribute it and/or modify
diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/CssPropertyMerger.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/CssPropertyMerger.java
index 297df26510..b87b1b46f9 100644
--- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/CssPropertyMerger.java
+++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/CssPropertyMerger.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: Bruno Lowagie, Paulo Soares, et al.
This program is free software; you can redistribute it and/or modify
diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/CssQuotes.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/CssQuotes.java
index 3522ebd0b8..cbea120044 100644
--- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/CssQuotes.java
+++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/CssQuotes.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: Bruno Lowagie, Paulo Soares, et al.
This program is free software; you can redistribute it and/or modify
diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/IStyleInheritance.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/IStyleInheritance.java
index 8fcb11772f..a836af5e2f 100644
--- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/IStyleInheritance.java
+++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/IStyleInheritance.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/IShorthandResolver.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/IShorthandResolver.java
index bd875275d8..66b64ff039 100644
--- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/IShorthandResolver.java
+++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/IShorthandResolver.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: Bruno Lowagie, Paulo Soares, et al.
This program is free software; you can redistribute it and/or modify
diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/ShorthandResolverFactory.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/ShorthandResolverFactory.java
index 9da5a74891..7a177116e8 100644
--- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/ShorthandResolverFactory.java
+++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/ShorthandResolverFactory.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: Bruno Lowagie, Paulo Soares, et al.
This program is free software; you can redistribute it and/or modify
diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/AbstractBorderShorthandResolver.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/AbstractBorderShorthandResolver.java
index b07841516c..e546deabf7 100644
--- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/AbstractBorderShorthandResolver.java
+++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/AbstractBorderShorthandResolver.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: Bruno Lowagie, Paulo Soares, et al.
This program is free software; you can redistribute it and/or modify
diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/AbstractBoxShorthandResolver.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/AbstractBoxShorthandResolver.java
index e162c8b3e6..c5dfe8edd8 100644
--- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/AbstractBoxShorthandResolver.java
+++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/AbstractBoxShorthandResolver.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: Bruno Lowagie, Paulo Soares, et al.
This program is free software; you can redistribute it and/or modify
diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/AbstractCornersShorthandResolver.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/AbstractCornersShorthandResolver.java
index 11c28ea6da..a304c89306 100644
--- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/AbstractCornersShorthandResolver.java
+++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/AbstractCornersShorthandResolver.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: Bruno Lowagie, Paulo Soares, et al.
This program is free software; you can redistribute it and/or modify
diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/BackgroundPositionShorthandResolver.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/BackgroundPositionShorthandResolver.java
index e5940f6733..bca66a77b5 100644
--- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/BackgroundPositionShorthandResolver.java
+++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/BackgroundPositionShorthandResolver.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is offered under a commercial and under the AGPL license.
diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/BackgroundShorthandResolver.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/BackgroundShorthandResolver.java
index d0c9897fe8..fa0e3a5ecf 100644
--- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/BackgroundShorthandResolver.java
+++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/BackgroundShorthandResolver.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: Bruno Lowagie, Paulo Soares, et al.
This program is free software; you can redistribute it and/or modify
diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/BorderBottomShorthandResolver.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/BorderBottomShorthandResolver.java
index f74ac1ed07..e6bbcce9fc 100644
--- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/BorderBottomShorthandResolver.java
+++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/BorderBottomShorthandResolver.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: Bruno Lowagie, Paulo Soares, et al.
This program is free software; you can redistribute it and/or modify
diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/BorderColorShorthandResolver.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/BorderColorShorthandResolver.java
index 70499ad9dc..83d9fbf2d8 100644
--- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/BorderColorShorthandResolver.java
+++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/BorderColorShorthandResolver.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: Bruno Lowagie, Paulo Soares, et al.
This program is free software; you can redistribute it and/or modify
diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/BorderLeftShorthandResolver.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/BorderLeftShorthandResolver.java
index b087b6a722..82ad96872b 100644
--- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/BorderLeftShorthandResolver.java
+++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/BorderLeftShorthandResolver.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: Bruno Lowagie, Paulo Soares, et al.
This program is free software; you can redistribute it and/or modify
diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/BorderRadiusShorthandResolver.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/BorderRadiusShorthandResolver.java
index e88de46072..117b2b9a15 100644
--- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/BorderRadiusShorthandResolver.java
+++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/BorderRadiusShorthandResolver.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: Bruno Lowagie, Paulo Soares, et al.
This program is free software; you can redistribute it and/or modify
diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/BorderRightShorthandResolver.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/BorderRightShorthandResolver.java
index 19f0ca0d02..640770f1be 100644
--- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/BorderRightShorthandResolver.java
+++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/BorderRightShorthandResolver.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: Bruno Lowagie, Paulo Soares, et al.
This program is free software; you can redistribute it and/or modify
diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/BorderShorthandResolver.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/BorderShorthandResolver.java
index eba647b424..beed65ba94 100644
--- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/BorderShorthandResolver.java
+++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/BorderShorthandResolver.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: Bruno Lowagie, Paulo Soares, et al.
This program is free software; you can redistribute it and/or modify
diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/BorderStyleShorthandResolver.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/BorderStyleShorthandResolver.java
index ed353123a2..f932a277fb 100644
--- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/BorderStyleShorthandResolver.java
+++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/BorderStyleShorthandResolver.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: Bruno Lowagie, Paulo Soares, et al.
This program is free software; you can redistribute it and/or modify
diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/BorderTopShorthandResolver.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/BorderTopShorthandResolver.java
index debad8f590..8f72fd488e 100644
--- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/BorderTopShorthandResolver.java
+++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/BorderTopShorthandResolver.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: Bruno Lowagie, Paulo Soares, et al.
This program is free software; you can redistribute it and/or modify
diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/BorderWidthShorthandResolver.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/BorderWidthShorthandResolver.java
index 1fa4622fe8..aff1e95dce 100644
--- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/BorderWidthShorthandResolver.java
+++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/BorderWidthShorthandResolver.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: Bruno Lowagie, Paulo Soares, et al.
This program is free software; you can redistribute it and/or modify
diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/FlexFlowShorthandResolver.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/FlexFlowShorthandResolver.java
index 507e53281e..d738728a2e 100644
--- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/FlexFlowShorthandResolver.java
+++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/FlexFlowShorthandResolver.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: Bruno Lowagie, Paulo Soares, et al.
This program is free software; you can redistribute it and/or modify
diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/FlexShorthandResolver.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/FlexShorthandResolver.java
index 2128061a63..6481287bbe 100644
--- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/FlexShorthandResolver.java
+++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/FlexShorthandResolver.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: Bruno Lowagie, Paulo Soares, et al.
This program is free software; you can redistribute it and/or modify
diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/FontShorthandResolver.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/FontShorthandResolver.java
index a3e90ff9fa..b33b847cab 100644
--- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/FontShorthandResolver.java
+++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/FontShorthandResolver.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: Bruno Lowagie, Paulo Soares, et al.
This program is free software; you can redistribute it and/or modify
diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/GapShorthandResolver.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/GapShorthandResolver.java
index efe59902e0..1ff7e393ea 100644
--- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/GapShorthandResolver.java
+++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/GapShorthandResolver.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: Bruno Lowagie, Paulo Soares, et al.
This program is free software; you can redistribute it and/or modify
diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/ListStyleShorthandResolver.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/ListStyleShorthandResolver.java
index 57365e186e..de31bdf9eb 100644
--- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/ListStyleShorthandResolver.java
+++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/ListStyleShorthandResolver.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: Bruno Lowagie, Paulo Soares, et al.
This program is free software; you can redistribute it and/or modify
diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/MarginShorthandResolver.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/MarginShorthandResolver.java
index 2ed4a571d9..aff72d3d12 100644
--- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/MarginShorthandResolver.java
+++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/MarginShorthandResolver.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: Bruno Lowagie, Paulo Soares, et al.
This program is free software; you can redistribute it and/or modify
diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/OutlineShorthandResolver.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/OutlineShorthandResolver.java
index 54d828b72b..dda2fcdaec 100644
--- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/OutlineShorthandResolver.java
+++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/OutlineShorthandResolver.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: Bruno Lowagie, Paulo Soares, et al.
This program is free software; you can redistribute it and/or modify
diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/PaddingShorthandResolver.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/PaddingShorthandResolver.java
index e729c4cb72..0dd699313f 100644
--- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/PaddingShorthandResolver.java
+++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/PaddingShorthandResolver.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: Bruno Lowagie, Paulo Soares, et al.
This program is free software; you can redistribute it and/or modify
diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/PlaceItemsShorthandResolver.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/PlaceItemsShorthandResolver.java
index 254ba5929e..23769bfcbd 100644
--- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/PlaceItemsShorthandResolver.java
+++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/PlaceItemsShorthandResolver.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: Bruno Lowagie, Paulo Soares, et al.
This program is free software; you can redistribute it and/or modify
diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/TextDecorationShorthandResolver.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/TextDecorationShorthandResolver.java
index 7c51296513..af225eca37 100644
--- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/TextDecorationShorthandResolver.java
+++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/TextDecorationShorthandResolver.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is offered under a commercial and under the AGPL license.
diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/AbstractCssSelector.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/AbstractCssSelector.java
index c65e8646b8..4b59ef4871 100644
--- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/AbstractCssSelector.java
+++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/AbstractCssSelector.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: Bruno Lowagie, Paulo Soares, et al.
This program is free software; you can redistribute it and/or modify
diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/CssPageMarginBoxSelector.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/CssPageMarginBoxSelector.java
index 28e7200f43..49369a0d4b 100644
--- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/CssPageMarginBoxSelector.java
+++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/CssPageMarginBoxSelector.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: Bruno Lowagie, Paulo Soares, et al.
This program is free software; you can redistribute it and/or modify
diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/CssPageSelector.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/CssPageSelector.java
index da5d2811cc..a345f3c29a 100644
--- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/CssPageSelector.java
+++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/CssPageSelector.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: Bruno Lowagie, Paulo Soares, et al.
This program is free software; you can redistribute it and/or modify
diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/CssSelector.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/CssSelector.java
index 0c00b7739d..3f14c7911c 100644
--- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/CssSelector.java
+++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/CssSelector.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: Bruno Lowagie, Paulo Soares, et al.
This program is free software; you can redistribute it and/or modify
diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/CssSelectorComparator.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/CssSelectorComparator.java
index a1f6d9c8de..cb08429bba 100644
--- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/CssSelectorComparator.java
+++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/CssSelectorComparator.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: Bruno Lowagie, Paulo Soares, et al.
This program is free software; you can redistribute it and/or modify
diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/ICssSelector.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/ICssSelector.java
index e06d999ad8..c967334e6b 100644
--- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/ICssSelector.java
+++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/ICssSelector.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: Bruno Lowagie, Paulo Soares, et al.
This program is free software; you can redistribute it and/or modify
diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/item/CssAttributeSelectorItem.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/item/CssAttributeSelectorItem.java
index 9ee8db94ad..c1ed14eef0 100644
--- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/item/CssAttributeSelectorItem.java
+++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/item/CssAttributeSelectorItem.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: Bruno Lowagie, Paulo Soares, et al.
This program is free software; you can redistribute it and/or modify
diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/item/CssClassSelectorItem.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/item/CssClassSelectorItem.java
index 253d354bf5..4093368304 100644
--- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/item/CssClassSelectorItem.java
+++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/item/CssClassSelectorItem.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: Bruno Lowagie, Paulo Soares, et al.
This program is free software; you can redistribute it and/or modify
diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/item/CssIdSelectorItem.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/item/CssIdSelectorItem.java
index 81787e4f04..0f116ad248 100644
--- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/item/CssIdSelectorItem.java
+++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/item/CssIdSelectorItem.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: Bruno Lowagie, Paulo Soares, et al.
This program is free software; you can redistribute it and/or modify
diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/item/CssPagePseudoClassSelectorItem.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/item/CssPagePseudoClassSelectorItem.java
index de46dd6e08..df5d19f8d9 100644
--- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/item/CssPagePseudoClassSelectorItem.java
+++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/item/CssPagePseudoClassSelectorItem.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: Bruno Lowagie, Paulo Soares, et al.
This program is free software; you can redistribute it and/or modify
diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/item/CssPageTypeSelectorItem.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/item/CssPageTypeSelectorItem.java
index 9fe2b392f2..523764dbfe 100644
--- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/item/CssPageTypeSelectorItem.java
+++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/item/CssPageTypeSelectorItem.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: Bruno Lowagie, Paulo Soares, et al.
This program is free software; you can redistribute it and/or modify
diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/item/CssPseudoClassChildSelectorItem.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/item/CssPseudoClassChildSelectorItem.java
index eda8df23c9..4c860dba2c 100644
--- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/item/CssPseudoClassChildSelectorItem.java
+++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/item/CssPseudoClassChildSelectorItem.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/item/CssPseudoClassDisabledSelectorItem.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/item/CssPseudoClassDisabledSelectorItem.java
index e1b9c578dc..8f4e0e5bee 100644
--- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/item/CssPseudoClassDisabledSelectorItem.java
+++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/item/CssPseudoClassDisabledSelectorItem.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/item/CssPseudoClassEmptySelectorItem.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/item/CssPseudoClassEmptySelectorItem.java
index 35645ce3f4..2559b82767 100644
--- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/item/CssPseudoClassEmptySelectorItem.java
+++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/item/CssPseudoClassEmptySelectorItem.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/item/CssPseudoClassFirstChildSelectorItem.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/item/CssPseudoClassFirstChildSelectorItem.java
index e1e313b9fe..f5e92225f1 100644
--- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/item/CssPseudoClassFirstChildSelectorItem.java
+++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/item/CssPseudoClassFirstChildSelectorItem.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/item/CssPseudoClassFirstOfTypeSelectorItem.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/item/CssPseudoClassFirstOfTypeSelectorItem.java
index 3205c7e839..feb30fcedd 100644
--- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/item/CssPseudoClassFirstOfTypeSelectorItem.java
+++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/item/CssPseudoClassFirstOfTypeSelectorItem.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/item/CssPseudoClassLastChildSelectorItem.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/item/CssPseudoClassLastChildSelectorItem.java
index 98101cb8f4..494f00b5cb 100644
--- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/item/CssPseudoClassLastChildSelectorItem.java
+++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/item/CssPseudoClassLastChildSelectorItem.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/item/CssPseudoClassLastOfTypeSelectorItem.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/item/CssPseudoClassLastOfTypeSelectorItem.java
index c6ac0db4ca..a7273a2d71 100644
--- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/item/CssPseudoClassLastOfTypeSelectorItem.java
+++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/item/CssPseudoClassLastOfTypeSelectorItem.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/item/CssPseudoClassNotSelectorItem.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/item/CssPseudoClassNotSelectorItem.java
index a67c35cfbc..451b8a08d4 100644
--- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/item/CssPseudoClassNotSelectorItem.java
+++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/item/CssPseudoClassNotSelectorItem.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/item/CssPseudoClassNthChildSelectorItem.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/item/CssPseudoClassNthChildSelectorItem.java
index 63e870a121..3983ee43c9 100644
--- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/item/CssPseudoClassNthChildSelectorItem.java
+++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/item/CssPseudoClassNthChildSelectorItem.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/item/CssPseudoClassNthOfTypeSelectorItem.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/item/CssPseudoClassNthOfTypeSelectorItem.java
index eac61c4771..41b0c8ebaa 100644
--- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/item/CssPseudoClassNthOfTypeSelectorItem.java
+++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/item/CssPseudoClassNthOfTypeSelectorItem.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/item/CssPseudoClassNthSelectorItem.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/item/CssPseudoClassNthSelectorItem.java
index 7c699c2a05..126129f89e 100644
--- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/item/CssPseudoClassNthSelectorItem.java
+++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/item/CssPseudoClassNthSelectorItem.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/item/CssPseudoClassRootSelectorItem.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/item/CssPseudoClassRootSelectorItem.java
index f9659d04ac..a340c6f507 100644
--- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/item/CssPseudoClassRootSelectorItem.java
+++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/item/CssPseudoClassRootSelectorItem.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/item/CssPseudoClassSelectorItem.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/item/CssPseudoClassSelectorItem.java
index dafe0f88ee..6ae5a41db6 100644
--- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/item/CssPseudoClassSelectorItem.java
+++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/item/CssPseudoClassSelectorItem.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: Bruno Lowagie, Paulo Soares, et al.
This program is free software; you can redistribute it and/or modify
diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/item/CssPseudoElementSelectorItem.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/item/CssPseudoElementSelectorItem.java
index 8048b8787e..d458858d83 100644
--- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/item/CssPseudoElementSelectorItem.java
+++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/item/CssPseudoElementSelectorItem.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: Bruno Lowagie, Paulo Soares, et al.
This program is free software; you can redistribute it and/or modify
diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/item/CssSeparatorSelectorItem.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/item/CssSeparatorSelectorItem.java
index 11b47c16c5..64035c60ed 100644
--- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/item/CssSeparatorSelectorItem.java
+++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/item/CssSeparatorSelectorItem.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: Bruno Lowagie, Paulo Soares, et al.
This program is free software; you can redistribute it and/or modify
diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/item/CssSpecificityConstants.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/item/CssSpecificityConstants.java
index 46bed63114..54e081c895 100644
--- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/item/CssSpecificityConstants.java
+++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/item/CssSpecificityConstants.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: Bruno Lowagie, Paulo Soares, et al.
This program is free software; you can redistribute it and/or modify
diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/item/CssTagSelectorItem.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/item/CssTagSelectorItem.java
index 540a002b71..e4a88cf06b 100644
--- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/item/CssTagSelectorItem.java
+++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/item/CssTagSelectorItem.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: Bruno Lowagie, Paulo Soares, et al.
This program is free software; you can redistribute it and/or modify
diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/item/ICssSelectorItem.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/item/ICssSelectorItem.java
index 83e4fd584e..2766978b21 100644
--- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/item/ICssSelectorItem.java
+++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/item/ICssSelectorItem.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: Bruno Lowagie, Paulo Soares, et al.
This program is free software; you can redistribute it and/or modify
diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/util/CssBackgroundUtils.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/util/CssBackgroundUtils.java
index d2380dc7d9..00c7812ae0 100644
--- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/util/CssBackgroundUtils.java
+++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/util/CssBackgroundUtils.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is offered under a commercial and under the AGPL license.
diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/util/CssDimensionParsingUtils.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/util/CssDimensionParsingUtils.java
index 1ae54e86cb..d0c845cdf4 100644
--- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/util/CssDimensionParsingUtils.java
+++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/util/CssDimensionParsingUtils.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is offered under a commercial and under the AGPL license.
diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/util/CssGradientUtil.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/util/CssGradientUtil.java
index 034e11869d..506351c551 100644
--- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/util/CssGradientUtil.java
+++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/util/CssGradientUtil.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is offered under a commercial and under the AGPL license.
diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/util/CssPropertyNormalizer.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/util/CssPropertyNormalizer.java
index 0f14744a51..f99df5fdec 100644
--- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/util/CssPropertyNormalizer.java
+++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/util/CssPropertyNormalizer.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: Bruno Lowagie, Paulo Soares, et al.
This program is free software; you can redistribute it and/or modify
diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/util/CssTypesValidationUtils.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/util/CssTypesValidationUtils.java
index 85bb55df23..81edb146c6 100644
--- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/util/CssTypesValidationUtils.java
+++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/util/CssTypesValidationUtils.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is offered under a commercial and under the AGPL license.
diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/util/CssUtils.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/util/CssUtils.java
index 74d7441c52..7f896d5480 100644
--- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/util/CssUtils.java
+++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/util/CssUtils.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: Bruno Lowagie, Paulo Soares, et al.
This program is free software; you can redistribute it and/or modify
diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/util/EscapeGroup.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/util/EscapeGroup.java
index 61d741e2b4..4f0ea882dc 100644
--- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/util/EscapeGroup.java
+++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/util/EscapeGroup.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is offered under a commercial and under the AGPL license.
diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/validate/CssDeclarationValidationMaster.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/validate/CssDeclarationValidationMaster.java
index 4ae98b163e..d2577c2bd0 100644
--- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/validate/CssDeclarationValidationMaster.java
+++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/validate/CssDeclarationValidationMaster.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: Bruno Lowagie, Paulo Soares, et al.
This program is free software; you can redistribute it and/or modify
diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/validate/ICssDataTypeValidator.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/validate/ICssDataTypeValidator.java
index be06fc1745..5e7605f6d0 100644
--- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/validate/ICssDataTypeValidator.java
+++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/validate/ICssDataTypeValidator.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: Bruno Lowagie, Paulo Soares, et al.
This program is free software; you can redistribute it and/or modify
diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/validate/ICssDeclarationValidator.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/validate/ICssDeclarationValidator.java
index d7d6dfa587..9d1657fa5e 100644
--- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/validate/ICssDeclarationValidator.java
+++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/validate/ICssDeclarationValidator.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: Bruno Lowagie, Paulo Soares, et al.
This program is free software; you can redistribute it and/or modify
diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/validate/impl/datatype/ArrayDataTypeValidator.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/validate/impl/datatype/ArrayDataTypeValidator.java
index 929b4f6b76..f87aeecb67 100644
--- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/validate/impl/datatype/ArrayDataTypeValidator.java
+++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/validate/impl/datatype/ArrayDataTypeValidator.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: Bruno Lowagie, Paulo Soares, et al.
This program is free software; you can redistribute it and/or modify
diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/validate/impl/datatype/CssBackgroundValidator.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/validate/impl/datatype/CssBackgroundValidator.java
index fc98834d56..07da071ead 100644
--- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/validate/impl/datatype/CssBackgroundValidator.java
+++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/validate/impl/datatype/CssBackgroundValidator.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is offered under a commercial and under the AGPL license.
diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/validate/impl/datatype/CssBlendModeValidator.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/validate/impl/datatype/CssBlendModeValidator.java
index 3f2522e9f0..4ebd391136 100644
--- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/validate/impl/datatype/CssBlendModeValidator.java
+++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/validate/impl/datatype/CssBlendModeValidator.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: Bruno Lowagie, Paulo Soares, et al.
This program is free software; you can redistribute it and/or modify
diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/validate/impl/datatype/CssColorValidator.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/validate/impl/datatype/CssColorValidator.java
index 482b03d549..dc9c033dfb 100644
--- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/validate/impl/datatype/CssColorValidator.java
+++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/validate/impl/datatype/CssColorValidator.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: Bruno Lowagie, Paulo Soares, et al.
This program is free software; you can redistribute it and/or modify
diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/validate/impl/datatype/CssEnumValidator.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/validate/impl/datatype/CssEnumValidator.java
index fefc49ce8d..4cd383965d 100644
--- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/validate/impl/datatype/CssEnumValidator.java
+++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/validate/impl/datatype/CssEnumValidator.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: Bruno Lowagie, Paulo Soares, et al.
This program is free software; you can redistribute it and/or modify
diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/validate/impl/datatype/CssIdentifierValidator.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/validate/impl/datatype/CssIdentifierValidator.java
index 185940b7aa..deffde90bb 100644
--- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/validate/impl/datatype/CssIdentifierValidator.java
+++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/validate/impl/datatype/CssIdentifierValidator.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: Bruno Lowagie, Paulo Soares, et al.
This program is free software; you can redistribute it and/or modify
diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/validate/impl/datatype/CssLengthValueValidator.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/validate/impl/datatype/CssLengthValueValidator.java
index a2799c15f2..e5a4553fc0 100644
--- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/validate/impl/datatype/CssLengthValueValidator.java
+++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/validate/impl/datatype/CssLengthValueValidator.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is offered under a commercial and under the AGPL license.
diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/validate/impl/datatype/CssNumberValueValidator.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/validate/impl/datatype/CssNumberValueValidator.java
index 148f2da158..cd647ceb0e 100644
--- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/validate/impl/datatype/CssNumberValueValidator.java
+++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/validate/impl/datatype/CssNumberValueValidator.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is offered under a commercial and under the AGPL license.
diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/validate/impl/datatype/CssPercentageValueValidator.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/validate/impl/datatype/CssPercentageValueValidator.java
index ecb1d5d816..34d66b2e3b 100644
--- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/validate/impl/datatype/CssPercentageValueValidator.java
+++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/validate/impl/datatype/CssPercentageValueValidator.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is offered under a commercial and under the AGPL license.
diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/validate/impl/datatype/CssQuotesValidator.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/validate/impl/datatype/CssQuotesValidator.java
index ab481132e9..14e5f6e412 100644
--- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/validate/impl/datatype/CssQuotesValidator.java
+++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/validate/impl/datatype/CssQuotesValidator.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: Bruno Lowagie, Paulo Soares, et al.
This program is free software; you can redistribute it and/or modify
diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/validate/impl/datatype/CssTransformValidator.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/validate/impl/datatype/CssTransformValidator.java
index 91a8949e81..de028e39ef 100644
--- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/validate/impl/datatype/CssTransformValidator.java
+++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/validate/impl/datatype/CssTransformValidator.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/validate/impl/declaration/MultiTypeDeclarationValidator.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/validate/impl/declaration/MultiTypeDeclarationValidator.java
index cd295c2880..0feaa696fb 100644
--- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/validate/impl/declaration/MultiTypeDeclarationValidator.java
+++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/validate/impl/declaration/MultiTypeDeclarationValidator.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: Bruno Lowagie, Paulo Soares, et al.
This program is free software; you can redistribute it and/or modify
diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/validate/impl/declaration/SingleTypeDeclarationValidator.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/validate/impl/declaration/SingleTypeDeclarationValidator.java
index 511f26e3dc..0eb4afb0de 100644
--- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/validate/impl/declaration/SingleTypeDeclarationValidator.java
+++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/validate/impl/declaration/SingleTypeDeclarationValidator.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: Bruno Lowagie, Paulo Soares, et al.
This program is free software; you can redistribute it and/or modify
diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/exceptions/ReadingByteLimitException.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/exceptions/ReadingByteLimitException.java
index 488fae79f0..706eea251a 100644
--- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/exceptions/ReadingByteLimitException.java
+++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/exceptions/ReadingByteLimitException.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is offered under a commercial and under the AGPL license.
diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/exceptions/StyledXMLParserException.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/exceptions/StyledXMLParserException.java
index d081a7bcbf..7490088f52 100644
--- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/exceptions/StyledXMLParserException.java
+++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/exceptions/StyledXMLParserException.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: Bruno Lowagie, Paulo Soares, et al.
This program is free software; you can redistribute it and/or modify
diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/exceptions/StyledXmlParserExceptionMessage.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/exceptions/StyledXmlParserExceptionMessage.java
index 10302f470e..94da7bf8a2 100644
--- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/exceptions/StyledXmlParserExceptionMessage.java
+++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/exceptions/StyledXmlParserExceptionMessage.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is offered under a commercial and under the AGPL license.
diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/jsoup/Jsoup.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/jsoup/Jsoup.java
index cf74509e0f..86be6268d4 100644
--- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/jsoup/Jsoup.java
+++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/jsoup/Jsoup.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is offered under a commercial and under the AGPL license.
diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/jsoup/PortUtil.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/jsoup/PortUtil.java
index ebc21bd7f4..9e83536738 100644
--- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/jsoup/PortUtil.java
+++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/jsoup/PortUtil.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/jsoup/SerializationException.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/jsoup/SerializationException.java
index b268125632..ca0eb3dd3a 100644
--- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/jsoup/SerializationException.java
+++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/jsoup/SerializationException.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is offered under a commercial and under the AGPL license.
diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/jsoup/UncheckedIOException.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/jsoup/UncheckedIOException.java
index de36e40a52..17eb45111c 100644
--- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/jsoup/UncheckedIOException.java
+++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/jsoup/UncheckedIOException.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is offered under a commercial and under the AGPL license.
diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/jsoup/helper/ChangeNotifyingArrayList.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/jsoup/helper/ChangeNotifyingArrayList.java
index c578cb92e8..1bbe1547fc 100644
--- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/jsoup/helper/ChangeNotifyingArrayList.java
+++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/jsoup/helper/ChangeNotifyingArrayList.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is offered under a commercial and under the AGPL license.
diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/jsoup/helper/DataUtil.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/jsoup/helper/DataUtil.java
index 061afa1734..cab22cbcf6 100644
--- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/jsoup/helper/DataUtil.java
+++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/jsoup/helper/DataUtil.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is offered under a commercial and under the AGPL license.
diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/jsoup/helper/KeyVal.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/jsoup/helper/KeyVal.java
index e663fd7306..0f2f9afd99 100644
--- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/jsoup/helper/KeyVal.java
+++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/jsoup/helper/KeyVal.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is offered under a commercial and under the AGPL license.
@@ -94,4 +94,4 @@ public String contentType() {
public String toString() {
return key + "=" + value;
}
-}
\ No newline at end of file
+}
diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/jsoup/helper/Validate.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/jsoup/helper/Validate.java
index 8cc9cdf4d9..adb1002d7a 100644
--- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/jsoup/helper/Validate.java
+++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/jsoup/helper/Validate.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is offered under a commercial and under the AGPL license.
diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/jsoup/internal/ConstrainableInputStream.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/jsoup/internal/ConstrainableInputStream.java
index 4f6569ab94..2326a16c2c 100644
--- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/jsoup/internal/ConstrainableInputStream.java
+++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/jsoup/internal/ConstrainableInputStream.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is offered under a commercial and under the AGPL license.
diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/jsoup/internal/Normalizer.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/jsoup/internal/Normalizer.java
index edfc509d37..79fec8de20 100644
--- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/jsoup/internal/Normalizer.java
+++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/jsoup/internal/Normalizer.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is offered under a commercial and under the AGPL license.
diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/jsoup/internal/StringUtil.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/jsoup/internal/StringUtil.java
index 9e59bc7373..1f19056d16 100644
--- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/jsoup/internal/StringUtil.java
+++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/jsoup/internal/StringUtil.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is offered under a commercial and under the AGPL license.
diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/jsoup/nodes/Attribute.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/jsoup/nodes/Attribute.java
index 141f99a86a..5dda6d3675 100644
--- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/jsoup/nodes/Attribute.java
+++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/jsoup/nodes/Attribute.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is offered under a commercial and under the AGPL license.
diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/jsoup/nodes/Attributes.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/jsoup/nodes/Attributes.java
index 7089b58c31..64b23d2726 100644
--- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/jsoup/nodes/Attributes.java
+++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/jsoup/nodes/Attributes.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is offered under a commercial and under the AGPL license.
diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/jsoup/nodes/CDataNode.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/jsoup/nodes/CDataNode.java
index 73848f962f..5eaa926a23 100644
--- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/jsoup/nodes/CDataNode.java
+++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/jsoup/nodes/CDataNode.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is offered under a commercial and under the AGPL license.
diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/jsoup/nodes/Comment.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/jsoup/nodes/Comment.java
index aea33bf06a..c38242f1ce 100644
--- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/jsoup/nodes/Comment.java
+++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/jsoup/nodes/Comment.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is offered under a commercial and under the AGPL license.
diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/jsoup/nodes/DataNode.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/jsoup/nodes/DataNode.java
index 85206422ea..d902eac32b 100644
--- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/jsoup/nodes/DataNode.java
+++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/jsoup/nodes/DataNode.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is offered under a commercial and under the AGPL license.
diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/jsoup/nodes/Document.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/jsoup/nodes/Document.java
index 703304902c..9856af3804 100644
--- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/jsoup/nodes/Document.java
+++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/jsoup/nodes/Document.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is offered under a commercial and under the AGPL license.
diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/jsoup/nodes/DocumentType.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/jsoup/nodes/DocumentType.java
index 7ff93823d0..324e02c638 100644
--- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/jsoup/nodes/DocumentType.java
+++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/jsoup/nodes/DocumentType.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is offered under a commercial and under the AGPL license.
diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/jsoup/nodes/Element.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/jsoup/nodes/Element.java
index 13fa18f374..133c8bcfac 100644
--- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/jsoup/nodes/Element.java
+++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/jsoup/nodes/Element.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is offered under a commercial and under the AGPL license.
diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/jsoup/nodes/Entities.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/jsoup/nodes/Entities.java
index 9ec8f2d453..7fe3093ea2 100644
--- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/jsoup/nodes/Entities.java
+++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/jsoup/nodes/Entities.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is offered under a commercial and under the AGPL license.
diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/jsoup/nodes/EntitiesData.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/jsoup/nodes/EntitiesData.java
index 549ea942a0..73a2485511 100644
--- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/jsoup/nodes/EntitiesData.java
+++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/jsoup/nodes/EntitiesData.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is offered under a commercial and under the AGPL license.
diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/jsoup/nodes/FormElement.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/jsoup/nodes/FormElement.java
index 6393194892..35e9834b2d 100644
--- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/jsoup/nodes/FormElement.java
+++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/jsoup/nodes/FormElement.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is offered under a commercial and under the AGPL license.
diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/jsoup/nodes/LeafNode.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/jsoup/nodes/LeafNode.java
index 94947ef980..f12658b227 100644
--- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/jsoup/nodes/LeafNode.java
+++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/jsoup/nodes/LeafNode.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is offered under a commercial and under the AGPL license.
diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/jsoup/nodes/Node.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/jsoup/nodes/Node.java
index 8bbc06428f..95788e1d20 100644
--- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/jsoup/nodes/Node.java
+++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/jsoup/nodes/Node.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is offered under a commercial and under the AGPL license.
diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/jsoup/nodes/NodeUtils.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/jsoup/nodes/NodeUtils.java
index ea686081b8..ef3f869832 100644
--- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/jsoup/nodes/NodeUtils.java
+++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/jsoup/nodes/NodeUtils.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is offered under a commercial and under the AGPL license.
diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/jsoup/nodes/PseudoTextElement.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/jsoup/nodes/PseudoTextElement.java
index e74019eff7..1d5071a67a 100644
--- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/jsoup/nodes/PseudoTextElement.java
+++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/jsoup/nodes/PseudoTextElement.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is offered under a commercial and under the AGPL license.
diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/jsoup/nodes/TextNode.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/jsoup/nodes/TextNode.java
index 86d6bd1b0d..01bb5a07cb 100644
--- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/jsoup/nodes/TextNode.java
+++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/jsoup/nodes/TextNode.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is offered under a commercial and under the AGPL license.
diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/jsoup/nodes/XmlDeclaration.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/jsoup/nodes/XmlDeclaration.java
index aacb2b6fdb..32cbf4906e 100644
--- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/jsoup/nodes/XmlDeclaration.java
+++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/jsoup/nodes/XmlDeclaration.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is offered under a commercial and under the AGPL license.
diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/jsoup/parser/CharacterReader.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/jsoup/parser/CharacterReader.java
index c0d1350e39..89c16a16ef 100644
--- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/jsoup/parser/CharacterReader.java
+++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/jsoup/parser/CharacterReader.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is offered under a commercial and under the AGPL license.
diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/jsoup/parser/HtmlTreeBuilder.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/jsoup/parser/HtmlTreeBuilder.java
index b5c0c66faa..94d3caadf2 100644
--- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/jsoup/parser/HtmlTreeBuilder.java
+++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/jsoup/parser/HtmlTreeBuilder.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is offered under a commercial and under the AGPL license.
diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/jsoup/parser/HtmlTreeBuilderState.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/jsoup/parser/HtmlTreeBuilderState.java
index e517c6f9dd..374a06c1c2 100644
--- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/jsoup/parser/HtmlTreeBuilderState.java
+++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/jsoup/parser/HtmlTreeBuilderState.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is offered under a commercial and under the AGPL license.
diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/jsoup/parser/ParseError.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/jsoup/parser/ParseError.java
index 0fa7a3bb3a..2f39fead58 100644
--- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/jsoup/parser/ParseError.java
+++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/jsoup/parser/ParseError.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is offered under a commercial and under the AGPL license.
diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/jsoup/parser/ParseErrorList.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/jsoup/parser/ParseErrorList.java
index 7155629a31..177a0c310f 100644
--- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/jsoup/parser/ParseErrorList.java
+++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/jsoup/parser/ParseErrorList.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is offered under a commercial and under the AGPL license.
diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/jsoup/parser/ParseSettings.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/jsoup/parser/ParseSettings.java
index 1146db64f3..f19db03a5f 100644
--- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/jsoup/parser/ParseSettings.java
+++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/jsoup/parser/ParseSettings.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is offered under a commercial and under the AGPL license.
diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/jsoup/parser/Parser.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/jsoup/parser/Parser.java
index a194d714ec..48257de320 100644
--- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/jsoup/parser/Parser.java
+++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/jsoup/parser/Parser.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is offered under a commercial and under the AGPL license.
diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/jsoup/parser/Tag.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/jsoup/parser/Tag.java
index 541ec01174..af5c5c5343 100644
--- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/jsoup/parser/Tag.java
+++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/jsoup/parser/Tag.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is offered under a commercial and under the AGPL license.
diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/jsoup/parser/Token.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/jsoup/parser/Token.java
index d2836dc556..b63d12bb4f 100644
--- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/jsoup/parser/Token.java
+++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/jsoup/parser/Token.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is offered under a commercial and under the AGPL license.
diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/jsoup/parser/TokenQueue.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/jsoup/parser/TokenQueue.java
index 057fc56380..65de7299b7 100644
--- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/jsoup/parser/TokenQueue.java
+++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/jsoup/parser/TokenQueue.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is offered under a commercial and under the AGPL license.
diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/jsoup/parser/Tokeniser.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/jsoup/parser/Tokeniser.java
index dd0e46e6e3..ae1beebe38 100644
--- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/jsoup/parser/Tokeniser.java
+++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/jsoup/parser/Tokeniser.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is offered under a commercial and under the AGPL license.
diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/jsoup/parser/TokeniserState.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/jsoup/parser/TokeniserState.java
index 4be76630f0..08cdadd4f3 100644
--- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/jsoup/parser/TokeniserState.java
+++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/jsoup/parser/TokeniserState.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is offered under a commercial and under the AGPL license.
diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/jsoup/parser/TreeBuilder.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/jsoup/parser/TreeBuilder.java
index 3d5d63c0ed..bc50bb145c 100644
--- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/jsoup/parser/TreeBuilder.java
+++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/jsoup/parser/TreeBuilder.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is offered under a commercial and under the AGPL license.
diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/jsoup/parser/XmlTreeBuilder.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/jsoup/parser/XmlTreeBuilder.java
index 06abce3bf1..c510c687c6 100644
--- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/jsoup/parser/XmlTreeBuilder.java
+++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/jsoup/parser/XmlTreeBuilder.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is offered under a commercial and under the AGPL license.
diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/jsoup/safety/Cleaner.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/jsoup/safety/Cleaner.java
index b609f96636..340933a0de 100644
--- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/jsoup/safety/Cleaner.java
+++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/jsoup/safety/Cleaner.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is offered under a commercial and under the AGPL license.
diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/jsoup/safety/Safelist.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/jsoup/safety/Safelist.java
index 58d53996a7..ff993745ba 100644
--- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/jsoup/safety/Safelist.java
+++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/jsoup/safety/Safelist.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is offered under a commercial and under the AGPL license.
diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/jsoup/safety/Whitelist.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/jsoup/safety/Whitelist.java
index 313bd83656..5b14deafb5 100644
--- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/jsoup/safety/Whitelist.java
+++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/jsoup/safety/Whitelist.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is offered under a commercial and under the AGPL license.
diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/jsoup/select/Collector.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/jsoup/select/Collector.java
index c03298e1af..059f50ab3e 100644
--- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/jsoup/select/Collector.java
+++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/jsoup/select/Collector.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is offered under a commercial and under the AGPL license.
diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/jsoup/select/CombiningEvaluator.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/jsoup/select/CombiningEvaluator.java
index 75da009f75..8d6a75e36b 100644
--- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/jsoup/select/CombiningEvaluator.java
+++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/jsoup/select/CombiningEvaluator.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is offered under a commercial and under the AGPL license.
diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/jsoup/select/Elements.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/jsoup/select/Elements.java
index 488eacf4a7..5218f6b319 100644
--- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/jsoup/select/Elements.java
+++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/jsoup/select/Elements.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is offered under a commercial and under the AGPL license.
diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/jsoup/select/Evaluator.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/jsoup/select/Evaluator.java
index 5e0ea49aea..e86d6c0478 100644
--- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/jsoup/select/Evaluator.java
+++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/jsoup/select/Evaluator.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is offered under a commercial and under the AGPL license.
diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/jsoup/select/NodeFilter.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/jsoup/select/NodeFilter.java
index 30792c105a..fa586a4b81 100644
--- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/jsoup/select/NodeFilter.java
+++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/jsoup/select/NodeFilter.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is offered under a commercial and under the AGPL license.
diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/jsoup/select/NodeTraversor.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/jsoup/select/NodeTraversor.java
index 61b536a305..d1795e0d13 100644
--- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/jsoup/select/NodeTraversor.java
+++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/jsoup/select/NodeTraversor.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is offered under a commercial and under the AGPL license.
diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/jsoup/select/NodeVisitor.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/jsoup/select/NodeVisitor.java
index 02b684d6bb..6741f4de07 100644
--- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/jsoup/select/NodeVisitor.java
+++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/jsoup/select/NodeVisitor.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is offered under a commercial and under the AGPL license.
diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/jsoup/select/QueryParser.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/jsoup/select/QueryParser.java
index e395e3bda7..f734d9aa95 100644
--- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/jsoup/select/QueryParser.java
+++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/jsoup/select/QueryParser.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is offered under a commercial and under the AGPL license.
diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/jsoup/select/Selector.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/jsoup/select/Selector.java
index 0c425a2d40..8e21630229 100644
--- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/jsoup/select/Selector.java
+++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/jsoup/select/Selector.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is offered under a commercial and under the AGPL license.
diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/jsoup/select/StructuralEvaluator.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/jsoup/select/StructuralEvaluator.java
index 20f56dabe7..7865fe1aa9 100644
--- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/jsoup/select/StructuralEvaluator.java
+++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/jsoup/select/StructuralEvaluator.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is offered under a commercial and under the AGPL license.
diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/logs/StyledXmlParserLogMessageConstant.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/logs/StyledXmlParserLogMessageConstant.java
index 80520ab67e..ed07f3a69f 100644
--- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/logs/StyledXmlParserLogMessageConstant.java
+++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/logs/StyledXmlParserLogMessageConstant.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: Bruno Lowagie, Paulo Soares, et al.
This program is free software; you can redistribute it and/or modify
diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/node/IAttribute.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/node/IAttribute.java
index 431ddeb208..bab9cf1c37 100644
--- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/node/IAttribute.java
+++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/node/IAttribute.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: Bruno Lowagie, Paulo Soares, et al.
This program is free software; you can redistribute it and/or modify
diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/node/IAttributes.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/node/IAttributes.java
index 3a2334e01a..be38d070de 100644
--- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/node/IAttributes.java
+++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/node/IAttributes.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: Bruno Lowagie, Paulo Soares, et al.
This program is free software; you can redistribute it and/or modify
diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/node/ICustomElementNode.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/node/ICustomElementNode.java
index 30507be4b6..0b8278cc7d 100644
--- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/node/ICustomElementNode.java
+++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/node/ICustomElementNode.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: Bruno Lowagie, Paulo Soares, et al.
This program is free software; you can redistribute it and/or modify
diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/node/IDataNode.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/node/IDataNode.java
index 2e6732a421..ed721ac8dc 100644
--- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/node/IDataNode.java
+++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/node/IDataNode.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: Bruno Lowagie, Paulo Soares, et al.
This program is free software; you can redistribute it and/or modify
diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/node/IDocumentNode.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/node/IDocumentNode.java
index f0dce0d9b8..775283fa86 100644
--- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/node/IDocumentNode.java
+++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/node/IDocumentNode.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: Bruno Lowagie, Paulo Soares, et al.
This program is free software; you can redistribute it and/or modify
diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/node/IDocumentTypeNode.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/node/IDocumentTypeNode.java
index eedf905e7e..df07bca5dd 100644
--- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/node/IDocumentTypeNode.java
+++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/node/IDocumentTypeNode.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: Bruno Lowagie, Paulo Soares, et al.
This program is free software; you can redistribute it and/or modify
diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/node/IElementNode.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/node/IElementNode.java
index f9f9976d0b..677b295699 100644
--- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/node/IElementNode.java
+++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/node/IElementNode.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: Bruno Lowagie, Paulo Soares, et al.
This program is free software; you can redistribute it and/or modify
diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/node/INode.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/node/INode.java
index 517c7c7ae0..f6bce90902 100644
--- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/node/INode.java
+++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/node/INode.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: Bruno Lowagie, Paulo Soares, et al.
This program is free software; you can redistribute it and/or modify
diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/node/IStylesContainer.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/node/IStylesContainer.java
index f8367165be..1502969e43 100644
--- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/node/IStylesContainer.java
+++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/node/IStylesContainer.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: Bruno Lowagie, Paulo Soares, et al.
This program is free software; you can redistribute it and/or modify
diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/node/ITextNode.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/node/ITextNode.java
index 7c9fbdd94e..042191d48d 100644
--- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/node/ITextNode.java
+++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/node/ITextNode.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: Bruno Lowagie, Paulo Soares, et al.
This program is free software; you can redistribute it and/or modify
diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/node/impl/jsoup/JsoupHtmlParser.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/node/impl/jsoup/JsoupHtmlParser.java
index 9f4e8492be..21a4999991 100644
--- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/node/impl/jsoup/JsoupHtmlParser.java
+++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/node/impl/jsoup/JsoupHtmlParser.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: Bruno Lowagie, Paulo Soares, et al.
This program is free software; you can redistribute it and/or modify
diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/node/impl/jsoup/JsoupXmlParser.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/node/impl/jsoup/JsoupXmlParser.java
index 01d9164926..046c7b98a6 100644
--- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/node/impl/jsoup/JsoupXmlParser.java
+++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/node/impl/jsoup/JsoupXmlParser.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: Bruno Lowagie, Paulo Soares, et al.
This program is free software; you can redistribute it and/or modify
diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/node/impl/jsoup/node/JsoupAttribute.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/node/impl/jsoup/node/JsoupAttribute.java
index 09ea113734..58a0d06e4f 100644
--- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/node/impl/jsoup/node/JsoupAttribute.java
+++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/node/impl/jsoup/node/JsoupAttribute.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: Bruno Lowagie, Paulo Soares, et al.
This program is free software; you can redistribute it and/or modify
diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/node/impl/jsoup/node/JsoupAttributes.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/node/impl/jsoup/node/JsoupAttributes.java
index e13d9bdbce..be66fb55b9 100644
--- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/node/impl/jsoup/node/JsoupAttributes.java
+++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/node/impl/jsoup/node/JsoupAttributes.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: Bruno Lowagie, Paulo Soares, et al.
This program is free software; you can redistribute it and/or modify
diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/node/impl/jsoup/node/JsoupDataNode.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/node/impl/jsoup/node/JsoupDataNode.java
index b434e5376c..b5d60fc3fb 100644
--- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/node/impl/jsoup/node/JsoupDataNode.java
+++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/node/impl/jsoup/node/JsoupDataNode.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: Bruno Lowagie, Paulo Soares, et al.
This program is free software; you can redistribute it and/or modify
diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/node/impl/jsoup/node/JsoupDocumentNode.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/node/impl/jsoup/node/JsoupDocumentNode.java
index 0d06390b1e..c8c3431803 100644
--- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/node/impl/jsoup/node/JsoupDocumentNode.java
+++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/node/impl/jsoup/node/JsoupDocumentNode.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: Bruno Lowagie, Paulo Soares, et al.
This program is free software; you can redistribute it and/or modify
diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/node/impl/jsoup/node/JsoupDocumentTypeNode.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/node/impl/jsoup/node/JsoupDocumentTypeNode.java
index b0e7bcc93a..de0e6f3506 100644
--- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/node/impl/jsoup/node/JsoupDocumentTypeNode.java
+++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/node/impl/jsoup/node/JsoupDocumentTypeNode.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: Bruno Lowagie, Paulo Soares, et al.
This program is free software; you can redistribute it and/or modify
diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/node/impl/jsoup/node/JsoupElementNode.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/node/impl/jsoup/node/JsoupElementNode.java
index 80b2adc6c6..d0e0642166 100644
--- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/node/impl/jsoup/node/JsoupElementNode.java
+++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/node/impl/jsoup/node/JsoupElementNode.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: Bruno Lowagie, Paulo Soares, et al.
This program is free software; you can redistribute it and/or modify
diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/node/impl/jsoup/node/JsoupNode.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/node/impl/jsoup/node/JsoupNode.java
index f08d39f264..c90abdfb57 100644
--- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/node/impl/jsoup/node/JsoupNode.java
+++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/node/impl/jsoup/node/JsoupNode.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: Bruno Lowagie, Paulo Soares, et al.
This program is free software; you can redistribute it and/or modify
diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/node/impl/jsoup/node/JsoupTextNode.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/node/impl/jsoup/node/JsoupTextNode.java
index 2b02078c31..ad3b8e575f 100644
--- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/node/impl/jsoup/node/JsoupTextNode.java
+++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/node/impl/jsoup/node/JsoupTextNode.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: Bruno Lowagie, Paulo Soares, et al.
This program is free software; you can redistribute it and/or modify
diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/resolver/font/BasicFontProvider.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/resolver/font/BasicFontProvider.java
index c8531ae885..2e3b15bf44 100644
--- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/resolver/font/BasicFontProvider.java
+++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/resolver/font/BasicFontProvider.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: Bruno Lowagie, Paulo Soares, et al.
This program is free software; you can redistribute it and/or modify
diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/resolver/resource/DefaultResourceRetriever.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/resolver/resource/DefaultResourceRetriever.java
index 38c4bee7ee..5af5a45149 100644
--- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/resolver/resource/DefaultResourceRetriever.java
+++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/resolver/resource/DefaultResourceRetriever.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is offered under a commercial and under the AGPL license.
diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/resolver/resource/IResourceRetriever.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/resolver/resource/IResourceRetriever.java
index 4f693cdb5e..5e934cd078 100644
--- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/resolver/resource/IResourceRetriever.java
+++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/resolver/resource/IResourceRetriever.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is offered under a commercial and under the AGPL license.
diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/resolver/resource/LimitedInputStream.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/resolver/resource/LimitedInputStream.java
index bd890492ad..65861218c7 100644
--- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/resolver/resource/LimitedInputStream.java
+++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/resolver/resource/LimitedInputStream.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is offered under a commercial and under the AGPL license.
diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/resolver/resource/ResourceResolver.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/resolver/resource/ResourceResolver.java
index 503009964b..07d40e845d 100644
--- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/resolver/resource/ResourceResolver.java
+++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/resolver/resource/ResourceResolver.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: Bruno Lowagie, Paulo Soares, et al.
This program is free software; you can redistribute it and/or modify
@@ -59,7 +59,6 @@ This file is part of the iText (R) project.
/**
* Utilities class to resolve resources.
*/
-// TODO handle tag?
public class ResourceResolver {
/**
@@ -82,7 +81,6 @@ public class ResourceResolver {
/**
* The {@link SimpleImageCache} instance.
*/
- // TODO provide a way to configure capacity, manually reset or disable the image cache?
private SimpleImageCache imageCache;
private IResourceRetriever retriever;
diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/resolver/resource/SimpleImageCache.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/resolver/resource/SimpleImageCache.java
index abc9c9859a..296e80eb84 100644
--- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/resolver/resource/SimpleImageCache.java
+++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/resolver/resource/SimpleImageCache.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: Bruno Lowagie, Paulo Soares, et al.
This program is free software; you can redistribute it and/or modify
diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/resolver/resource/UriEncodeUtil.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/resolver/resource/UriEncodeUtil.java
index 1a19785eb5..6afe1d7903 100644
--- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/resolver/resource/UriEncodeUtil.java
+++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/resolver/resource/UriEncodeUtil.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/resolver/resource/UriResolver.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/resolver/resource/UriResolver.java
index c499cc510f..33a9328ed5 100644
--- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/resolver/resource/UriResolver.java
+++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/resolver/resource/UriResolver.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: Bruno Lowagie, Paulo Soares, et al.
This program is free software; you can redistribute it and/or modify
diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/util/FontFamilySplitterUtil.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/util/FontFamilySplitterUtil.java
index f80fe480d2..bfb244debf 100644
--- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/util/FontFamilySplitterUtil.java
+++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/util/FontFamilySplitterUtil.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: Bruno Lowagie, Paulo Soares, et al.
This program is free software; you can redistribute it and/or modify
diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/util/StyleUtil.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/util/StyleUtil.java
index c385c10531..28b077beab 100644
--- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/util/StyleUtil.java
+++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/util/StyleUtil.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is offered under a commercial and under the AGPL license.
diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/util/WhiteSpaceUtil.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/util/WhiteSpaceUtil.java
index feb23dfb2b..f8f1b20d9c 100644
--- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/util/WhiteSpaceUtil.java
+++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/util/WhiteSpaceUtil.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/CssFontFaceRuleTest.java b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/CssFontFaceRuleTest.java
index c4a2c8f4b9..75bb8bfa60 100644
--- a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/CssFontFaceRuleTest.java
+++ b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/CssFontFaceRuleTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is offered under a commercial and under the AGPL license.
diff --git a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/CssFontFaceSrcTest.java b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/CssFontFaceSrcTest.java
index 04e9ac2b38..00b56dd555 100644
--- a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/CssFontFaceSrcTest.java
+++ b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/CssFontFaceSrcTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is offered under a commercial and under the AGPL license.
diff --git a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/CssFontFaceTest.java b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/CssFontFaceTest.java
index cf789222c7..09b1a25f05 100644
--- a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/CssFontFaceTest.java
+++ b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/CssFontFaceTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is offered under a commercial and under the AGPL license.
diff --git a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/CssMatchingTest.java b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/CssMatchingTest.java
index 1d331569e7..cd01950438 100644
--- a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/CssMatchingTest.java
+++ b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/CssMatchingTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/CssNestedAtRuleFactoryTest.java b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/CssNestedAtRuleFactoryTest.java
index 6f6ef8e606..536d5b6697 100644
--- a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/CssNestedAtRuleFactoryTest.java
+++ b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/CssNestedAtRuleFactoryTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is offered under a commercial and under the AGPL license.
diff --git a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/media/CssMediaRuleTest.java b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/media/CssMediaRuleTest.java
index 886773f1fb..67aaa9bb8f 100644
--- a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/media/CssMediaRuleTest.java
+++ b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/media/CssMediaRuleTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/media/MediaExpressionTest.java b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/media/MediaExpressionTest.java
index b18129eb30..1631fd7edd 100644
--- a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/media/MediaExpressionTest.java
+++ b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/media/MediaExpressionTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/media/MediaQueryTest.java b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/media/MediaQueryTest.java
index a480f16486..ba60d48cb3 100644
--- a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/media/MediaQueryTest.java
+++ b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/media/MediaQueryTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/page/PageMarginBoxContextNodeTest.java b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/page/PageMarginBoxContextNodeTest.java
index b4d14bf480..f042e9517c 100644
--- a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/page/PageMarginBoxContextNodeTest.java
+++ b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/page/PageMarginBoxContextNodeTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is offered under a commercial and under the AGPL license.
diff --git a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/parse/CssRuleSetParserTest.java b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/parse/CssRuleSetParserTest.java
index d9a8177ae5..7f2151930d 100644
--- a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/parse/CssRuleSetParserTest.java
+++ b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/parse/CssRuleSetParserTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is offered under a commercial and under the AGPL license.
diff --git a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/parse/CssSelectorParserTest.java b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/parse/CssSelectorParserTest.java
index 5f26a8ce8e..731877a1e0 100644
--- a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/parse/CssSelectorParserTest.java
+++ b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/parse/CssSelectorParserTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is offered under a commercial and under the AGPL license.
diff --git a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/parse/CssStyleAttributeParseTest.java b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/parse/CssStyleAttributeParseTest.java
index d00f0292f8..b75ff91707 100644
--- a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/parse/CssStyleAttributeParseTest.java
+++ b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/parse/CssStyleAttributeParseTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is offered under a commercial and under the AGPL license.
diff --git a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/parse/CssStyleSheetParserTest.java b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/parse/CssStyleSheetParserTest.java
index 872aea8acf..bc74562425 100644
--- a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/parse/CssStyleSheetParserTest.java
+++ b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/parse/CssStyleSheetParserTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
@@ -135,10 +135,8 @@ public void test10() throws IOException {
}
@Test
+ // TODO DEVSIX-6364 Fix the body declarations duplication for each pageSelector part
public void test11() throws IOException {
- // TODO in this test declarations of the page at-rule with compound selector are duplicated.
- // See CssPageRule#addBodyCssDeclarations() method for the reason and possible solution if this becomes important.
-
String cssFile = sourceFolder + "css11.css";
String cmpFile = sourceFolder + "cmp_css11.css";
CssStyleSheet styleSheet = CssStyleSheetParser.parse(new FileInputStream(cssFile));
diff --git a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/pseudo/CssPseudoElementNodeTest.java b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/pseudo/CssPseudoElementNodeTest.java
index d0268fd649..912f2eb815 100644
--- a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/pseudo/CssPseudoElementNodeTest.java
+++ b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/pseudo/CssPseudoElementNodeTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is offered under a commercial and under the AGPL license.
diff --git a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/pseudo/CssPseudoElementUtilTest.java b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/pseudo/CssPseudoElementUtilTest.java
index 17252f2497..44af3320a2 100644
--- a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/pseudo/CssPseudoElementUtilTest.java
+++ b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/pseudo/CssPseudoElementUtilTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is offered under a commercial and under the AGPL license.
diff --git a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/resolve/CssDeclarationValueTokenizerTest.java b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/resolve/CssDeclarationValueTokenizerTest.java
index 0c85ad4e74..2dd5f00e2a 100644
--- a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/resolve/CssDeclarationValueTokenizerTest.java
+++ b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/resolve/CssDeclarationValueTokenizerTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/resolve/CssInheritanceUnitTest.java b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/resolve/CssInheritanceUnitTest.java
index 811082cfe6..1f9cc7539d 100644
--- a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/resolve/CssInheritanceUnitTest.java
+++ b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/resolve/CssInheritanceUnitTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/resolve/CssPropertyMergerUnitTest.java b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/resolve/CssPropertyMergerUnitTest.java
index 480bf240d9..4952b2c9fc 100644
--- a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/resolve/CssPropertyMergerUnitTest.java
+++ b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/resolve/CssPropertyMergerUnitTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/BackgroundPositionShorthandResolverTest.java b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/BackgroundPositionShorthandResolverTest.java
index cc9bb2bc53..68ab5ffa1c 100644
--- a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/BackgroundPositionShorthandResolverTest.java
+++ b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/BackgroundPositionShorthandResolverTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is offered under a commercial and under the AGPL license.
diff --git a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/BackgroundShorthandResolverTest.java b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/BackgroundShorthandResolverTest.java
index 7bc4665140..f5bc02c9cf 100644
--- a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/BackgroundShorthandResolverTest.java
+++ b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/BackgroundShorthandResolverTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is offered under a commercial and under the AGPL license.
diff --git a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/CssShorthandResolverTest.java b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/CssShorthandResolverTest.java
index eab638cd5c..682bad487a 100644
--- a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/CssShorthandResolverTest.java
+++ b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/CssShorthandResolverTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/FlexFlowShorthandResolverTest.java b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/FlexFlowShorthandResolverTest.java
index 4418062fc0..5fb43f91d6 100644
--- a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/FlexFlowShorthandResolverTest.java
+++ b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/FlexFlowShorthandResolverTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is offered under a commercial and under the AGPL license.
diff --git a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/FlexShorthandResolverTest.java b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/FlexShorthandResolverTest.java
index 005365acc9..3f2cb733a2 100644
--- a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/FlexShorthandResolverTest.java
+++ b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/FlexShorthandResolverTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is offered under a commercial and under the AGPL license.
diff --git a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/GapShorthandResolverTest.java b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/GapShorthandResolverTest.java
index ff58b1a4ce..f752965bc4 100644
--- a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/GapShorthandResolverTest.java
+++ b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/GapShorthandResolverTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is offered under a commercial and under the AGPL license.
diff --git a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/PlaceItemsShorthandResolverTest.java b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/PlaceItemsShorthandResolverTest.java
index 90a649abcc..44b8f365a3 100644
--- a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/PlaceItemsShorthandResolverTest.java
+++ b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/PlaceItemsShorthandResolverTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is offered under a commercial and under the AGPL license.
diff --git a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/TextDecorationUnitTest.java b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/TextDecorationUnitTest.java
index 44bf056bf5..b2fec823f8 100644
--- a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/TextDecorationUnitTest.java
+++ b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/TextDecorationUnitTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is offered under a commercial and under the AGPL license.
diff --git a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/selector/item/CssMatchesTest.java b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/selector/item/CssMatchesTest.java
index b4fb521b49..2a716abeae 100644
--- a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/selector/item/CssMatchesTest.java
+++ b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/selector/item/CssMatchesTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/selector/item/CssPseudoClassDisabledSelectorItemTest.java b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/selector/item/CssPseudoClassDisabledSelectorItemTest.java
index 64e559fe25..1f1e8f7b20 100644
--- a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/selector/item/CssPseudoClassDisabledSelectorItemTest.java
+++ b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/selector/item/CssPseudoClassDisabledSelectorItemTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/selector/item/SpecificityCalculationTest.java b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/selector/item/SpecificityCalculationTest.java
index 22fbbf25ca..e9c2add011 100644
--- a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/selector/item/SpecificityCalculationTest.java
+++ b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/selector/item/SpecificityCalculationTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/util/CssBackgroundUtilsTest.java b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/util/CssBackgroundUtilsTest.java
index 13bf0b4004..acc495e3c8 100644
--- a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/util/CssBackgroundUtilsTest.java
+++ b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/util/CssBackgroundUtilsTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is offered under a commercial and under the AGPL license.
diff --git a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/util/CssDimensionParsingUtilsTest.java b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/util/CssDimensionParsingUtilsTest.java
index 1e175f0c2e..19aae3887e 100644
--- a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/util/CssDimensionParsingUtilsTest.java
+++ b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/util/CssDimensionParsingUtilsTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is offered under a commercial and under the AGPL license.
diff --git a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/util/CssGradientUtilTest.java b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/util/CssGradientUtilTest.java
index 19aaedefe4..cf6d24333a 100644
--- a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/util/CssGradientUtilTest.java
+++ b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/util/CssGradientUtilTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is offered under a commercial and under the AGPL license.
diff --git a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/util/CssPropertyNormalizerTest.java b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/util/CssPropertyNormalizerTest.java
index 278975fb5c..8a45cacbf1 100644
--- a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/util/CssPropertyNormalizerTest.java
+++ b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/util/CssPropertyNormalizerTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/util/CssTypesValidationUtilsTest.java b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/util/CssTypesValidationUtilsTest.java
index 263be2859a..8cd9f29895 100644
--- a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/util/CssTypesValidationUtilsTest.java
+++ b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/util/CssTypesValidationUtilsTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is offered under a commercial and under the AGPL license.
diff --git a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/util/CssUtilsTest.java b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/util/CssUtilsTest.java
index de8830778b..0487534ca0 100644
--- a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/util/CssUtilsTest.java
+++ b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/util/CssUtilsTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/validate/ArrayDataTypeValidatorTest.java b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/validate/ArrayDataTypeValidatorTest.java
index d33f8afcc7..c336198e04 100644
--- a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/validate/ArrayDataTypeValidatorTest.java
+++ b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/validate/ArrayDataTypeValidatorTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is offered under a commercial and under the AGPL license.
diff --git a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/validate/CssBackgroundValidatorTest.java b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/validate/CssBackgroundValidatorTest.java
index 4c4e3de399..b334ad1c36 100644
--- a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/validate/CssBackgroundValidatorTest.java
+++ b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/validate/CssBackgroundValidatorTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is offered under a commercial and under the AGPL license.
diff --git a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/validate/CssBlendModeValidatorTest.java b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/validate/CssBlendModeValidatorTest.java
index 5ecebc4f9f..fd0a8c7153 100644
--- a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/validate/CssBlendModeValidatorTest.java
+++ b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/validate/CssBlendModeValidatorTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is offered under a commercial and under the AGPL license.
diff --git a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/validate/CssDeclarationValidationMasterTest.java b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/validate/CssDeclarationValidationMasterTest.java
index 4b8943b4f6..d7388094d7 100644
--- a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/validate/CssDeclarationValidationMasterTest.java
+++ b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/validate/CssDeclarationValidationMasterTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is offered under a commercial and under the AGPL license.
diff --git a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/validate/CssLengthValueValidatorTest.java b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/validate/CssLengthValueValidatorTest.java
index 510c97b58a..49c61f0813 100644
--- a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/validate/CssLengthValueValidatorTest.java
+++ b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/validate/CssLengthValueValidatorTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is offered under a commercial and under the AGPL license.
diff --git a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/validate/CssNumberValueValidatorTest.java b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/validate/CssNumberValueValidatorTest.java
index 4227f46e9b..f9b67fbcde 100644
--- a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/validate/CssNumberValueValidatorTest.java
+++ b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/validate/CssNumberValueValidatorTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is offered under a commercial and under the AGPL license.
diff --git a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/validate/CssPercentageValueValidatorTest.java b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/validate/CssPercentageValueValidatorTest.java
index 562f04859d..4ed63bb5bb 100644
--- a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/validate/CssPercentageValueValidatorTest.java
+++ b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/validate/CssPercentageValueValidatorTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is offered under a commercial and under the AGPL license.
diff --git a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/jsoup/JsoupXmlParserTest.java b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/jsoup/JsoupXmlParserTest.java
index 2750faf4be..38ef5b2996 100644
--- a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/jsoup/JsoupXmlParserTest.java
+++ b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/jsoup/JsoupXmlParserTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/jsoup/PortUtilTest.java b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/jsoup/PortUtilTest.java
index 1197a1b399..d6d97dc1f2 100644
--- a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/jsoup/PortUtilTest.java
+++ b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/jsoup/PortUtilTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is offered under a commercial and under the AGPL license.
diff --git a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/jsoup/TextUtil.java b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/jsoup/TextUtil.java
index 56ddeb24ae..abf364ea06 100644
--- a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/jsoup/TextUtil.java
+++ b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/jsoup/TextUtil.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is offered under a commercial and under the AGPL license.
diff --git a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/jsoup/helper/DataUtilTest.java b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/jsoup/helper/DataUtilTest.java
index 9d4f88cf86..ba0dd83d29 100644
--- a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/jsoup/helper/DataUtilTest.java
+++ b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/jsoup/helper/DataUtilTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is offered under a commercial and under the AGPL license.
diff --git a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/jsoup/helper/ValidateTest.java b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/jsoup/helper/ValidateTest.java
index 83a79221f2..c6d15eb0b9 100644
--- a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/jsoup/helper/ValidateTest.java
+++ b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/jsoup/helper/ValidateTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is offered under a commercial and under the AGPL license.
diff --git a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/jsoup/integration/FuzzFixesTest.java b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/jsoup/integration/FuzzFixesTest.java
index b4b57289ed..d26d33d375 100644
--- a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/jsoup/integration/FuzzFixesTest.java
+++ b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/jsoup/integration/FuzzFixesTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is offered under a commercial and under the AGPL license.
diff --git a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/jsoup/integration/ParseTest.java b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/jsoup/integration/ParseTest.java
index 202c728f0c..1fed987c44 100644
--- a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/jsoup/integration/ParseTest.java
+++ b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/jsoup/integration/ParseTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is offered under a commercial and under the AGPL license.
diff --git a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/jsoup/integration/SafelistExtensionTest.java b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/jsoup/integration/SafelistExtensionTest.java
index 8eb51ca04e..2311485fa7 100644
--- a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/jsoup/integration/SafelistExtensionTest.java
+++ b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/jsoup/integration/SafelistExtensionTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is offered under a commercial and under the AGPL license.
diff --git a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/jsoup/internal/StringUtilTest.java b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/jsoup/internal/StringUtilTest.java
index 40eb02fe14..ad5ab327de 100644
--- a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/jsoup/internal/StringUtilTest.java
+++ b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/jsoup/internal/StringUtilTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is offered under a commercial and under the AGPL license.
diff --git a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/jsoup/nodes/AttributeTest.java b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/jsoup/nodes/AttributeTest.java
index 83070f7ba9..d0212d2830 100644
--- a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/jsoup/nodes/AttributeTest.java
+++ b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/jsoup/nodes/AttributeTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is offered under a commercial and under the AGPL license.
diff --git a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/jsoup/nodes/AttributesTest.java b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/jsoup/nodes/AttributesTest.java
index 285baff22c..912f3cfdd1 100644
--- a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/jsoup/nodes/AttributesTest.java
+++ b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/jsoup/nodes/AttributesTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is offered under a commercial and under the AGPL license.
diff --git a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/jsoup/nodes/CommentTest.java b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/jsoup/nodes/CommentTest.java
index 203406b162..5c75876070 100644
--- a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/jsoup/nodes/CommentTest.java
+++ b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/jsoup/nodes/CommentTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is offered under a commercial and under the AGPL license.
diff --git a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/jsoup/nodes/DocumentTest.java b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/jsoup/nodes/DocumentTest.java
index 9b292f7af5..17ae6fcef3 100644
--- a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/jsoup/nodes/DocumentTest.java
+++ b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/jsoup/nodes/DocumentTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is offered under a commercial and under the AGPL license.
diff --git a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/jsoup/nodes/DocumentTypeTest.java b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/jsoup/nodes/DocumentTypeTest.java
index 0e6328422c..edb64085f6 100644
--- a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/jsoup/nodes/DocumentTypeTest.java
+++ b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/jsoup/nodes/DocumentTypeTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is offered under a commercial and under the AGPL license.
diff --git a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/jsoup/nodes/ElementItTest.java b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/jsoup/nodes/ElementItTest.java
index c581beb91e..1e3edf4400 100644
--- a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/jsoup/nodes/ElementItTest.java
+++ b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/jsoup/nodes/ElementItTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is offered under a commercial and under the AGPL license.
diff --git a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/jsoup/nodes/ElementTest.java b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/jsoup/nodes/ElementTest.java
index 14bc5154b9..2a063c901c 100644
--- a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/jsoup/nodes/ElementTest.java
+++ b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/jsoup/nodes/ElementTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is offered under a commercial and under the AGPL license.
diff --git a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/jsoup/nodes/EntitiesTest.java b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/jsoup/nodes/EntitiesTest.java
index b63f06c139..1da9b14dc0 100644
--- a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/jsoup/nodes/EntitiesTest.java
+++ b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/jsoup/nodes/EntitiesTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is offered under a commercial and under the AGPL license.
diff --git a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/jsoup/nodes/FormElementTest.java b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/jsoup/nodes/FormElementTest.java
index b819d6754b..72ac6edb63 100644
--- a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/jsoup/nodes/FormElementTest.java
+++ b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/jsoup/nodes/FormElementTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is offered under a commercial and under the AGPL license.
diff --git a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/jsoup/nodes/LeafNodeTest.java b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/jsoup/nodes/LeafNodeTest.java
index 98323640f9..2e312bef3b 100644
--- a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/jsoup/nodes/LeafNodeTest.java
+++ b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/jsoup/nodes/LeafNodeTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is offered under a commercial and under the AGPL license.
diff --git a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/jsoup/nodes/NodeTest.java b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/jsoup/nodes/NodeTest.java
index 0e8b030d36..c8c4c8adc7 100644
--- a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/jsoup/nodes/NodeTest.java
+++ b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/jsoup/nodes/NodeTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is offered under a commercial and under the AGPL license.
diff --git a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/jsoup/nodes/TextNodeTest.java b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/jsoup/nodes/TextNodeTest.java
index 28d1fb078e..df06b14b00 100644
--- a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/jsoup/nodes/TextNodeTest.java
+++ b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/jsoup/nodes/TextNodeTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is offered under a commercial and under the AGPL license.
diff --git a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/jsoup/parser/AttributeParseTest.java b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/jsoup/parser/AttributeParseTest.java
index cce55eb4b1..4f330e3f78 100644
--- a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/jsoup/parser/AttributeParseTest.java
+++ b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/jsoup/parser/AttributeParseTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is offered under a commercial and under the AGPL license.
diff --git a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/jsoup/parser/CharacterReaderTest.java b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/jsoup/parser/CharacterReaderTest.java
index be1fd965de..5251913a46 100644
--- a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/jsoup/parser/CharacterReaderTest.java
+++ b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/jsoup/parser/CharacterReaderTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is offered under a commercial and under the AGPL license.
diff --git a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/jsoup/parser/HtmlParserTest.java b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/jsoup/parser/HtmlParserTest.java
index 699b102a6e..2a95ca433b 100644
--- a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/jsoup/parser/HtmlParserTest.java
+++ b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/jsoup/parser/HtmlParserTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is offered under a commercial and under the AGPL license.
diff --git a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/jsoup/parser/HtmlTreeBuilderStateTest.java b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/jsoup/parser/HtmlTreeBuilderStateTest.java
index 02902f1aa8..054d06c5f2 100644
--- a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/jsoup/parser/HtmlTreeBuilderStateTest.java
+++ b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/jsoup/parser/HtmlTreeBuilderStateTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is offered under a commercial and under the AGPL license.
diff --git a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/jsoup/parser/MultiLocaleTest.java b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/jsoup/parser/MultiLocaleTest.java
index 3f48496ba9..8ffd7f6fd4 100644
--- a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/jsoup/parser/MultiLocaleTest.java
+++ b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/jsoup/parser/MultiLocaleTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is offered under a commercial and under the AGPL license.
diff --git a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/jsoup/parser/ParserItTest.java b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/jsoup/parser/ParserItTest.java
index ebf934f401..ec2e616c4a 100644
--- a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/jsoup/parser/ParserItTest.java
+++ b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/jsoup/parser/ParserItTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is offered under a commercial and under the AGPL license.
diff --git a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/jsoup/parser/ParserTest.java b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/jsoup/parser/ParserTest.java
index 8710a59478..ce10768062 100644
--- a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/jsoup/parser/ParserTest.java
+++ b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/jsoup/parser/ParserTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is offered under a commercial and under the AGPL license.
diff --git a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/jsoup/parser/TagTest.java b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/jsoup/parser/TagTest.java
index aa26a3b6ec..aaebf047b9 100644
--- a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/jsoup/parser/TagTest.java
+++ b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/jsoup/parser/TagTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is offered under a commercial and under the AGPL license.
diff --git a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/jsoup/parser/TokenQueueTest.java b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/jsoup/parser/TokenQueueTest.java
index 77808a12b6..a3914fab91 100644
--- a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/jsoup/parser/TokenQueueTest.java
+++ b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/jsoup/parser/TokenQueueTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is offered under a commercial and under the AGPL license.
diff --git a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/jsoup/parser/TokeniserStateTest.java b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/jsoup/parser/TokeniserStateTest.java
index a54d460f95..adb9801d08 100644
--- a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/jsoup/parser/TokeniserStateTest.java
+++ b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/jsoup/parser/TokeniserStateTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is offered under a commercial and under the AGPL license.
diff --git a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/jsoup/parser/TokeniserTest.java b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/jsoup/parser/TokeniserTest.java
index 75e00568f5..9ee7114a08 100644
--- a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/jsoup/parser/TokeniserTest.java
+++ b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/jsoup/parser/TokeniserTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is offered under a commercial and under the AGPL license.
diff --git a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/jsoup/parser/XmlTreeBuilderTest.java b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/jsoup/parser/XmlTreeBuilderTest.java
index 4d61cacb80..161fdd1361 100644
--- a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/jsoup/parser/XmlTreeBuilderTest.java
+++ b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/jsoup/parser/XmlTreeBuilderTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is offered under a commercial and under the AGPL license.
diff --git a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/jsoup/safety/CleanerTest.java b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/jsoup/safety/CleanerTest.java
index aa0be24af6..241a34360b 100644
--- a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/jsoup/safety/CleanerTest.java
+++ b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/jsoup/safety/CleanerTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is offered under a commercial and under the AGPL license.
diff --git a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/jsoup/safety/CompatibilityTest.java b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/jsoup/safety/CompatibilityTest.java
index f3fb42d103..c53b33936b 100644
--- a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/jsoup/safety/CompatibilityTest.java
+++ b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/jsoup/safety/CompatibilityTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is offered under a commercial and under the AGPL license.
diff --git a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/jsoup/safety/MultiLocaleTest.java b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/jsoup/safety/MultiLocaleTest.java
index ffe8ee76d9..adb564b283 100644
--- a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/jsoup/safety/MultiLocaleTest.java
+++ b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/jsoup/safety/MultiLocaleTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is offered under a commercial and under the AGPL license.
diff --git a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/jsoup/select/CssTest.java b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/jsoup/select/CssTest.java
index 6d715e50d0..39e6242f34 100644
--- a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/jsoup/select/CssTest.java
+++ b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/jsoup/select/CssTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is offered under a commercial and under the AGPL license.
diff --git a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/jsoup/select/ElementsTest.java b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/jsoup/select/ElementsTest.java
index 50f3222921..f8dbb4b9db 100644
--- a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/jsoup/select/ElementsTest.java
+++ b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/jsoup/select/ElementsTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is offered under a commercial and under the AGPL license.
diff --git a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/jsoup/select/MultiLocaleTest.java b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/jsoup/select/MultiLocaleTest.java
index d79ccfcb97..2ea1921b75 100644
--- a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/jsoup/select/MultiLocaleTest.java
+++ b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/jsoup/select/MultiLocaleTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is offered under a commercial and under the AGPL license.
diff --git a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/jsoup/select/QueryParserTest.java b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/jsoup/select/QueryParserTest.java
index d76f108987..c26bf9ed2b 100644
--- a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/jsoup/select/QueryParserTest.java
+++ b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/jsoup/select/QueryParserTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is offered under a commercial and under the AGPL license.
diff --git a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/jsoup/select/SelectorTest.java b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/jsoup/select/SelectorTest.java
index 170fff69b2..3a4578a9c4 100644
--- a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/jsoup/select/SelectorTest.java
+++ b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/jsoup/select/SelectorTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is offered under a commercial and under the AGPL license.
diff --git a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/jsoup/select/TraversorTest.java b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/jsoup/select/TraversorTest.java
index df0dc70f27..005df6b7ed 100644
--- a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/jsoup/select/TraversorTest.java
+++ b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/jsoup/select/TraversorTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is offered under a commercial and under the AGPL license.
diff --git a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/resolver/resource/LimitedInputStreamTest.java b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/resolver/resource/LimitedInputStreamTest.java
index 295f71429a..5059a60cbb 100644
--- a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/resolver/resource/LimitedInputStreamTest.java
+++ b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/resolver/resource/LimitedInputStreamTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is offered under a commercial and under the AGPL license.
diff --git a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/resolver/resource/ResourceResolverTest.java b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/resolver/resource/ResourceResolverTest.java
index d988553a8a..3fe293bfd6 100644
--- a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/resolver/resource/ResourceResolverTest.java
+++ b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/resolver/resource/ResourceResolverTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/resolver/resource/SimpleImageCacheTest.java b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/resolver/resource/SimpleImageCacheTest.java
index 53eb548c56..2d11912043 100644
--- a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/resolver/resource/SimpleImageCacheTest.java
+++ b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/resolver/resource/SimpleImageCacheTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/resolver/resource/UriResolverTest.java b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/resolver/resource/UriResolverTest.java
index bd35ed45b4..c44cc23035 100644
--- a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/resolver/resource/UriResolverTest.java
+++ b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/resolver/resource/UriResolverTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
@@ -237,13 +237,28 @@ public void uriResolverTest14() throws MalformedURLException {
UriResolver resolver = new UriResolver("base/uri/index.html");
String runFolder = Paths.get("").toUri().toURL().toExternalForm();
Assert.assertEquals(runFolder + "base/uri/index.html", resolver.getBaseUri());
- Assert.assertEquals("file:/c:/test/folder/img.txt", resolver.resolveAgainstBaseUri("file:/c:/test/folder/img.txt").toExternalForm());
- Assert.assertEquals("file://c:/test/folder/img.txt", resolver.resolveAgainstBaseUri("file://c:/test/folder/img.txt").toExternalForm());
- Assert.assertEquals("file:/c:/test/folder/data.jpg", resolver.resolveAgainstBaseUri("file:///c:/test/folder/data.jpg").toExternalForm());
+
+ final String firstUriResolvingResult = resolver.resolveAgainstBaseUri("file:/c:/test/folder/img.txt")
+ .toExternalForm();
+ final String expectedUriWithSingleSlash = "file:/c:/test/folder/img.txt";
+ final String expectedUriWithTripleSlash = "file:///c:/test/folder/img.txt";
+
+ // Both variants(namely with triple and single slashes) are valid.
+ Assert.assertTrue(expectedUriWithSingleSlash.equals(firstUriResolvingResult)
+ || expectedUriWithTripleSlash.equals(firstUriResolvingResult));
+
+ Assert.assertEquals("file://c:/test/folder/img.txt",
+ resolver.resolveAgainstBaseUri("file://c:/test/folder/img.txt").toExternalForm());
+
+ final String thirdUriResolvingResult = resolver.resolveAgainstBaseUri("file:///c:/test/folder/img.txt")
+ .toExternalForm();
+ // Result of resolving uri with triple slash should be the same as if it contained single slash.
+ Assert.assertEquals(firstUriResolvingResult, thirdUriResolvingResult);
// It is windows specific to assume this to work. On unix it shall fail, as it will assume that it is
// an absolute URI with scheme 'c', and will not recognize this scheme.
- // Assert.assertEquals("file:/c:/test/folder/data.jpg", resolver.resolveAgainstBaseUri("c:/test/folder/data.jpg").toExternalForm());
+ // Assert.assertEquals("file:/c:/test/folder/data.jpg", resolver.resolveAgainstBaseUri("c:/test/folder/data
+ // .jpg").toExternalForm());
}
@Test
diff --git a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/util/FontFamilySplitterTest.java b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/util/FontFamilySplitterTest.java
index 9e2c840cef..a8fe9b0c77 100644
--- a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/util/FontFamilySplitterTest.java
+++ b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/util/FontFamilySplitterTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/util/StyleUtilUnitTest.java b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/util/StyleUtilUnitTest.java
index de1867fe25..461d11669f 100644
--- a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/util/StyleUtilUnitTest.java
+++ b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/util/StyleUtilUnitTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is offered under a commercial and under the AGPL license.
diff --git a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/util/WhiteSpaceUtilUnitTest.java b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/util/WhiteSpaceUtilUnitTest.java
index 65987ec49c..9da75c1385 100644
--- a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/util/WhiteSpaceUtilUnitTest.java
+++ b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/util/WhiteSpaceUtilUnitTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/svg/pom.xml b/svg/pom.xml
index fba6a86658..0d95bc9813 100644
--- a/svg/pom.xml
+++ b/svg/pom.xml
@@ -4,7 +4,7 @@
com.itextpdf
root
- 7.2.1
+ 7.2.2
svg
iText 7 - SVG
diff --git a/svg/src/main/java/com/itextpdf/svg/MarkerVertexType.java b/svg/src/main/java/com/itextpdf/svg/MarkerVertexType.java
index 74e9562a1a..84069ab421 100644
--- a/svg/src/main/java/com/itextpdf/svg/MarkerVertexType.java
+++ b/svg/src/main/java/com/itextpdf/svg/MarkerVertexType.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is offered under a commercial and under the AGPL license.
diff --git a/svg/src/main/java/com/itextpdf/svg/SvgConstants.java b/svg/src/main/java/com/itextpdf/svg/SvgConstants.java
index 7c4e23ae0f..dc64b20de2 100644
--- a/svg/src/main/java/com/itextpdf/svg/SvgConstants.java
+++ b/svg/src/main/java/com/itextpdf/svg/SvgConstants.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/svg/src/main/java/com/itextpdf/svg/converter/SvgConverter.java b/svg/src/main/java/com/itextpdf/svg/converter/SvgConverter.java
index 21a0938931..9066576f71 100644
--- a/svg/src/main/java/com/itextpdf/svg/converter/SvgConverter.java
+++ b/svg/src/main/java/com/itextpdf/svg/converter/SvgConverter.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/svg/src/main/java/com/itextpdf/svg/css/SvgCssContext.java b/svg/src/main/java/com/itextpdf/svg/css/SvgCssContext.java
index 7fa654bcbd..9e1152fa2f 100644
--- a/svg/src/main/java/com/itextpdf/svg/css/SvgCssContext.java
+++ b/svg/src/main/java/com/itextpdf/svg/css/SvgCssContext.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/svg/src/main/java/com/itextpdf/svg/css/impl/SvgAttributeInheritance.java b/svg/src/main/java/com/itextpdf/svg/css/impl/SvgAttributeInheritance.java
index 63010b0b35..c12ab5b101 100644
--- a/svg/src/main/java/com/itextpdf/svg/css/impl/SvgAttributeInheritance.java
+++ b/svg/src/main/java/com/itextpdf/svg/css/impl/SvgAttributeInheritance.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: Bruno Lowagie, Paulo Soares, et al.
This program is free software; you can redistribute it and/or modify
diff --git a/svg/src/main/java/com/itextpdf/svg/css/impl/SvgNodeRendererInheritanceResolver.java b/svg/src/main/java/com/itextpdf/svg/css/impl/SvgNodeRendererInheritanceResolver.java
index 8ebbaae745..95c96c8712 100644
--- a/svg/src/main/java/com/itextpdf/svg/css/impl/SvgNodeRendererInheritanceResolver.java
+++ b/svg/src/main/java/com/itextpdf/svg/css/impl/SvgNodeRendererInheritanceResolver.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/svg/src/main/java/com/itextpdf/svg/css/impl/SvgStyleResolver.java b/svg/src/main/java/com/itextpdf/svg/css/impl/SvgStyleResolver.java
index c9c55dd397..5fcce1e631 100644
--- a/svg/src/main/java/com/itextpdf/svg/css/impl/SvgStyleResolver.java
+++ b/svg/src/main/java/com/itextpdf/svg/css/impl/SvgStyleResolver.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/svg/src/main/java/com/itextpdf/svg/exceptions/SvgExceptionMessageConstant.java b/svg/src/main/java/com/itextpdf/svg/exceptions/SvgExceptionMessageConstant.java
index f9410b5a42..0f749639f2 100644
--- a/svg/src/main/java/com/itextpdf/svg/exceptions/SvgExceptionMessageConstant.java
+++ b/svg/src/main/java/com/itextpdf/svg/exceptions/SvgExceptionMessageConstant.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/svg/src/main/java/com/itextpdf/svg/exceptions/SvgProcessingException.java b/svg/src/main/java/com/itextpdf/svg/exceptions/SvgProcessingException.java
index b74c27c42a..7c644f9dc9 100644
--- a/svg/src/main/java/com/itextpdf/svg/exceptions/SvgProcessingException.java
+++ b/svg/src/main/java/com/itextpdf/svg/exceptions/SvgProcessingException.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/svg/src/main/java/com/itextpdf/svg/logs/SvgLogMessageConstant.java b/svg/src/main/java/com/itextpdf/svg/logs/SvgLogMessageConstant.java
index aab6cad0fa..c8da4d187e 100644
--- a/svg/src/main/java/com/itextpdf/svg/logs/SvgLogMessageConstant.java
+++ b/svg/src/main/java/com/itextpdf/svg/logs/SvgLogMessageConstant.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/svg/src/main/java/com/itextpdf/svg/processors/ISvgConverterProperties.java b/svg/src/main/java/com/itextpdf/svg/processors/ISvgConverterProperties.java
index 0b7330a8de..afb915ae32 100644
--- a/svg/src/main/java/com/itextpdf/svg/processors/ISvgConverterProperties.java
+++ b/svg/src/main/java/com/itextpdf/svg/processors/ISvgConverterProperties.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/svg/src/main/java/com/itextpdf/svg/processors/ISvgProcessor.java b/svg/src/main/java/com/itextpdf/svg/processors/ISvgProcessor.java
index e76a3efdf6..98e4667a71 100644
--- a/svg/src/main/java/com/itextpdf/svg/processors/ISvgProcessor.java
+++ b/svg/src/main/java/com/itextpdf/svg/processors/ISvgProcessor.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/svg/src/main/java/com/itextpdf/svg/processors/ISvgProcessorResult.java b/svg/src/main/java/com/itextpdf/svg/processors/ISvgProcessorResult.java
index 827e9800b4..0772e82e3b 100644
--- a/svg/src/main/java/com/itextpdf/svg/processors/ISvgProcessorResult.java
+++ b/svg/src/main/java/com/itextpdf/svg/processors/ISvgProcessorResult.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/svg/src/main/java/com/itextpdf/svg/processors/impl/DefaultSvgProcessor.java b/svg/src/main/java/com/itextpdf/svg/processors/impl/DefaultSvgProcessor.java
index 62999d88d7..ed71a82d16 100644
--- a/svg/src/main/java/com/itextpdf/svg/processors/impl/DefaultSvgProcessor.java
+++ b/svg/src/main/java/com/itextpdf/svg/processors/impl/DefaultSvgProcessor.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/svg/src/main/java/com/itextpdf/svg/processors/impl/ProcessorState.java b/svg/src/main/java/com/itextpdf/svg/processors/impl/ProcessorState.java
index 9cfe109fde..d18a59b176 100644
--- a/svg/src/main/java/com/itextpdf/svg/processors/impl/ProcessorState.java
+++ b/svg/src/main/java/com/itextpdf/svg/processors/impl/ProcessorState.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/svg/src/main/java/com/itextpdf/svg/processors/impl/SvgConverterProperties.java b/svg/src/main/java/com/itextpdf/svg/processors/impl/SvgConverterProperties.java
index 036bb641a9..ccda5a3467 100644
--- a/svg/src/main/java/com/itextpdf/svg/processors/impl/SvgConverterProperties.java
+++ b/svg/src/main/java/com/itextpdf/svg/processors/impl/SvgConverterProperties.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/svg/src/main/java/com/itextpdf/svg/processors/impl/SvgProcessorContext.java b/svg/src/main/java/com/itextpdf/svg/processors/impl/SvgProcessorContext.java
index 8675ba82bb..64f0d931f9 100644
--- a/svg/src/main/java/com/itextpdf/svg/processors/impl/SvgProcessorContext.java
+++ b/svg/src/main/java/com/itextpdf/svg/processors/impl/SvgProcessorContext.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/svg/src/main/java/com/itextpdf/svg/processors/impl/SvgProcessorResult.java b/svg/src/main/java/com/itextpdf/svg/processors/impl/SvgProcessorResult.java
index b5416dfa2d..e25844cf69 100644
--- a/svg/src/main/java/com/itextpdf/svg/processors/impl/SvgProcessorResult.java
+++ b/svg/src/main/java/com/itextpdf/svg/processors/impl/SvgProcessorResult.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/svg/src/main/java/com/itextpdf/svg/processors/impl/font/SvgFontProcessor.java b/svg/src/main/java/com/itextpdf/svg/processors/impl/font/SvgFontProcessor.java
index d8b163d6f1..3f601cf2b3 100644
--- a/svg/src/main/java/com/itextpdf/svg/processors/impl/font/SvgFontProcessor.java
+++ b/svg/src/main/java/com/itextpdf/svg/processors/impl/font/SvgFontProcessor.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/svg/src/main/java/com/itextpdf/svg/renderers/IBranchSvgNodeRenderer.java b/svg/src/main/java/com/itextpdf/svg/renderers/IBranchSvgNodeRenderer.java
index dec573c805..7ad231cec4 100644
--- a/svg/src/main/java/com/itextpdf/svg/renderers/IBranchSvgNodeRenderer.java
+++ b/svg/src/main/java/com/itextpdf/svg/renderers/IBranchSvgNodeRenderer.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/svg/src/main/java/com/itextpdf/svg/renderers/IMarkerCapable.java b/svg/src/main/java/com/itextpdf/svg/renderers/IMarkerCapable.java
index 9c2eadf8ed..2638b7cf47 100644
--- a/svg/src/main/java/com/itextpdf/svg/renderers/IMarkerCapable.java
+++ b/svg/src/main/java/com/itextpdf/svg/renderers/IMarkerCapable.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is offered under a commercial and under the AGPL license.
diff --git a/svg/src/main/java/com/itextpdf/svg/renderers/INoDrawSvgNodeRenderer.java b/svg/src/main/java/com/itextpdf/svg/renderers/INoDrawSvgNodeRenderer.java
index c5be858896..38ce4e5985 100644
--- a/svg/src/main/java/com/itextpdf/svg/renderers/INoDrawSvgNodeRenderer.java
+++ b/svg/src/main/java/com/itextpdf/svg/renderers/INoDrawSvgNodeRenderer.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is offered under a commercial and under the AGPL license.
diff --git a/svg/src/main/java/com/itextpdf/svg/renderers/ISvgNodeRenderer.java b/svg/src/main/java/com/itextpdf/svg/renderers/ISvgNodeRenderer.java
index 7aad96a35a..176195f285 100644
--- a/svg/src/main/java/com/itextpdf/svg/renderers/ISvgNodeRenderer.java
+++ b/svg/src/main/java/com/itextpdf/svg/renderers/ISvgNodeRenderer.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/svg/src/main/java/com/itextpdf/svg/renderers/ISvgPaintServer.java b/svg/src/main/java/com/itextpdf/svg/renderers/ISvgPaintServer.java
index efe6f2652c..50de2d814e 100644
--- a/svg/src/main/java/com/itextpdf/svg/renderers/ISvgPaintServer.java
+++ b/svg/src/main/java/com/itextpdf/svg/renderers/ISvgPaintServer.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/svg/src/main/java/com/itextpdf/svg/renderers/SvgDrawContext.java b/svg/src/main/java/com/itextpdf/svg/renderers/SvgDrawContext.java
index a00d7d2299..469f360972 100644
--- a/svg/src/main/java/com/itextpdf/svg/renderers/SvgDrawContext.java
+++ b/svg/src/main/java/com/itextpdf/svg/renderers/SvgDrawContext.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/svg/src/main/java/com/itextpdf/svg/renderers/factories/DefaultSvgNodeRendererFactory.java b/svg/src/main/java/com/itextpdf/svg/renderers/factories/DefaultSvgNodeRendererFactory.java
index bc2be78bb0..4475e068b7 100644
--- a/svg/src/main/java/com/itextpdf/svg/renderers/factories/DefaultSvgNodeRendererFactory.java
+++ b/svg/src/main/java/com/itextpdf/svg/renderers/factories/DefaultSvgNodeRendererFactory.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/svg/src/main/java/com/itextpdf/svg/renderers/factories/DefaultSvgNodeRendererMapper.java b/svg/src/main/java/com/itextpdf/svg/renderers/factories/DefaultSvgNodeRendererMapper.java
index 206421ddae..7abe2b31b9 100644
--- a/svg/src/main/java/com/itextpdf/svg/renderers/factories/DefaultSvgNodeRendererMapper.java
+++ b/svg/src/main/java/com/itextpdf/svg/renderers/factories/DefaultSvgNodeRendererMapper.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/svg/src/main/java/com/itextpdf/svg/renderers/factories/ISvgNodeRendererFactory.java b/svg/src/main/java/com/itextpdf/svg/renderers/factories/ISvgNodeRendererFactory.java
index 1a7b1cda13..770eb2153f 100644
--- a/svg/src/main/java/com/itextpdf/svg/renderers/factories/ISvgNodeRendererFactory.java
+++ b/svg/src/main/java/com/itextpdf/svg/renderers/factories/ISvgNodeRendererFactory.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/svg/src/main/java/com/itextpdf/svg/renderers/impl/AbstractBranchSvgNodeRenderer.java b/svg/src/main/java/com/itextpdf/svg/renderers/impl/AbstractBranchSvgNodeRenderer.java
index 911974df1e..19fe868a30 100644
--- a/svg/src/main/java/com/itextpdf/svg/renderers/impl/AbstractBranchSvgNodeRenderer.java
+++ b/svg/src/main/java/com/itextpdf/svg/renderers/impl/AbstractBranchSvgNodeRenderer.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/svg/src/main/java/com/itextpdf/svg/renderers/impl/AbstractContainerSvgNodeRenderer.java b/svg/src/main/java/com/itextpdf/svg/renderers/impl/AbstractContainerSvgNodeRenderer.java
index 381b9436ec..98c3baff29 100644
--- a/svg/src/main/java/com/itextpdf/svg/renderers/impl/AbstractContainerSvgNodeRenderer.java
+++ b/svg/src/main/java/com/itextpdf/svg/renderers/impl/AbstractContainerSvgNodeRenderer.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is offered under a commercial and under the AGPL license.
diff --git a/svg/src/main/java/com/itextpdf/svg/renderers/impl/AbstractGradientSvgNodeRenderer.java b/svg/src/main/java/com/itextpdf/svg/renderers/impl/AbstractGradientSvgNodeRenderer.java
index 4e3e6ace00..d66c49cca8 100644
--- a/svg/src/main/java/com/itextpdf/svg/renderers/impl/AbstractGradientSvgNodeRenderer.java
+++ b/svg/src/main/java/com/itextpdf/svg/renderers/impl/AbstractGradientSvgNodeRenderer.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is offered under a commercial and under the AGPL license.
diff --git a/svg/src/main/java/com/itextpdf/svg/renderers/impl/AbstractSvgNodeRenderer.java b/svg/src/main/java/com/itextpdf/svg/renderers/impl/AbstractSvgNodeRenderer.java
index e1de79e3b0..bc2e9228e9 100644
--- a/svg/src/main/java/com/itextpdf/svg/renderers/impl/AbstractSvgNodeRenderer.java
+++ b/svg/src/main/java/com/itextpdf/svg/renderers/impl/AbstractSvgNodeRenderer.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/svg/src/main/java/com/itextpdf/svg/renderers/impl/CircleSvgNodeRenderer.java b/svg/src/main/java/com/itextpdf/svg/renderers/impl/CircleSvgNodeRenderer.java
index 231b1b636a..9d96ce4733 100644
--- a/svg/src/main/java/com/itextpdf/svg/renderers/impl/CircleSvgNodeRenderer.java
+++ b/svg/src/main/java/com/itextpdf/svg/renderers/impl/CircleSvgNodeRenderer.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/svg/src/main/java/com/itextpdf/svg/renderers/impl/ClipPathSvgNodeRenderer.java b/svg/src/main/java/com/itextpdf/svg/renderers/impl/ClipPathSvgNodeRenderer.java
index a653044490..c9b41fb119 100644
--- a/svg/src/main/java/com/itextpdf/svg/renderers/impl/ClipPathSvgNodeRenderer.java
+++ b/svg/src/main/java/com/itextpdf/svg/renderers/impl/ClipPathSvgNodeRenderer.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/svg/src/main/java/com/itextpdf/svg/renderers/impl/DefsSvgNodeRenderer.java b/svg/src/main/java/com/itextpdf/svg/renderers/impl/DefsSvgNodeRenderer.java
index edf8451b01..a749b74a3a 100644
--- a/svg/src/main/java/com/itextpdf/svg/renderers/impl/DefsSvgNodeRenderer.java
+++ b/svg/src/main/java/com/itextpdf/svg/renderers/impl/DefsSvgNodeRenderer.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is offered under a commercial and under the AGPL license.
diff --git a/svg/src/main/java/com/itextpdf/svg/renderers/impl/EllipseSvgNodeRenderer.java b/svg/src/main/java/com/itextpdf/svg/renderers/impl/EllipseSvgNodeRenderer.java
index 47425ea423..c6df0a5708 100644
--- a/svg/src/main/java/com/itextpdf/svg/renderers/impl/EllipseSvgNodeRenderer.java
+++ b/svg/src/main/java/com/itextpdf/svg/renderers/impl/EllipseSvgNodeRenderer.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/svg/src/main/java/com/itextpdf/svg/renderers/impl/GroupSvgNodeRenderer.java b/svg/src/main/java/com/itextpdf/svg/renderers/impl/GroupSvgNodeRenderer.java
index 7fb04813e6..286f89e7be 100644
--- a/svg/src/main/java/com/itextpdf/svg/renderers/impl/GroupSvgNodeRenderer.java
+++ b/svg/src/main/java/com/itextpdf/svg/renderers/impl/GroupSvgNodeRenderer.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/svg/src/main/java/com/itextpdf/svg/renderers/impl/ISvgTextNodeRenderer.java b/svg/src/main/java/com/itextpdf/svg/renderers/impl/ISvgTextNodeRenderer.java
index dcd3d94b31..b3094d5df2 100644
--- a/svg/src/main/java/com/itextpdf/svg/renderers/impl/ISvgTextNodeRenderer.java
+++ b/svg/src/main/java/com/itextpdf/svg/renderers/impl/ISvgTextNodeRenderer.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/svg/src/main/java/com/itextpdf/svg/renderers/impl/ImageSvgNodeRenderer.java b/svg/src/main/java/com/itextpdf/svg/renderers/impl/ImageSvgNodeRenderer.java
index 62d5c45b16..1695ce5490 100644
--- a/svg/src/main/java/com/itextpdf/svg/renderers/impl/ImageSvgNodeRenderer.java
+++ b/svg/src/main/java/com/itextpdf/svg/renderers/impl/ImageSvgNodeRenderer.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/svg/src/main/java/com/itextpdf/svg/renderers/impl/LineSvgNodeRenderer.java b/svg/src/main/java/com/itextpdf/svg/renderers/impl/LineSvgNodeRenderer.java
index 4ea53f5494..41ec9ef73a 100644
--- a/svg/src/main/java/com/itextpdf/svg/renderers/impl/LineSvgNodeRenderer.java
+++ b/svg/src/main/java/com/itextpdf/svg/renderers/impl/LineSvgNodeRenderer.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/svg/src/main/java/com/itextpdf/svg/renderers/impl/LinearGradientSvgNodeRenderer.java b/svg/src/main/java/com/itextpdf/svg/renderers/impl/LinearGradientSvgNodeRenderer.java
index 129112cfb5..c845b71a82 100644
--- a/svg/src/main/java/com/itextpdf/svg/renderers/impl/LinearGradientSvgNodeRenderer.java
+++ b/svg/src/main/java/com/itextpdf/svg/renderers/impl/LinearGradientSvgNodeRenderer.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is offered under a commercial and under the AGPL license.
diff --git a/svg/src/main/java/com/itextpdf/svg/renderers/impl/MarkerSvgNodeRenderer.java b/svg/src/main/java/com/itextpdf/svg/renderers/impl/MarkerSvgNodeRenderer.java
index acdfecc9a9..1a97ff982b 100644
--- a/svg/src/main/java/com/itextpdf/svg/renderers/impl/MarkerSvgNodeRenderer.java
+++ b/svg/src/main/java/com/itextpdf/svg/renderers/impl/MarkerSvgNodeRenderer.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is offered under a commercial and under the AGPL license.
diff --git a/svg/src/main/java/com/itextpdf/svg/renderers/impl/PathSvgNodeRenderer.java b/svg/src/main/java/com/itextpdf/svg/renderers/impl/PathSvgNodeRenderer.java
index 1b8db55d56..c74f4bbf68 100644
--- a/svg/src/main/java/com/itextpdf/svg/renderers/impl/PathSvgNodeRenderer.java
+++ b/svg/src/main/java/com/itextpdf/svg/renderers/impl/PathSvgNodeRenderer.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/svg/src/main/java/com/itextpdf/svg/renderers/impl/PatternSvgNodeRenderer.java b/svg/src/main/java/com/itextpdf/svg/renderers/impl/PatternSvgNodeRenderer.java
index 3be5f4925e..abbd4422ae 100644
--- a/svg/src/main/java/com/itextpdf/svg/renderers/impl/PatternSvgNodeRenderer.java
+++ b/svg/src/main/java/com/itextpdf/svg/renderers/impl/PatternSvgNodeRenderer.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/svg/src/main/java/com/itextpdf/svg/renderers/impl/PdfRootSvgNodeRenderer.java b/svg/src/main/java/com/itextpdf/svg/renderers/impl/PdfRootSvgNodeRenderer.java
index 1dee4ba529..872c78b2d2 100644
--- a/svg/src/main/java/com/itextpdf/svg/renderers/impl/PdfRootSvgNodeRenderer.java
+++ b/svg/src/main/java/com/itextpdf/svg/renderers/impl/PdfRootSvgNodeRenderer.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/svg/src/main/java/com/itextpdf/svg/renderers/impl/PolygonSvgNodeRenderer.java b/svg/src/main/java/com/itextpdf/svg/renderers/impl/PolygonSvgNodeRenderer.java
index d6fda58087..35c43156ba 100644
--- a/svg/src/main/java/com/itextpdf/svg/renderers/impl/PolygonSvgNodeRenderer.java
+++ b/svg/src/main/java/com/itextpdf/svg/renderers/impl/PolygonSvgNodeRenderer.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/svg/src/main/java/com/itextpdf/svg/renderers/impl/PolylineSvgNodeRenderer.java b/svg/src/main/java/com/itextpdf/svg/renderers/impl/PolylineSvgNodeRenderer.java
index 0b2eb265d7..314f4735d6 100644
--- a/svg/src/main/java/com/itextpdf/svg/renderers/impl/PolylineSvgNodeRenderer.java
+++ b/svg/src/main/java/com/itextpdf/svg/renderers/impl/PolylineSvgNodeRenderer.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/svg/src/main/java/com/itextpdf/svg/renderers/impl/RectangleSvgNodeRenderer.java b/svg/src/main/java/com/itextpdf/svg/renderers/impl/RectangleSvgNodeRenderer.java
index f3efc39fd2..022013f0d0 100644
--- a/svg/src/main/java/com/itextpdf/svg/renderers/impl/RectangleSvgNodeRenderer.java
+++ b/svg/src/main/java/com/itextpdf/svg/renderers/impl/RectangleSvgNodeRenderer.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/svg/src/main/java/com/itextpdf/svg/renderers/impl/StopSvgNodeRenderer.java b/svg/src/main/java/com/itextpdf/svg/renderers/impl/StopSvgNodeRenderer.java
index 13308a3837..376fdb5603 100644
--- a/svg/src/main/java/com/itextpdf/svg/renderers/impl/StopSvgNodeRenderer.java
+++ b/svg/src/main/java/com/itextpdf/svg/renderers/impl/StopSvgNodeRenderer.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is offered under a commercial and under the AGPL license.
diff --git a/svg/src/main/java/com/itextpdf/svg/renderers/impl/SvgTagSvgNodeRenderer.java b/svg/src/main/java/com/itextpdf/svg/renderers/impl/SvgTagSvgNodeRenderer.java
index f045fd8799..a54223735c 100644
--- a/svg/src/main/java/com/itextpdf/svg/renderers/impl/SvgTagSvgNodeRenderer.java
+++ b/svg/src/main/java/com/itextpdf/svg/renderers/impl/SvgTagSvgNodeRenderer.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/svg/src/main/java/com/itextpdf/svg/renderers/impl/SymbolSvgNodeRenderer.java b/svg/src/main/java/com/itextpdf/svg/renderers/impl/SymbolSvgNodeRenderer.java
index 3ad768e367..b2fd182dd1 100644
--- a/svg/src/main/java/com/itextpdf/svg/renderers/impl/SymbolSvgNodeRenderer.java
+++ b/svg/src/main/java/com/itextpdf/svg/renderers/impl/SymbolSvgNodeRenderer.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is offered under a commercial and under the AGPL license.
diff --git a/svg/src/main/java/com/itextpdf/svg/renderers/impl/TextLeafSvgNodeRenderer.java b/svg/src/main/java/com/itextpdf/svg/renderers/impl/TextLeafSvgNodeRenderer.java
index 3f4f77f8f4..fd674c7c12 100644
--- a/svg/src/main/java/com/itextpdf/svg/renderers/impl/TextLeafSvgNodeRenderer.java
+++ b/svg/src/main/java/com/itextpdf/svg/renderers/impl/TextLeafSvgNodeRenderer.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/svg/src/main/java/com/itextpdf/svg/renderers/impl/TextSvgBranchRenderer.java b/svg/src/main/java/com/itextpdf/svg/renderers/impl/TextSvgBranchRenderer.java
index c2a17b037a..48d34a39cb 100644
--- a/svg/src/main/java/com/itextpdf/svg/renderers/impl/TextSvgBranchRenderer.java
+++ b/svg/src/main/java/com/itextpdf/svg/renderers/impl/TextSvgBranchRenderer.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/svg/src/main/java/com/itextpdf/svg/renderers/impl/TextSvgTSpanBranchRenderer.java b/svg/src/main/java/com/itextpdf/svg/renderers/impl/TextSvgTSpanBranchRenderer.java
index bebd22db45..6e3ba6d4d5 100644
--- a/svg/src/main/java/com/itextpdf/svg/renderers/impl/TextSvgTSpanBranchRenderer.java
+++ b/svg/src/main/java/com/itextpdf/svg/renderers/impl/TextSvgTSpanBranchRenderer.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/svg/src/main/java/com/itextpdf/svg/renderers/impl/UseSvgNodeRenderer.java b/svg/src/main/java/com/itextpdf/svg/renderers/impl/UseSvgNodeRenderer.java
index 848b6b85aa..a18f82cffb 100644
--- a/svg/src/main/java/com/itextpdf/svg/renderers/impl/UseSvgNodeRenderer.java
+++ b/svg/src/main/java/com/itextpdf/svg/renderers/impl/UseSvgNodeRenderer.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/svg/src/main/java/com/itextpdf/svg/renderers/path/IPathShape.java b/svg/src/main/java/com/itextpdf/svg/renderers/path/IPathShape.java
index 7220ff01d4..bac049af73 100644
--- a/svg/src/main/java/com/itextpdf/svg/renderers/path/IPathShape.java
+++ b/svg/src/main/java/com/itextpdf/svg/renderers/path/IPathShape.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/svg/src/main/java/com/itextpdf/svg/renderers/path/IPathShapeMapper.java b/svg/src/main/java/com/itextpdf/svg/renderers/path/IPathShapeMapper.java
index 279b84d94d..a45e2ece91 100644
--- a/svg/src/main/java/com/itextpdf/svg/renderers/path/IPathShapeMapper.java
+++ b/svg/src/main/java/com/itextpdf/svg/renderers/path/IPathShapeMapper.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/svg/src/main/java/com/itextpdf/svg/renderers/path/SvgPathShapeFactory.java b/svg/src/main/java/com/itextpdf/svg/renderers/path/SvgPathShapeFactory.java
index 961394c212..6bfcff44dc 100644
--- a/svg/src/main/java/com/itextpdf/svg/renderers/path/SvgPathShapeFactory.java
+++ b/svg/src/main/java/com/itextpdf/svg/renderers/path/SvgPathShapeFactory.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/svg/src/main/java/com/itextpdf/svg/renderers/path/impl/AbstractPathShape.java b/svg/src/main/java/com/itextpdf/svg/renderers/path/impl/AbstractPathShape.java
index 3ae8db46af..b3de215c5f 100644
--- a/svg/src/main/java/com/itextpdf/svg/renderers/path/impl/AbstractPathShape.java
+++ b/svg/src/main/java/com/itextpdf/svg/renderers/path/impl/AbstractPathShape.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/svg/src/main/java/com/itextpdf/svg/renderers/path/impl/ClosePath.java b/svg/src/main/java/com/itextpdf/svg/renderers/path/impl/ClosePath.java
index 06a7effb5f..7d2a9f44cd 100644
--- a/svg/src/main/java/com/itextpdf/svg/renderers/path/impl/ClosePath.java
+++ b/svg/src/main/java/com/itextpdf/svg/renderers/path/impl/ClosePath.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/svg/src/main/java/com/itextpdf/svg/renderers/path/impl/CurveTo.java b/svg/src/main/java/com/itextpdf/svg/renderers/path/impl/CurveTo.java
index 5d15c4b08e..8931dad9e8 100644
--- a/svg/src/main/java/com/itextpdf/svg/renderers/path/impl/CurveTo.java
+++ b/svg/src/main/java/com/itextpdf/svg/renderers/path/impl/CurveTo.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/svg/src/main/java/com/itextpdf/svg/renderers/path/impl/EllipticalCurveTo.java b/svg/src/main/java/com/itextpdf/svg/renderers/path/impl/EllipticalCurveTo.java
index 4c1e88c635..d7ef53b6d2 100644
--- a/svg/src/main/java/com/itextpdf/svg/renderers/path/impl/EllipticalCurveTo.java
+++ b/svg/src/main/java/com/itextpdf/svg/renderers/path/impl/EllipticalCurveTo.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/svg/src/main/java/com/itextpdf/svg/renderers/path/impl/HorizontalLineTo.java b/svg/src/main/java/com/itextpdf/svg/renderers/path/impl/HorizontalLineTo.java
index 0af05e2e42..95006451c2 100644
--- a/svg/src/main/java/com/itextpdf/svg/renderers/path/impl/HorizontalLineTo.java
+++ b/svg/src/main/java/com/itextpdf/svg/renderers/path/impl/HorizontalLineTo.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/svg/src/main/java/com/itextpdf/svg/renderers/path/impl/IControlPointCurve.java b/svg/src/main/java/com/itextpdf/svg/renderers/path/impl/IControlPointCurve.java
index 7f6bd314bc..753fa477f8 100644
--- a/svg/src/main/java/com/itextpdf/svg/renderers/path/impl/IControlPointCurve.java
+++ b/svg/src/main/java/com/itextpdf/svg/renderers/path/impl/IControlPointCurve.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/svg/src/main/java/com/itextpdf/svg/renderers/path/impl/IOperatorConverter.java b/svg/src/main/java/com/itextpdf/svg/renderers/path/impl/IOperatorConverter.java
index 039e9b5f80..510be528b3 100644
--- a/svg/src/main/java/com/itextpdf/svg/renderers/path/impl/IOperatorConverter.java
+++ b/svg/src/main/java/com/itextpdf/svg/renderers/path/impl/IOperatorConverter.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/svg/src/main/java/com/itextpdf/svg/renderers/path/impl/LineTo.java b/svg/src/main/java/com/itextpdf/svg/renderers/path/impl/LineTo.java
index 93eed37fcf..a34a8f7429 100644
--- a/svg/src/main/java/com/itextpdf/svg/renderers/path/impl/LineTo.java
+++ b/svg/src/main/java/com/itextpdf/svg/renderers/path/impl/LineTo.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/svg/src/main/java/com/itextpdf/svg/renderers/path/impl/MoveTo.java b/svg/src/main/java/com/itextpdf/svg/renderers/path/impl/MoveTo.java
index 3c33b0f79d..2f513a4def 100644
--- a/svg/src/main/java/com/itextpdf/svg/renderers/path/impl/MoveTo.java
+++ b/svg/src/main/java/com/itextpdf/svg/renderers/path/impl/MoveTo.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/svg/src/main/java/com/itextpdf/svg/renderers/path/impl/PathShapeMapper.java b/svg/src/main/java/com/itextpdf/svg/renderers/path/impl/PathShapeMapper.java
index 0d3eaf75a7..f3c934f519 100644
--- a/svg/src/main/java/com/itextpdf/svg/renderers/path/impl/PathShapeMapper.java
+++ b/svg/src/main/java/com/itextpdf/svg/renderers/path/impl/PathShapeMapper.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/svg/src/main/java/com/itextpdf/svg/renderers/path/impl/QuadraticCurveTo.java b/svg/src/main/java/com/itextpdf/svg/renderers/path/impl/QuadraticCurveTo.java
index 10470f5fbc..df131c194b 100644
--- a/svg/src/main/java/com/itextpdf/svg/renderers/path/impl/QuadraticCurveTo.java
+++ b/svg/src/main/java/com/itextpdf/svg/renderers/path/impl/QuadraticCurveTo.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/svg/src/main/java/com/itextpdf/svg/renderers/path/impl/QuadraticSmoothCurveTo.java b/svg/src/main/java/com/itextpdf/svg/renderers/path/impl/QuadraticSmoothCurveTo.java
index b4ee06137b..55010b486d 100644
--- a/svg/src/main/java/com/itextpdf/svg/renderers/path/impl/QuadraticSmoothCurveTo.java
+++ b/svg/src/main/java/com/itextpdf/svg/renderers/path/impl/QuadraticSmoothCurveTo.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/svg/src/main/java/com/itextpdf/svg/renderers/path/impl/SmoothSCurveTo.java b/svg/src/main/java/com/itextpdf/svg/renderers/path/impl/SmoothSCurveTo.java
index b81d9849b7..b4b19fe64d 100644
--- a/svg/src/main/java/com/itextpdf/svg/renderers/path/impl/SmoothSCurveTo.java
+++ b/svg/src/main/java/com/itextpdf/svg/renderers/path/impl/SmoothSCurveTo.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/svg/src/main/java/com/itextpdf/svg/renderers/path/impl/VerticalLineTo.java b/svg/src/main/java/com/itextpdf/svg/renderers/path/impl/VerticalLineTo.java
index 2d832fa242..649b6ee061 100644
--- a/svg/src/main/java/com/itextpdf/svg/renderers/path/impl/VerticalLineTo.java
+++ b/svg/src/main/java/com/itextpdf/svg/renderers/path/impl/VerticalLineTo.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/svg/src/main/java/com/itextpdf/svg/utils/DrawUtils.java b/svg/src/main/java/com/itextpdf/svg/utils/DrawUtils.java
index 3ce61f0ba8..8b9011a4c5 100644
--- a/svg/src/main/java/com/itextpdf/svg/utils/DrawUtils.java
+++ b/svg/src/main/java/com/itextpdf/svg/utils/DrawUtils.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/svg/src/main/java/com/itextpdf/svg/utils/SvgCoordinateUtils.java b/svg/src/main/java/com/itextpdf/svg/utils/SvgCoordinateUtils.java
index 63829758ae..8a1929b911 100644
--- a/svg/src/main/java/com/itextpdf/svg/utils/SvgCoordinateUtils.java
+++ b/svg/src/main/java/com/itextpdf/svg/utils/SvgCoordinateUtils.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/svg/src/main/java/com/itextpdf/svg/utils/SvgCssUtils.java b/svg/src/main/java/com/itextpdf/svg/utils/SvgCssUtils.java
index 9426c57f73..50dbcaa8c3 100644
--- a/svg/src/main/java/com/itextpdf/svg/utils/SvgCssUtils.java
+++ b/svg/src/main/java/com/itextpdf/svg/utils/SvgCssUtils.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/svg/src/main/java/com/itextpdf/svg/utils/SvgTextUtil.java b/svg/src/main/java/com/itextpdf/svg/utils/SvgTextUtil.java
index 35f2140fad..506fbf9afe 100644
--- a/svg/src/main/java/com/itextpdf/svg/utils/SvgTextUtil.java
+++ b/svg/src/main/java/com/itextpdf/svg/utils/SvgTextUtil.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/svg/src/main/java/com/itextpdf/svg/utils/TextRectangle.java b/svg/src/main/java/com/itextpdf/svg/utils/TextRectangle.java
index f2fbc9bea9..627964a6ec 100644
--- a/svg/src/main/java/com/itextpdf/svg/utils/TextRectangle.java
+++ b/svg/src/main/java/com/itextpdf/svg/utils/TextRectangle.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is offered under a commercial and under the AGPL license.
diff --git a/svg/src/main/java/com/itextpdf/svg/utils/TransformUtils.java b/svg/src/main/java/com/itextpdf/svg/utils/TransformUtils.java
index 63d43572c0..20ef111517 100644
--- a/svg/src/main/java/com/itextpdf/svg/utils/TransformUtils.java
+++ b/svg/src/main/java/com/itextpdf/svg/utils/TransformUtils.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/svg/src/test/java/com/itextpdf/svg/converter/SvgConverterIntegrationTest.java b/svg/src/test/java/com/itextpdf/svg/converter/SvgConverterIntegrationTest.java
index 5e50be3614..445953214c 100644
--- a/svg/src/test/java/com/itextpdf/svg/converter/SvgConverterIntegrationTest.java
+++ b/svg/src/test/java/com/itextpdf/svg/converter/SvgConverterIntegrationTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/svg/src/test/java/com/itextpdf/svg/converter/SvgConverterUnitNullTest.java b/svg/src/test/java/com/itextpdf/svg/converter/SvgConverterUnitNullTest.java
index 41f6756d8a..982c72ba03 100644
--- a/svg/src/test/java/com/itextpdf/svg/converter/SvgConverterUnitNullTest.java
+++ b/svg/src/test/java/com/itextpdf/svg/converter/SvgConverterUnitNullTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/svg/src/test/java/com/itextpdf/svg/converter/SvgConverterUnitTest.java b/svg/src/test/java/com/itextpdf/svg/converter/SvgConverterUnitTest.java
index 296e606b7a..48030106a0 100644
--- a/svg/src/test/java/com/itextpdf/svg/converter/SvgConverterUnitTest.java
+++ b/svg/src/test/java/com/itextpdf/svg/converter/SvgConverterUnitTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/svg/src/test/java/com/itextpdf/svg/css/AttributesRelativeUnitTest.java b/svg/src/test/java/com/itextpdf/svg/css/AttributesRelativeUnitTest.java
index 41e086432b..8fe86a6924 100644
--- a/svg/src/test/java/com/itextpdf/svg/css/AttributesRelativeUnitTest.java
+++ b/svg/src/test/java/com/itextpdf/svg/css/AttributesRelativeUnitTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is offered under a commercial and under the AGPL license.
diff --git a/svg/src/test/java/com/itextpdf/svg/css/DefaultStyleInheritanceIntegrationTest.java b/svg/src/test/java/com/itextpdf/svg/css/DefaultStyleInheritanceIntegrationTest.java
index 2b5dab6548..83828ff2db 100644
--- a/svg/src/test/java/com/itextpdf/svg/css/DefaultStyleInheritanceIntegrationTest.java
+++ b/svg/src/test/java/com/itextpdf/svg/css/DefaultStyleInheritanceIntegrationTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/svg/src/test/java/com/itextpdf/svg/css/DefaultStylesTest.java b/svg/src/test/java/com/itextpdf/svg/css/DefaultStylesTest.java
index ca2b169137..c29678c827 100644
--- a/svg/src/test/java/com/itextpdf/svg/css/DefaultStylesTest.java
+++ b/svg/src/test/java/com/itextpdf/svg/css/DefaultStylesTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/svg/src/test/java/com/itextpdf/svg/css/FontRelativeUnitTest.java b/svg/src/test/java/com/itextpdf/svg/css/FontRelativeUnitTest.java
index 144b5804c0..9ef9a7fec4 100644
--- a/svg/src/test/java/com/itextpdf/svg/css/FontRelativeUnitTest.java
+++ b/svg/src/test/java/com/itextpdf/svg/css/FontRelativeUnitTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is offered under a commercial and under the AGPL license.
diff --git a/svg/src/test/java/com/itextpdf/svg/css/SvgStyleResolverIntegrationTest.java b/svg/src/test/java/com/itextpdf/svg/css/SvgStyleResolverIntegrationTest.java
index a37266d8f9..bebd032243 100644
--- a/svg/src/test/java/com/itextpdf/svg/css/SvgStyleResolverIntegrationTest.java
+++ b/svg/src/test/java/com/itextpdf/svg/css/SvgStyleResolverIntegrationTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/svg/src/test/java/com/itextpdf/svg/css/SvgStyleResolverTest.java b/svg/src/test/java/com/itextpdf/svg/css/SvgStyleResolverTest.java
index fc0d1a4ff8..f3194af1ab 100644
--- a/svg/src/test/java/com/itextpdf/svg/css/SvgStyleResolverTest.java
+++ b/svg/src/test/java/com/itextpdf/svg/css/SvgStyleResolverTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
@@ -186,9 +186,21 @@ public void svgCssResolverXlinkTest() {
Map attr = sr.resolveStyles(node, new SvgCssContext());
String fileName = baseUri + "itis.jpg";
- String expectedURL = UrlUtil.toNormalizedURI(fileName).toString();
+ final String expectedUrl = UrlUtil.toNormalizedURI(fileName).toString();
+ String expectedUrlAnotherValidVersion;
- Assert.assertEquals(expectedURL, attr.get("xlink:href"));
+ if (expectedUrl.startsWith("file:///")) {
+ expectedUrlAnotherValidVersion = "file:/" + expectedUrl.substring("file:///".length());
+ } else if (expectedUrl.startsWith("file:/")) {
+ expectedUrlAnotherValidVersion = "file:///" + expectedUrl.substring("file:/".length());
+ } else {
+ expectedUrlAnotherValidVersion = expectedUrl;
+ }
+
+ final String url = attr.get("xlink:href");
+
+ // Both variants(namely with triple and single slashes) are valid.
+ Assert.assertTrue(expectedUrl.equals(url) || expectedUrlAnotherValidVersion.equals(url));
}
@Test
diff --git a/svg/src/test/java/com/itextpdf/svg/css/XLinkTest.java b/svg/src/test/java/com/itextpdf/svg/css/XLinkTest.java
index d888be1d21..357e71fdc1 100644
--- a/svg/src/test/java/com/itextpdf/svg/css/XLinkTest.java
+++ b/svg/src/test/java/com/itextpdf/svg/css/XLinkTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/svg/src/test/java/com/itextpdf/svg/css/impl/SvgNodeRendererInheritanceResolverUnitTest.java b/svg/src/test/java/com/itextpdf/svg/css/impl/SvgNodeRendererInheritanceResolverUnitTest.java
index 5805ea6f0d..f3a0ae0b16 100644
--- a/svg/src/test/java/com/itextpdf/svg/css/impl/SvgNodeRendererInheritanceResolverUnitTest.java
+++ b/svg/src/test/java/com/itextpdf/svg/css/impl/SvgNodeRendererInheritanceResolverUnitTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/svg/src/test/java/com/itextpdf/svg/customization/CustomizeTextLeafSvgNodeRendererTest.java b/svg/src/test/java/com/itextpdf/svg/customization/CustomizeTextLeafSvgNodeRendererTest.java
index e799177cbd..5d29e8e68d 100644
--- a/svg/src/test/java/com/itextpdf/svg/customization/CustomizeTextLeafSvgNodeRendererTest.java
+++ b/svg/src/test/java/com/itextpdf/svg/customization/CustomizeTextLeafSvgNodeRendererTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is offered under a commercial and under the AGPL license.
diff --git a/svg/src/test/java/com/itextpdf/svg/dummy/css/impl/DummyCssResolver.java b/svg/src/test/java/com/itextpdf/svg/dummy/css/impl/DummyCssResolver.java
index 2b6d7a9839..696bd11f9b 100644
--- a/svg/src/test/java/com/itextpdf/svg/dummy/css/impl/DummyCssResolver.java
+++ b/svg/src/test/java/com/itextpdf/svg/dummy/css/impl/DummyCssResolver.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/svg/src/test/java/com/itextpdf/svg/dummy/factories/DummySvgNodeFactory.java b/svg/src/test/java/com/itextpdf/svg/dummy/factories/DummySvgNodeFactory.java
index efd9c61eda..f5410abbe1 100644
--- a/svg/src/test/java/com/itextpdf/svg/dummy/factories/DummySvgNodeFactory.java
+++ b/svg/src/test/java/com/itextpdf/svg/dummy/factories/DummySvgNodeFactory.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/svg/src/test/java/com/itextpdf/svg/dummy/processors/impl/DummySvgConverterProperties.java b/svg/src/test/java/com/itextpdf/svg/dummy/processors/impl/DummySvgConverterProperties.java
index f25fb165db..714f97b6d7 100644
--- a/svg/src/test/java/com/itextpdf/svg/dummy/processors/impl/DummySvgConverterProperties.java
+++ b/svg/src/test/java/com/itextpdf/svg/dummy/processors/impl/DummySvgConverterProperties.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/svg/src/test/java/com/itextpdf/svg/dummy/renderers/impl/DummyArgumentedConstructorSvgNodeRenderer.java b/svg/src/test/java/com/itextpdf/svg/dummy/renderers/impl/DummyArgumentedConstructorSvgNodeRenderer.java
index 398fef01a7..0bdc6fec67 100644
--- a/svg/src/test/java/com/itextpdf/svg/dummy/renderers/impl/DummyArgumentedConstructorSvgNodeRenderer.java
+++ b/svg/src/test/java/com/itextpdf/svg/dummy/renderers/impl/DummyArgumentedConstructorSvgNodeRenderer.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/svg/src/test/java/com/itextpdf/svg/dummy/renderers/impl/DummyBranchSvgNodeRenderer.java b/svg/src/test/java/com/itextpdf/svg/dummy/renderers/impl/DummyBranchSvgNodeRenderer.java
index 854f88a5b4..a0cadad58a 100644
--- a/svg/src/test/java/com/itextpdf/svg/dummy/renderers/impl/DummyBranchSvgNodeRenderer.java
+++ b/svg/src/test/java/com/itextpdf/svg/dummy/renderers/impl/DummyBranchSvgNodeRenderer.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/svg/src/test/java/com/itextpdf/svg/dummy/renderers/impl/DummyProcessableSvgNodeRenderer.java b/svg/src/test/java/com/itextpdf/svg/dummy/renderers/impl/DummyProcessableSvgNodeRenderer.java
index ea5874c9a2..57b42eb035 100644
--- a/svg/src/test/java/com/itextpdf/svg/dummy/renderers/impl/DummyProcessableSvgNodeRenderer.java
+++ b/svg/src/test/java/com/itextpdf/svg/dummy/renderers/impl/DummyProcessableSvgNodeRenderer.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/svg/src/test/java/com/itextpdf/svg/dummy/renderers/impl/DummySvgNodeRenderer.java b/svg/src/test/java/com/itextpdf/svg/dummy/renderers/impl/DummySvgNodeRenderer.java
index d587defb78..a264c2aa64 100644
--- a/svg/src/test/java/com/itextpdf/svg/dummy/renderers/impl/DummySvgNodeRenderer.java
+++ b/svg/src/test/java/com/itextpdf/svg/dummy/renderers/impl/DummySvgNodeRenderer.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/svg/src/test/java/com/itextpdf/svg/dummy/sdk/ExceptionInputStream.java b/svg/src/test/java/com/itextpdf/svg/dummy/sdk/ExceptionInputStream.java
index b02453c31e..0cad48b12a 100644
--- a/svg/src/test/java/com/itextpdf/svg/dummy/sdk/ExceptionInputStream.java
+++ b/svg/src/test/java/com/itextpdf/svg/dummy/sdk/ExceptionInputStream.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/svg/src/test/java/com/itextpdf/svg/googlecharts/ColumnChartsTest.java b/svg/src/test/java/com/itextpdf/svg/googlecharts/ColumnChartsTest.java
index fda4c304ba..582ee8d5ea 100644
--- a/svg/src/test/java/com/itextpdf/svg/googlecharts/ColumnChartsTest.java
+++ b/svg/src/test/java/com/itextpdf/svg/googlecharts/ColumnChartsTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/svg/src/test/java/com/itextpdf/svg/googlecharts/GanttChartsTest.java b/svg/src/test/java/com/itextpdf/svg/googlecharts/GanttChartsTest.java
index 2defea42a2..068b2466ed 100644
--- a/svg/src/test/java/com/itextpdf/svg/googlecharts/GanttChartsTest.java
+++ b/svg/src/test/java/com/itextpdf/svg/googlecharts/GanttChartsTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/svg/src/test/java/com/itextpdf/svg/googlecharts/GaugeChartsTest.java b/svg/src/test/java/com/itextpdf/svg/googlecharts/GaugeChartsTest.java
index 6009ec99b5..d1ef1ecd3b 100644
--- a/svg/src/test/java/com/itextpdf/svg/googlecharts/GaugeChartsTest.java
+++ b/svg/src/test/java/com/itextpdf/svg/googlecharts/GaugeChartsTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/svg/src/test/java/com/itextpdf/svg/googlecharts/GeoChartsTest.java b/svg/src/test/java/com/itextpdf/svg/googlecharts/GeoChartsTest.java
index 277e846b1c..01a7b7312b 100644
--- a/svg/src/test/java/com/itextpdf/svg/googlecharts/GeoChartsTest.java
+++ b/svg/src/test/java/com/itextpdf/svg/googlecharts/GeoChartsTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/svg/src/test/java/com/itextpdf/svg/googlecharts/GoogleChartsTest.java b/svg/src/test/java/com/itextpdf/svg/googlecharts/GoogleChartsTest.java
index fdb0944ef0..586dced508 100644
--- a/svg/src/test/java/com/itextpdf/svg/googlecharts/GoogleChartsTest.java
+++ b/svg/src/test/java/com/itextpdf/svg/googlecharts/GoogleChartsTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/svg/src/test/java/com/itextpdf/svg/googlecharts/IntervalsChartsTest.java b/svg/src/test/java/com/itextpdf/svg/googlecharts/IntervalsChartsTest.java
index ad3829136d..fe3005d348 100644
--- a/svg/src/test/java/com/itextpdf/svg/googlecharts/IntervalsChartsTest.java
+++ b/svg/src/test/java/com/itextpdf/svg/googlecharts/IntervalsChartsTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/svg/src/test/java/com/itextpdf/svg/googlecharts/LineChartsTest.java b/svg/src/test/java/com/itextpdf/svg/googlecharts/LineChartsTest.java
index 816decaf2b..d154a8eaa5 100644
--- a/svg/src/test/java/com/itextpdf/svg/googlecharts/LineChartsTest.java
+++ b/svg/src/test/java/com/itextpdf/svg/googlecharts/LineChartsTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/svg/src/test/java/com/itextpdf/svg/googlecharts/PieChartsTest.java b/svg/src/test/java/com/itextpdf/svg/googlecharts/PieChartsTest.java
index d252d72da8..6555fbcfe8 100644
--- a/svg/src/test/java/com/itextpdf/svg/googlecharts/PieChartsTest.java
+++ b/svg/src/test/java/com/itextpdf/svg/googlecharts/PieChartsTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/svg/src/test/java/com/itextpdf/svg/googlecharts/SankeyChartsTest.java b/svg/src/test/java/com/itextpdf/svg/googlecharts/SankeyChartsTest.java
index edb2b12f6b..45c637e095 100644
--- a/svg/src/test/java/com/itextpdf/svg/googlecharts/SankeyChartsTest.java
+++ b/svg/src/test/java/com/itextpdf/svg/googlecharts/SankeyChartsTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/svg/src/test/java/com/itextpdf/svg/googlecharts/ScatterChartsTest.java b/svg/src/test/java/com/itextpdf/svg/googlecharts/ScatterChartsTest.java
index 305af2b934..0165b4d4a5 100644
--- a/svg/src/test/java/com/itextpdf/svg/googlecharts/ScatterChartsTest.java
+++ b/svg/src/test/java/com/itextpdf/svg/googlecharts/ScatterChartsTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/svg/src/test/java/com/itextpdf/svg/googlecharts/SliceChartsTest.java b/svg/src/test/java/com/itextpdf/svg/googlecharts/SliceChartsTest.java
index 38e1683589..aac4375153 100644
--- a/svg/src/test/java/com/itextpdf/svg/googlecharts/SliceChartsTest.java
+++ b/svg/src/test/java/com/itextpdf/svg/googlecharts/SliceChartsTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/svg/src/test/java/com/itextpdf/svg/googlecharts/SteppedAreaChartTest.java b/svg/src/test/java/com/itextpdf/svg/googlecharts/SteppedAreaChartTest.java
index d201f7a34d..686e8be689 100644
--- a/svg/src/test/java/com/itextpdf/svg/googlecharts/SteppedAreaChartTest.java
+++ b/svg/src/test/java/com/itextpdf/svg/googlecharts/SteppedAreaChartTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/svg/src/test/java/com/itextpdf/svg/googlecharts/TimelineChartsTest.java b/svg/src/test/java/com/itextpdf/svg/googlecharts/TimelineChartsTest.java
index 4e27543e62..254c931a0f 100644
--- a/svg/src/test/java/com/itextpdf/svg/googlecharts/TimelineChartsTest.java
+++ b/svg/src/test/java/com/itextpdf/svg/googlecharts/TimelineChartsTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/svg/src/test/java/com/itextpdf/svg/googlecharts/TreemapsChartsTest.java b/svg/src/test/java/com/itextpdf/svg/googlecharts/TreemapsChartsTest.java
index 66feab83c2..d2f543d376 100644
--- a/svg/src/test/java/com/itextpdf/svg/googlecharts/TreemapsChartsTest.java
+++ b/svg/src/test/java/com/itextpdf/svg/googlecharts/TreemapsChartsTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/svg/src/test/java/com/itextpdf/svg/googlecharts/TrendlinesChartsTest.java b/svg/src/test/java/com/itextpdf/svg/googlecharts/TrendlinesChartsTest.java
index eb5a3d0ac4..8481d021ea 100644
--- a/svg/src/test/java/com/itextpdf/svg/googlecharts/TrendlinesChartsTest.java
+++ b/svg/src/test/java/com/itextpdf/svg/googlecharts/TrendlinesChartsTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/svg/src/test/java/com/itextpdf/svg/googlecharts/WordTreesChartsTest.java b/svg/src/test/java/com/itextpdf/svg/googlecharts/WordTreesChartsTest.java
index f4e28886f5..24485471da 100644
--- a/svg/src/test/java/com/itextpdf/svg/googlecharts/WordTreesChartsTest.java
+++ b/svg/src/test/java/com/itextpdf/svg/googlecharts/WordTreesChartsTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/svg/src/test/java/com/itextpdf/svg/jfreesvg/JFreeSvgTest.java b/svg/src/test/java/com/itextpdf/svg/jfreesvg/JFreeSvgTest.java
index 64b37bf1d2..85d4d8d3c8 100644
--- a/svg/src/test/java/com/itextpdf/svg/jfreesvg/JFreeSvgTest.java
+++ b/svg/src/test/java/com/itextpdf/svg/jfreesvg/JFreeSvgTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/svg/src/test/java/com/itextpdf/svg/processors/DefaultSvgProcessorIntegrationTest.java b/svg/src/test/java/com/itextpdf/svg/processors/DefaultSvgProcessorIntegrationTest.java
index 4d57d971f1..676c99e8ed 100644
--- a/svg/src/test/java/com/itextpdf/svg/processors/DefaultSvgProcessorIntegrationTest.java
+++ b/svg/src/test/java/com/itextpdf/svg/processors/DefaultSvgProcessorIntegrationTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/svg/src/test/java/com/itextpdf/svg/processors/ProcessorStateTest.java b/svg/src/test/java/com/itextpdf/svg/processors/ProcessorStateTest.java
index 287d184d2b..a2bbf578ae 100644
--- a/svg/src/test/java/com/itextpdf/svg/processors/ProcessorStateTest.java
+++ b/svg/src/test/java/com/itextpdf/svg/processors/ProcessorStateTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/svg/src/test/java/com/itextpdf/svg/processors/SvgConverterPropertiesTest.java b/svg/src/test/java/com/itextpdf/svg/processors/SvgConverterPropertiesTest.java
index 6a026d0af5..d87513d8f6 100644
--- a/svg/src/test/java/com/itextpdf/svg/processors/SvgConverterPropertiesTest.java
+++ b/svg/src/test/java/com/itextpdf/svg/processors/SvgConverterPropertiesTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/svg/src/test/java/com/itextpdf/svg/processors/impl/DefaultSvgProcessorUnitTest.java b/svg/src/test/java/com/itextpdf/svg/processors/impl/DefaultSvgProcessorUnitTest.java
index 9bcb02aab3..904ad332e7 100644
--- a/svg/src/test/java/com/itextpdf/svg/processors/impl/DefaultSvgProcessorUnitTest.java
+++ b/svg/src/test/java/com/itextpdf/svg/processors/impl/DefaultSvgProcessorUnitTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
@@ -275,11 +275,14 @@ public void xLinkAttributeBaseDirDoesNotExistTest() {
SvgTagSvgNodeRenderer rootActual = (SvgTagSvgNodeRenderer) processor().process(root, props).getRootRenderer();
String fileName = resolvedBaseUrl + "/img.png";
- String expectedURL = UrlUtil.toNormalizedURI(fileName).toString();
+ final String expectedURL = UrlUtil.toNormalizedURI(fileName).toString();
+ final String expectedURLAnotherValidVersion = createAnotherValidUrlVersion(expectedURL);
ISvgNodeRenderer imageRendered = rootActual.getChildren().get(0);
String url = imageRendered.getAttribute(SvgConstants.Attributes.XLINK_HREF);
- Assert.assertEquals(expectedURL, url);
+
+ // Both variants(namely with triple and single slashes) are valid.
+ Assert.assertTrue(expectedURL.equals(url) || expectedURLAnotherValidVersion.equals(url));
}
@Test
@@ -290,12 +293,14 @@ public void xLinkAttributeResolveNonEmptyBaseUrlTest() {
SvgTagSvgNodeRenderer rootActual = (SvgTagSvgNodeRenderer) processor().process(root, props).getRootRenderer();
String fileName = baseUrl + "/img.png";
- String expectedURL = UrlUtil.toNormalizedURI(fileName).toString();
+ final String expectedURL = UrlUtil.toNormalizedURI(fileName).toString();
+ final String expectedURLAnotherValidVersion = createAnotherValidUrlVersion(expectedURL);
ISvgNodeRenderer imageRendered = rootActual.getChildren().get(0);
String url = imageRendered.getAttribute(SvgConstants.Attributes.XLINK_HREF);
- Assert.assertEquals(expectedURL, url);
+ // Both variants(namely with triple and single slashes) are valid.
+ Assert.assertTrue(expectedURL.equals(url) || expectedURLAnotherValidVersion.equals(url));
}
private INode createSvgContainingImage() {
@@ -308,6 +313,16 @@ private INode createSvgContainingImage() {
return root;
}
+ private static String createAnotherValidUrlVersion(String url) {
+ if (url.startsWith("file:///")) {
+ return "file:/" + url.substring("file:///".length());
+ } else if (url.startsWith("file:/")) {
+ return "file:///" + url.substring("file:/".length());
+ } else {
+ return url;
+ }
+ }
+
private static ISvgProcessor processor() {
return new DefaultSvgProcessor();
}
diff --git a/svg/src/test/java/com/itextpdf/svg/processors/impl/SvgProcessorResultUnitTest.java b/svg/src/test/java/com/itextpdf/svg/processors/impl/SvgProcessorResultUnitTest.java
index 73c906cba4..0ac8405a05 100644
--- a/svg/src/test/java/com/itextpdf/svg/processors/impl/SvgProcessorResultUnitTest.java
+++ b/svg/src/test/java/com/itextpdf/svg/processors/impl/SvgProcessorResultUnitTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is offered under a commercial and under the AGPL license.
@@ -38,26 +38,19 @@ This file is part of the iText (R) project.
import java.util.HashMap;
import java.util.Map;
import org.junit.Assert;
-import org.junit.Rule;
import org.junit.Test;
import org.junit.experimental.categories.Category;
-import org.junit.rules.ExpectedException;
@Category(UnitTest.class)
public class SvgProcessorResultUnitTest extends ExtendedITextTest {
- @Rule
- public ExpectedException junitExpectedException = ExpectedException.none();
-
@Test
public void contextParameterCannotBeNullTest() {
Map namedObjects = new HashMap<>();
ISvgNodeRenderer root = new SvgTagSvgNodeRenderer();
-
- junitExpectedException.expect(IllegalArgumentException.class);
- junitExpectedException.expectMessage(SvgExceptionMessageConstant.PARAMETER_CANNOT_BE_NULL);
-
- SvgProcessorResult result = new SvgProcessorResult(namedObjects, root, null);
+ Exception exception = Assert.assertThrows(IllegalArgumentException.class,
+ () -> new SvgProcessorResult(namedObjects, root, null));
+ Assert.assertEquals(SvgExceptionMessageConstant.PARAMETER_CANNOT_BE_NULL, exception.getMessage());
}
@Test
diff --git a/svg/src/test/java/com/itextpdf/svg/processors/impl/font/FontFaceTest.java b/svg/src/test/java/com/itextpdf/svg/processors/impl/font/FontFaceTest.java
index 413cb4d4ac..767a10c248 100644
--- a/svg/src/test/java/com/itextpdf/svg/processors/impl/font/FontFaceTest.java
+++ b/svg/src/test/java/com/itextpdf/svg/processors/impl/font/FontFaceTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/svg/src/test/java/com/itextpdf/svg/processors/impl/font/FontSizeTest.java b/svg/src/test/java/com/itextpdf/svg/processors/impl/font/FontSizeTest.java
index 98cfb9b86f..32cc97d8bb 100644
--- a/svg/src/test/java/com/itextpdf/svg/processors/impl/font/FontSizeTest.java
+++ b/svg/src/test/java/com/itextpdf/svg/processors/impl/font/FontSizeTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/svg/src/test/java/com/itextpdf/svg/processors/impl/font/SvgFontProcessorTest.java b/svg/src/test/java/com/itextpdf/svg/processors/impl/font/SvgFontProcessorTest.java
index 7308ae80fa..5cc20d8d14 100644
--- a/svg/src/test/java/com/itextpdf/svg/processors/impl/font/SvgFontProcessorTest.java
+++ b/svg/src/test/java/com/itextpdf/svg/processors/impl/font/SvgFontProcessorTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/svg/src/test/java/com/itextpdf/svg/renderers/DefaultSvgNodeRendererFactoryDrawTest.java b/svg/src/test/java/com/itextpdf/svg/renderers/DefaultSvgNodeRendererFactoryDrawTest.java
index 8af2c0af99..8f12356367 100644
--- a/svg/src/test/java/com/itextpdf/svg/renderers/DefaultSvgNodeRendererFactoryDrawTest.java
+++ b/svg/src/test/java/com/itextpdf/svg/renderers/DefaultSvgNodeRendererFactoryDrawTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/svg/src/test/java/com/itextpdf/svg/renderers/DefaultSvgNodeRendererFactoryTest.java b/svg/src/test/java/com/itextpdf/svg/renderers/DefaultSvgNodeRendererFactoryTest.java
index f75b297ec1..5e995b0fdc 100644
--- a/svg/src/test/java/com/itextpdf/svg/renderers/DefaultSvgNodeRendererFactoryTest.java
+++ b/svg/src/test/java/com/itextpdf/svg/renderers/DefaultSvgNodeRendererFactoryTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/svg/src/test/java/com/itextpdf/svg/renderers/FillTest.java b/svg/src/test/java/com/itextpdf/svg/renderers/FillTest.java
index 997617f844..5e666a0a20 100644
--- a/svg/src/test/java/com/itextpdf/svg/renderers/FillTest.java
+++ b/svg/src/test/java/com/itextpdf/svg/renderers/FillTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/svg/src/test/java/com/itextpdf/svg/renderers/GUnitTest.java b/svg/src/test/java/com/itextpdf/svg/renderers/GUnitTest.java
index ee324dc6fd..f832b8a881 100644
--- a/svg/src/test/java/com/itextpdf/svg/renderers/GUnitTest.java
+++ b/svg/src/test/java/com/itextpdf/svg/renderers/GUnitTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/svg/src/test/java/com/itextpdf/svg/renderers/OpacityTest.java b/svg/src/test/java/com/itextpdf/svg/renderers/OpacityTest.java
index e9f14c0871..2c67291a33 100644
--- a/svg/src/test/java/com/itextpdf/svg/renderers/OpacityTest.java
+++ b/svg/src/test/java/com/itextpdf/svg/renderers/OpacityTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/svg/src/test/java/com/itextpdf/svg/renderers/StrokeTest.java b/svg/src/test/java/com/itextpdf/svg/renderers/StrokeTest.java
index e63ed8a56e..5e16f9d900 100644
--- a/svg/src/test/java/com/itextpdf/svg/renderers/StrokeTest.java
+++ b/svg/src/test/java/com/itextpdf/svg/renderers/StrokeTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/svg/src/test/java/com/itextpdf/svg/renderers/SvgDrawContextTest.java b/svg/src/test/java/com/itextpdf/svg/renderers/SvgDrawContextTest.java
index ba845ff7b7..796fbe42bb 100644
--- a/svg/src/test/java/com/itextpdf/svg/renderers/SvgDrawContextTest.java
+++ b/svg/src/test/java/com/itextpdf/svg/renderers/SvgDrawContextTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/svg/src/test/java/com/itextpdf/svg/renderers/SvgIntegrationTest.java b/svg/src/test/java/com/itextpdf/svg/renderers/SvgIntegrationTest.java
index 0308376fae..72270d21c0 100644
--- a/svg/src/test/java/com/itextpdf/svg/renderers/SvgIntegrationTest.java
+++ b/svg/src/test/java/com/itextpdf/svg/renderers/SvgIntegrationTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/svg/src/test/java/com/itextpdf/svg/renderers/TransformationApplicationTest.java b/svg/src/test/java/com/itextpdf/svg/renderers/TransformationApplicationTest.java
index 8e85867626..adb0c701bf 100644
--- a/svg/src/test/java/com/itextpdf/svg/renderers/TransformationApplicationTest.java
+++ b/svg/src/test/java/com/itextpdf/svg/renderers/TransformationApplicationTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/svg/src/test/java/com/itextpdf/svg/renderers/TransparencyTest.java b/svg/src/test/java/com/itextpdf/svg/renderers/TransparencyTest.java
index 532ed48874..d3de02e168 100644
--- a/svg/src/test/java/com/itextpdf/svg/renderers/TransparencyTest.java
+++ b/svg/src/test/java/com/itextpdf/svg/renderers/TransparencyTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/svg/src/test/java/com/itextpdf/svg/renderers/factories/DefaultSvgNodeRendererFactoryTest.java b/svg/src/test/java/com/itextpdf/svg/renderers/factories/DefaultSvgNodeRendererFactoryTest.java
index 96633cd259..66b634bbd6 100644
--- a/svg/src/test/java/com/itextpdf/svg/renderers/factories/DefaultSvgNodeRendererFactoryTest.java
+++ b/svg/src/test/java/com/itextpdf/svg/renderers/factories/DefaultSvgNodeRendererFactoryTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/svg/src/test/java/com/itextpdf/svg/renderers/factories/DefaultSvgNodeRendererMapperTest.java b/svg/src/test/java/com/itextpdf/svg/renderers/factories/DefaultSvgNodeRendererMapperTest.java
index 726b44a9c6..71455e95d9 100644
--- a/svg/src/test/java/com/itextpdf/svg/renderers/factories/DefaultSvgNodeRendererMapperTest.java
+++ b/svg/src/test/java/com/itextpdf/svg/renderers/factories/DefaultSvgNodeRendererMapperTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is offered under a commercial and under the AGPL license.
diff --git a/svg/src/test/java/com/itextpdf/svg/renderers/impl/AnimationSvgTest.java b/svg/src/test/java/com/itextpdf/svg/renderers/impl/AnimationSvgTest.java
index cd0e0da3ff..b66ffdf7c9 100644
--- a/svg/src/test/java/com/itextpdf/svg/renderers/impl/AnimationSvgTest.java
+++ b/svg/src/test/java/com/itextpdf/svg/renderers/impl/AnimationSvgTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/svg/src/test/java/com/itextpdf/svg/renderers/impl/CircleNodeRendererIntegrationTest.java b/svg/src/test/java/com/itextpdf/svg/renderers/impl/CircleNodeRendererIntegrationTest.java
index 9b0a5a636a..ddb274b24c 100644
--- a/svg/src/test/java/com/itextpdf/svg/renderers/impl/CircleNodeRendererIntegrationTest.java
+++ b/svg/src/test/java/com/itextpdf/svg/renderers/impl/CircleNodeRendererIntegrationTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/svg/src/test/java/com/itextpdf/svg/renderers/impl/ClipPathSvgNodeRendererIntegrationTest.java b/svg/src/test/java/com/itextpdf/svg/renderers/impl/ClipPathSvgNodeRendererIntegrationTest.java
index a62542ae80..b845491ecc 100644
--- a/svg/src/test/java/com/itextpdf/svg/renderers/impl/ClipPathSvgNodeRendererIntegrationTest.java
+++ b/svg/src/test/java/com/itextpdf/svg/renderers/impl/ClipPathSvgNodeRendererIntegrationTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/svg/src/test/java/com/itextpdf/svg/renderers/impl/ClipPathSvgNodeRendererLowLevelIntegrationTest.java b/svg/src/test/java/com/itextpdf/svg/renderers/impl/ClipPathSvgNodeRendererLowLevelIntegrationTest.java
index 0ef902db45..04a0376be3 100644
--- a/svg/src/test/java/com/itextpdf/svg/renderers/impl/ClipPathSvgNodeRendererLowLevelIntegrationTest.java
+++ b/svg/src/test/java/com/itextpdf/svg/renderers/impl/ClipPathSvgNodeRendererLowLevelIntegrationTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/svg/src/test/java/com/itextpdf/svg/renderers/impl/ClipPathSvgNodeRendererUnitTest.java b/svg/src/test/java/com/itextpdf/svg/renderers/impl/ClipPathSvgNodeRendererUnitTest.java
index 48b5040658..37f0eb1f60 100644
--- a/svg/src/test/java/com/itextpdf/svg/renderers/impl/ClipPathSvgNodeRendererUnitTest.java
+++ b/svg/src/test/java/com/itextpdf/svg/renderers/impl/ClipPathSvgNodeRendererUnitTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is offered under a commercial and under the AGPL license.
diff --git a/svg/src/test/java/com/itextpdf/svg/renderers/impl/DefsSvgNodeRendererIntegrationTest.java b/svg/src/test/java/com/itextpdf/svg/renderers/impl/DefsSvgNodeRendererIntegrationTest.java
index 0cf3080070..0ba218f4e2 100644
--- a/svg/src/test/java/com/itextpdf/svg/renderers/impl/DefsSvgNodeRendererIntegrationTest.java
+++ b/svg/src/test/java/com/itextpdf/svg/renderers/impl/DefsSvgNodeRendererIntegrationTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/svg/src/test/java/com/itextpdf/svg/renderers/impl/DefsSvgNodeRendererUnitTest.java b/svg/src/test/java/com/itextpdf/svg/renderers/impl/DefsSvgNodeRendererUnitTest.java
index 35457c6d42..c59e2e7e26 100644
--- a/svg/src/test/java/com/itextpdf/svg/renderers/impl/DefsSvgNodeRendererUnitTest.java
+++ b/svg/src/test/java/com/itextpdf/svg/renderers/impl/DefsSvgNodeRendererUnitTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/svg/src/test/java/com/itextpdf/svg/renderers/impl/EllipseSvgNodeRendererIntegrationTest.java b/svg/src/test/java/com/itextpdf/svg/renderers/impl/EllipseSvgNodeRendererIntegrationTest.java
index ca893733b4..8443968717 100644
--- a/svg/src/test/java/com/itextpdf/svg/renderers/impl/EllipseSvgNodeRendererIntegrationTest.java
+++ b/svg/src/test/java/com/itextpdf/svg/renderers/impl/EllipseSvgNodeRendererIntegrationTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/svg/src/test/java/com/itextpdf/svg/renderers/impl/EllipseSvgNodeRendererUnitTest.java b/svg/src/test/java/com/itextpdf/svg/renderers/impl/EllipseSvgNodeRendererUnitTest.java
index c58424f844..d1ddfe2658 100644
--- a/svg/src/test/java/com/itextpdf/svg/renderers/impl/EllipseSvgNodeRendererUnitTest.java
+++ b/svg/src/test/java/com/itextpdf/svg/renderers/impl/EllipseSvgNodeRendererUnitTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is offered under a commercial and under the AGPL license.
diff --git a/svg/src/test/java/com/itextpdf/svg/renderers/impl/GroupSvgNodeRendererIntegrationTest.java b/svg/src/test/java/com/itextpdf/svg/renderers/impl/GroupSvgNodeRendererIntegrationTest.java
index 15f5fe8189..32933899d5 100644
--- a/svg/src/test/java/com/itextpdf/svg/renderers/impl/GroupSvgNodeRendererIntegrationTest.java
+++ b/svg/src/test/java/com/itextpdf/svg/renderers/impl/GroupSvgNodeRendererIntegrationTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/svg/src/test/java/com/itextpdf/svg/renderers/impl/GroupSvgNodeRendererUnitTest.java b/svg/src/test/java/com/itextpdf/svg/renderers/impl/GroupSvgNodeRendererUnitTest.java
index 2c14258928..2ee4a9d1de 100644
--- a/svg/src/test/java/com/itextpdf/svg/renderers/impl/GroupSvgNodeRendererUnitTest.java
+++ b/svg/src/test/java/com/itextpdf/svg/renderers/impl/GroupSvgNodeRendererUnitTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is offered under a commercial and under the AGPL license.
diff --git a/svg/src/test/java/com/itextpdf/svg/renderers/impl/ImageSvgNodeRendererIntegrationTest.java b/svg/src/test/java/com/itextpdf/svg/renderers/impl/ImageSvgNodeRendererIntegrationTest.java
index 3376806c32..52bbc902a3 100644
--- a/svg/src/test/java/com/itextpdf/svg/renderers/impl/ImageSvgNodeRendererIntegrationTest.java
+++ b/svg/src/test/java/com/itextpdf/svg/renderers/impl/ImageSvgNodeRendererIntegrationTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/svg/src/test/java/com/itextpdf/svg/renderers/impl/ImageSvgNodeRendererUnitTest.java b/svg/src/test/java/com/itextpdf/svg/renderers/impl/ImageSvgNodeRendererUnitTest.java
index f6facf1d80..e57f169eba 100644
--- a/svg/src/test/java/com/itextpdf/svg/renderers/impl/ImageSvgNodeRendererUnitTest.java
+++ b/svg/src/test/java/com/itextpdf/svg/renderers/impl/ImageSvgNodeRendererUnitTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is offered under a commercial and under the AGPL license.
diff --git a/svg/src/test/java/com/itextpdf/svg/renderers/impl/LineSvgNodeRendererTest.java b/svg/src/test/java/com/itextpdf/svg/renderers/impl/LineSvgNodeRendererTest.java
index f940a273a7..b3d8885669 100644
--- a/svg/src/test/java/com/itextpdf/svg/renderers/impl/LineSvgNodeRendererTest.java
+++ b/svg/src/test/java/com/itextpdf/svg/renderers/impl/LineSvgNodeRendererTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/svg/src/test/java/com/itextpdf/svg/renderers/impl/LinearGradientSvgNodeRendererTest.java b/svg/src/test/java/com/itextpdf/svg/renderers/impl/LinearGradientSvgNodeRendererTest.java
index e47307f490..1ce4f3f0f1 100644
--- a/svg/src/test/java/com/itextpdf/svg/renderers/impl/LinearGradientSvgNodeRendererTest.java
+++ b/svg/src/test/java/com/itextpdf/svg/renderers/impl/LinearGradientSvgNodeRendererTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is offered under a commercial and under the AGPL license.
diff --git a/svg/src/test/java/com/itextpdf/svg/renderers/impl/LinearGradientSvgNodeRendererUnitTest.java b/svg/src/test/java/com/itextpdf/svg/renderers/impl/LinearGradientSvgNodeRendererUnitTest.java
index d38c655df9..68d0e395fd 100644
--- a/svg/src/test/java/com/itextpdf/svg/renderers/impl/LinearGradientSvgNodeRendererUnitTest.java
+++ b/svg/src/test/java/com/itextpdf/svg/renderers/impl/LinearGradientSvgNodeRendererUnitTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is offered under a commercial and under the AGPL license.
diff --git a/svg/src/test/java/com/itextpdf/svg/renderers/impl/MarkerSvgNodeRendererIntegrationTest.java b/svg/src/test/java/com/itextpdf/svg/renderers/impl/MarkerSvgNodeRendererIntegrationTest.java
index 733c88489f..5bbf738dbe 100644
--- a/svg/src/test/java/com/itextpdf/svg/renderers/impl/MarkerSvgNodeRendererIntegrationTest.java
+++ b/svg/src/test/java/com/itextpdf/svg/renderers/impl/MarkerSvgNodeRendererIntegrationTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/svg/src/test/java/com/itextpdf/svg/renderers/impl/MarkerSvgNodeRendererUnitTest.java b/svg/src/test/java/com/itextpdf/svg/renderers/impl/MarkerSvgNodeRendererUnitTest.java
index 60f2c957c2..f591c436a1 100644
--- a/svg/src/test/java/com/itextpdf/svg/renderers/impl/MarkerSvgNodeRendererUnitTest.java
+++ b/svg/src/test/java/com/itextpdf/svg/renderers/impl/MarkerSvgNodeRendererUnitTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is offered under a commercial and under the AGPL license.
diff --git a/svg/src/test/java/com/itextpdf/svg/renderers/impl/MaskTest.java b/svg/src/test/java/com/itextpdf/svg/renderers/impl/MaskTest.java
index 22522e95bf..3ed4b81ad1 100644
--- a/svg/src/test/java/com/itextpdf/svg/renderers/impl/MaskTest.java
+++ b/svg/src/test/java/com/itextpdf/svg/renderers/impl/MaskTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/svg/src/test/java/com/itextpdf/svg/renderers/impl/NamedObjectsTest.java b/svg/src/test/java/com/itextpdf/svg/renderers/impl/NamedObjectsTest.java
index 610f2a9956..a37c45f0c1 100644
--- a/svg/src/test/java/com/itextpdf/svg/renderers/impl/NamedObjectsTest.java
+++ b/svg/src/test/java/com/itextpdf/svg/renderers/impl/NamedObjectsTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/svg/src/test/java/com/itextpdf/svg/renderers/impl/NestedSvgTagSvgNodeRendererIntegrationTest.java b/svg/src/test/java/com/itextpdf/svg/renderers/impl/NestedSvgTagSvgNodeRendererIntegrationTest.java
index ac017ed115..d3155a5da0 100644
--- a/svg/src/test/java/com/itextpdf/svg/renderers/impl/NestedSvgTagSvgNodeRendererIntegrationTest.java
+++ b/svg/src/test/java/com/itextpdf/svg/renderers/impl/NestedSvgTagSvgNodeRendererIntegrationTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/svg/src/test/java/com/itextpdf/svg/renderers/impl/OverflowAttributeTest.java b/svg/src/test/java/com/itextpdf/svg/renderers/impl/OverflowAttributeTest.java
index cc8aa68bd8..14210dcc7c 100644
--- a/svg/src/test/java/com/itextpdf/svg/renderers/impl/OverflowAttributeTest.java
+++ b/svg/src/test/java/com/itextpdf/svg/renderers/impl/OverflowAttributeTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is offered under a commercial and under the AGPL license.
diff --git a/svg/src/test/java/com/itextpdf/svg/renderers/impl/PathOperatorSplitTest.java b/svg/src/test/java/com/itextpdf/svg/renderers/impl/PathOperatorSplitTest.java
index 916eef16dc..724cc0dda9 100644
--- a/svg/src/test/java/com/itextpdf/svg/renderers/impl/PathOperatorSplitTest.java
+++ b/svg/src/test/java/com/itextpdf/svg/renderers/impl/PathOperatorSplitTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/svg/src/test/java/com/itextpdf/svg/renderers/impl/PathParsingIntegrationTest.java b/svg/src/test/java/com/itextpdf/svg/renderers/impl/PathParsingIntegrationTest.java
index fe64d9cf8a..cc2d4d3208 100644
--- a/svg/src/test/java/com/itextpdf/svg/renderers/impl/PathParsingIntegrationTest.java
+++ b/svg/src/test/java/com/itextpdf/svg/renderers/impl/PathParsingIntegrationTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/svg/src/test/java/com/itextpdf/svg/renderers/impl/PathParsingTest.java b/svg/src/test/java/com/itextpdf/svg/renderers/impl/PathParsingTest.java
index 1f8301c75e..13341cea85 100644
--- a/svg/src/test/java/com/itextpdf/svg/renderers/impl/PathParsingTest.java
+++ b/svg/src/test/java/com/itextpdf/svg/renderers/impl/PathParsingTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/svg/src/test/java/com/itextpdf/svg/renderers/impl/PathSvgNodeRendererLowLevelIntegrationTest.java b/svg/src/test/java/com/itextpdf/svg/renderers/impl/PathSvgNodeRendererLowLevelIntegrationTest.java
index 9b79a63596..4d008309e4 100644
--- a/svg/src/test/java/com/itextpdf/svg/renderers/impl/PathSvgNodeRendererLowLevelIntegrationTest.java
+++ b/svg/src/test/java/com/itextpdf/svg/renderers/impl/PathSvgNodeRendererLowLevelIntegrationTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/svg/src/test/java/com/itextpdf/svg/renderers/impl/PathSvgNodeRendererTest.java b/svg/src/test/java/com/itextpdf/svg/renderers/impl/PathSvgNodeRendererTest.java
index 8a3221f537..4553820b1c 100644
--- a/svg/src/test/java/com/itextpdf/svg/renderers/impl/PathSvgNodeRendererTest.java
+++ b/svg/src/test/java/com/itextpdf/svg/renderers/impl/PathSvgNodeRendererTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/svg/src/test/java/com/itextpdf/svg/renderers/impl/PatternSvgNodeRendererUnitTest.java b/svg/src/test/java/com/itextpdf/svg/renderers/impl/PatternSvgNodeRendererUnitTest.java
index b30b218e51..d091b1092f 100644
--- a/svg/src/test/java/com/itextpdf/svg/renderers/impl/PatternSvgNodeRendererUnitTest.java
+++ b/svg/src/test/java/com/itextpdf/svg/renderers/impl/PatternSvgNodeRendererUnitTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is offered under a commercial and under the AGPL license.
diff --git a/svg/src/test/java/com/itextpdf/svg/renderers/impl/PatternTest.java b/svg/src/test/java/com/itextpdf/svg/renderers/impl/PatternTest.java
index 0d8903f3d6..510a12fd15 100644
--- a/svg/src/test/java/com/itextpdf/svg/renderers/impl/PatternTest.java
+++ b/svg/src/test/java/com/itextpdf/svg/renderers/impl/PatternTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is offered under a commercial and under the AGPL license.
diff --git a/svg/src/test/java/com/itextpdf/svg/renderers/impl/PdfRootSvgNodeRendererIntegrationTest.java b/svg/src/test/java/com/itextpdf/svg/renderers/impl/PdfRootSvgNodeRendererIntegrationTest.java
index 053897a62c..f40b5ddfec 100644
--- a/svg/src/test/java/com/itextpdf/svg/renderers/impl/PdfRootSvgNodeRendererIntegrationTest.java
+++ b/svg/src/test/java/com/itextpdf/svg/renderers/impl/PdfRootSvgNodeRendererIntegrationTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/svg/src/test/java/com/itextpdf/svg/renderers/impl/PdfRootSvgNodeRendererUnitTest.java b/svg/src/test/java/com/itextpdf/svg/renderers/impl/PdfRootSvgNodeRendererUnitTest.java
index 2ccd554b7d..06a1cb95c4 100644
--- a/svg/src/test/java/com/itextpdf/svg/renderers/impl/PdfRootSvgNodeRendererUnitTest.java
+++ b/svg/src/test/java/com/itextpdf/svg/renderers/impl/PdfRootSvgNodeRendererUnitTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is offered under a commercial and under the AGPL license.
diff --git a/svg/src/test/java/com/itextpdf/svg/renderers/impl/PolygonSvgNodeRendererTest.java b/svg/src/test/java/com/itextpdf/svg/renderers/impl/PolygonSvgNodeRendererTest.java
index 619cc828c6..e5d1702815 100644
--- a/svg/src/test/java/com/itextpdf/svg/renderers/impl/PolygonSvgNodeRendererTest.java
+++ b/svg/src/test/java/com/itextpdf/svg/renderers/impl/PolygonSvgNodeRendererTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/svg/src/test/java/com/itextpdf/svg/renderers/impl/PolylineSvgNodeRendererTest.java b/svg/src/test/java/com/itextpdf/svg/renderers/impl/PolylineSvgNodeRendererTest.java
index 0979cfe07e..4586e7701f 100644
--- a/svg/src/test/java/com/itextpdf/svg/renderers/impl/PolylineSvgNodeRendererTest.java
+++ b/svg/src/test/java/com/itextpdf/svg/renderers/impl/PolylineSvgNodeRendererTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/svg/src/test/java/com/itextpdf/svg/renderers/impl/PolylineSvgNodeRendererUnitTest.java b/svg/src/test/java/com/itextpdf/svg/renderers/impl/PolylineSvgNodeRendererUnitTest.java
index 75df63f577..1b1a44c05e 100644
--- a/svg/src/test/java/com/itextpdf/svg/renderers/impl/PolylineSvgNodeRendererUnitTest.java
+++ b/svg/src/test/java/com/itextpdf/svg/renderers/impl/PolylineSvgNodeRendererUnitTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is offered under a commercial and under the AGPL license.
diff --git a/svg/src/test/java/com/itextpdf/svg/renderers/impl/PreserveAspectRatioSvgNodeRendererIntegrationTest.java b/svg/src/test/java/com/itextpdf/svg/renderers/impl/PreserveAspectRatioSvgNodeRendererIntegrationTest.java
index fb6d246153..1d7930dfa4 100644
--- a/svg/src/test/java/com/itextpdf/svg/renderers/impl/PreserveAspectRatioSvgNodeRendererIntegrationTest.java
+++ b/svg/src/test/java/com/itextpdf/svg/renderers/impl/PreserveAspectRatioSvgNodeRendererIntegrationTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/svg/src/test/java/com/itextpdf/svg/renderers/impl/PreserveAspectRatioSvgNodeRendererUnitTest.java b/svg/src/test/java/com/itextpdf/svg/renderers/impl/PreserveAspectRatioSvgNodeRendererUnitTest.java
index 532d48deeb..5132504e6f 100644
--- a/svg/src/test/java/com/itextpdf/svg/renderers/impl/PreserveAspectRatioSvgNodeRendererUnitTest.java
+++ b/svg/src/test/java/com/itextpdf/svg/renderers/impl/PreserveAspectRatioSvgNodeRendererUnitTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is offered under a commercial and under the AGPL license.
diff --git a/svg/src/test/java/com/itextpdf/svg/renderers/impl/RectangleSvgNodeRendererIntegrationTest.java b/svg/src/test/java/com/itextpdf/svg/renderers/impl/RectangleSvgNodeRendererIntegrationTest.java
index 76d94b317f..52c7c0414d 100644
--- a/svg/src/test/java/com/itextpdf/svg/renderers/impl/RectangleSvgNodeRendererIntegrationTest.java
+++ b/svg/src/test/java/com/itextpdf/svg/renderers/impl/RectangleSvgNodeRendererIntegrationTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/svg/src/test/java/com/itextpdf/svg/renderers/impl/RectangleSvgNodeRendererUnitTest.java b/svg/src/test/java/com/itextpdf/svg/renderers/impl/RectangleSvgNodeRendererUnitTest.java
index cd95aac172..854c4c69db 100644
--- a/svg/src/test/java/com/itextpdf/svg/renderers/impl/RectangleSvgNodeRendererUnitTest.java
+++ b/svg/src/test/java/com/itextpdf/svg/renderers/impl/RectangleSvgNodeRendererUnitTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/svg/src/test/java/com/itextpdf/svg/renderers/impl/SimpleSvgTagSvgNodeRendererIntegrationTest.java b/svg/src/test/java/com/itextpdf/svg/renderers/impl/SimpleSvgTagSvgNodeRendererIntegrationTest.java
index 5d30f11afa..7aa58e9c77 100644
--- a/svg/src/test/java/com/itextpdf/svg/renderers/impl/SimpleSvgTagSvgNodeRendererIntegrationTest.java
+++ b/svg/src/test/java/com/itextpdf/svg/renderers/impl/SimpleSvgTagSvgNodeRendererIntegrationTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/svg/src/test/java/com/itextpdf/svg/renderers/impl/StopSvgNodeRendererUnitTest.java b/svg/src/test/java/com/itextpdf/svg/renderers/impl/StopSvgNodeRendererUnitTest.java
index 12c0f6ad29..c6e348893e 100644
--- a/svg/src/test/java/com/itextpdf/svg/renderers/impl/StopSvgNodeRendererUnitTest.java
+++ b/svg/src/test/java/com/itextpdf/svg/renderers/impl/StopSvgNodeRendererUnitTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/svg/src/test/java/com/itextpdf/svg/renderers/impl/SvgTagSvgNodeRendererUnitTest.java b/svg/src/test/java/com/itextpdf/svg/renderers/impl/SvgTagSvgNodeRendererUnitTest.java
index 0072de03a0..8109554c66 100644
--- a/svg/src/test/java/com/itextpdf/svg/renderers/impl/SvgTagSvgNodeRendererUnitTest.java
+++ b/svg/src/test/java/com/itextpdf/svg/renderers/impl/SvgTagSvgNodeRendererUnitTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/svg/src/test/java/com/itextpdf/svg/renderers/impl/SymbolSvgNodeRendererUnitTest.java b/svg/src/test/java/com/itextpdf/svg/renderers/impl/SymbolSvgNodeRendererUnitTest.java
index 689b9f2811..8c5a3cb750 100644
--- a/svg/src/test/java/com/itextpdf/svg/renderers/impl/SymbolSvgNodeRendererUnitTest.java
+++ b/svg/src/test/java/com/itextpdf/svg/renderers/impl/SymbolSvgNodeRendererUnitTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is offered under a commercial and under the AGPL license.
diff --git a/svg/src/test/java/com/itextpdf/svg/renderers/impl/SymbolTest.java b/svg/src/test/java/com/itextpdf/svg/renderers/impl/SymbolTest.java
index e64e7f0e98..404e3029fe 100644
--- a/svg/src/test/java/com/itextpdf/svg/renderers/impl/SymbolTest.java
+++ b/svg/src/test/java/com/itextpdf/svg/renderers/impl/SymbolTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is offered under a commercial and under the AGPL license.
diff --git a/svg/src/test/java/com/itextpdf/svg/renderers/impl/TSpanNodeRendererIntegrationTest.java b/svg/src/test/java/com/itextpdf/svg/renderers/impl/TSpanNodeRendererIntegrationTest.java
index a1aa03bc6b..6f9e014e76 100644
--- a/svg/src/test/java/com/itextpdf/svg/renderers/impl/TSpanNodeRendererIntegrationTest.java
+++ b/svg/src/test/java/com/itextpdf/svg/renderers/impl/TSpanNodeRendererIntegrationTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/svg/src/test/java/com/itextpdf/svg/renderers/impl/TextLeafSvgNodeRendererIntegrationTest.java b/svg/src/test/java/com/itextpdf/svg/renderers/impl/TextLeafSvgNodeRendererIntegrationTest.java
index ecf7df828d..4b12b0cd79 100644
--- a/svg/src/test/java/com/itextpdf/svg/renderers/impl/TextLeafSvgNodeRendererIntegrationTest.java
+++ b/svg/src/test/java/com/itextpdf/svg/renderers/impl/TextLeafSvgNodeRendererIntegrationTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/svg/src/test/java/com/itextpdf/svg/renderers/impl/TextLeafSvgNodeRendererUnitTest.java b/svg/src/test/java/com/itextpdf/svg/renderers/impl/TextLeafSvgNodeRendererUnitTest.java
index 93e783ccd8..889ab147f9 100644
--- a/svg/src/test/java/com/itextpdf/svg/renderers/impl/TextLeafSvgNodeRendererUnitTest.java
+++ b/svg/src/test/java/com/itextpdf/svg/renderers/impl/TextLeafSvgNodeRendererUnitTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is offered under a commercial and under the AGPL license.
diff --git a/svg/src/test/java/com/itextpdf/svg/renderers/impl/TextSvgBranchRendererIntegrationTest.java b/svg/src/test/java/com/itextpdf/svg/renderers/impl/TextSvgBranchRendererIntegrationTest.java
index 6e00121ce9..ce51738cdd 100644
--- a/svg/src/test/java/com/itextpdf/svg/renderers/impl/TextSvgBranchRendererIntegrationTest.java
+++ b/svg/src/test/java/com/itextpdf/svg/renderers/impl/TextSvgBranchRendererIntegrationTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/svg/src/test/java/com/itextpdf/svg/renderers/impl/UseIntegrationTest.java b/svg/src/test/java/com/itextpdf/svg/renderers/impl/UseIntegrationTest.java
index ea40cb0828..bac23cecba 100644
--- a/svg/src/test/java/com/itextpdf/svg/renderers/impl/UseIntegrationTest.java
+++ b/svg/src/test/java/com/itextpdf/svg/renderers/impl/UseIntegrationTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/svg/src/test/java/com/itextpdf/svg/renderers/impl/UseSvgNodeRendererUnitTest.java b/svg/src/test/java/com/itextpdf/svg/renderers/impl/UseSvgNodeRendererUnitTest.java
index 37c19c9662..e25c1e31f2 100644
--- a/svg/src/test/java/com/itextpdf/svg/renderers/impl/UseSvgNodeRendererUnitTest.java
+++ b/svg/src/test/java/com/itextpdf/svg/renderers/impl/UseSvgNodeRendererUnitTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is offered under a commercial and under the AGPL license.
diff --git a/svg/src/test/java/com/itextpdf/svg/renderers/impl/UseUnitTest.java b/svg/src/test/java/com/itextpdf/svg/renderers/impl/UseUnitTest.java
index 633191250b..3b436cb41c 100644
--- a/svg/src/test/java/com/itextpdf/svg/renderers/impl/UseUnitTest.java
+++ b/svg/src/test/java/com/itextpdf/svg/renderers/impl/UseUnitTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/svg/src/test/java/com/itextpdf/svg/renderers/impl/ViewBoxSvgTagSvgNodeRendererIntegrationTest.java b/svg/src/test/java/com/itextpdf/svg/renderers/impl/ViewBoxSvgTagSvgNodeRendererIntegrationTest.java
index a8b7b06a56..d3ed1f7b35 100644
--- a/svg/src/test/java/com/itextpdf/svg/renderers/impl/ViewBoxSvgTagSvgNodeRendererIntegrationTest.java
+++ b/svg/src/test/java/com/itextpdf/svg/renderers/impl/ViewBoxSvgTagSvgNodeRendererIntegrationTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/svg/src/test/java/com/itextpdf/svg/renderers/impl/XLinkDataTest.java b/svg/src/test/java/com/itextpdf/svg/renderers/impl/XLinkDataTest.java
index 4cd83f003d..1dad66b2f1 100644
--- a/svg/src/test/java/com/itextpdf/svg/renderers/impl/XLinkDataTest.java
+++ b/svg/src/test/java/com/itextpdf/svg/renderers/impl/XLinkDataTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is offered under a commercial and under the AGPL license.
diff --git a/svg/src/test/java/com/itextpdf/svg/renderers/path/PathShapeMapperTest.java b/svg/src/test/java/com/itextpdf/svg/renderers/path/PathShapeMapperTest.java
index 55b4a48e63..1e74ecef05 100644
--- a/svg/src/test/java/com/itextpdf/svg/renderers/path/PathShapeMapperTest.java
+++ b/svg/src/test/java/com/itextpdf/svg/renderers/path/PathShapeMapperTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/svg/src/test/java/com/itextpdf/svg/renderers/path/impl/EllipseArcTest.java b/svg/src/test/java/com/itextpdf/svg/renderers/path/impl/EllipseArcTest.java
index 84712c64b5..4e3e5f0f31 100644
--- a/svg/src/test/java/com/itextpdf/svg/renderers/path/impl/EllipseArcTest.java
+++ b/svg/src/test/java/com/itextpdf/svg/renderers/path/impl/EllipseArcTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/svg/src/test/java/com/itextpdf/svg/renderers/path/impl/EllipticalPathOperatorTest.java b/svg/src/test/java/com/itextpdf/svg/renderers/path/impl/EllipticalPathOperatorTest.java
index 1ecf0a9e57..bd252ac549 100644
--- a/svg/src/test/java/com/itextpdf/svg/renderers/path/impl/EllipticalPathOperatorTest.java
+++ b/svg/src/test/java/com/itextpdf/svg/renderers/path/impl/EllipticalPathOperatorTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/svg/src/test/java/com/itextpdf/svg/utils/MatrixTransformationTest.java b/svg/src/test/java/com/itextpdf/svg/utils/MatrixTransformationTest.java
index 0adae95c1a..ec50b13b34 100644
--- a/svg/src/test/java/com/itextpdf/svg/utils/MatrixTransformationTest.java
+++ b/svg/src/test/java/com/itextpdf/svg/utils/MatrixTransformationTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/svg/src/test/java/com/itextpdf/svg/utils/RotateTransformationTest.java b/svg/src/test/java/com/itextpdf/svg/utils/RotateTransformationTest.java
index a0b74a1ea6..9d6befb4be 100644
--- a/svg/src/test/java/com/itextpdf/svg/utils/RotateTransformationTest.java
+++ b/svg/src/test/java/com/itextpdf/svg/utils/RotateTransformationTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/svg/src/test/java/com/itextpdf/svg/utils/ScaleTransformationTest.java b/svg/src/test/java/com/itextpdf/svg/utils/ScaleTransformationTest.java
index 6d6d454052..5667569357 100644
--- a/svg/src/test/java/com/itextpdf/svg/utils/ScaleTransformationTest.java
+++ b/svg/src/test/java/com/itextpdf/svg/utils/ScaleTransformationTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/svg/src/test/java/com/itextpdf/svg/utils/SkewXTransformationTest.java b/svg/src/test/java/com/itextpdf/svg/utils/SkewXTransformationTest.java
index 6c1951cf4a..f6e868e527 100644
--- a/svg/src/test/java/com/itextpdf/svg/utils/SkewXTransformationTest.java
+++ b/svg/src/test/java/com/itextpdf/svg/utils/SkewXTransformationTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/svg/src/test/java/com/itextpdf/svg/utils/SkewYTransformationTest.java b/svg/src/test/java/com/itextpdf/svg/utils/SkewYTransformationTest.java
index 77bc4ac8b4..150d93e849 100644
--- a/svg/src/test/java/com/itextpdf/svg/utils/SkewYTransformationTest.java
+++ b/svg/src/test/java/com/itextpdf/svg/utils/SkewYTransformationTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/svg/src/test/java/com/itextpdf/svg/utils/SvgCoordinateUtilsTest.java b/svg/src/test/java/com/itextpdf/svg/utils/SvgCoordinateUtilsTest.java
index a5d8ef0f34..0423359d03 100644
--- a/svg/src/test/java/com/itextpdf/svg/utils/SvgCoordinateUtilsTest.java
+++ b/svg/src/test/java/com/itextpdf/svg/utils/SvgCoordinateUtilsTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is offered under a commercial and under the AGPL license.
diff --git a/svg/src/test/java/com/itextpdf/svg/utils/SvgCssUtilsTest.java b/svg/src/test/java/com/itextpdf/svg/utils/SvgCssUtilsTest.java
index 76b71beffe..822bb0143a 100644
--- a/svg/src/test/java/com/itextpdf/svg/utils/SvgCssUtilsTest.java
+++ b/svg/src/test/java/com/itextpdf/svg/utils/SvgCssUtilsTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/svg/src/test/java/com/itextpdf/svg/utils/SvgTextUtilTest.java b/svg/src/test/java/com/itextpdf/svg/utils/SvgTextUtilTest.java
index c9608ce36f..868d7dd51c 100644
--- a/svg/src/test/java/com/itextpdf/svg/utils/SvgTextUtilTest.java
+++ b/svg/src/test/java/com/itextpdf/svg/utils/SvgTextUtilTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/svg/src/test/java/com/itextpdf/svg/utils/TestUtils.java b/svg/src/test/java/com/itextpdf/svg/utils/TestUtils.java
index 603fbf3f8d..b6341996ea 100644
--- a/svg/src/test/java/com/itextpdf/svg/utils/TestUtils.java
+++ b/svg/src/test/java/com/itextpdf/svg/utils/TestUtils.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/svg/src/test/java/com/itextpdf/svg/utils/TransformUtilsTest.java b/svg/src/test/java/com/itextpdf/svg/utils/TransformUtilsTest.java
index 10d33496c9..80b6d938b2 100644
--- a/svg/src/test/java/com/itextpdf/svg/utils/TransformUtilsTest.java
+++ b/svg/src/test/java/com/itextpdf/svg/utils/TransformUtilsTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify
diff --git a/svg/src/test/java/com/itextpdf/svg/utils/TranslateTransformationTest.java b/svg/src/test/java/com/itextpdf/svg/utils/TranslateTransformationTest.java
index 4c78421fc4..018ad777b4 100644
--- a/svg/src/test/java/com/itextpdf/svg/utils/TranslateTransformationTest.java
+++ b/svg/src/test/java/com/itextpdf/svg/utils/TranslateTransformationTest.java
@@ -1,6 +1,6 @@
/*
This file is part of the iText (R) project.
- Copyright (c) 1998-2021 iText Group NV
+ Copyright (c) 1998-2022 iText Group NV
Authors: iText Software.
This program is free software; you can redistribute it and/or modify