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 serial) {
+ 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, serial);
+ ps.setString(1, serial);
ResultSet rs = ps.executeQuery();
if (!rs.next()) {
throw new IllegalArgumentException("Invalid mid " + serial);
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;
+ }
+
}
cer = true;
pi = pi.substring(0, pi.length() - 4);
}
- int serial = 0;
+ String serial = pi;
try {
- serial = Integer.parseInt(pi);
- } catch (NumberFormatException nfe) {
- resp.sendError(404);
- return true;
- }
- try {
- Certificate c = new Certificate(serial);
- if (LoginPage.getUser(req).getId() != c.getOwnerId()) {
+ Certificate c = Certificate.getBySerial(serial);
+ if (c == null || LoginPage.getUser(req).getId() != c.getOwnerId()) {
resp.sendError(404);
return true;
}
if (pi.length() != 0) {
pi = pi.substring(1);
- int serial = 0;
- try {
- serial = Integer.parseInt(pi);
- } catch (NumberFormatException nfe) {
- }
- Certificate c = null;
- if (serial != 0) {
- c = new Certificate(serial);
- }
+ String serial = pi;
+ Certificate c = Certificate.getBySerial(serial);
if (c == null || LoginPage.getUser(req).getId() != c.getOwnerId()) {
resp.sendError(404);
return;