]> WPIA git - gigi.git/blob - src/org/cacert/gigi/api/CATSRestrictedApi.java
b7ff83a9753df78b0439a854f69d59a34e50f258
[gigi.git] / src / org / cacert / gigi / api / CATSRestrictedApi.java
1 package org.cacert.gigi.api;
2
3 import java.io.IOException;
4
5 import javax.servlet.http.HttpServletRequest;
6 import javax.servlet.http.HttpServletResponse;
7
8 import org.cacert.gigi.dbObjects.Certificate;
9 import org.cacert.gigi.dbObjects.Certificate.SANType;
10 import org.cacert.gigi.dbObjects.Certificate.SubjectAlternateName;
11 import org.cacert.gigi.dbObjects.CertificateOwner;
12 import org.cacert.gigi.dbObjects.Organisation;
13 import org.cacert.gigi.util.ServerConstants;
14
15 public abstract class CATSRestrictedApi extends APIPoint {
16
17     @Override
18     public final void process(HttpServletRequest req, HttpServletResponse resp, CertificateOwner u, Certificate clientCert) throws IOException {
19         if ( !(u instanceof Organisation)) {
20             resp.sendError(500, "Error, invalid cert");
21             return;
22         }
23         if ( !((Organisation) u).isSelfOrganisation()) {
24             resp.sendError(500, "Error, invalid cert");
25             return;
26         }
27         if ( !hasMail(clientCert, ServerConstants.getQuizMailAddress())) {
28             resp.sendError(500, "Error, invalid cert");
29             return;
30         }
31         processAuthenticated(req, resp);
32     }
33
34     public abstract void processAuthenticated(HttpServletRequest req, HttpServletResponse resp) throws IOException;
35
36     public boolean hasMail(Certificate clientCert, String mail) {
37         for (SubjectAlternateName a : clientCert.getSANs()) {
38             if (a.getType() == SANType.EMAIL && a.getName().equals(mail)) {
39                 return true;
40             }
41         }
42         return false;
43     }
44 }