From: Lucas Werkmeister Date: Sun, 23 Dec 2018 10:34:50 +0000 (+0100) Subject: Merge "add: show sha-1 and sha-256 fingerprint on certificate page " X-Git-Url: https://code.wpia.club/?p=gigi.git;a=commitdiff_plain;h=7d8ec14b31b08647465fe73c48218f0afa149b09;hp=-c Merge "add: show sha-1 and sha-256 fingerprint on certificate page " --- 7d8ec14b31b08647465fe73c48218f0afa149b09 diff --combined src/club/wpia/gigi/dbObjects/Certificate.java index 61fd7d34,c46b1b47..a97ed158 --- a/src/club/wpia/gigi/dbObjects/Certificate.java +++ b/src/club/wpia/gigi/dbObjects/Certificate.java @@@ -4,6 -4,9 +4,9 @@@ import java.io.ByteArrayInputStream import java.io.IOException; import java.math.BigInteger; import java.security.GeneralSecurityException; + import java.security.MessageDigest; + import java.security.NoSuchAlgorithmException; + import java.security.cert.CertificateEncodingException; import java.security.cert.CertificateException; import java.security.cert.CertificateFactory; import java.security.cert.X509Certificate; @@@ -16,6 -19,8 +19,8 @@@ import java.util.List import java.util.Locale; import java.util.Map.Entry; + import javax.xml.bind.DatatypeConverter; + import club.wpia.gigi.GigiApiException; import club.wpia.gigi.database.DBEnum; import club.wpia.gigi.database.GigiPreparedStatement; @@@ -500,19 -505,6 +505,19 @@@ public class Certificate implements IdC return null; } + public java.util.Date getExpiryDate() { + if (getStatus() == CertificateStatus.ISSUED) { + try (GigiPreparedStatement prep = new GigiPreparedStatement("SELECT expire FROM certs WHERE id=?")) { + prep.setInt(1, getId()); + GigiResultSet res = prep.executeQuery(); + if (res.next()) { + return res.getTimestamp("expire"); + } + } + } + return null; + } + public void setLoginEnabled(boolean activate) { if (activate) { if ( !isLoginEnabled()) { @@@ -662,4 -654,18 +667,18 @@@ } return new BigInteger(serial, 16); } + + public String getFingerprint(String algorithm) throws IOException, GeneralSecurityException, GigiApiException { + X509Certificate certx = cert(); + return getFingerprint(certx, algorithm); + } + + private static String getFingerprint(X509Certificate cert, String algorithm) throws NoSuchAlgorithmException, CertificateEncodingException { + MessageDigest md = MessageDigest.getInstance(algorithm); + byte[] der = cert.getEncoded(); + md.update(der); + byte[] digest = md.digest(); + String digestHex = DatatypeConverter.printHexBinary(digest); + return digestHex.toLowerCase(); + } }