]> WPIA git - gigi.git/commitdiff
Serials are in fact Strings.
authorFelix Dörre <felix@dogcraft.de>
Thu, 10 Jul 2014 20:23:47 +0000 (22:23 +0200)
committerFelix Dörre <felix@dogcraft.de>
Thu, 10 Jul 2014 22:35:17 +0000 (00:35 +0200)
src/org/cacert/gigi/Certificate.java
src/org/cacert/gigi/pages/account/MailCertificates.java

index 378b3a7001fc10e39fc01589eee794ce5ca2356a..efe5aec5473d5c1dcb7e050002e26b2e6b45f689 100644 (file)
@@ -18,7 +18,7 @@ import org.cacert.gigi.util.KeyStorage;
 public class Certificate {
        private int id;
        private int ownerId;
-       private int serial;
+       private String serial;
        private String dn;
        private String md;
        private String csrName;
@@ -32,11 +32,11 @@ public class Certificate {
                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);
@@ -214,7 +214,7 @@ public class Certificate {
                return id;
        }
 
-       public int getSerial() {
+       public String getSerial() {
                return serial;
        }
 
@@ -230,4 +230,14 @@ public class Certificate {
                return ownerId;
        }
 
+       public static Certificate getBySerial(String serial) {
+               // TODO caching?
+               try {
+                       return new Certificate(serial);
+               } catch (IllegalArgumentException e) {
+
+               }
+               return null;
+       }
+
 }
index e0dd947a06d3dfe37c47683f4c3ec9b8ee3e3b5a..56a0b5bd5cf780573f0fe5f47baa05cd89548273 100644 (file)
@@ -45,16 +45,10 @@ public class MailCertificates extends Page {
                        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;
                        }
@@ -92,15 +86,8 @@ public class MailCertificates extends Page {
                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;