From c45fc85b78f3d8701346a231f07b7ffa984ca4ed Mon Sep 17 00:00:00 2001
From: CGantert345 <57003061+CGantert345@users.noreply.github.com>
Date: Fri, 23 Apr 2021 13:41:58 +0200
Subject: update
---
src/main/java/org/uic/barcode/Encoder.java | 18 ++
.../dynamicContent/dfcb1/ExtensionData.java | 59 +++++
.../dfcb1/GeoCoordinateSystemType.java | 57 +++++
.../dynamicContent/dfcb1/GeoCoordinateType.java | 144 +++++++++++
.../barcode/dynamicContent/dfcb1/GeoUnitType.java | 65 +++++
.../dfcb1/HemisphereLatitudeType.java | 56 +++++
.../dfcb1/HemisphereLongitudeType.java | 55 +++++
.../dfcb1/UicDynamicContentData1.java | 268 +++++++++++++++++++++
.../org/uic/barcode/dynamicFrame/Constants.java | 2 +-
.../org/uic/barcode/dynamicFrame/DynamicFrame.java | 19 ++
.../uic/barcode/dynamicFrame/Level1DataType.java | 4 +-
.../org/uic/barcode/staticFrame/StaticFrame.java | 9 +-
.../uic/barcode/utils/AlgorithmNameResolver.java | 2 +-
13 files changed, 753 insertions(+), 5 deletions(-)
create mode 100644 src/main/java/org/uic/barcode/dynamicContent/dfcb1/ExtensionData.java
create mode 100644 src/main/java/org/uic/barcode/dynamicContent/dfcb1/GeoCoordinateSystemType.java
create mode 100644 src/main/java/org/uic/barcode/dynamicContent/dfcb1/GeoCoordinateType.java
create mode 100644 src/main/java/org/uic/barcode/dynamicContent/dfcb1/GeoUnitType.java
create mode 100644 src/main/java/org/uic/barcode/dynamicContent/dfcb1/HemisphereLatitudeType.java
create mode 100644 src/main/java/org/uic/barcode/dynamicContent/dfcb1/HemisphereLongitudeType.java
create mode 100644 src/main/java/org/uic/barcode/dynamicContent/dfcb1/UicDynamicContentData1.java
(limited to 'src/main/java/org/uic')
diff --git a/src/main/java/org/uic/barcode/Encoder.java b/src/main/java/org/uic/barcode/Encoder.java
index aafe5cc..29ce63d 100644
--- a/src/main/java/org/uic/barcode/Encoder.java
+++ b/src/main/java/org/uic/barcode/Encoder.java
@@ -5,6 +5,7 @@ import java.security.PrivateKey;
import java.security.PublicKey;
import org.uic.barcode.asn1.datatypesimpl.OctetString;
+import org.uic.barcode.dynamicContent.dfcb1.UicDynamicContentData1;
import org.uic.barcode.dynamicFrame.Constants;
import org.uic.barcode.dynamicFrame.DataType;
import org.uic.barcode.dynamicFrame.DynamicFrame;
@@ -165,6 +166,15 @@ public class Encoder {
}
}
+ public void setDynamicContentDataUIC1(UicDynamicContentData1 dcd) {
+ if (dynamicFrame != null) {
+ if (dynamicFrame.getLevel2SignedData() == null) {
+ dynamicFrame.setLevel2SignedData(new Level2DataType());
+ }
+ dynamicFrame.getLevel2SignedData().setLevel2Data(dcd.getDataType());
+ }
+ }
+
public DataType getLevel2Data() {
if (dynamicFrame != null && dynamicFrame.getLevel2SignedData() != null) {
return dynamicFrame.getLevel2SignedData().getLevel2Data();
@@ -172,6 +182,14 @@ public class Encoder {
return null;
}
+ public UicDynamicContentData1 getDynamicContentDataUIC1() {
+ if (dynamicFrame != null && dynamicFrame.getLevel2SignedData() != null) {
+ return dynamicFrame.getDynamicDataFDC1();
+ }
+ return null;
+ }
+
+
/**
* Sign level 1 of a dynamic bar code or a static bar code.
*
diff --git a/src/main/java/org/uic/barcode/dynamicContent/dfcb1/ExtensionData.java b/src/main/java/org/uic/barcode/dynamicContent/dfcb1/ExtensionData.java
new file mode 100644
index 0000000..c00da89
--- /dev/null
+++ b/src/main/java/org/uic/barcode/dynamicContent/dfcb1/ExtensionData.java
@@ -0,0 +1,59 @@
+/*
+ * This file was generated by openASN.1 - an open source ASN.1 toolkit for java
+ *
+ * openASN.1 is Copyright (C) 2007 Clayton Hoss, Marc Weyland
+ *
+ * openASN.1 is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * openASN.1 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 Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with openASN.1. If not, see .
+ *
+ */
+package org.uic.barcode.dynamicContent.dfcb1;
+
+import org.uic.barcode.asn1.datatypes.CharacterRestriction;
+import org.uic.barcode.asn1.datatypes.FieldOrder;
+import org.uic.barcode.asn1.datatypes.RestrictedString;
+import org.uic.barcode.asn1.datatypes.Sequence;
+import org.uic.barcode.asn1.datatypesimpl.OctetString;
+
+
+@Sequence
+public class ExtensionData extends Object {
+ public ExtensionData() {
+ }
+
+ @FieldOrder(order = 0)
+ @RestrictedString(CharacterRestriction.IA5String)
+ public String extensionId;
+
+ @FieldOrder(order = 1)
+ public OctetString extensionData;
+
+ public String getExtensionId() {
+ return this.extensionId;
+ }
+
+ public byte[] getExtensionData() {
+ return extensionData.toByteArray();
+ }
+
+ public void setExtensionId(String extensionId) {
+ this.extensionId = extensionId;
+ }
+
+ public void setExtensionData(byte[] extensionData) {
+ this.extensionData = new OctetString(extensionData);
+ }
+
+
+
+}
diff --git a/src/main/java/org/uic/barcode/dynamicContent/dfcb1/GeoCoordinateSystemType.java b/src/main/java/org/uic/barcode/dynamicContent/dfcb1/GeoCoordinateSystemType.java
new file mode 100644
index 0000000..e535c7f
--- /dev/null
+++ b/src/main/java/org/uic/barcode/dynamicContent/dfcb1/GeoCoordinateSystemType.java
@@ -0,0 +1,57 @@
+/*
+ * This file was generated by openASN.1 - an open source ASN.1 toolkit for java
+ *
+ * openASN.1 is Copyright (C) 2007 Clayton Hoss, Marc Weyland
+ *
+ * openASN.1 is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * openASN.1 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 Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with openASN.1. If not, see .
+ *
+ */
+package org.uic.barcode.dynamicContent.dfcb1;
+
+
+// TODO: Auto-generated Javadoc
+/**
+ * The Enum GeoCoordinateSystemType.
+ */
+public enum GeoCoordinateSystemType {
+
+ /** The wgs 84. */
+ wgs84("wgs84"),
+
+ /** The grs 80. */
+ grs80("grs80");
+
+
+ /** The text. */
+ public String text;
+
+ /**
+ * Instantiates a new geo coordinate system type.
+ *
+ * @param text the text
+ */
+ GeoCoordinateSystemType(String text) {
+ this.text = text;
+ }
+
+ /**
+ * To string.
+ *
+ * @return the string
+ */
+ public String toString(){
+ return text;
+ }
+}
+
diff --git a/src/main/java/org/uic/barcode/dynamicContent/dfcb1/GeoCoordinateType.java b/src/main/java/org/uic/barcode/dynamicContent/dfcb1/GeoCoordinateType.java
new file mode 100644
index 0000000..e1a5e9b
--- /dev/null
+++ b/src/main/java/org/uic/barcode/dynamicContent/dfcb1/GeoCoordinateType.java
@@ -0,0 +1,144 @@
+/*
+ * This file was generated by openASN.1 - an open source ASN.1 toolkit for java
+ *
+ * openASN.1 is Copyright (C) 2007 Clayton Hoss, Marc Weyland
+ *
+ * openASN.1 is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * openASN.1 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 Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with openASN.1. If not, see .
+ *
+ */
+package org.uic.barcode.dynamicContent.dfcb1;
+
+import org.uic.barcode.asn1.datatypes.Asn1BigInteger;
+import org.uic.barcode.asn1.datatypes.Asn1Default;
+import org.uic.barcode.asn1.datatypes.Asn1Optional;
+import org.uic.barcode.asn1.datatypes.FieldOrder;
+import org.uic.barcode.asn1.datatypes.Sequence;
+
+@Sequence
+public class GeoCoordinateType extends Object {
+ public GeoCoordinateType() {
+ }
+
+ @FieldOrder(order = 0)
+ @Asn1Default(value="milliDegree")
+ @Asn1Optional public GeoUnitType geoUnit;
+
+ @FieldOrder(order = 1)
+ @Asn1Default(value="wgs84")
+ @Asn1Optional public GeoCoordinateSystemType coordinateSystem;
+
+ @FieldOrder(order = 2)
+ @Asn1Default(value="north")
+ @Asn1Optional public HemisphereLongitudeType hemisphereLongitude;
+
+ @FieldOrder(order = 3)
+ @Asn1Default(value="east")
+ @Asn1Optional public HemisphereLatitudeType hemisphereLatitude;
+
+ @FieldOrder(order = 4)
+ public Asn1BigInteger longitude;
+
+ @FieldOrder(order = 5)
+ public Asn1BigInteger latitude;
+
+ @FieldOrder(order = 6)
+ @Asn1Optional public GeoUnitType accuracy;
+
+ public GeoUnitType getGeoUnit() {
+
+ if (geoUnit == null){
+ return GeoUnitType.milliDegree;
+ }
+ return this.geoUnit;
+ }
+
+ public GeoCoordinateSystemType getCoordinateSystem() {
+
+ if (coordinateSystem == null) {
+ return GeoCoordinateSystemType.wgs84;
+ }
+
+ return this.coordinateSystem;
+ }
+
+ public HemisphereLongitudeType getHemisphereLongitude() {
+
+ if (hemisphereLongitude == null){
+ return HemisphereLongitudeType.north;
+ }
+
+ return this.hemisphereLongitude;
+ }
+
+ public HemisphereLatitudeType getHemisphereLatitude() {
+
+ if (hemisphereLatitude == null) {
+ return HemisphereLatitudeType.east;
+ }
+
+ return this.hemisphereLatitude;
+ }
+
+ public Long getLongitude() {
+
+ return Asn1BigInteger.toLong(this.longitude);
+ }
+
+ public Long getLatitude() {
+
+ return Asn1BigInteger.toLong(this.latitude);
+ }
+
+ public GeoUnitType getAccuracy() {
+
+ return this.accuracy;
+ }
+
+ public void setGeoUnit(GeoUnitType geoUnit) {
+
+ this.geoUnit = geoUnit;
+ }
+
+ public void setCoordinateSystem(GeoCoordinateSystemType coordinateSystem) {
+
+ this.coordinateSystem = coordinateSystem;
+ }
+
+ public void setHemisphereLongitude(HemisphereLongitudeType hemisphereLongitude) {
+
+ this.hemisphereLongitude = hemisphereLongitude;
+ }
+
+ public void setHemisphereLatitude(HemisphereLatitudeType hemisphereLatitude) {
+
+ this.hemisphereLatitude = hemisphereLatitude;
+ }
+
+ public void setLongitude(Long longitude) {
+
+ this.longitude = Asn1BigInteger.toAsn1(longitude);
+ }
+
+ public void setLatitude(Long latitude) {
+
+ this.latitude = Asn1BigInteger.toAsn1(latitude);
+ }
+
+ public void setAccuracy(GeoUnitType accuracy) {
+
+ this.accuracy = accuracy;
+ }
+
+
+}
diff --git a/src/main/java/org/uic/barcode/dynamicContent/dfcb1/GeoUnitType.java b/src/main/java/org/uic/barcode/dynamicContent/dfcb1/GeoUnitType.java
new file mode 100644
index 0000000..222f68d
--- /dev/null
+++ b/src/main/java/org/uic/barcode/dynamicContent/dfcb1/GeoUnitType.java
@@ -0,0 +1,65 @@
+/*
+ * This file was generated by openASN.1 - an open source ASN.1 toolkit for java
+ *
+ * openASN.1 is Copyright (C) 2007 Clayton Hoss, Marc Weyland
+ *
+ * openASN.1 is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * openASN.1 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 Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with openASN.1. If not, see .
+ *
+ */
+package org.uic.barcode.dynamicContent.dfcb1;
+
+// TODO: Auto-generated Javadoc
+/**
+ * The Enum GeoUnitType.
+ */
+public enum GeoUnitType {
+
+ /** The micro degree. */
+ microDegree("microDegree"),
+
+ /** The tenthmilli degree. */
+ tenthmilliDegree("tenthmilliDegree"),
+
+ /** The milli degree. */
+ milliDegree("milliDegree"),
+
+ /** The centi degree. */
+ centiDegree("centiDegree"),
+
+ /** The deci degree. */
+ deciDegree("deciDegree");
+
+
+ /** The text. */
+ public String text;
+
+ /**
+ * Instantiates a new geo unit type.
+ *
+ * @param text the text
+ */
+ GeoUnitType(String text) {
+ this.text = text;
+ }
+
+ /**
+ * To string.
+ *
+ * @return the string
+ */
+ public String toString(){
+ return text;
+ }
+}
+
diff --git a/src/main/java/org/uic/barcode/dynamicContent/dfcb1/HemisphereLatitudeType.java b/src/main/java/org/uic/barcode/dynamicContent/dfcb1/HemisphereLatitudeType.java
new file mode 100644
index 0000000..e76d120
--- /dev/null
+++ b/src/main/java/org/uic/barcode/dynamicContent/dfcb1/HemisphereLatitudeType.java
@@ -0,0 +1,56 @@
+/*
+ * This file was generated by openASN.1 - an open source ASN.1 toolkit for java
+ *
+ * openASN.1 is Copyright (C) 2007 Clayton Hoss, Marc Weyland
+ *
+ * openASN.1 is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * openASN.1 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 Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with openASN.1. If not, see .
+ *
+ */
+package org.uic.barcode.dynamicContent.dfcb1;
+
+// TODO: Auto-generated Javadoc
+/**
+ * The Enum HemisphereLatitudeType.
+ */
+public enum HemisphereLatitudeType {
+
+ /** The east. */
+ east("east"),
+
+ /** The west. */
+ west("west");
+
+
+ /** The text. */
+ public String text;
+
+ /**
+ * Instantiates a new hemisphere latitude type.
+ *
+ * @param text the text
+ */
+ HemisphereLatitudeType(String text) {
+ this.text = text;
+ }
+
+ /**
+ * To string.
+ *
+ * @return the string
+ */
+ public String toString(){
+ return text;
+ }
+}
+
diff --git a/src/main/java/org/uic/barcode/dynamicContent/dfcb1/HemisphereLongitudeType.java b/src/main/java/org/uic/barcode/dynamicContent/dfcb1/HemisphereLongitudeType.java
new file mode 100644
index 0000000..3eeed52
--- /dev/null
+++ b/src/main/java/org/uic/barcode/dynamicContent/dfcb1/HemisphereLongitudeType.java
@@ -0,0 +1,55 @@
+/*
+ * This file was generated by openASN.1 - an open source ASN.1 toolkit for java
+ *
+ * openASN.1 is Copyright (C) 2007 Clayton Hoss, Marc Weyland
+ *
+ * openASN.1 is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * openASN.1 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 Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with openASN.1. If not, see .
+ *
+ */
+package org.uic.barcode.dynamicContent.dfcb1;
+
+// TODO: Auto-generated Javadoc
+/**
+ * The Enum HemisphereLongitudeType.
+ */
+public enum HemisphereLongitudeType {
+
+ /** The north. */
+ north("north"),
+
+ /** The south. */
+ south("south");
+
+ /** The text. */
+ public String text;
+
+ /**
+ * Instantiates a new hemisphere longitude type.
+ *
+ * @param text the text
+ */
+ HemisphereLongitudeType(String text) {
+ this.text = text;
+ }
+
+ /**
+ * To string.
+ *
+ * @return the string
+ */
+ public String toString(){
+ return text;
+ }
+}
+
diff --git a/src/main/java/org/uic/barcode/dynamicContent/dfcb1/UicDynamicContentData1.java b/src/main/java/org/uic/barcode/dynamicContent/dfcb1/UicDynamicContentData1.java
new file mode 100644
index 0000000..034057a
--- /dev/null
+++ b/src/main/java/org/uic/barcode/dynamicContent/dfcb1/UicDynamicContentData1.java
@@ -0,0 +1,268 @@
+/*
+ *
+ */
+package org.uic.barcode.dynamicContent.dfcb1;
+
+import java.util.Calendar;
+import java.util.Date;
+import java.util.TimeZone;
+
+import org.uic.barcode.asn1.datatypes.Asn1Default;
+import org.uic.barcode.asn1.datatypes.Asn1Optional;
+import org.uic.barcode.asn1.datatypes.CharacterRestriction;
+import org.uic.barcode.asn1.datatypes.FieldOrder;
+import org.uic.barcode.asn1.datatypes.HasExtensionMarker;
+import org.uic.barcode.asn1.datatypes.IntRange;
+import org.uic.barcode.asn1.datatypes.RestrictedString;
+import org.uic.barcode.asn1.datatypes.Sequence;
+import org.uic.barcode.asn1.datatypesimpl.OctetString;
+import org.uic.barcode.asn1.uper.UperEncoder;
+import org.uic.barcode.dynamicFrame.DataType;
+
+
+/**
+ * The Class UicDynamicContentData.
+ *
+ * The dynamic content for FDC1
+ *
+ */
+
+
+@Sequence
+@HasExtensionMarker
+public class UicDynamicContentData1 {
+
+ //-- Moment of generation of the dynamic content, expressed in UTC :
+ //-- * dynamicContentDay is the number of days from issuing date
+ //-- (UicRailTicketData.issuingDetail.issuingYear and issuingDay)
+ // -- The range 0..1070 allows a validity equal to that of the validFrom (700) plus
+ // -- validUntil (370) elements of the different transport documents of UicRailTicketData.
+ //-- * dynamicContentTime is the number of seconds of the day
+ //-- (from 0 = 0:00:00 to 86399 = 23:59:59)
+ //-- These two elements shall be either both present, either both absent
+ /** The day. */
+ //dynamicContentDay INTEGER (0..1070) DEFAULT 0,
+ @FieldOrder(order = 0)
+ @Asn1Default(value="0")
+ @IntRange(minValue=0, maxValue=1070)
+ public Long day;
+
+ /** The second of day. */
+ // dynamicContentTime INTEGER (0..86399) OPTIONAL,
+ @FieldOrder(order = 1)
+ @IntRange(minValue=0, maxValue=86399)
+ public Long secondOfDay;
+
+ //-- Coordinates of the place where the dynamic content has been generated
+ // -- (same GeoCoordinateType type as in UicRailTicketData)
+ /** The geo coordinate. */
+ //dynamicContentGeoCoordinate GeoCoordinateType OPTIONAL,
+ @FieldOrder(order = 2)
+ @Asn1Optional public GeoCoordinateType geoCoordinate;
+ //-- Response from the mobile to any data received from the terminal.
+ //-- The data received from the terminal may be a random number, or any other information.
+ //-- The response may be the data itself, a hashing of this data, or any other response.
+ // -- This response may be completed with other information: IMEI, mobile phone number...
+ //-- The type used is ExtensionData, as it is fully adapted.
+ // -- extensionId shall be set to:
+ // -- * "=" if the data included in extensionData is exactly the one that was transmitted by the terminal,
+ // -- * any other value (chosen by the issuer) in other cases.
+ /** The challenge response. */
+ //dynamicContentResponseToChallenge ExtensionData OPTIONAL,
+ @FieldOrder(order = 3)
+ @Asn1Optional public ExtensionData challengeResponse;
+
+ /** The extension. */
+ //-- proprietary data defined bilaterally
+ @FieldOrder(order = 4)
+ @Asn1Optional public ExtensionData extension;
+ //dynamicContentExtension ExtensionData OPTIONAL,
+
+ // challenge string asked by the TCO
+ @FieldOrder(order = 5)
+ @RestrictedString(CharacterRestriction.IA5String)
+ @Asn1Optional public String challengeString;
+
+ // hashed phone id
+ @FieldOrder(order = 6)
+ public OctetString phoneIdHash;
+
+ // hashed e-passport-id
+ @FieldOrder(order = 7)
+ public OctetString passHash;
+
+ //...
+
+ /**
+ * Gets the day.
+ *
+ * @return the day
+ */
+ public Long getDay() {
+ return day;
+ }
+
+ /**
+ * Sets the day.
+ *
+ * @param day the new day
+ */
+ public void setDay(Long day) {
+ this.day = day;
+ }
+
+ /**
+ * Gets the time.
+ *
+ * @return the time
+ */
+ public Long getTime() {
+ return secondOfDay;
+ }
+
+ /**
+ * Sets the time.
+ *
+ * @param time the new time
+ */
+ public void setTime(Long time) {
+ this.secondOfDay = time;
+ }
+
+ /**
+ * Gets the geo coordinate.
+ *
+ * @return the geo coordinate
+ */
+ public GeoCoordinateType getGeoCoordinate() {
+ return geoCoordinate;
+ }
+
+ /**
+ * Sets the geo coordinate.
+ *
+ * @param geoCoordinate the new geo coordinate
+ */
+ public void setGeoCoordinate(GeoCoordinateType geoCoordinate) {
+ this.geoCoordinate = geoCoordinate;
+ }
+
+ /**
+ * Gets the challenge response.
+ *
+ * @return the challenge response
+ */
+ public ExtensionData getChallengeResponse() {
+ return challengeResponse;
+ }
+
+ /**
+ * Sets the challenge response.
+ *
+ * @param challengeResponse the new challenge response
+ */
+ public void setChallengeResponse(ExtensionData challengeResponse) {
+ this.challengeResponse = challengeResponse;
+ }
+
+ /**
+ * Gets the extension.
+ *
+ * @return the extension
+ */
+ public ExtensionData getExtension() {
+ return extension;
+ }
+
+ /**
+ * Sets the extension.
+ *
+ * @param extension the new extension
+ */
+ public void setExtension(ExtensionData extension) {
+ this.extension = extension;
+ }
+
+ /**
+ * Gets the time.
+ *
+ * @param issuingDate the issuing date in UTC
+ * @return the date and time of content creation in UTC
+ */
+ public Date getTime(Date issuingDate) {
+
+ Calendar cal = Calendar.getInstance();
+ cal.setTime(issuingDate);
+ cal.setTimeZone(TimeZone.getTimeZone("UTC"));
+ cal.set(Calendar.SECOND,0);
+ cal.set(Calendar.HOUR,0);
+ cal.set(Calendar.MINUTE,0);
+ cal.add(Calendar.DATE, day.intValue());
+ cal.add(Calendar.SECOND, secondOfDay.intValue());
+
+ return cal.getTime();
+ }
+
+ /**
+ * Sets the date time.
+ *
+ * @param dateUTC the current date and time in UTC
+ * @param issuingDateUTC the issuing date and time in UTC
+ */
+ public void setDateTime(Date dateUTC, Date issuingDateUTC) {
+
+ Calendar cal1 = Calendar.getInstance();
+ cal1.setTime(issuingDateUTC);
+
+ Calendar cal2 = Calendar.getInstance();
+ cal2.setTime(dateUTC);
+
+ int days1 = cal1.get(Calendar.DATE);
+ int days2 = cal2.get(Calendar.DATE);
+
+ day = new Long (days2 - days1);
+
+ secondOfDay = (long) cal2.get(Calendar.SECOND);
+ secondOfDay = secondOfDay + 60 * (long) cal2.get(Calendar.MINUTE);
+ secondOfDay = secondOfDay + 60 * 60 * (long) cal2.get(Calendar.HOUR_OF_DAY);
+
+ }
+
+ public static String getFormat() {
+ return "FDC1";
+ }
+
+ public DataType getDataType() {
+ DataType data = new DataType();
+ data.setFormat(UicDynamicContentData1.getFormat());
+ data.setByteData(UperEncoder.encode(this));
+ return data;
+ }
+
+ public String getChallengeString() {
+ return challengeString;
+ }
+
+ public void setChallengeString(String challengeString) {
+ this.challengeString = challengeString;
+ }
+
+ public OctetString getPhoneIdHash() {
+ return phoneIdHash;
+ }
+
+ public void setPhoneIdHash(OctetString phoneIdHash) {
+ this.phoneIdHash = phoneIdHash;
+ }
+
+ public OctetString getPassHash() {
+ return passHash;
+ }
+
+ public void setPassHash(OctetString passHash) {
+ this.passHash = passHash;
+ }
+
+
+
+}
diff --git a/src/main/java/org/uic/barcode/dynamicFrame/Constants.java b/src/main/java/org/uic/barcode/dynamicFrame/Constants.java
index 98b62aa..774475a 100644
--- a/src/main/java/org/uic/barcode/dynamicFrame/Constants.java
+++ b/src/main/java/org/uic/barcode/dynamicFrame/Constants.java
@@ -12,7 +12,7 @@ public class Constants {
public static String DSA_SHA1 = "1.2.840.10040.4.3";
public static String DSA_SHA224 = "2.16.840.1.101.3.4.3.1";
- public static String DSA_SHA248 = "2.16.840.1.101.3.4.3.2";
+ public static String DSA_SHA256 = "2.16.840.1.101.3.4.3.2";
public static String DATA_TYPE_FCB_VERSION_1 = "FCB1";
public static String DATA_TYPE_FCB_VERSION_2 = "FCB2";
diff --git a/src/main/java/org/uic/barcode/dynamicFrame/DynamicFrame.java b/src/main/java/org/uic/barcode/dynamicFrame/DynamicFrame.java
index 9605a0d..886cb79 100644
--- a/src/main/java/org/uic/barcode/dynamicFrame/DynamicFrame.java
+++ b/src/main/java/org/uic/barcode/dynamicFrame/DynamicFrame.java
@@ -18,6 +18,7 @@ import org.uic.barcode.asn1.datatypes.RestrictedString;
import org.uic.barcode.asn1.datatypes.Sequence;
import org.uic.barcode.asn1.datatypesimpl.OctetString;
import org.uic.barcode.asn1.uper.UperEncoder;
+import org.uic.barcode.dynamicContent.dfcb1.UicDynamicContentData1;
import org.uic.barcode.utils.AlgorithmNameResolver;
@@ -262,5 +263,23 @@ public class DynamicFrame extends Object{
}
+ public void addLevel2DynamicData(UicDynamicContentData1 dynamicData) {
+ this.getLevel2SignedData().setLevel2Data( dynamicData.getDataType());
+ }
+
+ public UicDynamicContentData1 getDynamicDataFDC1() {
+
+ if (this.getLevel2SignedData() == null ||
+ this.getLevel2SignedData().getLevel2Data() == null){
+ return null;
+ }
+
+ if ( UicDynamicContentData1.getFormat().equals(this.getLevel2SignedData().getLevel2Data().getFormat())) {
+ return UperEncoder.decode(this.getLevel2SignedData().getLevel2Data().getByteData(), UicDynamicContentData1.class);
+ }
+ return null;
+
+ }
+
}
diff --git a/src/main/java/org/uic/barcode/dynamicFrame/Level1DataType.java b/src/main/java/org/uic/barcode/dynamicFrame/Level1DataType.java
index 1f4d476..aac0188 100644
--- a/src/main/java/org/uic/barcode/dynamicFrame/Level1DataType.java
+++ b/src/main/java/org/uic/barcode/dynamicFrame/Level1DataType.java
@@ -49,7 +49,7 @@ public class Level1DataType {
*
* e.g.:
* -- DSA SHA224 2.16.840.1.101.3.4.3.1
- * -- DSA SHA248 2.16.840.1.101.3.4.3.2
+ * -- DSA SHA256 2.16.840.1.101.3.4.3.2
* -- ECC 256 1.2.840.10045.3.1.7
*
*
@@ -69,7 +69,7 @@ public class Level1DataType {
*
* e.g.:
* -- DSA SHA224 2.16.840.1.101.3.4.3.1
- * -- DSA SHA248 2.16.840.1.101.3.4.3.2
+ * -- DSA SHA256 2.16.840.1.101.3.4.3.2
* -- ECC 256 1.2.840.10045.3.1.7
*
*
diff --git a/src/main/java/org/uic/barcode/staticFrame/StaticFrame.java b/src/main/java/org/uic/barcode/staticFrame/StaticFrame.java
index 639af69..2759bf0 100644
--- a/src/main/java/org/uic/barcode/staticFrame/StaticFrame.java
+++ b/src/main/java/org/uic/barcode/staticFrame/StaticFrame.java
@@ -655,7 +655,7 @@ public class StaticFrame {
* @throws NoSuchAlgorithmException the no such algorithm exception
* @throws SignatureException the signature exception
* @throws IllegalArgumentException the illegal argument exception
- * @throws UnsupportedOperationException the unsupported operatign exception
+ * @throws UnsupportedOperationException the unsupported operating exception
* @throws EncodingFormatException
* @throws IOException
*/
@@ -669,6 +669,9 @@ public class StaticFrame {
algo = service.getAlgorithm();
}
}
+ if (algo == null) {
+ throw new NoSuchAlgorithmException("No service for algorithm found: " + signingAlg);
+ }
Signature sig = Signature.getInstance(algo);
sig.initVerify(key);
sig.update(getDataForSignature());
@@ -697,8 +700,12 @@ public class StaticFrame {
Service service = prov.getService("Signature",signingAlg);
if (service != null) {
algo = service.getAlgorithm();
+ break;
}
}
+ if (algo == null) {
+ throw new NoSuchAlgorithmException("No service for algorthm found: " + signingAlg);
+ }
Signature sig = Signature.getInstance(algo);
sig.initSign(key);
signedData = getDataForSignature();
diff --git a/src/main/java/org/uic/barcode/utils/AlgorithmNameResolver.java b/src/main/java/org/uic/barcode/utils/AlgorithmNameResolver.java
index 300bf7d..e3918b0 100644
--- a/src/main/java/org/uic/barcode/utils/AlgorithmNameResolver.java
+++ b/src/main/java/org/uic/barcode/utils/AlgorithmNameResolver.java
@@ -50,7 +50,7 @@ public class AlgorithmNameResolver {
Service pservice = prov.getService(ptype, poid);
String palgo = pservice.getAlgorithm();
- if (ptype.equalsIgnoreCase(type) && poid.equals(oid)) {
+ if (poid != null && ptype.equalsIgnoreCase(type) && poid.equals(oid)) {
return palgo;
}
}
--
cgit v1.2.3
From 9c27db0284c86583c135282e637f5e4dcb220c89 Mon Sep 17 00:00:00 2001
From: CGantert345 <57003061+CGantert345@users.noreply.github.com>
Date: Wed, 12 May 2021 14:00:22 +0200
Subject: - Bug fix StaticHeader date format - Dynamic content for the dynamic
content of the dynamic frame
---
src/main/java/org/uic/barcode/Encoder.java | 6 +-
.../dynamicContent/dfcb1/ExtensionData.java | 59 -----
.../dfcb1/GeoCoordinateSystemType.java | 57 -----
.../dynamicContent/dfcb1/GeoCoordinateType.java | 144 -----------
.../barcode/dynamicContent/dfcb1/GeoUnitType.java | 65 -----
.../dfcb1/HemisphereLatitudeType.java | 56 -----
.../dfcb1/HemisphereLongitudeType.java | 55 -----
.../dfcb1/UicDynamicContentData1.java | 268 ---------------------
.../barcode/dynamicContent/fdc1/ExtensionData.java | 59 +++++
.../fdc1/GeoCoordinateSystemType.java | 57 +++++
.../dynamicContent/fdc1/GeoCoordinateType.java | 144 +++++++++++
.../barcode/dynamicContent/fdc1/GeoUnitType.java | 65 +++++
.../fdc1/HemisphereLatitudeType.java | 56 +++++
.../fdc1/HemisphereLongitudeType.java | 55 +++++
.../dynamicContent/fdc1/SequenceOfExtension.java | 11 +
.../uic/barcode/dynamicContent/fdc1/TimeStamp.java | 144 +++++++++++
.../fdc1/UicDynamicContentDataFDC1.java | 205 ++++++++++++++++
.../org/uic/barcode/dynamicFrame/DynamicFrame.java | 10 +-
.../uic/barcode/staticFrame/UHEADDataRecord.java | 2 +-
19 files changed, 805 insertions(+), 713 deletions(-)
delete mode 100644 src/main/java/org/uic/barcode/dynamicContent/dfcb1/ExtensionData.java
delete mode 100644 src/main/java/org/uic/barcode/dynamicContent/dfcb1/GeoCoordinateSystemType.java
delete mode 100644 src/main/java/org/uic/barcode/dynamicContent/dfcb1/GeoCoordinateType.java
delete mode 100644 src/main/java/org/uic/barcode/dynamicContent/dfcb1/GeoUnitType.java
delete mode 100644 src/main/java/org/uic/barcode/dynamicContent/dfcb1/HemisphereLatitudeType.java
delete mode 100644 src/main/java/org/uic/barcode/dynamicContent/dfcb1/HemisphereLongitudeType.java
delete mode 100644 src/main/java/org/uic/barcode/dynamicContent/dfcb1/UicDynamicContentData1.java
create mode 100644 src/main/java/org/uic/barcode/dynamicContent/fdc1/ExtensionData.java
create mode 100644 src/main/java/org/uic/barcode/dynamicContent/fdc1/GeoCoordinateSystemType.java
create mode 100644 src/main/java/org/uic/barcode/dynamicContent/fdc1/GeoCoordinateType.java
create mode 100644 src/main/java/org/uic/barcode/dynamicContent/fdc1/GeoUnitType.java
create mode 100644 src/main/java/org/uic/barcode/dynamicContent/fdc1/HemisphereLatitudeType.java
create mode 100644 src/main/java/org/uic/barcode/dynamicContent/fdc1/HemisphereLongitudeType.java
create mode 100644 src/main/java/org/uic/barcode/dynamicContent/fdc1/SequenceOfExtension.java
create mode 100644 src/main/java/org/uic/barcode/dynamicContent/fdc1/TimeStamp.java
create mode 100644 src/main/java/org/uic/barcode/dynamicContent/fdc1/UicDynamicContentDataFDC1.java
(limited to 'src/main/java/org/uic')
diff --git a/src/main/java/org/uic/barcode/Encoder.java b/src/main/java/org/uic/barcode/Encoder.java
index 29ce63d..d971214 100644
--- a/src/main/java/org/uic/barcode/Encoder.java
+++ b/src/main/java/org/uic/barcode/Encoder.java
@@ -5,7 +5,7 @@ import java.security.PrivateKey;
import java.security.PublicKey;
import org.uic.barcode.asn1.datatypesimpl.OctetString;
-import org.uic.barcode.dynamicContent.dfcb1.UicDynamicContentData1;
+import org.uic.barcode.dynamicContent.fdc1.UicDynamicContentDataFDC1;
import org.uic.barcode.dynamicFrame.Constants;
import org.uic.barcode.dynamicFrame.DataType;
import org.uic.barcode.dynamicFrame.DynamicFrame;
@@ -166,7 +166,7 @@ public class Encoder {
}
}
- public void setDynamicContentDataUIC1(UicDynamicContentData1 dcd) {
+ public void setDynamicContentDataUIC1(UicDynamicContentDataFDC1 dcd) {
if (dynamicFrame != null) {
if (dynamicFrame.getLevel2SignedData() == null) {
dynamicFrame.setLevel2SignedData(new Level2DataType());
@@ -182,7 +182,7 @@ public class Encoder {
return null;
}
- public UicDynamicContentData1 getDynamicContentDataUIC1() {
+ public UicDynamicContentDataFDC1 getDynamicContentDataUIC1() {
if (dynamicFrame != null && dynamicFrame.getLevel2SignedData() != null) {
return dynamicFrame.getDynamicDataFDC1();
}
diff --git a/src/main/java/org/uic/barcode/dynamicContent/dfcb1/ExtensionData.java b/src/main/java/org/uic/barcode/dynamicContent/dfcb1/ExtensionData.java
deleted file mode 100644
index c00da89..0000000
--- a/src/main/java/org/uic/barcode/dynamicContent/dfcb1/ExtensionData.java
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- * This file was generated by openASN.1 - an open source ASN.1 toolkit for java
- *
- * openASN.1 is Copyright (C) 2007 Clayton Hoss, Marc Weyland
- *
- * openASN.1 is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * openASN.1 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 Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with openASN.1. If not, see .
- *
- */
-package org.uic.barcode.dynamicContent.dfcb1;
-
-import org.uic.barcode.asn1.datatypes.CharacterRestriction;
-import org.uic.barcode.asn1.datatypes.FieldOrder;
-import org.uic.barcode.asn1.datatypes.RestrictedString;
-import org.uic.barcode.asn1.datatypes.Sequence;
-import org.uic.barcode.asn1.datatypesimpl.OctetString;
-
-
-@Sequence
-public class ExtensionData extends Object {
- public ExtensionData() {
- }
-
- @FieldOrder(order = 0)
- @RestrictedString(CharacterRestriction.IA5String)
- public String extensionId;
-
- @FieldOrder(order = 1)
- public OctetString extensionData;
-
- public String getExtensionId() {
- return this.extensionId;
- }
-
- public byte[] getExtensionData() {
- return extensionData.toByteArray();
- }
-
- public void setExtensionId(String extensionId) {
- this.extensionId = extensionId;
- }
-
- public void setExtensionData(byte[] extensionData) {
- this.extensionData = new OctetString(extensionData);
- }
-
-
-
-}
diff --git a/src/main/java/org/uic/barcode/dynamicContent/dfcb1/GeoCoordinateSystemType.java b/src/main/java/org/uic/barcode/dynamicContent/dfcb1/GeoCoordinateSystemType.java
deleted file mode 100644
index e535c7f..0000000
--- a/src/main/java/org/uic/barcode/dynamicContent/dfcb1/GeoCoordinateSystemType.java
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
- * This file was generated by openASN.1 - an open source ASN.1 toolkit for java
- *
- * openASN.1 is Copyright (C) 2007 Clayton Hoss, Marc Weyland
- *
- * openASN.1 is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * openASN.1 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 Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with openASN.1. If not, see .
- *
- */
-package org.uic.barcode.dynamicContent.dfcb1;
-
-
-// TODO: Auto-generated Javadoc
-/**
- * The Enum GeoCoordinateSystemType.
- */
-public enum GeoCoordinateSystemType {
-
- /** The wgs 84. */
- wgs84("wgs84"),
-
- /** The grs 80. */
- grs80("grs80");
-
-
- /** The text. */
- public String text;
-
- /**
- * Instantiates a new geo coordinate system type.
- *
- * @param text the text
- */
- GeoCoordinateSystemType(String text) {
- this.text = text;
- }
-
- /**
- * To string.
- *
- * @return the string
- */
- public String toString(){
- return text;
- }
-}
-
diff --git a/src/main/java/org/uic/barcode/dynamicContent/dfcb1/GeoCoordinateType.java b/src/main/java/org/uic/barcode/dynamicContent/dfcb1/GeoCoordinateType.java
deleted file mode 100644
index e1a5e9b..0000000
--- a/src/main/java/org/uic/barcode/dynamicContent/dfcb1/GeoCoordinateType.java
+++ /dev/null
@@ -1,144 +0,0 @@
-/*
- * This file was generated by openASN.1 - an open source ASN.1 toolkit for java
- *
- * openASN.1 is Copyright (C) 2007 Clayton Hoss, Marc Weyland
- *
- * openASN.1 is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * openASN.1 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 Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with openASN.1. If not, see .
- *
- */
-package org.uic.barcode.dynamicContent.dfcb1;
-
-import org.uic.barcode.asn1.datatypes.Asn1BigInteger;
-import org.uic.barcode.asn1.datatypes.Asn1Default;
-import org.uic.barcode.asn1.datatypes.Asn1Optional;
-import org.uic.barcode.asn1.datatypes.FieldOrder;
-import org.uic.barcode.asn1.datatypes.Sequence;
-
-@Sequence
-public class GeoCoordinateType extends Object {
- public GeoCoordinateType() {
- }
-
- @FieldOrder(order = 0)
- @Asn1Default(value="milliDegree")
- @Asn1Optional public GeoUnitType geoUnit;
-
- @FieldOrder(order = 1)
- @Asn1Default(value="wgs84")
- @Asn1Optional public GeoCoordinateSystemType coordinateSystem;
-
- @FieldOrder(order = 2)
- @Asn1Default(value="north")
- @Asn1Optional public HemisphereLongitudeType hemisphereLongitude;
-
- @FieldOrder(order = 3)
- @Asn1Default(value="east")
- @Asn1Optional public HemisphereLatitudeType hemisphereLatitude;
-
- @FieldOrder(order = 4)
- public Asn1BigInteger longitude;
-
- @FieldOrder(order = 5)
- public Asn1BigInteger latitude;
-
- @FieldOrder(order = 6)
- @Asn1Optional public GeoUnitType accuracy;
-
- public GeoUnitType getGeoUnit() {
-
- if (geoUnit == null){
- return GeoUnitType.milliDegree;
- }
- return this.geoUnit;
- }
-
- public GeoCoordinateSystemType getCoordinateSystem() {
-
- if (coordinateSystem == null) {
- return GeoCoordinateSystemType.wgs84;
- }
-
- return this.coordinateSystem;
- }
-
- public HemisphereLongitudeType getHemisphereLongitude() {
-
- if (hemisphereLongitude == null){
- return HemisphereLongitudeType.north;
- }
-
- return this.hemisphereLongitude;
- }
-
- public HemisphereLatitudeType getHemisphereLatitude() {
-
- if (hemisphereLatitude == null) {
- return HemisphereLatitudeType.east;
- }
-
- return this.hemisphereLatitude;
- }
-
- public Long getLongitude() {
-
- return Asn1BigInteger.toLong(this.longitude);
- }
-
- public Long getLatitude() {
-
- return Asn1BigInteger.toLong(this.latitude);
- }
-
- public GeoUnitType getAccuracy() {
-
- return this.accuracy;
- }
-
- public void setGeoUnit(GeoUnitType geoUnit) {
-
- this.geoUnit = geoUnit;
- }
-
- public void setCoordinateSystem(GeoCoordinateSystemType coordinateSystem) {
-
- this.coordinateSystem = coordinateSystem;
- }
-
- public void setHemisphereLongitude(HemisphereLongitudeType hemisphereLongitude) {
-
- this.hemisphereLongitude = hemisphereLongitude;
- }
-
- public void setHemisphereLatitude(HemisphereLatitudeType hemisphereLatitude) {
-
- this.hemisphereLatitude = hemisphereLatitude;
- }
-
- public void setLongitude(Long longitude) {
-
- this.longitude = Asn1BigInteger.toAsn1(longitude);
- }
-
- public void setLatitude(Long latitude) {
-
- this.latitude = Asn1BigInteger.toAsn1(latitude);
- }
-
- public void setAccuracy(GeoUnitType accuracy) {
-
- this.accuracy = accuracy;
- }
-
-
-}
diff --git a/src/main/java/org/uic/barcode/dynamicContent/dfcb1/GeoUnitType.java b/src/main/java/org/uic/barcode/dynamicContent/dfcb1/GeoUnitType.java
deleted file mode 100644
index 222f68d..0000000
--- a/src/main/java/org/uic/barcode/dynamicContent/dfcb1/GeoUnitType.java
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- * This file was generated by openASN.1 - an open source ASN.1 toolkit for java
- *
- * openASN.1 is Copyright (C) 2007 Clayton Hoss, Marc Weyland
- *
- * openASN.1 is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * openASN.1 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 Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with openASN.1. If not, see .
- *
- */
-package org.uic.barcode.dynamicContent.dfcb1;
-
-// TODO: Auto-generated Javadoc
-/**
- * The Enum GeoUnitType.
- */
-public enum GeoUnitType {
-
- /** The micro degree. */
- microDegree("microDegree"),
-
- /** The tenthmilli degree. */
- tenthmilliDegree("tenthmilliDegree"),
-
- /** The milli degree. */
- milliDegree("milliDegree"),
-
- /** The centi degree. */
- centiDegree("centiDegree"),
-
- /** The deci degree. */
- deciDegree("deciDegree");
-
-
- /** The text. */
- public String text;
-
- /**
- * Instantiates a new geo unit type.
- *
- * @param text the text
- */
- GeoUnitType(String text) {
- this.text = text;
- }
-
- /**
- * To string.
- *
- * @return the string
- */
- public String toString(){
- return text;
- }
-}
-
diff --git a/src/main/java/org/uic/barcode/dynamicContent/dfcb1/HemisphereLatitudeType.java b/src/main/java/org/uic/barcode/dynamicContent/dfcb1/HemisphereLatitudeType.java
deleted file mode 100644
index e76d120..0000000
--- a/src/main/java/org/uic/barcode/dynamicContent/dfcb1/HemisphereLatitudeType.java
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- * This file was generated by openASN.1 - an open source ASN.1 toolkit for java
- *
- * openASN.1 is Copyright (C) 2007 Clayton Hoss, Marc Weyland
- *
- * openASN.1 is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * openASN.1 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 Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with openASN.1. If not, see .
- *
- */
-package org.uic.barcode.dynamicContent.dfcb1;
-
-// TODO: Auto-generated Javadoc
-/**
- * The Enum HemisphereLatitudeType.
- */
-public enum HemisphereLatitudeType {
-
- /** The east. */
- east("east"),
-
- /** The west. */
- west("west");
-
-
- /** The text. */
- public String text;
-
- /**
- * Instantiates a new hemisphere latitude type.
- *
- * @param text the text
- */
- HemisphereLatitudeType(String text) {
- this.text = text;
- }
-
- /**
- * To string.
- *
- * @return the string
- */
- public String toString(){
- return text;
- }
-}
-
diff --git a/src/main/java/org/uic/barcode/dynamicContent/dfcb1/HemisphereLongitudeType.java b/src/main/java/org/uic/barcode/dynamicContent/dfcb1/HemisphereLongitudeType.java
deleted file mode 100644
index 3eeed52..0000000
--- a/src/main/java/org/uic/barcode/dynamicContent/dfcb1/HemisphereLongitudeType.java
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
- * This file was generated by openASN.1 - an open source ASN.1 toolkit for java
- *
- * openASN.1 is Copyright (C) 2007 Clayton Hoss, Marc Weyland
- *
- * openASN.1 is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * openASN.1 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 Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with openASN.1. If not, see .
- *
- */
-package org.uic.barcode.dynamicContent.dfcb1;
-
-// TODO: Auto-generated Javadoc
-/**
- * The Enum HemisphereLongitudeType.
- */
-public enum HemisphereLongitudeType {
-
- /** The north. */
- north("north"),
-
- /** The south. */
- south("south");
-
- /** The text. */
- public String text;
-
- /**
- * Instantiates a new hemisphere longitude type.
- *
- * @param text the text
- */
- HemisphereLongitudeType(String text) {
- this.text = text;
- }
-
- /**
- * To string.
- *
- * @return the string
- */
- public String toString(){
- return text;
- }
-}
-
diff --git a/src/main/java/org/uic/barcode/dynamicContent/dfcb1/UicDynamicContentData1.java b/src/main/java/org/uic/barcode/dynamicContent/dfcb1/UicDynamicContentData1.java
deleted file mode 100644
index 034057a..0000000
--- a/src/main/java/org/uic/barcode/dynamicContent/dfcb1/UicDynamicContentData1.java
+++ /dev/null
@@ -1,268 +0,0 @@
-/*
- *
- */
-package org.uic.barcode.dynamicContent.dfcb1;
-
-import java.util.Calendar;
-import java.util.Date;
-import java.util.TimeZone;
-
-import org.uic.barcode.asn1.datatypes.Asn1Default;
-import org.uic.barcode.asn1.datatypes.Asn1Optional;
-import org.uic.barcode.asn1.datatypes.CharacterRestriction;
-import org.uic.barcode.asn1.datatypes.FieldOrder;
-import org.uic.barcode.asn1.datatypes.HasExtensionMarker;
-import org.uic.barcode.asn1.datatypes.IntRange;
-import org.uic.barcode.asn1.datatypes.RestrictedString;
-import org.uic.barcode.asn1.datatypes.Sequence;
-import org.uic.barcode.asn1.datatypesimpl.OctetString;
-import org.uic.barcode.asn1.uper.UperEncoder;
-import org.uic.barcode.dynamicFrame.DataType;
-
-
-/**
- * The Class UicDynamicContentData.
- *
- * The dynamic content for FDC1
- *
- */
-
-
-@Sequence
-@HasExtensionMarker
-public class UicDynamicContentData1 {
-
- //-- Moment of generation of the dynamic content, expressed in UTC :
- //-- * dynamicContentDay is the number of days from issuing date
- //-- (UicRailTicketData.issuingDetail.issuingYear and issuingDay)
- // -- The range 0..1070 allows a validity equal to that of the validFrom (700) plus
- // -- validUntil (370) elements of the different transport documents of UicRailTicketData.
- //-- * dynamicContentTime is the number of seconds of the day
- //-- (from 0 = 0:00:00 to 86399 = 23:59:59)
- //-- These two elements shall be either both present, either both absent
- /** The day. */
- //dynamicContentDay INTEGER (0..1070) DEFAULT 0,
- @FieldOrder(order = 0)
- @Asn1Default(value="0")
- @IntRange(minValue=0, maxValue=1070)
- public Long day;
-
- /** The second of day. */
- // dynamicContentTime INTEGER (0..86399) OPTIONAL,
- @FieldOrder(order = 1)
- @IntRange(minValue=0, maxValue=86399)
- public Long secondOfDay;
-
- //-- Coordinates of the place where the dynamic content has been generated
- // -- (same GeoCoordinateType type as in UicRailTicketData)
- /** The geo coordinate. */
- //dynamicContentGeoCoordinate GeoCoordinateType OPTIONAL,
- @FieldOrder(order = 2)
- @Asn1Optional public GeoCoordinateType geoCoordinate;
- //-- Response from the mobile to any data received from the terminal.
- //-- The data received from the terminal may be a random number, or any other information.
- //-- The response may be the data itself, a hashing of this data, or any other response.
- // -- This response may be completed with other information: IMEI, mobile phone number...
- //-- The type used is ExtensionData, as it is fully adapted.
- // -- extensionId shall be set to:
- // -- * "=" if the data included in extensionData is exactly the one that was transmitted by the terminal,
- // -- * any other value (chosen by the issuer) in other cases.
- /** The challenge response. */
- //dynamicContentResponseToChallenge ExtensionData OPTIONAL,
- @FieldOrder(order = 3)
- @Asn1Optional public ExtensionData challengeResponse;
-
- /** The extension. */
- //-- proprietary data defined bilaterally
- @FieldOrder(order = 4)
- @Asn1Optional public ExtensionData extension;
- //dynamicContentExtension ExtensionData OPTIONAL,
-
- // challenge string asked by the TCO
- @FieldOrder(order = 5)
- @RestrictedString(CharacterRestriction.IA5String)
- @Asn1Optional public String challengeString;
-
- // hashed phone id
- @FieldOrder(order = 6)
- public OctetString phoneIdHash;
-
- // hashed e-passport-id
- @FieldOrder(order = 7)
- public OctetString passHash;
-
- //...
-
- /**
- * Gets the day.
- *
- * @return the day
- */
- public Long getDay() {
- return day;
- }
-
- /**
- * Sets the day.
- *
- * @param day the new day
- */
- public void setDay(Long day) {
- this.day = day;
- }
-
- /**
- * Gets the time.
- *
- * @return the time
- */
- public Long getTime() {
- return secondOfDay;
- }
-
- /**
- * Sets the time.
- *
- * @param time the new time
- */
- public void setTime(Long time) {
- this.secondOfDay = time;
- }
-
- /**
- * Gets the geo coordinate.
- *
- * @return the geo coordinate
- */
- public GeoCoordinateType getGeoCoordinate() {
- return geoCoordinate;
- }
-
- /**
- * Sets the geo coordinate.
- *
- * @param geoCoordinate the new geo coordinate
- */
- public void setGeoCoordinate(GeoCoordinateType geoCoordinate) {
- this.geoCoordinate = geoCoordinate;
- }
-
- /**
- * Gets the challenge response.
- *
- * @return the challenge response
- */
- public ExtensionData getChallengeResponse() {
- return challengeResponse;
- }
-
- /**
- * Sets the challenge response.
- *
- * @param challengeResponse the new challenge response
- */
- public void setChallengeResponse(ExtensionData challengeResponse) {
- this.challengeResponse = challengeResponse;
- }
-
- /**
- * Gets the extension.
- *
- * @return the extension
- */
- public ExtensionData getExtension() {
- return extension;
- }
-
- /**
- * Sets the extension.
- *
- * @param extension the new extension
- */
- public void setExtension(ExtensionData extension) {
- this.extension = extension;
- }
-
- /**
- * Gets the time.
- *
- * @param issuingDate the issuing date in UTC
- * @return the date and time of content creation in UTC
- */
- public Date getTime(Date issuingDate) {
-
- Calendar cal = Calendar.getInstance();
- cal.setTime(issuingDate);
- cal.setTimeZone(TimeZone.getTimeZone("UTC"));
- cal.set(Calendar.SECOND,0);
- cal.set(Calendar.HOUR,0);
- cal.set(Calendar.MINUTE,0);
- cal.add(Calendar.DATE, day.intValue());
- cal.add(Calendar.SECOND, secondOfDay.intValue());
-
- return cal.getTime();
- }
-
- /**
- * Sets the date time.
- *
- * @param dateUTC the current date and time in UTC
- * @param issuingDateUTC the issuing date and time in UTC
- */
- public void setDateTime(Date dateUTC, Date issuingDateUTC) {
-
- Calendar cal1 = Calendar.getInstance();
- cal1.setTime(issuingDateUTC);
-
- Calendar cal2 = Calendar.getInstance();
- cal2.setTime(dateUTC);
-
- int days1 = cal1.get(Calendar.DATE);
- int days2 = cal2.get(Calendar.DATE);
-
- day = new Long (days2 - days1);
-
- secondOfDay = (long) cal2.get(Calendar.SECOND);
- secondOfDay = secondOfDay + 60 * (long) cal2.get(Calendar.MINUTE);
- secondOfDay = secondOfDay + 60 * 60 * (long) cal2.get(Calendar.HOUR_OF_DAY);
-
- }
-
- public static String getFormat() {
- return "FDC1";
- }
-
- public DataType getDataType() {
- DataType data = new DataType();
- data.setFormat(UicDynamicContentData1.getFormat());
- data.setByteData(UperEncoder.encode(this));
- return data;
- }
-
- public String getChallengeString() {
- return challengeString;
- }
-
- public void setChallengeString(String challengeString) {
- this.challengeString = challengeString;
- }
-
- public OctetString getPhoneIdHash() {
- return phoneIdHash;
- }
-
- public void setPhoneIdHash(OctetString phoneIdHash) {
- this.phoneIdHash = phoneIdHash;
- }
-
- public OctetString getPassHash() {
- return passHash;
- }
-
- public void setPassHash(OctetString passHash) {
- this.passHash = passHash;
- }
-
-
-
-}
diff --git a/src/main/java/org/uic/barcode/dynamicContent/fdc1/ExtensionData.java b/src/main/java/org/uic/barcode/dynamicContent/fdc1/ExtensionData.java
new file mode 100644
index 0000000..52b76d1
--- /dev/null
+++ b/src/main/java/org/uic/barcode/dynamicContent/fdc1/ExtensionData.java
@@ -0,0 +1,59 @@
+/*
+ * This file was generated by openASN.1 - an open source ASN.1 toolkit for java
+ *
+ * openASN.1 is Copyright (C) 2007 Clayton Hoss, Marc Weyland
+ *
+ * openASN.1 is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * openASN.1 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 Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with openASN.1. If not, see .
+ *
+ */
+package org.uic.barcode.dynamicContent.fdc1;
+
+import org.uic.barcode.asn1.datatypes.CharacterRestriction;
+import org.uic.barcode.asn1.datatypes.FieldOrder;
+import org.uic.barcode.asn1.datatypes.RestrictedString;
+import org.uic.barcode.asn1.datatypes.Sequence;
+import org.uic.barcode.asn1.datatypesimpl.OctetString;
+
+
+@Sequence
+public class ExtensionData extends Object {
+ public ExtensionData() {
+ }
+
+ @FieldOrder(order = 0)
+ @RestrictedString(CharacterRestriction.IA5String)
+ public String extensionId;
+
+ @FieldOrder(order = 1)
+ public OctetString extensionData;
+
+ public String getExtensionId() {
+ return this.extensionId;
+ }
+
+ public byte[] getExtensionData() {
+ return extensionData.toByteArray();
+ }
+
+ public void setExtensionId(String extensionId) {
+ this.extensionId = extensionId;
+ }
+
+ public void setExtensionData(byte[] extensionData) {
+ this.extensionData = new OctetString(extensionData);
+ }
+
+
+
+}
diff --git a/src/main/java/org/uic/barcode/dynamicContent/fdc1/GeoCoordinateSystemType.java b/src/main/java/org/uic/barcode/dynamicContent/fdc1/GeoCoordinateSystemType.java
new file mode 100644
index 0000000..b25ad1a
--- /dev/null
+++ b/src/main/java/org/uic/barcode/dynamicContent/fdc1/GeoCoordinateSystemType.java
@@ -0,0 +1,57 @@
+/*
+ * This file was generated by openASN.1 - an open source ASN.1 toolkit for java
+ *
+ * openASN.1 is Copyright (C) 2007 Clayton Hoss, Marc Weyland
+ *
+ * openASN.1 is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * openASN.1 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 Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with openASN.1. If not, see .
+ *
+ */
+package org.uic.barcode.dynamicContent.fdc1;
+
+
+// TODO: Auto-generated Javadoc
+/**
+ * The Enum GeoCoordinateSystemType.
+ */
+public enum GeoCoordinateSystemType {
+
+ /** The wgs 84. */
+ wgs84("wgs84"),
+
+ /** The grs 80. */
+ grs80("grs80");
+
+
+ /** The text. */
+ public String text;
+
+ /**
+ * Instantiates a new geo coordinate system type.
+ *
+ * @param text the text
+ */
+ GeoCoordinateSystemType(String text) {
+ this.text = text;
+ }
+
+ /**
+ * To string.
+ *
+ * @return the string
+ */
+ public String toString(){
+ return text;
+ }
+}
+
diff --git a/src/main/java/org/uic/barcode/dynamicContent/fdc1/GeoCoordinateType.java b/src/main/java/org/uic/barcode/dynamicContent/fdc1/GeoCoordinateType.java
new file mode 100644
index 0000000..1f1cfc5
--- /dev/null
+++ b/src/main/java/org/uic/barcode/dynamicContent/fdc1/GeoCoordinateType.java
@@ -0,0 +1,144 @@
+/*
+ * This file was generated by openASN.1 - an open source ASN.1 toolkit for java
+ *
+ * openASN.1 is Copyright (C) 2007 Clayton Hoss, Marc Weyland
+ *
+ * openASN.1 is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * openASN.1 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 Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with openASN.1. If not, see .
+ *
+ */
+package org.uic.barcode.dynamicContent.fdc1;
+
+import org.uic.barcode.asn1.datatypes.Asn1BigInteger;
+import org.uic.barcode.asn1.datatypes.Asn1Default;
+import org.uic.barcode.asn1.datatypes.Asn1Optional;
+import org.uic.barcode.asn1.datatypes.FieldOrder;
+import org.uic.barcode.asn1.datatypes.Sequence;
+
+@Sequence
+public class GeoCoordinateType extends Object {
+ public GeoCoordinateType() {
+ }
+
+ @FieldOrder(order = 0)
+ @Asn1Default(value="milliDegree")
+ @Asn1Optional public GeoUnitType geoUnit;
+
+ @FieldOrder(order = 1)
+ @Asn1Default(value="wgs84")
+ @Asn1Optional public GeoCoordinateSystemType coordinateSystem;
+
+ @FieldOrder(order = 2)
+ @Asn1Default(value="north")
+ @Asn1Optional public HemisphereLongitudeType hemisphereLongitude;
+
+ @FieldOrder(order = 3)
+ @Asn1Default(value="east")
+ @Asn1Optional public HemisphereLatitudeType hemisphereLatitude;
+
+ @FieldOrder(order = 4)
+ public Asn1BigInteger longitude;
+
+ @FieldOrder(order = 5)
+ public Asn1BigInteger latitude;
+
+ @FieldOrder(order = 6)
+ @Asn1Optional public GeoUnitType accuracy;
+
+ public GeoUnitType getGeoUnit() {
+
+ if (geoUnit == null){
+ return GeoUnitType.milliDegree;
+ }
+ return this.geoUnit;
+ }
+
+ public GeoCoordinateSystemType getCoordinateSystem() {
+
+ if (coordinateSystem == null) {
+ return GeoCoordinateSystemType.wgs84;
+ }
+
+ return this.coordinateSystem;
+ }
+
+ public HemisphereLongitudeType getHemisphereLongitude() {
+
+ if (hemisphereLongitude == null){
+ return HemisphereLongitudeType.north;
+ }
+
+ return this.hemisphereLongitude;
+ }
+
+ public HemisphereLatitudeType getHemisphereLatitude() {
+
+ if (hemisphereLatitude == null) {
+ return HemisphereLatitudeType.east;
+ }
+
+ return this.hemisphereLatitude;
+ }
+
+ public Long getLongitude() {
+
+ return Asn1BigInteger.toLong(this.longitude);
+ }
+
+ public Long getLatitude() {
+
+ return Asn1BigInteger.toLong(this.latitude);
+ }
+
+ public GeoUnitType getAccuracy() {
+
+ return this.accuracy;
+ }
+
+ public void setGeoUnit(GeoUnitType geoUnit) {
+
+ this.geoUnit = geoUnit;
+ }
+
+ public void setCoordinateSystem(GeoCoordinateSystemType coordinateSystem) {
+
+ this.coordinateSystem = coordinateSystem;
+ }
+
+ public void setHemisphereLongitude(HemisphereLongitudeType hemisphereLongitude) {
+
+ this.hemisphereLongitude = hemisphereLongitude;
+ }
+
+ public void setHemisphereLatitude(HemisphereLatitudeType hemisphereLatitude) {
+
+ this.hemisphereLatitude = hemisphereLatitude;
+ }
+
+ public void setLongitude(Long longitude) {
+
+ this.longitude = Asn1BigInteger.toAsn1(longitude);
+ }
+
+ public void setLatitude(Long latitude) {
+
+ this.latitude = Asn1BigInteger.toAsn1(latitude);
+ }
+
+ public void setAccuracy(GeoUnitType accuracy) {
+
+ this.accuracy = accuracy;
+ }
+
+
+}
diff --git a/src/main/java/org/uic/barcode/dynamicContent/fdc1/GeoUnitType.java b/src/main/java/org/uic/barcode/dynamicContent/fdc1/GeoUnitType.java
new file mode 100644
index 0000000..4eaa8c9
--- /dev/null
+++ b/src/main/java/org/uic/barcode/dynamicContent/fdc1/GeoUnitType.java
@@ -0,0 +1,65 @@
+/*
+ * This file was generated by openASN.1 - an open source ASN.1 toolkit for java
+ *
+ * openASN.1 is Copyright (C) 2007 Clayton Hoss, Marc Weyland
+ *
+ * openASN.1 is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * openASN.1 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 Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with openASN.1. If not, see .
+ *
+ */
+package org.uic.barcode.dynamicContent.fdc1;
+
+// TODO: Auto-generated Javadoc
+/**
+ * The Enum GeoUnitType.
+ */
+public enum GeoUnitType {
+
+ /** The micro degree. */
+ microDegree("microDegree"),
+
+ /** The tenthmilli degree. */
+ tenthmilliDegree("tenthmilliDegree"),
+
+ /** The milli degree. */
+ milliDegree("milliDegree"),
+
+ /** The centi degree. */
+ centiDegree("centiDegree"),
+
+ /** The deci degree. */
+ deciDegree("deciDegree");
+
+
+ /** The text. */
+ public String text;
+
+ /**
+ * Instantiates a new geo unit type.
+ *
+ * @param text the text
+ */
+ GeoUnitType(String text) {
+ this.text = text;
+ }
+
+ /**
+ * To string.
+ *
+ * @return the string
+ */
+ public String toString(){
+ return text;
+ }
+}
+
diff --git a/src/main/java/org/uic/barcode/dynamicContent/fdc1/HemisphereLatitudeType.java b/src/main/java/org/uic/barcode/dynamicContent/fdc1/HemisphereLatitudeType.java
new file mode 100644
index 0000000..5157b0e
--- /dev/null
+++ b/src/main/java/org/uic/barcode/dynamicContent/fdc1/HemisphereLatitudeType.java
@@ -0,0 +1,56 @@
+/*
+ * This file was generated by openASN.1 - an open source ASN.1 toolkit for java
+ *
+ * openASN.1 is Copyright (C) 2007 Clayton Hoss, Marc Weyland
+ *
+ * openASN.1 is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * openASN.1 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 Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with openASN.1. If not, see .
+ *
+ */
+package org.uic.barcode.dynamicContent.fdc1;
+
+// TODO: Auto-generated Javadoc
+/**
+ * The Enum HemisphereLatitudeType.
+ */
+public enum HemisphereLatitudeType {
+
+ /** The east. */
+ east("east"),
+
+ /** The west. */
+ west("west");
+
+
+ /** The text. */
+ public String text;
+
+ /**
+ * Instantiates a new hemisphere latitude type.
+ *
+ * @param text the text
+ */
+ HemisphereLatitudeType(String text) {
+ this.text = text;
+ }
+
+ /**
+ * To string.
+ *
+ * @return the string
+ */
+ public String toString(){
+ return text;
+ }
+}
+
diff --git a/src/main/java/org/uic/barcode/dynamicContent/fdc1/HemisphereLongitudeType.java b/src/main/java/org/uic/barcode/dynamicContent/fdc1/HemisphereLongitudeType.java
new file mode 100644
index 0000000..c0e33e6
--- /dev/null
+++ b/src/main/java/org/uic/barcode/dynamicContent/fdc1/HemisphereLongitudeType.java
@@ -0,0 +1,55 @@
+/*
+ * This file was generated by openASN.1 - an open source ASN.1 toolkit for java
+ *
+ * openASN.1 is Copyright (C) 2007 Clayton Hoss, Marc Weyland
+ *
+ * openASN.1 is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * openASN.1 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 Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with openASN.1. If not, see .
+ *
+ */
+package org.uic.barcode.dynamicContent.fdc1;
+
+// TODO: Auto-generated Javadoc
+/**
+ * The Enum HemisphereLongitudeType.
+ */
+public enum HemisphereLongitudeType {
+
+ /** The north. */
+ north("north"),
+
+ /** The south. */
+ south("south");
+
+ /** The text. */
+ public String text;
+
+ /**
+ * Instantiates a new hemisphere longitude type.
+ *
+ * @param text the text
+ */
+ HemisphereLongitudeType(String text) {
+ this.text = text;
+ }
+
+ /**
+ * To string.
+ *
+ * @return the string
+ */
+ public String toString(){
+ return text;
+ }
+}
+
diff --git a/src/main/java/org/uic/barcode/dynamicContent/fdc1/SequenceOfExtension.java b/src/main/java/org/uic/barcode/dynamicContent/fdc1/SequenceOfExtension.java
new file mode 100644
index 0000000..38833df
--- /dev/null
+++ b/src/main/java/org/uic/barcode/dynamicContent/fdc1/SequenceOfExtension.java
@@ -0,0 +1,11 @@
+package org.uic.barcode.dynamicContent.fdc1;
+
+import java.util.Collection;
+
+import org.uic.barcode.asn1.datatypes.Asn1SequenceOf;
+import org.uic.barcode.ticket.api.asn.omv2.TravelerType;
+
+public class SequenceOfExtension extends Asn1SequenceOf {
+ public SequenceOfExtension() { super(); }
+ public SequenceOfExtension(Collection coll) { super(coll); }
+}
diff --git a/src/main/java/org/uic/barcode/dynamicContent/fdc1/TimeStamp.java b/src/main/java/org/uic/barcode/dynamicContent/fdc1/TimeStamp.java
new file mode 100644
index 0000000..32cce65
--- /dev/null
+++ b/src/main/java/org/uic/barcode/dynamicContent/fdc1/TimeStamp.java
@@ -0,0 +1,144 @@
+package org.uic.barcode.dynamicContent.fdc1;
+
+import java.time.Instant;
+import java.time.temporal.ChronoField;
+import java.util.Calendar;
+import java.util.Date;
+import java.util.TimeZone;
+
+import org.uic.barcode.asn1.datatypes.FieldOrder;
+import org.uic.barcode.asn1.datatypes.IntRange;
+import org.uic.barcode.asn1.datatypes.Sequence;
+
+// TODO: Auto-generated Javadoc
+/**
+ * The Class TimeStamp.
+ */
+@Sequence
+public class TimeStamp {
+
+
+ /*
+ -- Moment of generation of the dynamic content, expressed in UTC :
+ -- * dynamicContentDay is the number of days from issuing date
+ -- (UicRailTicketData.issuingDetail.issuingYear and issuingDay)
+ -- The range 0..1070 allows a validity equal to that of the validFrom (700) plus
+ -- validUntil (370) elements of the different transport documents of UicRailTicketData.
+ -- * dynamicContentTime is the number of seconds of the day
+ -- (from 0 = 0:00:00 to 86399 = 23:59:59)
+ -- These two elements shall be either both present, either both absent
+ dynamicContentDay INTEGER (0..366),
+ *
+ */
+ @FieldOrder(order = 0)
+ @IntRange(minValue=1, maxValue=366)
+ public Long day;
+
+ /** The second of day. */
+ // dynamicContentTime INTEGER (0..86399) OPTIONAL,
+ @FieldOrder(order = 1)
+ @IntRange(minValue=0, maxValue=86399)
+ public Long secondOfDay;
+
+
+
+ /**
+ * Instantiates a new time stamp and sets the time-stamp to now.
+ */
+ public TimeStamp() {
+ Instant now = Instant.now();
+ day = new Long(now.get(ChronoField.DAY_OF_YEAR));
+ secondOfDay = new Long(now.get(ChronoField.SECOND_OF_DAY));
+ }
+
+ /**
+ * Sets the the time-stamp to now.
+ */
+ public void setNow() {
+ Instant now = Instant.now();
+ day = new Long(now.get(ChronoField.DAY_OF_YEAR));
+ secondOfDay = new Long(now.get(ChronoField.SECOND_OF_DAY));
+ }
+
+ /**
+ * Gets the day.
+ *
+ * @return the day
+ */
+ public Long getDay() {
+ return day;
+ }
+
+ /**
+ * Sets the day.
+ *
+ * @param day the new day
+ */
+ public void setDay(Long day) {
+ this.day = day;
+ }
+
+ /**
+ * Gets the time.
+ *
+ * @return the time
+ */
+ public Long getTime() {
+ return secondOfDay;
+ }
+
+ /**
+ * Sets the time.
+ *
+ * @param time the new time
+ */
+ public void setTime(Long time) {
+ this.secondOfDay = time;
+ }
+
+ /**
+ * Gets the time.
+ *
+ * @return the date and time of content creation in UTC
+ */
+ public Date getTimeAsDate() {
+
+ Calendar cal = Calendar.getInstance();
+ int dayOfYear = cal.get(Calendar.DAY_OF_YEAR);
+
+ if (dayOfYear - day.intValue() > 250) {
+ cal.add(Calendar.YEAR, 1);
+ }
+ if (day.intValue() - dayOfYear > 250) {
+ cal.add(Calendar.YEAR, -1);
+ }
+
+ cal.setTimeZone(TimeZone.getTimeZone("UTC"));
+ cal.set(Calendar.SECOND,0);
+ cal.set(Calendar.HOUR,0);
+ cal.set(Calendar.MINUTE,0);
+ cal.set(Calendar.DAY_OF_YEAR, day.intValue());
+ cal.add(Calendar.SECOND, secondOfDay.intValue());
+
+ return cal.getTime();
+ }
+
+ /**
+ * Sets the date time.
+ *
+ * @param dateUTC the current date and time in UTC
+ */
+ public void setDateTime(Date dateUTC) {
+
+ Calendar cal = Calendar.getInstance();
+ cal.setTime(dateUTC);
+
+ day = Long.valueOf(cal.get(Calendar.DAY_OF_YEAR));
+
+ secondOfDay = (long) cal.get(Calendar.SECOND);
+ secondOfDay = secondOfDay + 60 * (long) cal.get(Calendar.MINUTE);
+ secondOfDay = secondOfDay + 60 * 60 * (long) cal.get(Calendar.HOUR_OF_DAY);
+
+ }
+
+}
diff --git a/src/main/java/org/uic/barcode/dynamicContent/fdc1/UicDynamicContentDataFDC1.java b/src/main/java/org/uic/barcode/dynamicContent/fdc1/UicDynamicContentDataFDC1.java
new file mode 100644
index 0000000..ce6d1b3
--- /dev/null
+++ b/src/main/java/org/uic/barcode/dynamicContent/fdc1/UicDynamicContentDataFDC1.java
@@ -0,0 +1,205 @@
+/*
+ *
+ */
+package org.uic.barcode.dynamicContent.fdc1;
+
+import java.io.UnsupportedEncodingException;
+import org.uic.barcode.asn1.datatypes.Asn1Optional;
+import org.uic.barcode.asn1.datatypes.CharacterRestriction;
+import org.uic.barcode.asn1.datatypes.FieldOrder;
+import org.uic.barcode.asn1.datatypes.HasExtensionMarker;
+import org.uic.barcode.asn1.datatypes.RestrictedString;
+import org.uic.barcode.asn1.datatypes.Sequence;
+import org.uic.barcode.asn1.uper.UperEncoder;
+import org.uic.barcode.dynamicContent.DynamicContent;
+import org.uic.barcode.dynamicFrame.DataType;
+
+
+/**
+ * The Class UicDynamicContentData.
+ *
+ * The dynamic content for FDC1
+ *
+ */
+
+
+
+
+@Sequence
+@HasExtensionMarker
+public class UicDynamicContentDataFDC1 {
+
+
+
+ /*
+ -- The possible values are defined by the security provider
+ -- (the security provider being UicBarcodeHeader.level2SignedData.level1Data.securityProviderNum/IA5)
+ dynamicContentMobileAppId IA5String OPTIONAL,
+ */
+ //timestamp when the bar code was created
+ @FieldOrder(order = 0)
+ @RestrictedString(CharacterRestriction.IA5String)
+ @Asn1Optional public String appId;
+
+ //timestamp when the bar code was created
+ @FieldOrder(order = 1)
+ @Asn1Optional public TimeStamp timeStamp;
+
+
+ //-- Coordinates of the place where the dynamic content has been generated
+ // -- (same GeoCoordinateType type as in UicRailTicketData)
+ /** The geo coordinate. */
+ //dynamicContentGeoCoordinate GeoCoordinateType OPTIONAL,
+ @FieldOrder(order = 2)
+ @Asn1Optional public GeoCoordinateType geoCoordinate;
+ //-- Response from the mobile to any data received from the terminal.
+ //-- The data received from the terminal may be a random number, or any other information.
+ //-- The response may be the data itself, a hashing of this data, or any other response.
+ // -- This response may be completed with other information: IMEI, mobile phone number...
+ //-- The type used is ExtensionData, as it is fully adapted.
+ // -- extensionId shall be set to:
+ // -- * "=" if the data included in extensionData is exactly the one that was transmitted by the terminal,
+ // -- * any other value (chosen by the issuer) in other cases.
+ /** The challenge response. */
+
+ @FieldOrder(order = 3)
+ @Asn1Optional public SequenceOfExtension extensions;
+
+
+
+ //...
+
+
+
+ /**
+ * Gets the geo coordinate.
+ *
+ * @return the geo coordinate
+ */
+ public GeoCoordinateType getGeoCoordinate() {
+ return geoCoordinate;
+ }
+
+ /**
+ * Sets the geo coordinate.
+ *
+ * @param geoCoordinate the new geo coordinate
+ */
+ public void setGeoCoordinate(GeoCoordinateType geoCoordinate) {
+ this.geoCoordinate = geoCoordinate;
+ }
+
+ public static String getFormat() {
+ return "FDC1";
+ }
+
+ public DataType getDataType() {
+ DataType data = new DataType();
+ data.setFormat(getFormat());
+ data.setByteData(UperEncoder.encode(this));
+ return data;
+ }
+
+ public String getChallengeString() {
+ if (this.extensions != null) {
+ for (ExtensionData ed : extensions) {
+ if (ed.getExtensionId().equals("=")) {
+ byte[] c = ed.getExtensionData();
+ try {
+ return new String(c,"UTF-8");
+ } catch (UnsupportedEncodingException e) {
+ return null;
+ }
+ }
+ }
+ }
+ return null;
+ }
+
+ public void setChallengeString(String challengeString) {
+ if (extensions == null) {
+ extensions = new SequenceOfExtension();
+ };
+ ExtensionData ed = new ExtensionData();
+ ed.setExtensionId("=");
+ try {
+ ed.setExtensionData(challengeString.getBytes("UTF-8"));
+ } catch (UnsupportedEncodingException e) {
+ return;
+ }
+ extensions.add(ed);
+ }
+
+ public byte[] getPhoneIdHash() {
+ if (this.extensions != null) {
+ for (ExtensionData ed : extensions) {
+ if (ed.getExtensionId().equals("phone")) {
+ return ed.getExtensionData();
+ }
+ }
+ }
+ return null;
+ }
+
+ public void setPhoneIdHash(byte[] phoneIdHash) {
+ if (extensions == null) {
+ extensions = new SequenceOfExtension();
+ };
+ ExtensionData ed = new ExtensionData();
+ ed.setExtensionId("phone");
+ ed.setExtensionData(phoneIdHash);
+ extensions.add(ed);
+ }
+
+ public byte[] getPassIdHash() {
+ if (this.extensions != null) {
+ for (ExtensionData ed : extensions) {
+ if (ed.getExtensionId().equals("pass")) {
+ return ed.getExtensionData();
+ }
+ }
+ }
+ return null;
+ }
+
+ public void setPassIdHash(byte[] phoneIdHash) {
+ if (extensions == null) {
+ extensions = new SequenceOfExtension();
+ };
+ ExtensionData ed = new ExtensionData();
+ ed.setExtensionId("pass");
+ ed.setExtensionData(phoneIdHash);
+ extensions.add(ed);
+ }
+
+ public TimeStamp getTimeStamp() {
+ return timeStamp;
+ }
+
+ public void setTimeStamp(TimeStamp timeStamp) {
+ this.timeStamp = timeStamp;
+ }
+
+ public SequenceOfExtension getExtensions() {
+ return extensions;
+ }
+
+ public void setExtensions(SequenceOfExtension extensions) {
+ this.extensions = extensions;
+ }
+
+ public byte[] encode() {
+ return UperEncoder.encode(this);
+ }
+
+ public String getAppId() {
+ return appId;
+ }
+
+ public void setAppId(String appId) {
+ this.appId = appId;
+ }
+
+
+
+}
diff --git a/src/main/java/org/uic/barcode/dynamicFrame/DynamicFrame.java b/src/main/java/org/uic/barcode/dynamicFrame/DynamicFrame.java
index 886cb79..375e2c6 100644
--- a/src/main/java/org/uic/barcode/dynamicFrame/DynamicFrame.java
+++ b/src/main/java/org/uic/barcode/dynamicFrame/DynamicFrame.java
@@ -18,7 +18,7 @@ import org.uic.barcode.asn1.datatypes.RestrictedString;
import org.uic.barcode.asn1.datatypes.Sequence;
import org.uic.barcode.asn1.datatypesimpl.OctetString;
import org.uic.barcode.asn1.uper.UperEncoder;
-import org.uic.barcode.dynamicContent.dfcb1.UicDynamicContentData1;
+import org.uic.barcode.dynamicContent.fdc1.UicDynamicContentDataFDC1;
import org.uic.barcode.utils.AlgorithmNameResolver;
@@ -263,19 +263,19 @@ public class DynamicFrame extends Object{
}
- public void addLevel2DynamicData(UicDynamicContentData1 dynamicData) {
+ public void addLevel2DynamicData(UicDynamicContentDataFDC1 dynamicData) {
this.getLevel2SignedData().setLevel2Data( dynamicData.getDataType());
}
- public UicDynamicContentData1 getDynamicDataFDC1() {
+ public UicDynamicContentDataFDC1 getDynamicDataFDC1() {
if (this.getLevel2SignedData() == null ||
this.getLevel2SignedData().getLevel2Data() == null){
return null;
}
- if ( UicDynamicContentData1.getFormat().equals(this.getLevel2SignedData().getLevel2Data().getFormat())) {
- return UperEncoder.decode(this.getLevel2SignedData().getLevel2Data().getByteData(), UicDynamicContentData1.class);
+ if ( UicDynamicContentDataFDC1.getFormat().equals(this.getLevel2SignedData().getLevel2Data().getFormat())) {
+ return UperEncoder.decode(this.getLevel2SignedData().getLevel2Data().getByteData(), UicDynamicContentDataFDC1.class);
}
return null;
diff --git a/src/main/java/org/uic/barcode/staticFrame/UHEADDataRecord.java b/src/main/java/org/uic/barcode/staticFrame/UHEADDataRecord.java
index 855c9d5..492656a 100644
--- a/src/main/java/org/uic/barcode/staticFrame/UHEADDataRecord.java
+++ b/src/main/java/org/uic/barcode/staticFrame/UHEADDataRecord.java
@@ -180,7 +180,7 @@ public class UHEADDataRecord extends DataRecord{
}
// date format "DDMMYYYYHHMM"
- SimpleDateFormat formatter = new SimpleDateFormat("ddMMyyyyhhmm");
+ SimpleDateFormat formatter = new SimpleDateFormat("ddMMyyyyHHmm");
try {
issuingDate = formatter.parse(issuingDateString);
} catch (ParseException e) {
--
cgit v1.2.3