From b6dc3080f4cc86e26a76dec7c0100dfb04d56664 Mon Sep 17 00:00:00 2001 From: CGantert345 <57003061+CGantert345@users.noreply.github.com> Date: Tue, 21 May 2024 15:25:16 +0200 Subject: tests changed to the functions including a dedicated provider fixed the validation function in case the algorithmOid is missing --- src/main/java/org/uic/barcode/Decoder.java | 2 ++ src/main/java/org/uic/barcode/staticFrame/StaticFrame.java | 5 +++++ 2 files changed, 7 insertions(+) (limited to 'src/main/java/org/uic') diff --git a/src/main/java/org/uic/barcode/Decoder.java b/src/main/java/org/uic/barcode/Decoder.java index 0878d8d..d9f20ff 100644 --- a/src/main/java/org/uic/barcode/Decoder.java +++ b/src/main/java/org/uic/barcode/Decoder.java @@ -23,6 +23,7 @@ import org.uic.barcode.staticFrame.ticketLayoutBarcode.TicketLayout; import org.uic.barcode.ticket.EncodingFormatException; import org.uic.barcode.ticket.UicRailTicketCoder; import org.uic.barcode.ticket.api.spec.IUicRailTicket; +import org.uic.barcode.utils.SecurityUtils; /** @@ -165,6 +166,7 @@ public class Decoder { } else if (staticFrame != null) { + // guess the signature algorithm based on the signature size if (staticFrame.verifyByAlgorithmOid(key,signingAlg, provider)) { return Constants.LEVEL1_VALIDATION_OK; } else { diff --git a/src/main/java/org/uic/barcode/staticFrame/StaticFrame.java b/src/main/java/org/uic/barcode/staticFrame/StaticFrame.java index bf97acb..a8d7651 100644 --- a/src/main/java/org/uic/barcode/staticFrame/StaticFrame.java +++ b/src/main/java/org/uic/barcode/staticFrame/StaticFrame.java @@ -706,6 +706,11 @@ public class StaticFrame { * @throws IOException */ public boolean verifyByAlgorithmOid(PublicKey key, String signingAlg, Provider prov) throws InvalidKeyException, NoSuchAlgorithmException, SignatureException, IllegalArgumentException, UnsupportedOperationException, IOException, EncodingFormatException { + + if ((signingAlg == null || signingAlg.length() < 1) && this.getSignature() != null) { + signingAlg = SecurityUtils.getDsaAlgorithm(this.getSignature()); + } + //find the algorithm name for the signature OID String algo = null; Service service = prov.getService("Signature",signingAlg); -- cgit v1.2.3