public class Certificate {
private int id;
private int ownerId;
- private int serial;
+ private String serial;
private String dn;
private String md;
private String csrName;
this.csr = csr;
}
- public Certificate(int id) {
+ private Certificate(String serial) {
try {
PreparedStatement ps = DatabaseConnection.getInstance().prepare(
"SELECT id,subject, md, csr_name, crt_name,memid FROM `emailcerts` WHERE serial=?");
- ps.setInt(1, id);
+ ps.setString(1, serial);
ResultSet rs = ps.executeQuery();
if (!rs.next()) {
- throw new IllegalArgumentException("Invalid mid " + id);
+ throw new IllegalArgumentException("Invalid mid " + serial);
}
this.id = rs.getInt(1);
dn = rs.getString(2);
csrName = rs.getString(4);
crtName = rs.getString(5);
ownerId = rs.getInt(6);
- serial = id;
+ this.serial = serial;
rs.close();
} catch (SQLException e) {
e.printStackTrace();
return CertificateStatus.DRAFT;
}
PreparedStatement searcher = DatabaseConnection.getInstance().prepare(
- "SELECT crt_name, created, revoked, warning FROM emailcerts WHERE id=?");
+ "SELECT crt_name, created, revoked, warning, serial FROM emailcerts WHERE id=?");
searcher.setInt(1, id);
ResultSet rs = searcher.executeQuery();
if (!rs.next()) {
return CertificateStatus.SIGNING;
}
crtName = rs.getString(1);
+ serial = rs.getString(5);
if (rs.getTime(2) != null && rs.getTime(3) == null) {
return CertificateStatus.ISSUED;
}
return id;
}
- public int getSerial() {
+ public String getSerial() {
return serial;
}
return ownerId;
}
+ public static Certificate getBySerial(String serial) {
+ // TODO caching?
+ try {
+ return new Certificate(serial);
+ } catch (IllegalArgumentException e) {
+
+ }
+ return null;
+ }
+
}