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;
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;
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()) {
}
return new BigInteger(serial, 16);
}
+
+ public String getFingerprint(String algorithm) throws IOException, GeneralSecurityException, GigiApiException {
+ X509Certificate certx = cert();
+ return getFingerprint(certx, algorithm);
+ }
+
+ protected 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();
+ }
}