From 09f0f9449a10b713207126348105fafec4781bed Mon Sep 17 00:00:00 2001 From: CGantert345 <57003061+CGantert345@users.noreply.github.com> Date: Mon, 24 Jan 2022 16:51:04 +0100 Subject: signature validation changed to work with teh dynamic header version 2. --- .../org/uic/barcode/asn1/uper/AsnExtractor.java | 80 ++++++++++++++++++++++ 1 file changed, 80 insertions(+) create mode 100644 src/main/java/org/uic/barcode/asn1/uper/AsnExtractor.java (limited to 'src/main/java/org/uic/barcode/asn1/uper/AsnExtractor.java') diff --git a/src/main/java/org/uic/barcode/asn1/uper/AsnExtractor.java b/src/main/java/org/uic/barcode/asn1/uper/AsnExtractor.java new file mode 100644 index 0000000..0d5d1da --- /dev/null +++ b/src/main/java/org/uic/barcode/asn1/uper/AsnExtractor.java @@ -0,0 +1,80 @@ +package org.uic.barcode.asn1.uper; + +public class AsnExtractor { + + private String path = null; + + private boolean extractionStarted = false; + private boolean extractionCompleted = false; + + private BitBuffer bitBuffer = null; + private int startBit = 0; + private int endBit = 0; + + AsnExtractor(String path, BitBuffer bitBuffer) { + this.path = path; + this.bitBuffer = bitBuffer; + } + + public byte[] getResult() { + + if (!extractionCompleted) { + return null; + } + + if (!(endBit > startBit)) { + return null; + } + + String bitString = bitBuffer.toBooleanString(startBit, endBit - startBit); + + while (bitString.length() % 8 != 0) { + bitString = bitString + "0"; + } + + return AsnUtils.fromBooleanString(bitString); + + } + + + + public boolean found(String className) { + + if (extractionStarted || extractionCompleted) return false; + + if (path != null && path.length() > 0 && className != null & className.length() > 0) { + if (className.endsWith(path)){ + return true; + } + } + + return false; + } + + public void startExtraction(int position) { + + if (path == null || path.length() == 0 || bitBuffer == null) { + return; + } + + if (!extractionCompleted && !extractionStarted) { + extractionStarted = true; + startBit = position; + } + } + + public void endExtraction(int position) { + if (extractionStarted) { + extractionCompleted = true; + endBit = position; + } + + } + + public boolean isStarted() { + return extractionStarted; + } + + + +} -- cgit v1.2.3