X-Git-Url: https://code.wpia.club/?a=blobdiff_plain;ds=inline;f=src%2Forg%2Fcacert%2Fgigi%2FdbObjects%2FCertificate.java;h=b0c85e96b9f691b13b6bdd68e5b678b5b95264da;hb=3d1e7ec232f250e1ecb8180675d609b34c62b8c2;hp=37ba66b743b5737829b7923b375afc65a7a2d375;hpb=b90f3da65e3eb390fe0212418797f19c77e34a20;p=gigi.git diff --git a/src/org/cacert/gigi/dbObjects/Certificate.java b/src/org/cacert/gigi/dbObjects/Certificate.java index 37ba66b7..b0c85e96 100644 --- a/src/org/cacert/gigi/dbObjects/Certificate.java +++ b/src/org/cacert/gigi/dbObjects/Certificate.java @@ -467,4 +467,30 @@ public class Certificate implements IdCachable { return res.next(); } } + + public static Certificate[] findBySerialPattern(String serial) { + try (GigiPreparedStatement prep = new GigiPreparedStatement("SELECT `id` FROM `certs` WHERE `serial` LIKE ? GROUP BY `id` LIMIT 100", true)) { + prep.setString(1, serial); + return fetchCertsToArray(prep); + } + } + + public static Certificate[] findBySANPattern(String request, SANType type) { + try (GigiPreparedStatement prep = new GigiPreparedStatement("SELECT `certId` FROM `subjectAlternativeNames` WHERE `contents` LIKE ? and `type`=?::`SANType` GROUP BY `certId` LIMIT 100", true)) { + prep.setString(1, request); + prep.setString(2, type.getOpensslName()); + return fetchCertsToArray(prep); + } + } + + private static Certificate[] fetchCertsToArray(GigiPreparedStatement prep) { + GigiResultSet res = prep.executeQuery(); + res.last(); + Certificate[] certs = new Certificate[res.getRow()]; + res.beforeFirst(); + for (int i = 0; res.next(); i++) { + certs[i] = Certificate.getById(res.getInt(1)); + } + return certs; + } }