X-Git-Url: https://code.wpia.club/?p=gigi.git;a=blobdiff_plain;f=src%2Fclub%2Fwpia%2Fgigi%2FdbObjects%2FCertificate.java;h=eae8aab3af48b39b6db624e8947dc9d1e67509c2;hp=5a02f477e2ca3966bbb4aae89af26f1bccfc873a;hb=d27f8a9c47e4479e4296b2b31ce08e2e0e13f1d2;hpb=7fa55e578ad55705309a1f91b168ab1282c99679 diff --git a/src/club/wpia/gigi/dbObjects/Certificate.java b/src/club/wpia/gigi/dbObjects/Certificate.java index 5a02f477..eae8aab3 100644 --- a/src/club/wpia/gigi/dbObjects/Certificate.java +++ b/src/club/wpia/gigi/dbObjects/Certificate.java @@ -592,7 +592,7 @@ public class Certificate implements IdCachable { Certificate c = null; if (serial != null && !serial.isEmpty()) { - c = getBySerialFriendly(serial); + c = getBySerial(normalizeSerial(serial)); if (c == null) { return null; } @@ -610,7 +610,7 @@ public class Certificate implements IdCachable { throw new GigiApiException(NOT_PARSED); } try { - c = getBySerialFriendly(c0.getSerialNumber().toString(16)); + c = getBySerial(c0.getSerialNumber().toString(16)); if (c == null) { return null; } @@ -630,13 +630,20 @@ public class Certificate implements IdCachable { return c; } - private static Certificate getBySerialFriendly(String serial) throws GigiApiException { - serial = serial.trim().toLowerCase(); + public static String normalizeSerial(String serial) throws GigiApiException { + serial = serial.replace(" ", ""); + serial = serial.toLowerCase(); + if (serial.matches("[0-9a-f]{2}(:[0-9a-f]{2})*")) { + serial = serial.replace(":", ""); + } int idx = 0; while (idx < serial.length() && serial.charAt(idx) == '0') { idx++; } serial = serial.substring(idx); - return Certificate.getBySerial(serial); + if ( !serial.matches("[0-9a-f]+")) { + throw new GigiApiException("Malformed serial"); + } + return serial; } }