aboutsummaryrefslogtreecommitdiff
path: root/id/server/modules/eID4UExtensions/src/main/java/at/gv/egiz/eid4u/impl/attributes/natural
diff options
context:
space:
mode:
Diffstat (limited to 'id/server/modules/eID4UExtensions/src/main/java/at/gv/egiz/eid4u/impl/attributes/natural')
-rw-r--r--id/server/modules/eID4UExtensions/src/main/java/at/gv/egiz/eid4u/impl/attributes/natural/DocumentAttributeValue.java15
-rw-r--r--id/server/modules/eID4UExtensions/src/main/java/at/gv/egiz/eid4u/impl/attributes/natural/EhicIdTypeAttributeValueMarshaller.java26
-rw-r--r--id/server/modules/eID4UExtensions/src/main/java/at/gv/egiz/eid4u/impl/attributes/natural/IdTypeAttributeValue.java14
-rw-r--r--id/server/modules/eID4UExtensions/src/main/java/at/gv/egiz/eid4u/impl/attributes/natural/IdTypeAttributeValueMarshaller.java26
-rw-r--r--id/server/modules/eID4UExtensions/src/main/java/at/gv/egiz/eid4u/impl/attributes/natural/MaritalStateAttributeValue.java14
-rw-r--r--id/server/modules/eID4UExtensions/src/main/java/at/gv/egiz/eid4u/impl/attributes/natural/MaritalStateAttributeValueMarshaller.java26
-rw-r--r--id/server/modules/eID4UExtensions/src/main/java/at/gv/egiz/eid4u/impl/attributes/natural/NationalityTypeAttributeValueMarshaller.java26
-rw-r--r--id/server/modules/eID4UExtensions/src/main/java/at/gv/egiz/eid4u/impl/attributes/natural/NonValidatingStringAttributeValueMarshaller.java17
-rw-r--r--id/server/modules/eID4UExtensions/src/main/java/at/gv/egiz/eid4u/impl/attributes/natural/PhotoTypeAttributeValueMarshaller.java67
-rw-r--r--id/server/modules/eID4UExtensions/src/main/java/at/gv/egiz/eid4u/impl/attributes/natural/RFC822MailboxTypeAttributeValueMarshaller.java26
-rw-r--r--id/server/modules/eID4UExtensions/src/main/java/at/gv/egiz/eid4u/impl/attributes/natural/TaxIdentificationNumberType.java27
11 files changed, 284 insertions, 0 deletions
diff --git a/id/server/modules/eID4UExtensions/src/main/java/at/gv/egiz/eid4u/impl/attributes/natural/DocumentAttributeValue.java b/id/server/modules/eID4UExtensions/src/main/java/at/gv/egiz/eid4u/impl/attributes/natural/DocumentAttributeValue.java
new file mode 100644
index 000000000..d430c55e2
--- /dev/null
+++ b/id/server/modules/eID4UExtensions/src/main/java/at/gv/egiz/eid4u/impl/attributes/natural/DocumentAttributeValue.java
@@ -0,0 +1,15 @@
+package at.gv.egiz.eid4u.impl.attributes.natural;
+
+import at.gv.egiz.eid4u.impl.attributes.xjc.Document;
+import eu.eidas.auth.commons.attribute.impl.AbstractAttributeValue;
+
+public class DocumentAttributeValue extends AbstractAttributeValue<Document>{
+
+ private static final long serialVersionUID = 1L;
+
+ protected DocumentAttributeValue(Document val, boolean nonLatinScriptAlternateVer) {
+ super(val, false);
+
+ }
+
+}
diff --git a/id/server/modules/eID4UExtensions/src/main/java/at/gv/egiz/eid4u/impl/attributes/natural/EhicIdTypeAttributeValueMarshaller.java b/id/server/modules/eID4UExtensions/src/main/java/at/gv/egiz/eid4u/impl/attributes/natural/EhicIdTypeAttributeValueMarshaller.java
new file mode 100644
index 000000000..7da25adbc
--- /dev/null
+++ b/id/server/modules/eID4UExtensions/src/main/java/at/gv/egiz/eid4u/impl/attributes/natural/EhicIdTypeAttributeValueMarshaller.java
@@ -0,0 +1,26 @@
+package at.gv.egiz.eid4u.impl.attributes.natural;
+
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+import at.gv.egiz.eid4u.api.attributes.Definitions;
+import at.gv.egiz.eid4u.impl.attributes.AbstractStringAttributeMarshaller;
+
+public class EhicIdTypeAttributeValueMarshaller extends AbstractStringAttributeMarshaller {
+
+ private static final String PATTERN = "^80[0-9]{18}$";
+ private static final Pattern p = Pattern.compile(PATTERN);
+
+ @Override
+ protected boolean hasValidForm(String value) {
+ Matcher matcher = p.matcher(value);
+ return matcher.matches();
+
+ }
+
+ @Override
+ protected String getName() {
+ return Definitions.EHICID_FRIENDLYNAME;
+ }
+
+}
diff --git a/id/server/modules/eID4UExtensions/src/main/java/at/gv/egiz/eid4u/impl/attributes/natural/IdTypeAttributeValue.java b/id/server/modules/eID4UExtensions/src/main/java/at/gv/egiz/eid4u/impl/attributes/natural/IdTypeAttributeValue.java
new file mode 100644
index 000000000..9b08c5f00
--- /dev/null
+++ b/id/server/modules/eID4UExtensions/src/main/java/at/gv/egiz/eid4u/impl/attributes/natural/IdTypeAttributeValue.java
@@ -0,0 +1,14 @@
+package at.gv.egiz.eid4u.impl.attributes.natural;
+
+import at.gv.egiz.eid4u.api.attributes.natural.IdType;
+import eu.eidas.auth.commons.attribute.impl.AbstractAttributeValue;
+
+public final class IdTypeAttributeValue extends AbstractAttributeValue<IdType>{
+
+ private static final long serialVersionUID = -4215108790225070526L;
+
+ protected IdTypeAttributeValue(IdType val) {
+ super(val, true);
+ }
+
+}
diff --git a/id/server/modules/eID4UExtensions/src/main/java/at/gv/egiz/eid4u/impl/attributes/natural/IdTypeAttributeValueMarshaller.java b/id/server/modules/eID4UExtensions/src/main/java/at/gv/egiz/eid4u/impl/attributes/natural/IdTypeAttributeValueMarshaller.java
new file mode 100644
index 000000000..d5f325632
--- /dev/null
+++ b/id/server/modules/eID4UExtensions/src/main/java/at/gv/egiz/eid4u/impl/attributes/natural/IdTypeAttributeValueMarshaller.java
@@ -0,0 +1,26 @@
+package at.gv.egiz.eid4u.impl.attributes.natural;
+
+import at.gv.egiz.eid4u.api.attributes.natural.IdType;
+import eu.eidas.auth.commons.attribute.AttributeValue;
+import eu.eidas.auth.commons.attribute.AttributeValueMarshaller;
+import eu.eidas.auth.commons.attribute.AttributeValueMarshallingException;
+
+public final class IdTypeAttributeValueMarshaller implements AttributeValueMarshaller<IdType> {
+
+ @Override
+ public String marshal(AttributeValue<IdType> value) throws AttributeValueMarshallingException {
+ return value.getValue().getValue();
+
+ }
+
+ @Override
+ public AttributeValue<IdType> unmarshal(String value, boolean isNonLatinScriptAlternateVersion)
+ throws AttributeValueMarshallingException {
+ IdType idType = IdType.fromString(value);
+ if (null == idType) {
+ throw new AttributeValueMarshallingException("Illegal IdType value \"" + value + "\"");
+ }
+ return new IdTypeAttributeValue(idType);
+ }
+
+}
diff --git a/id/server/modules/eID4UExtensions/src/main/java/at/gv/egiz/eid4u/impl/attributes/natural/MaritalStateAttributeValue.java b/id/server/modules/eID4UExtensions/src/main/java/at/gv/egiz/eid4u/impl/attributes/natural/MaritalStateAttributeValue.java
new file mode 100644
index 000000000..6ef73dca3
--- /dev/null
+++ b/id/server/modules/eID4UExtensions/src/main/java/at/gv/egiz/eid4u/impl/attributes/natural/MaritalStateAttributeValue.java
@@ -0,0 +1,14 @@
+package at.gv.egiz.eid4u.impl.attributes.natural;
+
+import at.gv.egiz.eid4u.api.attributes.natural.MaritalState;
+import eu.eidas.auth.commons.attribute.impl.AbstractAttributeValue;
+
+public final class MaritalStateAttributeValue extends AbstractAttributeValue<MaritalState>{
+
+ private static final long serialVersionUID = -4215108790225070526L;
+
+ protected MaritalStateAttributeValue(MaritalState val) {
+ super(val, true);
+ }
+
+}
diff --git a/id/server/modules/eID4UExtensions/src/main/java/at/gv/egiz/eid4u/impl/attributes/natural/MaritalStateAttributeValueMarshaller.java b/id/server/modules/eID4UExtensions/src/main/java/at/gv/egiz/eid4u/impl/attributes/natural/MaritalStateAttributeValueMarshaller.java
new file mode 100644
index 000000000..afa8d4d06
--- /dev/null
+++ b/id/server/modules/eID4UExtensions/src/main/java/at/gv/egiz/eid4u/impl/attributes/natural/MaritalStateAttributeValueMarshaller.java
@@ -0,0 +1,26 @@
+package at.gv.egiz.eid4u.impl.attributes.natural;
+
+import at.gv.egiz.eid4u.api.attributes.natural.MaritalState;
+import eu.eidas.auth.commons.attribute.AttributeValue;
+import eu.eidas.auth.commons.attribute.AttributeValueMarshaller;
+import eu.eidas.auth.commons.attribute.AttributeValueMarshallingException;
+
+public final class MaritalStateAttributeValueMarshaller implements AttributeValueMarshaller<MaritalState> {
+
+ @Override
+ public String marshal(AttributeValue<MaritalState> value) throws AttributeValueMarshallingException {
+ return value.getValue().getValue();
+
+ }
+
+ @Override
+ public AttributeValue<MaritalState> unmarshal(String value, boolean isNonLatinScriptAlternateVersion)
+ throws AttributeValueMarshallingException {
+ MaritalState idType = MaritalState.fromString(value);
+ if (null == idType) {
+ throw new AttributeValueMarshallingException("Illegal MaritalState value \"" + value + "\"");
+ }
+ return new MaritalStateAttributeValue(idType);
+ }
+
+}
diff --git a/id/server/modules/eID4UExtensions/src/main/java/at/gv/egiz/eid4u/impl/attributes/natural/NationalityTypeAttributeValueMarshaller.java b/id/server/modules/eID4UExtensions/src/main/java/at/gv/egiz/eid4u/impl/attributes/natural/NationalityTypeAttributeValueMarshaller.java
new file mode 100644
index 000000000..d9b55cf2f
--- /dev/null
+++ b/id/server/modules/eID4UExtensions/src/main/java/at/gv/egiz/eid4u/impl/attributes/natural/NationalityTypeAttributeValueMarshaller.java
@@ -0,0 +1,26 @@
+package at.gv.egiz.eid4u.impl.attributes.natural;
+
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+import at.gv.egiz.eid4u.api.attributes.Definitions;
+import at.gv.egiz.eid4u.impl.attributes.AbstractStringAttributeMarshaller;
+
+public class NationalityTypeAttributeValueMarshaller extends AbstractStringAttributeMarshaller {
+
+ private static final String PATTERN = "^[A-Z]{2}$";
+ private static final Pattern p = Pattern.compile(PATTERN);
+
+ @Override
+ protected boolean hasValidForm(String value) {
+ Matcher matcher = p.matcher(value);
+ return matcher.matches();
+
+ }
+
+ @Override
+ protected String getName() {
+ return Definitions.NATIONALITY_FRIENDLYNAME;
+ }
+
+}
diff --git a/id/server/modules/eID4UExtensions/src/main/java/at/gv/egiz/eid4u/impl/attributes/natural/NonValidatingStringAttributeValueMarshaller.java b/id/server/modules/eID4UExtensions/src/main/java/at/gv/egiz/eid4u/impl/attributes/natural/NonValidatingStringAttributeValueMarshaller.java
new file mode 100644
index 000000000..b19a6b661
--- /dev/null
+++ b/id/server/modules/eID4UExtensions/src/main/java/at/gv/egiz/eid4u/impl/attributes/natural/NonValidatingStringAttributeValueMarshaller.java
@@ -0,0 +1,17 @@
+package at.gv.egiz.eid4u.impl.attributes.natural;
+
+import at.gv.egiz.eid4u.impl.attributes.AbstractStringAttributeMarshaller;
+
+public class NonValidatingStringAttributeValueMarshaller extends AbstractStringAttributeMarshaller {
+
+ @Override
+ protected boolean hasValidForm(String value) {
+ return true;
+ }
+
+ @Override
+ protected String getName() {
+ return "GenericStringAttribute";
+ }
+
+}
diff --git a/id/server/modules/eID4UExtensions/src/main/java/at/gv/egiz/eid4u/impl/attributes/natural/PhotoTypeAttributeValueMarshaller.java b/id/server/modules/eID4UExtensions/src/main/java/at/gv/egiz/eid4u/impl/attributes/natural/PhotoTypeAttributeValueMarshaller.java
new file mode 100644
index 000000000..59f1817a4
--- /dev/null
+++ b/id/server/modules/eID4UExtensions/src/main/java/at/gv/egiz/eid4u/impl/attributes/natural/PhotoTypeAttributeValueMarshaller.java
@@ -0,0 +1,67 @@
+package at.gv.egiz.eid4u.impl.attributes.natural;
+
+import java.io.Reader;
+import java.io.StringReader;
+import java.io.StringWriter;
+
+import javax.xml.bind.JAXBContext;
+import javax.xml.bind.JAXBException;
+import javax.xml.bind.Marshaller;
+import javax.xml.bind.Unmarshaller;
+import javax.xml.stream.XMLInputFactory;
+import javax.xml.stream.XMLStreamException;
+import javax.xml.stream.XMLStreamReader;
+
+import at.gv.egiz.eid4u.impl.attributes.xjc.Document;
+import eu.eidas.auth.commons.EidasStringUtil;
+import eu.eidas.auth.commons.attribute.AttributeValue;
+import eu.eidas.auth.commons.attribute.AttributeValueMarshaller;
+import eu.eidas.auth.commons.attribute.AttributeValueMarshallingException;
+
+public class PhotoTypeAttributeValueMarshaller implements AttributeValueMarshaller<Document>{
+
+ @Override
+ public String marshal(AttributeValue<Document> value) throws AttributeValueMarshallingException {
+ try {
+ JAXBContext context = JAXBContext.newInstance(Document.class);
+ Marshaller m = context.createMarshaller();
+ StringWriter sw = new StringWriter();
+ m.marshal(value, sw);
+ return EidasStringUtil.encodeToBase64(sw.toString());
+
+ } catch (JAXBException e) {
+ throw new AttributeValueMarshallingException("Can NOT create JAXB marshaller for type 'Document'", e);
+
+ }
+
+ }
+
+ @Override
+ public AttributeValue<Document> unmarshal(String value, boolean isNonLatinScriptAlternateVersion)
+ throws AttributeValueMarshallingException {
+ try {
+ Reader reader = new StringReader(EidasStringUtil.decodeStringFromBase64(value));
+
+ //initialize XML reader to prevent XXE
+ XMLInputFactory xif = XMLInputFactory.newInstance();
+ xif.setProperty(XMLInputFactory.IS_SUPPORTING_EXTERNAL_ENTITIES, false);
+ xif.setProperty(XMLInputFactory.SUPPORT_DTD, false);
+ XMLStreamReader xmlReader = xif.createXMLStreamReader(reader);
+
+ //unmarshal
+ JAXBContext context = JAXBContext.newInstance(Document.class);
+ Unmarshaller um = context.createUnmarshaller();
+ Object obj = um.unmarshal(xmlReader);
+
+ if (!(obj instanceof Document))
+ throw new AttributeValueMarshallingException("Unmarshalled result is NOT of type 'Document'");
+
+ return new DocumentAttributeValue((Document)obj, isNonLatinScriptAlternateVersion);
+
+ } catch (JAXBException | XMLStreamException e) {
+ throw new AttributeValueMarshallingException("Can NOT create JAXB unmarshaller for type 'Document'", e);
+
+ }
+
+ }
+}
diff --git a/id/server/modules/eID4UExtensions/src/main/java/at/gv/egiz/eid4u/impl/attributes/natural/RFC822MailboxTypeAttributeValueMarshaller.java b/id/server/modules/eID4UExtensions/src/main/java/at/gv/egiz/eid4u/impl/attributes/natural/RFC822MailboxTypeAttributeValueMarshaller.java
new file mode 100644
index 000000000..05448d35d
--- /dev/null
+++ b/id/server/modules/eID4UExtensions/src/main/java/at/gv/egiz/eid4u/impl/attributes/natural/RFC822MailboxTypeAttributeValueMarshaller.java
@@ -0,0 +1,26 @@
+package at.gv.egiz.eid4u.impl.attributes.natural;
+
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+import at.gv.egiz.eid4u.api.attributes.Definitions;
+import at.gv.egiz.eid4u.impl.attributes.AbstractStringAttributeMarshaller;
+
+public class RFC822MailboxTypeAttributeValueMarshaller extends AbstractStringAttributeMarshaller {
+
+ private static final String PATTERN = "[^@]+@[^\\.]+\\..+";
+ private static final Pattern p = Pattern.compile(PATTERN);
+
+ @Override
+ protected boolean hasValidForm(String value) {
+ Matcher matcher = p.matcher(value);
+ return matcher.matches();
+
+ }
+
+ @Override
+ protected String getName() {
+ return Definitions.EMAIL_NAME;
+ }
+
+}
diff --git a/id/server/modules/eID4UExtensions/src/main/java/at/gv/egiz/eid4u/impl/attributes/natural/TaxIdentificationNumberType.java b/id/server/modules/eID4UExtensions/src/main/java/at/gv/egiz/eid4u/impl/attributes/natural/TaxIdentificationNumberType.java
new file mode 100644
index 000000000..2b4bb6378
--- /dev/null
+++ b/id/server/modules/eID4UExtensions/src/main/java/at/gv/egiz/eid4u/impl/attributes/natural/TaxIdentificationNumberType.java
@@ -0,0 +1,27 @@
+package at.gv.egiz.eid4u.impl.attributes.natural;
+
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+import at.gv.egiz.eid4u.api.attributes.Definitions;
+import at.gv.egiz.eid4u.impl.attributes.AbstractStringAttributeMarshaller;
+
+public final class TaxIdentificationNumberType extends AbstractStringAttributeMarshaller {
+
+ private static final String PATTERN = "^[A-Z]{2}/[a-zA-Z0-9].*";
+ private static final Pattern p = Pattern.compile(PATTERN);
+
+ @Override
+ protected boolean hasValidForm(String value) {
+ Matcher matcher = p.matcher(value);
+ return matcher.matches();
+
+ }
+
+ @Override
+ protected String getName() {
+ return Definitions.TAXIDENTIFICATIONNUMBER_FRIENDLYNAME;
+
+ }
+
+}