summaryrefslogtreecommitdiffstats
path: root/src/org/uic/barcode/dynamicFrame/Level2DataType.java
diff options
context:
space:
mode:
authorCGantert345 <57003061+CGantert345@users.noreply.github.com>2020-07-28 17:57:25 +0200
committerCGantert345 <57003061+CGantert345@users.noreply.github.com>2020-07-28 17:57:25 +0200
commitb17ce13cc31abd088088bf8ab26cc924a6a36585 (patch)
tree5588e1ccc212213097500f4cb43fa0e3e68e323b /src/org/uic/barcode/dynamicFrame/Level2DataType.java
parentDraft of the new DOSIPAS included (diff)
downloadUIC-barcode-b17ce13cc31abd088088bf8ab26cc924a6a36585.tar
UIC-barcode-b17ce13cc31abd088088bf8ab26cc924a6a36585.tar.gz
UIC-barcode-b17ce13cc31abd088088bf8ab26cc924a6a36585.tar.bz2
UIC-barcode-b17ce13cc31abd088088bf8ab26cc924a6a36585.tar.lz
UIC-barcode-b17ce13cc31abd088088bf8ab26cc924a6a36585.tar.xz
UIC-barcode-b17ce13cc31abd088088bf8ab26cc924a6a36585.tar.zst
UIC-barcode-b17ce13cc31abd088088bf8ab26cc924a6a36585.zip
Diffstat (limited to 'src/org/uic/barcode/dynamicFrame/Level2DataType.java')
-rw-r--r--src/org/uic/barcode/dynamicFrame/Level2DataType.java98
1 files changed, 98 insertions, 0 deletions
diff --git a/src/org/uic/barcode/dynamicFrame/Level2DataType.java b/src/org/uic/barcode/dynamicFrame/Level2DataType.java
new file mode 100644
index 0000000..66e4225
--- /dev/null
+++ b/src/org/uic/barcode/dynamicFrame/Level2DataType.java
@@ -0,0 +1,98 @@
+package org.uic.barcode.dynamicFrame;
+
+import java.security.PrivateKey;
+import java.security.Signature;
+
+import org.uic.barcode.utils.AlgorithmNameResolver;
+
+import net.gcdc.asn1.datatypes.Asn1Optional;
+import net.gcdc.asn1.datatypes.Sequence;
+import net.gcdc.asn1.datatypesimpl.OctetString;
+import net.gcdc.asn1.uper.UperEncoder;
+
+/**
+ * The Class DataType.
+ */
+@Sequence
+public class Level2DataType {
+
+ Level1DataType level1Data;
+
+ /** The data. */
+ @Asn1Optional public OctetString level1Signature;
+
+
+ @Asn1Optional DataType level2Data;
+
+
+ public Level1DataType getLevel1Data() {
+ return level1Data;
+ }
+
+
+ public void setLevel1Data(Level1DataType level1Data) {
+ this.level1Data = level1Data;
+ }
+
+
+ public OctetString getLevel1Signature() {
+ return level1Signature;
+ }
+
+ public byte[] getLevel1SignatureBytes() {
+ return level1Signature.toByteArray();
+ }
+
+ public void setLevel1Signature(OctetString level1Signature) {
+ this.level1Signature = level1Signature;
+ }
+
+ public void setLevel1Signature(byte[] level1Signature) {
+ this.level1Signature = new OctetString(level1Signature);
+ }
+
+
+ public DataType getLevel2Data() {
+ return level2Data;
+ }
+
+
+ public void setLevel2Data(DataType level2Data) {
+ this.level2Data = level2Data;
+ }
+
+
+ /**
+ * Encode.
+ *
+ * Encode the header as ASN.1 PER UNALIGNED byte array
+ *
+ * @return the byte[]
+ */
+ public byte[] encode() {
+ return UperEncoder.encode(this);
+ }
+
+ /**
+ * Sign the contained data block.
+ *
+ * Note: an appropriate security provider (e.g. BC) must be registered before
+ *
+ * @param key the key
+ * @return
+ * @return the byte[]
+ * @throws Exception
+ */
+ public void signLevel1(PrivateKey key) throws Exception {
+ //find the algorithm name for the signature OID
+ String algo = AlgorithmNameResolver.getSignatureAlgorithmName(getLevel1Data().level1SigningAlg);
+ Signature sig = Signature.getInstance(algo);
+ sig.initSign(key);
+ byte[] data = level1Data.encode();
+ sig.update(data);
+ this.level1Signature = new OctetString(sig.sign());
+ }
+
+
+
+}