X-Git-Url: https://code.wpia.club/?a=blobdiff_plain;f=src%2Fclub%2Fwpia%2Fgigi%2FdbObjects%2FCACertificate.java;h=6e03fbc4989b56b8c12c55a59ec2da53d14675b6;hb=87bf6551ebd440eeb363437f0a71345cd9d81192;hp=5953059f2617ff7c9e319fa4991f7008c42c16e3;hpb=5ff16bf1cd44c001f134e3eabfb30ecd6e78c08c;p=gigi.git diff --git a/src/club/wpia/gigi/dbObjects/CACertificate.java b/src/club/wpia/gigi/dbObjects/CACertificate.java index 5953059f..6e03fbc4 100644 --- a/src/club/wpia/gigi/dbObjects/CACertificate.java +++ b/src/club/wpia/gigi/dbObjects/CACertificate.java @@ -4,10 +4,13 @@ import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.security.GeneralSecurityException; +import java.security.NoSuchAlgorithmException; +import java.security.cert.CertificateEncodingException; import java.security.cert.CertificateException; import java.security.cert.CertificateFactory; import java.security.cert.X509Certificate; import java.util.ArrayDeque; +import java.util.Arrays; import java.util.Deque; import java.util.HashMap; @@ -30,6 +33,10 @@ public class CACertificate implements IdCachable { private final String link; + private static final CACertificate[] instances; + + private static ObjectCache myCache = new ObjectCache<>(); + private CACertificate(int id) { this.id = id; int parentRoot; @@ -78,6 +85,17 @@ public class CACertificate implements IdCachable { static { try { update(); + try (GigiPreparedStatement q = new GigiPreparedStatement("SELECT `id` FROM `cacerts`", true)) { + GigiResultSet res = q.executeQuery(); + res.last(); + CACertificate[] certs = new CACertificate[res.getRow()]; + res.beforeFirst(); + int i = 0; + while (res.next()) { + certs[i++] = getById(res.getInt(1)); + } + instances = certs; + } } catch (CertificateException e) { throw new Error(e); } catch (FileNotFoundException e) { @@ -161,8 +179,6 @@ public class CACertificate implements IdCachable { return id; } - private static ObjectCache myCache = new ObjectCache<>(); - public String getKeyname() { return keyname; } @@ -183,4 +199,11 @@ public class CACertificate implements IdCachable { return this == getParent(); } + public String getFingerprint(String algorithm) throws CertificateEncodingException, NoSuchAlgorithmException { + return Certificate.getFingerprint(cert, algorithm); + } + + public static synchronized CACertificate[] getAll() { + return Arrays.copyOf(instances, instances.length); + } }