]> WPIA git - gigi.git/commitdiff
UPD: Update the api to work more with "Users" than with their ids.
authorFelix Dörre <felix@dogcraft.de>
Fri, 26 Sep 2014 15:40:31 +0000 (17:40 +0200)
committerJanis Streib <janis@dogcraft.de>
Wed, 31 Dec 2014 01:35:40 +0000 (02:35 +0100)
src/org/cacert/gigi/dbObjects/Certificate.java
src/org/cacert/gigi/pages/account/certs/CertificateIssueForm.java
src/org/cacert/gigi/pages/account/certs/CertificateIssueForm.templ
src/org/cacert/gigi/pages/account/certs/Certificates.java
src/org/cacert/gigi/pages/main/Signup.java
src/org/cacert/gigi/ping/SSLPinger.java
src/org/cacert/gigi/util/Notary.java
tests/org/cacert/gigi/TestCertificate.java
tests/org/cacert/gigi/TestCrossDomainAccess.java
tests/org/cacert/gigi/TestSeparateSessionScope.java
tests/org/cacert/gigi/ping/TestSSL.java

index 756a70fdff3c592a0d23413aafb021220b8fbdfe..991310adb44dace46da3887d109bfb50e49d5b82 100644 (file)
@@ -108,7 +108,7 @@ public class Certificate {
 
     private int id;
 
-    private int ownerId;
+    private User owner;
 
     private String serial;
 
@@ -128,8 +128,8 @@ public class Certificate {
 
     private CertificateProfile profile;
 
-    public Certificate(int ownerId, String dn, String md, String csr, CSRType csrType, CertificateProfile profile, SubjectAlternateName... sans) {
-        this.ownerId = ownerId;
+    public Certificate(User owner, String dn, String md, String csr, CSRType csrType, CertificateProfile profile, SubjectAlternateName... sans) {
+        this.owner = owner;
         this.dn = dn;
         this.md = md;
         this.csr = csr;
@@ -150,7 +150,7 @@ public class Certificate {
         md = rs.getString(3);
         csrName = rs.getString(4);
         crtName = rs.getString(5);
-        ownerId = rs.getInt(6);
+        owner = User.getById(rs.getInt(6));
         profile = CertificateProfile.getById(rs.getInt(7));
         this.serial = serial;
 
@@ -233,13 +233,13 @@ public class Certificate {
         if (getStatus() != CertificateStatus.DRAFT) {
             throw new IllegalStateException();
         }
-        Notary.writeUserAgreement(ownerId, "CCA", "issue certificate", "", true, 0);
+        Notary.writeUserAgreement(owner, "CCA", "issue certificate", "", true, 0);
 
         GigiPreparedStatement inserter = DatabaseConnection.getInstance().prepare("INSERT INTO certs SET md=?, subject=?, csr_type=?, crt_name='', memid=?, profile=?");
         inserter.setString(1, md);
         inserter.setString(2, dn);
         inserter.setString(3, csrType.toString());
-        inserter.setInt(4, ownerId);
+        inserter.setInt(4, owner.getId());
         inserter.setInt(5, profile.getId());
         inserter.execute();
         id = inserter.lastInsertId();
@@ -315,8 +315,8 @@ public class Certificate {
         return md;
     }
 
-    public int getOwnerId() {
-        return ownerId;
+    public User getOwner() {
+        return owner;
     }
 
     public List<SubjectAlternateName> getSANs() {
index 1414e1d4c92fc929d5eabbe2c82a68c39a791fc9..153a5ce0eb95e28c768caad83e089d314eb7b534 100644 (file)
@@ -302,7 +302,7 @@ public class CertificateIssueForm extends Form {
                         return false;
                     }
 
-                    result = new Certificate(LoginPage.getUser(req).getId(), subject.toString(), selectedDigest.toString(), //
+                    result = new Certificate(LoginPage.getUser(req), subject.toString(), selectedDigest.toString(), //
                             this.csr, this.csrType, profile, SANs.toArray(new SubjectAlternateName[SANs.size()]));
                     result.issue(issueDate.getFrom(), issueDate.getTo()).waitFor(60000);
                     return true;
index 34c58512143247cac0a80095cb013b690f5302c6..ea23e332f512aed4203ff960326c2937d34e3b8b 100644 (file)
     <td>SANs</td>
     <td align="left"><textarea rows='5' name='SANs' placeholder="dns:my.domain.example.com, dns:*.example.com, email:my.email@example.com (or newline separated)"><?=$emails?></textarea></td>
   </tr>
-
+  <? if($orga) { ?>
+  <tr>
+    <td><?=_Departement?></td>
+    <td align="left"><input type='text' name='OU'/></td>
+  </tr>
+  <? } ?>
   <tr class="expertoff">
     <td class='check'>
       <input type="checkbox" id="expertbox" name="expertbox"/>
index 0c0282227f7dbf71eb65f7dab3c759ddfcc7bbda..ac2289f342de24c01a9b1cb9be899e15d0b07b07 100644 (file)
@@ -56,7 +56,7 @@ public class Certificates extends Page {
         String serial = pi;
         try {
             Certificate c = Certificate.getBySerial(serial);
-            if (c == null || getUser(req).getId() != c.getOwnerId()) {
+            if (c == null || getUser(req).getId() != c.getOwner().getId()) {
                 resp.sendError(404);
                 return true;
             }
@@ -92,7 +92,7 @@ public class Certificates extends Page {
 
             String serial = pi;
             Certificate c = Certificate.getBySerial(serial);
-            if (c == null || LoginPage.getUser(req).getId() != c.getOwnerId()) {
+            if (c == null || LoginPage.getUser(req).getId() != c.getOwner().getId()) {
                 resp.sendError(404);
                 return;
             }
index 6f2bf6efd0fabec27c30c4b474d8888ad0b1e807..a512a017ee9e48e886d3e21938549314097e9088 100644 (file)
@@ -185,7 +185,7 @@ public class Signup extends Form {
             ps.setString(4, regional ? "1" : "0");
             ps.setString(5, radius ? "1" : "0");
             ps.execute();
-            Notary.writeUserAgreement(memid, "CCA", "account creation", "", true, 0);
+            Notary.writeUserAgreement(buildup, "CCA", "account creation", "", true, 0);
 
             DatabaseConnection.getInstance().commitTransaction();
         } finally {
index 2f49b44627702a71f79b00678b6cb7766720c860..6a20dafe7266384a3133248dc30d1d05ad755e61 100644 (file)
@@ -208,7 +208,7 @@ public class SSLPinger extends DomainPinger {
 
             BigInteger serial = first.getSerialNumber();
             Certificate c = Certificate.getBySerial(serial.toString(16));
-            if (c.getOwnerId() != subject.getId()) {
+            if (c.getOwner().getId() != subject.getId()) {
                 return "Owner mismatch";
             }
             return PING_SUCCEDED;
index 2b1a2d923997d2b15c016a5a4deed5a1e898b026..bd6f762586d6c79f07c8d4523948491ba8b96e8e 100644 (file)
@@ -14,9 +14,9 @@ import org.cacert.gigi.output.DateSelector;
 
 public class Notary {
 
-    public static void writeUserAgreement(int memid, String document, String method, String comment, boolean active, int secmemid) {
+    public static void writeUserAgreement(User member, String document, String method, String comment, boolean active, int secmemid) {
         GigiPreparedStatement q = DatabaseConnection.getInstance().prepare("insert into `user_agreements` set `memid`=?, `secmemid`=?," + " `document`=?,`date`=NOW(), `active`=?,`method`=?,`comment`=?");
-        q.setInt(1, memid);
+        q.setInt(1, member.getId());
         q.setInt(2, secmemid);
         q.setString(3, document);
         q.setInt(4, active ? 1 : 0);
index 99a511570e3771e8dd6333c3a26ada3df680f7f0..f494befbe5994fbba1c5ac2128be279214cf3030 100644 (file)
@@ -17,6 +17,7 @@ import org.cacert.gigi.dbObjects.Certificate.CertificateStatus;
 import org.cacert.gigi.dbObjects.Certificate.SANType;
 import org.cacert.gigi.dbObjects.Certificate.SubjectAlternateName;
 import org.cacert.gigi.dbObjects.CertificateProfile;
+import org.cacert.gigi.dbObjects.User;
 import org.cacert.gigi.testUtils.ManagedTest;
 import org.junit.Test;
 
@@ -24,11 +25,13 @@ import sun.security.x509.GeneralNameInterface;
 
 public class TestCertificate extends ManagedTest {
 
+    User u = User.getById(createVerifiedUser("fn", "ln", createUniqueName() + "@example.com", TEST_PASSWORD));
+
     @Test
     public void testClientCertLoginStates() throws IOException, GeneralSecurityException, SQLException, InterruptedException, GigiApiException {
         KeyPair kp = generateKeypair();
         String key1 = generatePEMCSR(kp, "CN=testmail@example.com");
-        Certificate c = new Certificate(1, "/CN=testmail@example.com", "sha256", key1, CSRType.CSR, CertificateProfile.getById(1));
+        Certificate c = new Certificate(u, "/CN=testmail@example.com", "sha256", key1, CSRType.CSR, CertificateProfile.getById(1));
         final PrivateKey pk = kp.getPrivate();
         c.issue(null, "2y").waitFor(60000);
         final X509Certificate ce = c.cert();
@@ -39,7 +42,7 @@ public class TestCertificate extends ManagedTest {
     public void testSANs() throws IOException, GeneralSecurityException, SQLException, InterruptedException, GigiApiException {
         KeyPair kp = generateKeypair();
         String key = generatePEMCSR(kp, "CN=testmail@example.com");
-        Certificate c = new Certificate(1, "/CN=testmail@example.com", "sha256", key, CSRType.CSR, CertificateProfile.getById(1),//
+        Certificate c = new Certificate(u, "/CN=testmail@example.com", "sha256", key, CSRType.CSR, CertificateProfile.getById(1),//
                 new SubjectAlternateName(SANType.EMAIL, "testmail@example.com"), new SubjectAlternateName(SANType.DNS, "testmail.example.com"));
 
         testFails(CertificateStatus.DRAFT, c);
@@ -90,7 +93,7 @@ public class TestCertificate extends ManagedTest {
     public void testCertLifeCycle() throws IOException, GeneralSecurityException, SQLException, InterruptedException, GigiApiException {
         KeyPair kp = generateKeypair();
         String key = generatePEMCSR(kp, "CN=testmail@example.com");
-        Certificate c = new Certificate(1, "/CN=testmail@example.com", "sha256", key, CSRType.CSR, CertificateProfile.getById(1));
+        Certificate c = new Certificate(u, "/CN=testmail@example.com", "sha256", key, CSRType.CSR, CertificateProfile.getById(1));
         final PrivateKey pk = kp.getPrivate();
 
         testFails(CertificateStatus.DRAFT, c);
index 8a67e64a851811a575c7073a27d6439639c64619..f20ee261a448c2a60a4d9cf239d413d8af263a41 100644 (file)
@@ -16,6 +16,7 @@ import java.sql.SQLException;
 import org.cacert.gigi.dbObjects.Certificate;
 import org.cacert.gigi.dbObjects.Certificate.CSRType;
 import org.cacert.gigi.dbObjects.CertificateProfile;
+import org.cacert.gigi.dbObjects.User;
 import org.cacert.gigi.testUtils.IOUtils;
 import org.cacert.gigi.testUtils.ManagedTest;
 import org.cacert.gigi.util.ServerConstants;
@@ -49,7 +50,7 @@ public class TestCrossDomainAccess extends ManagedTest {
         int id = createVerifiedUser("Kurti", "Hansel", email, TEST_PASSWORD);
         KeyPair kp = generateKeypair();
         String key1 = generatePEMCSR(kp, "CN=" + email);
-        Certificate c = new Certificate(id, "/CN=" + email, "sha256", key1, CSRType.CSR, CertificateProfile.getById(1));
+        Certificate c = new Certificate(User.getById(id), "/CN=" + email, "sha256", key1, CSRType.CSR, CertificateProfile.getById(1));
         final PrivateKey pk = kp.getPrivate();
         c.issue(null, "2y").waitFor(60000);
         final X509Certificate ce = c.cert();
index d4115be1be60bb279d7628243faaf898925d862e..1e583b788b62ed9759aab3040f47e8424573ee09 100644 (file)
@@ -14,6 +14,7 @@ import java.sql.SQLException;
 import org.cacert.gigi.dbObjects.Certificate;
 import org.cacert.gigi.dbObjects.Certificate.CSRType;
 import org.cacert.gigi.dbObjects.CertificateProfile;
+import org.cacert.gigi.dbObjects.User;
 import org.cacert.gigi.testUtils.ManagedTest;
 import org.junit.Test;
 
@@ -26,7 +27,7 @@ public class TestSeparateSessionScope extends ManagedTest {
         String cookie = login(mail, TEST_PASSWORD);
         KeyPair kp = generateKeypair();
         String csr = generatePEMCSR(kp, "CN=felix@dogcraft.de");
-        Certificate c = new Certificate(user, "/CN=testmail@example.com", "sha256", csr, CSRType.CSR, CertificateProfile.getById(1));
+        Certificate c = new Certificate(User.getById(user), "/CN=testmail@example.com", "sha256", csr, CSRType.CSR, CertificateProfile.getById(1));
         final PrivateKey pk = kp.getPrivate();
         c.issue(null, "2y").waitFor(60000);
         final X509Certificate ce = c.cert();
index 9404e17bc24de344074b7ed2ada4c645cdcca8ec..71ee55ebd64659757f53be836f8cbbfe32a0c611 100644 (file)
@@ -32,6 +32,7 @@ import org.cacert.gigi.GigiApiException;
 import org.cacert.gigi.dbObjects.Certificate;
 import org.cacert.gigi.dbObjects.Certificate.CSRType;
 import org.cacert.gigi.dbObjects.CertificateProfile;
+import org.cacert.gigi.dbObjects.User;
 import org.cacert.gigi.pages.account.domain.DomainOverview;
 import org.cacert.gigi.testUtils.IOUtils;
 import org.cacert.gigi.testUtils.PingTest;
@@ -138,7 +139,7 @@ public class TestSSL extends PingTest {
     private void createCertificate(String test, CertificateProfile profile) throws GeneralSecurityException, IOException, SQLException, InterruptedException, GigiApiException {
         kp = generateKeypair();
         String csr = generatePEMCSR(kp, "CN=" + test);
-        c = new Certificate(userid, "/CN=" + test, "sha256", csr, CSRType.CSR, profile);
+        c = new Certificate(User.getById(userid), "/CN=" + test, "sha256", csr, CSRType.CSR, profile);
         c.issue(null, "2y").waitFor(60000);
     }