From f27a600db14d745cb7f13f8dc839863078b7f1c7 Mon Sep 17 00:00:00 2001 From: CGantert345 <57003061+CGantert345@users.noreply.github.com> Date: Tue, 18 Jun 2024 15:37:32 +0200 Subject: - bug fix on travel date in train link in version 1.3 - bug fix on travel date in train link in version 1.3 - replaced out-dated java functions - switched all tests to non-deprecated functions --- src/main/java/org/uic/barcode/Encoder.java | 64 ++++++++++++++++-------------- 1 file changed, 34 insertions(+), 30 deletions(-) (limited to 'src/main/java/org/uic/barcode/Encoder.java') diff --git a/src/main/java/org/uic/barcode/Encoder.java b/src/main/java/org/uic/barcode/Encoder.java index 3eb2faf..e9874cf 100644 --- a/src/main/java/org/uic/barcode/Encoder.java +++ b/src/main/java/org/uic/barcode/Encoder.java @@ -29,6 +29,7 @@ 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.ECKeyEncoder; +import org.uic.barcode.utils.SecurityUtils; /** @@ -59,6 +60,17 @@ public class Encoder { /** The UIC bar code type SSB. */ public static String UIC_BARCODE_TYPE_SSB = "UIC_SSB"; + private Provider defaultProvider = null; + + + public Provider getDefaultProvider() { + return defaultProvider; + } + + public void setDefaultProvider(Provider defaultProvider) { + this.defaultProvider = defaultProvider; + } + /** * Instantiates a new encoder. * @@ -72,6 +84,10 @@ public class Encoder { */ public Encoder(IUicRailTicket ticket, TicketLayout layout, String barcodeType, int version, int fcbVersion) throws IOException, EncodingFormatException { + if (defaultProvider == null) { + defaultProvider = SecurityUtils.getDefaultProvider(); + } + if (barcodeType == UIC_BARCODE_TYPE_CLASSIC) { staticFrame = new StaticFrame(); @@ -145,6 +161,9 @@ public class Encoder { */ public Encoder(byte[] level1DataBin, byte[] signatureLevel1, int version) throws IOException, EncodingFormatException { + if (defaultProvider == null) { + defaultProvider = SecurityUtils.getDefaultProvider(); + } dynamicFrame = new SimpleDynamicFrame(); dynamicFrame.setLevel2Data(new SimpleLevel2Data()); @@ -189,6 +208,10 @@ public class Encoder { */ public Encoder(byte[] encoded, int version) throws IOException, EncodingFormatException, DataFormatException { + if (defaultProvider == null) { + defaultProvider = SecurityUtils.getDefaultProvider(); + } + Decoder decoder = new Decoder(encoded); if (decoder.getDynamicFrame() == null) { @@ -237,9 +260,7 @@ public class Encoder { * @deprecated */ public void signLevel2(PrivateKey key) throws Exception { - if (dynamicFrame != null) { - dynamicFrame.signLevel2(key); - } + signLevel2(key, defaultProvider); } /** @@ -371,32 +392,7 @@ public class Encoder { * @deprecated */ public void signLevel1(String securityProvider,PrivateKey key,String signingAlg, String keyId) throws Exception { - if (dynamicFrame != null) { - if (securityProvider != null && securityProvider.length() > 0) { - dynamicFrame.getLevel2Data().getLevel1Data().setSecurityProvider(securityProvider); - } - dynamicFrame.getLevel2Data().getLevel1Data().setLevel1SigningAlg(signingAlg); - dynamicFrame.getLevel2Data().getLevel1Data().setKeyId(Long.parseLong(keyId)); - dynamicFrame.signLevel1(key); - } else if (staticFrame != null) { - staticFrame.setSignatureKey(keyId); - staticFrame.setSecurityProvider(securityProvider); - if (securityProvider != null && - securityProvider.length() > 0 && - staticFrame.getHeaderRecord()!= null) { - staticFrame.getHeaderRecord().setIssuer(securityProvider); - } - if (securityProvider != null && - securityProvider.length() > 0 && - staticFrame.getuFlex() != null && - staticFrame.getuFlex().getTicket() != null && - staticFrame.getuFlex().getTicket().getIssuerDetails() != null) { - staticFrame.getuFlex().getTicket().getIssuerDetails().setSecurityProvider(securityProvider); - } - staticFrame.signByAlgorithmOID(key,signingAlg); - } else if (ssbFrame != null) { - ssbFrame.signLevel1(key, null, keyId, signingAlg); - } + signLevel1(securityProvider,key,signingAlg, keyId, defaultProvider); } /** @@ -418,9 +414,17 @@ public class Encoder { } else if (staticFrame != null) { staticFrame.setSignatureKey(keyId); staticFrame.setSecurityProvider(securityProvider); - if (staticFrame.getHeaderRecord()!= null && staticFrame.getHeaderRecord().getIssuer() == null) { + if (staticFrame.getHeaderRecord()!= null && + staticFrame.getHeaderRecord().getIssuer() == null) { staticFrame.getHeaderRecord().setIssuer(securityProvider); } + if (securityProvider != null && + securityProvider.length() > 0 && + staticFrame.getuFlex() != null && + staticFrame.getuFlex().getTicket() != null && + staticFrame.getuFlex().getTicket().getIssuerDetails() != null) { + staticFrame.getuFlex().getTicket().getIssuerDetails().setSecurityProvider(securityProvider); + } staticFrame.signByAlgorithmOID(key,signingAlg,prov); } else if (ssbFrame != null) { ssbFrame.signLevel1(key, prov, keyId, signingAlg); -- cgit v1.2.3