X-Git-Url: https://code.wpia.club/?a=blobdiff_plain;f=src%2Fclub%2Fwpia%2Fgigi%2Fpages%2FLoginPage.java;h=b0ed6e69397dcaa4cd313752eed3e473c405f643;hb=753ce950283248b931ee9da5158c88156c21e17d;hp=854fa31b419cc38d10ab7be45065389382cc5658;hpb=d71624703243c182beb0f946ebc582e0366a4686;p=gigi.git diff --git a/src/club/wpia/gigi/pages/LoginPage.java b/src/club/wpia/gigi/pages/LoginPage.java index 854fa31b..b0ed6e69 100644 --- a/src/club/wpia/gigi/pages/LoginPage.java +++ b/src/club/wpia/gigi/pages/LoginPage.java @@ -4,6 +4,7 @@ import static club.wpia.gigi.Gigi.*; import java.io.IOException; import java.io.PrintWriter; +import java.math.BigInteger; import java.security.cert.X509Certificate; import java.util.Map; @@ -26,6 +27,7 @@ import club.wpia.gigi.util.PasswordHash; import club.wpia.gigi.util.RateLimit; import club.wpia.gigi.util.RateLimit.RateLimitException; import club.wpia.gigi.util.ServerConstants; +import club.wpia.gigi.util.ServerConstants.Host; public class LoginPage extends Page { @@ -61,7 +63,7 @@ public class LoginPage extends Page { @Override public void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException { - if (req.getHeader("Host").equals(ServerConstants.getSecureHostNamePortSecure())) { + if (req.getHeader("Host").equals(ServerConstants.getHostNamePortSecure(Host.SECURE))) { resp.getWriter().println(getLanguage(req).getTranslation("Authentication with certificate failed. Try another certificate or use a password.")); } else { new LoginForm(req).output(resp.getWriter(), getLanguage(req), getDefaultVars(req)); @@ -151,7 +153,7 @@ public class LoginPage extends Page { } private void tryAuthWithCertificate(HttpServletRequest req, X509Certificate x509Certificate) { - String serial = extractSerialFormCert(x509Certificate); + BigInteger serial = extractSerialFormCert(x509Certificate); User user = fetchUserBySerial(serial); if (user == null) { return; @@ -162,15 +164,11 @@ public class LoginPage extends Page { req.getSession().setAttribute(LOGIN_METHOD, new TranslateCommand("Certificate")); } - public static String extractSerialFormCert(X509Certificate x509Certificate) { - return x509Certificate.getSerialNumber().toString(16).toLowerCase(); + public static BigInteger extractSerialFormCert(X509Certificate x509Certificate) { + return x509Certificate.getSerialNumber(); } - public static User fetchUserBySerial(String serial) { - if ( !serial.matches("[a-f0-9]+")) { - throw new Error("serial malformed."); - } - + public static User fetchUserBySerial(BigInteger serial) { CertificateOwner o = CertificateOwner.getByEnabledSerial(serial); if (o == null || !(o instanceof User)) { return null; @@ -187,7 +185,7 @@ public class LoginPage extends Page { return uc; } - private static final Group LOGIN_BLOCKED = Group.BLOCKEDLOGIN; + private static final Group LOGIN_BLOCKED = Group.BLOCKED_LOGIN; private void loginSession(HttpServletRequest req, User user) { if (user.isInGroup(LOGIN_BLOCKED)) {