import java.io.IOException;
import java.io.PrintWriter;
+import java.math.BigInteger;
import java.net.URLEncoder;
import java.security.GeneralSecurityException;
import java.security.cert.X509Certificate;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
+import club.wpia.gigi.GigiApiException;
import club.wpia.gigi.dbObjects.Certificate;
+import club.wpia.gigi.dbObjects.Certificate.CertificateStatus;
+import club.wpia.gigi.dbObjects.Certificate.SubjectAlternateName;
import club.wpia.gigi.dbObjects.CertificateOwner;
import club.wpia.gigi.dbObjects.Organisation;
import club.wpia.gigi.dbObjects.SupportedUser;
import club.wpia.gigi.dbObjects.User;
-import club.wpia.gigi.dbObjects.Certificate.CertificateStatus;
-import club.wpia.gigi.dbObjects.Certificate.SubjectAlternateName;
import club.wpia.gigi.localisation.Language;
import club.wpia.gigi.output.TrustchainIterable;
import club.wpia.gigi.output.template.Form;
cer = true;
pi = pi.substring(0, pi.length() - 4);
}
- String serial = pi;
+ BigInteger serial = new BigInteger(pi, 16);
try {
Certificate c = Certificate.getBySerial(serial);
- if (c == null || LoginPage.getAuthorizationContext(req).getTarget().getId() != c.getOwner().getId()) {
+ if (c == null || ( !support && LoginPage.getAuthorizationContext(req).getTarget().getId() != c.getOwner().getId())) {
resp.sendError(404);
return true;
}
} catch (IllegalArgumentException e) {
resp.sendError(404);
return true;
+ } catch (GigiApiException e) {
+ resp.sendError(404);
+ return true;
} catch (GeneralSecurityException e) {
resp.sendError(404);
return true;
pi = pi.substring(1);
String serial = pi;
- Certificate c = Certificate.getBySerial(serial);
+ Certificate c = Certificate.getBySerial(new BigInteger(serial, 16));
Language l = LoginPage.getLanguage(req);
- if ( !support && (c == null || LoginPage.getAuthorizationContext(req).getTarget().getId() != c.getOwner().getId())) {
+ if (c == null || ( !support && LoginPage.getAuthorizationContext(req).getTarget().getId() != c.getOwner().getId())) {
resp.sendError(404);
return;
}
- HashMap<String, Object> vars = new HashMap<>();
+ Map<String, Object> vars = getDefaultVars(req);
vars.put("serial", URLEncoder.encode(serial, "UTF-8"));
CertificateStatus st = c.getStatus();
vars.put("DN", c.getDistinguishedName());
vars.put("digest", c.getMessageDigest());
vars.put("profile", c.getProfile().getVisibleName());
- vars.put("fingerprint", "TBD"); // TODO function needs to be
- // implemented in Certificate.java
+ try {
+ vars.put("fingerprintSHA1", c.getFingerprint("sha-1"));
+ vars.put("fingerprintSHA256", c.getFingerprint("sha-256"));
+ } catch (GeneralSecurityException e) {
+ e.printStackTrace();
+ } catch (GigiApiException e) {
+ e.format(out, l, getDefaultVars(req));
+ }
+
try {
if (st == CertificateStatus.ISSUED || st == CertificateStatus.REVOKED) {
vars.put("login", c.isLoginEnabled());
} catch (GeneralSecurityException e) {
e.printStackTrace();
+ } catch (GigiApiException e) {
+ e.format(out, l, getDefaultVars(req));
}
certDisplay.output(out, getLanguage(req), vars);