diff options
Diffstat (limited to 'BKULocal')
6 files changed, 560 insertions, 1 deletions
| diff --git a/BKULocal/src/main/java/at/gv/egiz/bku/local/stal/LocalBKUWorker.java b/BKULocal/src/main/java/at/gv/egiz/bku/local/stal/LocalBKUWorker.java index c41ac234..27a5d8ca 100644 --- a/BKULocal/src/main/java/at/gv/egiz/bku/local/stal/LocalBKUWorker.java +++ b/BKULocal/src/main/java/at/gv/egiz/bku/local/stal/LocalBKUWorker.java @@ -26,6 +26,8 @@ package at.gv.egiz.bku.local.stal;  import at.gv.egiz.bku.gui.BKUGUIFacade;  import at.gv.egiz.bku.smccstal.AbstractBKUWorker; +import at.gv.egiz.bku.smccstal.GETCertificateRequestHandler; +import at.gv.egiz.bku.smccstal.GETHardwareInfoRequestHandler;  import at.gv.egiz.bku.smccstal.PINManagementRequestHandler;  import at.gv.egiz.bku.smccstal.PersonIdentityLinkRequestHandler;  import at.gv.egiz.stal.QuitRequest; @@ -34,6 +36,8 @@ import at.gv.egiz.stal.STALResponse;  import at.gv.egiz.stal.SignRequest;  import at.gv.egiz.stal.ext.PersonIdentityLinkRequest; +import at.gv.egiz.stal.ext.GETCertificateRequest; +import at.gv.egiz.stal.ext.GETHardwareInfoRequest;  import at.gv.egiz.stal.ext.PINManagementRequest;  import java.util.List;  import javax.swing.JFrame; @@ -53,6 +57,8 @@ public class LocalBKUWorker extends AbstractBKUWorker {              new LocalSignRequestHandler(new LocalSecureViewer(gui)));      addRequestHandler(PINManagementRequest.class, new PINManagementRequestHandler());      addRequestHandler(PersonIdentityLinkRequest.class, new PersonIdentityLinkRequestHandler()); +    addRequestHandler(GETCertificateRequest.class, new GETCertificateRequestHandler()); +    addRequestHandler(GETHardwareInfoRequest.class, new GETHardwareInfoRequestHandler());    }    /** does not change container's visibility (use quit request to close) */ diff --git a/BKULocal/src/main/java/at/gv/egiz/bku/local/stal/LocalGETCertificateSTALFactory.java b/BKULocal/src/main/java/at/gv/egiz/bku/local/stal/LocalGETCertificateSTALFactory.java new file mode 100644 index 00000000..50c6c632 --- /dev/null +++ b/BKULocal/src/main/java/at/gv/egiz/bku/local/stal/LocalGETCertificateSTALFactory.java @@ -0,0 +1,136 @@ +/* + * Copyright 2011 by Graz University of Technology, Austria + * MOCCA has been developed by the E-Government Innovation Center EGIZ, a joint + * initiative of the Federal Chancellery Austria and Graz University of Technology. + * + * Licensed under the EUPL, Version 1.1 or - as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "Licence"); + * You may not use this work except in compliance with the Licence. + * You may obtain a copy of the Licence at: + * http://www.osor.eu/eupl/ + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the Licence is distributed on an "AS IS" basis, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the Licence for the specific language governing permissions and + * limitations under the Licence. + * + * This product combines work with different licenses. See the "NOTICE" text + * file for details on the various modules and licenses. + * The "NOTICE" text file is part of the distribution. Any derivative works + * that you distribute must include a readable copy of the "NOTICE" text file. + */ + +package at.gv.egiz.bku.local.stal; + +import at.gv.egiz.bku.viewer.ResourceFontLoader; +import java.awt.Dimension; +import java.awt.Toolkit; +import java.net.MalformedURLException; +import java.net.URL; +import java.util.Locale; + + +import at.gv.egiz.bku.gui.BKUGUIFacade; +import at.gv.egiz.bku.gui.BKUIcons; +import at.gv.egiz.bku.gui.GetCertificateGUI; +import at.gv.egiz.bku.gui.GetCertificateGUIFacade; +import at.gv.egiz.bku.local.gui.GUIProxy; +import at.gv.egiz.bku.local.gui.LocalHelpListener; +import at.gv.egiz.stal.STAL; +import at.gv.egiz.stal.STALFactory; +import javax.swing.JFrame; + +import org.apache.commons.configuration.Configuration; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** +* +* @author Thomas Lenz <thomas.lenz@iaik.tugraz.at> +*/ + +public class LocalGETCertificateSTALFactory implements STALFactory { + +	  private final Logger log = LoggerFactory.getLogger(LocalGETCertificateSTALFactory.class); +	  protected static final Dimension PREFERRED_SIZE = new Dimension(318, 200); +	  protected URL helpURL; +	  protected Locale locale; +	   +	  protected Configuration configuration; +	 +	@Override +	public STAL createSTAL() { +	    final LocalBKUWorker stal; +	    //http://java.sun.com/docs/books/tutorial/uiswing/misc/focus.html +	    // use undecorated JFrame instead of JWindow, +	    // which creates an invisible owning frame and therefore cannot getFocusInWindow() +	    JFrame dialog = new JFrame("Bürgerkarte"); +	    log.debug("AlwaysOnTop supported: {}.", dialog.isAlwaysOnTopSupported()); +	    // [#439] make mocca dialog alwaysOnTop +	    dialog.setAlwaysOnTop(true); +	    dialog.setIconImages(BKUIcons.icons); +//	    dialog.setUndecorated(true); +//	    dialog.getRootPane().setWindowDecorationStyle(JRootPane.NONE); + +	    if (locale != null) { +	      dialog.setLocale(locale); +	    } +	    LocalHelpListener helpListener = null; +	    if (helpURL != null) { +	      helpListener = new LocalHelpListener(helpURL, locale); +	    } else { +	      log.warn("No HELP URL configured, help system disabled."); +	    } +	    GetCertificateGUIFacade gui = new GetCertificateGUI(dialog.getContentPane(), +	            dialog.getLocale(), +	            null, +	            new ResourceFontLoader(), +	            helpListener, +	            null); +	    BKUGUIFacade proxy = (BKUGUIFacade) GUIProxy.newInstance(gui, dialog, new Class[] { GetCertificateGUIFacade.class, } ); +	    stal = new LocalBKUWorker(proxy, dialog); +	    dialog.setPreferredSize(PREFERRED_SIZE); +	    dialog.pack(); +	    Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize(); +	    Dimension frameSize = dialog.getSize(); +	    if (frameSize.height > screenSize.height) { +	      frameSize.height = screenSize.height; +	    } +	    if (frameSize.width > screenSize.width) { +	      frameSize.width = screenSize.width; +	    } +	    dialog.setLocation((screenSize.width - frameSize.width) / 2, +	            (screenSize.height - frameSize.height) / 2); +	     +	    return stal; +	} + +	@Override +	public void setLocale(Locale locale) { +		this.locale = locale; +	} + +	  /** +	   * spring injects helpURL +	   * @param helpURL +	   * @throws MalformedURLException if helpURL is not a valid URL +	   */ +	  public void setHelpURL(String helpURL) throws MalformedURLException { +	    this.helpURL = new URL(helpURL); +	  } + +	  /** +	   * @return the configuration +	   */ +	  public Configuration getConfiguration() { +	    return configuration; +	  } + +	  /** +	   * @param configuration the configuration to set +	   */ +	  public void setConfiguration(Configuration configuration) { +	    this.configuration = configuration; +	  } +} diff --git a/BKULocal/src/main/java/at/gv/egiz/bku/local/stal/LocalGetHardwareInfoSTALFactory.java b/BKULocal/src/main/java/at/gv/egiz/bku/local/stal/LocalGetHardwareInfoSTALFactory.java new file mode 100644 index 00000000..1caccf6f --- /dev/null +++ b/BKULocal/src/main/java/at/gv/egiz/bku/local/stal/LocalGetHardwareInfoSTALFactory.java @@ -0,0 +1,136 @@ +/* + * Copyright 2011 by Graz University of Technology, Austria + * MOCCA has been developed by the E-Government Innovation Center EGIZ, a joint + * initiative of the Federal Chancellery Austria and Graz University of Technology. + * + * Licensed under the EUPL, Version 1.1 or - as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "Licence"); + * You may not use this work except in compliance with the Licence. + * You may obtain a copy of the Licence at: + * http://www.osor.eu/eupl/ + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the Licence is distributed on an "AS IS" basis, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the Licence for the specific language governing permissions and + * limitations under the Licence. + * + * This product combines work with different licenses. See the "NOTICE" text + * file for details on the various modules and licenses. + * The "NOTICE" text file is part of the distribution. Any derivative works + * that you distribute must include a readable copy of the "NOTICE" text file. + */ + +package at.gv.egiz.bku.local.stal; + +import java.awt.Dimension; +import java.awt.Toolkit; +import java.net.MalformedURLException; +import java.net.URL; +import java.util.Locale; + +import javax.swing.JFrame; + +import org.apache.commons.configuration.Configuration; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import at.gv.egiz.bku.gui.BKUGUIFacade; +import at.gv.egiz.bku.gui.BKUIcons; +import at.gv.egiz.bku.gui.GetHardwareInfoGUI; +import at.gv.egiz.bku.gui.GetHardwareInfoGUIFacade; +import at.gv.egiz.bku.local.gui.GUIProxy; +import at.gv.egiz.bku.local.gui.LocalHelpListener; +import at.gv.egiz.bku.viewer.ResourceFontLoader; +import at.gv.egiz.stal.STAL; +import at.gv.egiz.stal.STALFactory; + +/** +* +* @author Thomas Lenz <thomas.lenz@iaik.tugraz.at> +*/ + +public class LocalGetHardwareInfoSTALFactory implements STALFactory { + +	  private final Logger log = LoggerFactory.getLogger(LocalGetHardwareInfoSTALFactory.class); +	  protected static final Dimension PREFERRED_SIZE = new Dimension(320, 270); +	  protected URL helpURL; +	  protected Locale locale; +	   +	  protected Configuration configuration; +	 +	@Override +	public STAL createSTAL() { +	    final LocalBKUWorker stal; +	    //http://java.sun.com/docs/books/tutorial/uiswing/misc/focus.html +	    // use undecorated JFrame instead of JWindow, +	    // which creates an invisible owning frame and therefore cannot getFocusInWindow() +	    JFrame dialog = new JFrame("Bürgerkarte"); +	    log.debug("AlwaysOnTop supported: {}.", dialog.isAlwaysOnTopSupported()); +	    // [#439] make mocca dialog alwaysOnTop +	    dialog.setAlwaysOnTop(true); +	    dialog.setIconImages(BKUIcons.icons); +//	    dialog.setUndecorated(true); +//	    dialog.getRootPane().setWindowDecorationStyle(JRootPane.NONE); + +	    if (locale != null) { +	      dialog.setLocale(locale); +	    } +	    LocalHelpListener helpListener = null; +	    if (helpURL != null) { +	      helpListener = new LocalHelpListener(helpURL, locale); +	    } else { +	      log.warn("No HELP URL configured, help system disabled."); +	    } +	    GetHardwareInfoGUIFacade gui = new GetHardwareInfoGUI(dialog.getContentPane(), +	            dialog.getLocale(), +	            null, +	            new ResourceFontLoader(), +	            helpListener, +	            null); +	    BKUGUIFacade proxy = (BKUGUIFacade) GUIProxy.newInstance(gui, dialog, new Class[] { GetHardwareInfoGUIFacade.class, } ); +	    stal = new LocalBKUWorker(proxy, dialog); +	    dialog.setPreferredSize(PREFERRED_SIZE); +	    dialog.pack(); +	    Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize(); +	    Dimension frameSize = dialog.getSize(); +	    if (frameSize.height > screenSize.height) { +	      frameSize.height = screenSize.height; +	    } +	    if (frameSize.width > screenSize.width) { +	      frameSize.width = screenSize.width; +	    } +	    dialog.setLocation((screenSize.width - frameSize.width) / 2, +	            (screenSize.height - frameSize.height) / 2); +	     +	    return stal; +	} + +	@Override +	public void setLocale(Locale locale) { +		this.locale = locale; +	} + +	  /** +	   * spring injects helpURL +	   * @param helpURL +	   * @throws MalformedURLException if helpURL is not a valid URL +	   */ +	  public void setHelpURL(String helpURL) throws MalformedURLException { +	    this.helpURL = new URL(helpURL); +	  } + +	  /** +	   * @return the configuration +	   */ +	  public Configuration getConfiguration() { +	    return configuration; +	  } + +	  /** +	   * @param configuration the configuration to set +	   */ +	  public void setConfiguration(Configuration configuration) { +	    this.configuration = configuration; +	  } +} diff --git a/BKULocal/src/main/java/at/gv/egiz/bku/local/webapp/GETCertificateServlet.java b/BKULocal/src/main/java/at/gv/egiz/bku/local/webapp/GETCertificateServlet.java new file mode 100644 index 00000000..d23937f9 --- /dev/null +++ b/BKULocal/src/main/java/at/gv/egiz/bku/local/webapp/GETCertificateServlet.java @@ -0,0 +1,133 @@ +/* + * Copyright 2011 by Graz University of Technology, Austria + * MOCCA has been developed by the E-Government Innovation Center EGIZ, a joint + * initiative of the Federal Chancellery Austria and Graz University of Technology. + * + * Licensed under the EUPL, Version 1.1 or - as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "Licence"); + * You may not use this work except in compliance with the Licence. + * You may obtain a copy of the Licence at: + * http://www.osor.eu/eupl/ + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the Licence is distributed on an "AS IS" basis, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the Licence for the specific language governing permissions and + * limitations under the Licence. + * + * This product combines work with different licenses. See the "NOTICE" text + * file for details on the various modules and licenses. + * The "NOTICE" text file is part of the distribution. Any derivative works + * that you distribute must include a readable copy of the "NOTICE" text file. + */ + +package at.gv.egiz.bku.local.webapp; + +import java.io.IOException; +import java.net.MalformedURLException; +import java.net.URL; +import java.util.Collections; +import java.util.List; + +import javax.servlet.ServletException; +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import at.gv.egiz.bku.local.stal.LocalGETCertificateSTALFactory; +import at.gv.egiz.stal.QuitRequest; +import at.gv.egiz.stal.STAL; +import at.gv.egiz.stal.STALResponse; +import at.gv.egiz.stal.ext.GETCertificateRequest; + +/** +* +* @author Thomas Lenz <thomas.lenz@iaik.tugraz.at> +*/ + +public class GETCertificateServlet extends HttpServlet { +	private static final long serialVersionUID = 1L; +	 +	 private final Logger log = LoggerFactory.getLogger(GETCertificateServlet.class); + +	LocalGETCertificateSTALFactory stalFactory; +	   +	public GETCertificateServlet() { +	    log.debug("Constuctor: " + GETCertificateServlet.class); +	   stalFactory = new LocalGETCertificateSTALFactory(); +	   try { +	     stalFactory.setHelpURL("http://localhost:3495/help/"); +	   } catch (MalformedURLException e) { +	     log.info("Failed to set help URL.", e); +	   } +	} +	 +	  /** +	   * Processes requests for both HTTP <code>GET</code> and <code>POST</code> methods. +	   * @param request servlet request +	   * @param response servlet response +	   * @throws ServletException if a servlet-specific error occurs +	   * @throws IOException if an I/O error occurs +	   */ +	  protected void processRequest(HttpServletRequest request, HttpServletResponse response) +	          throws ServletException, IOException { +		   +		STAL getCerTificateSTAL = stalFactory.createSTAL(); +	     +	    List<STALResponse> stalResps = getCerTificateSTAL.handleRequest(Collections.singletonList(new GETCertificateRequest())); + +	    log.debug("Received STAL reponse {}.", stalResps.get(0).getClass()); +	     +	    getCerTificateSTAL.handleRequest(Collections.singletonList(new QuitRequest())); + +	    String redirect = request.getParameter("redirect"); +	    if (redirect != null) { +	      String referer = request.getHeader("Referer"); +	      if (referer != null) { +	        redirect = new URL(new URL(referer), redirect).toExternalForm(); +	      } +	      response.sendRedirect(redirect); +	    } else { +	      response.setStatus(HttpServletResponse.SC_OK); +	    } +	  } +	   +	  // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code."> +	  /** +	   * Handles the HTTP <code>GET</code> method. +	   * @param request servlet request +	   * @param response servlet response +	   * @throws ServletException if a servlet-specific error occurs +	   * @throws IOException if an I/O error occurs +	   */ +	  @Override +	  protected void doGet(HttpServletRequest request, HttpServletResponse response) +	          throws ServletException, IOException { +	    processRequest(request, response); +	  } + +	  /** +	   * Handles the HTTP <code>POST</code> method. +	   * @param request servlet request +	   * @param response servlet response +	   * @throws ServletException if a servlet-specific error occurs +	   * @throws IOException if an I/O error occurs +	   */ +	  @Override +	  protected void doPost(HttpServletRequest request, HttpServletResponse response) +	          throws ServletException, IOException { +	    processRequest(request, response); +	  } + +	  /** +	   * Returns a short description of the servlet. +	   * @return a String containing servlet description +	   */ +	  @Override +	  public String getServletInfo() { +	    return "Short description"; +	  } +} diff --git a/BKULocal/src/main/java/at/gv/egiz/bku/local/webapp/GetHardwareInfoServlet.java b/BKULocal/src/main/java/at/gv/egiz/bku/local/webapp/GetHardwareInfoServlet.java new file mode 100644 index 00000000..dc7762a8 --- /dev/null +++ b/BKULocal/src/main/java/at/gv/egiz/bku/local/webapp/GetHardwareInfoServlet.java @@ -0,0 +1,133 @@ +/* + * Copyright 2011 by Graz University of Technology, Austria + * MOCCA has been developed by the E-Government Innovation Center EGIZ, a joint + * initiative of the Federal Chancellery Austria and Graz University of Technology. + * + * Licensed under the EUPL, Version 1.1 or - as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "Licence"); + * You may not use this work except in compliance with the Licence. + * You may obtain a copy of the Licence at: + * http://www.osor.eu/eupl/ + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the Licence is distributed on an "AS IS" basis, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the Licence for the specific language governing permissions and + * limitations under the Licence. + * + * This product combines work with different licenses. See the "NOTICE" text + * file for details on the various modules and licenses. + * The "NOTICE" text file is part of the distribution. Any derivative works + * that you distribute must include a readable copy of the "NOTICE" text file. + */ + +package at.gv.egiz.bku.local.webapp; + +import java.io.IOException; +import java.net.MalformedURLException; +import java.net.URL; +import java.util.Collections; +import java.util.List; + +import javax.servlet.ServletException; +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import at.gv.egiz.bku.local.stal.LocalGetHardwareInfoSTALFactory; +import at.gv.egiz.stal.QuitRequest; +import at.gv.egiz.stal.STAL; +import at.gv.egiz.stal.STALResponse; +import at.gv.egiz.stal.ext.GETHardwareInfoRequest; + +/** +* +* @author Thomas Lenz <thomas.lenz@iaik.tugraz.at> +*/ + +public class GetHardwareInfoServlet extends HttpServlet { +	private static final long serialVersionUID = 1L; +	 +	 private final Logger log = LoggerFactory.getLogger(GetHardwareInfoServlet.class); + +	LocalGetHardwareInfoSTALFactory stalFactory; +	   +	public GetHardwareInfoServlet() { +	    log.debug("Constuctor: " + GetHardwareInfoServlet.class); +	   stalFactory = new LocalGetHardwareInfoSTALFactory(); +	   try { +	     stalFactory.setHelpURL("http://localhost:3495/help/"); +	   } catch (MalformedURLException e) { +	     log.info("Failed to set help URL.", e); +	   } +	} +	 +	  /** +	   * Processes requests for both HTTP <code>GET</code> and <code>POST</code> methods. +	   * @param request servlet request +	   * @param response servlet response +	   * @throws ServletException if a servlet-specific error occurs +	   * @throws IOException if an I/O error occurs +	   */ +	  protected void processRequest(HttpServletRequest request, HttpServletResponse response) +	          throws ServletException, IOException { +		   +		STAL getHardwareInfoSTAL = stalFactory.createSTAL(); +	     +	    List<STALResponse> stalResps = getHardwareInfoSTAL.handleRequest(Collections.singletonList(new GETHardwareInfoRequest())); + +	    log.debug("Received STAL reponse {}.", stalResps.get(0).getClass()); +	     +	    getHardwareInfoSTAL.handleRequest(Collections.singletonList(new QuitRequest())); + +	    String redirect = request.getParameter("redirect"); +	    if (redirect != null) { +	      String referer = request.getHeader("Referer"); +	      if (referer != null) { +	        redirect = new URL(new URL(referer), redirect).toExternalForm(); +	      } +	      response.sendRedirect(redirect); +	    } else { +	      response.setStatus(HttpServletResponse.SC_OK); +	    } +	  } +	   +	  // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code."> +	  /** +	   * Handles the HTTP <code>GET</code> method. +	   * @param request servlet request +	   * @param response servlet response +	   * @throws ServletException if a servlet-specific error occurs +	   * @throws IOException if an I/O error occurs +	   */ +	  @Override +	  protected void doGet(HttpServletRequest request, HttpServletResponse response) +	          throws ServletException, IOException { +	    processRequest(request, response); +	  } + +	  /** +	   * Handles the HTTP <code>POST</code> method. +	   * @param request servlet request +	   * @param response servlet response +	   * @throws ServletException if a servlet-specific error occurs +	   * @throws IOException if an I/O error occurs +	   */ +	  @Override +	  protected void doPost(HttpServletRequest request, HttpServletResponse response) +	          throws ServletException, IOException { +	    processRequest(request, response); +	  } + +	  /** +	   * Returns a short description of the servlet. +	   * @return a String containing servlet description +	   */ +	  @Override +	  public String getServletInfo() { +	    return "Short description"; +	  }	 +} diff --git a/BKULocal/src/main/webapp/WEB-INF/web.xml b/BKULocal/src/main/webapp/WEB-INF/web.xml index 628bb044..41d5ab37 100644 --- a/BKULocal/src/main/webapp/WEB-INF/web.xml +++ b/BKULocal/src/main/webapp/WEB-INF/web.xml @@ -51,6 +51,14 @@          <servlet-name>IdentityLinkServlet</servlet-name>          <servlet-class>at.gv.egiz.bku.local.webapp.IdentityLinkServlet</servlet-class>      </servlet> +    <servlet> +        <servlet-name>GETCertificateServlet</servlet-name> +        <servlet-class>at.gv.egiz.bku.local.webapp.GETCertificateServlet</servlet-class> +    </servlet> +    <servlet> +        <servlet-name>GETHardwareInfoServlet</servlet-name> +        <servlet-class>at.gv.egiz.bku.local.webapp.GetHardwareInfoServlet</servlet-class> +    </servlet>      <servlet-mapping>      <servlet-name>BKUServlet</servlet-name>      <url-pattern>/http-security-layer-request</url-pattern> @@ -60,7 +68,6 @@      <url-pattern>/https-security-layer-request</url-pattern>    </servlet-mapping>    <!--  Begin BKU Config --> -      <servlet-mapping>          <servlet-name>PINManagementServlet</servlet-name>          <url-pattern>/PINManagement</url-pattern> @@ -69,6 +76,14 @@          <servlet-name>IdentityLinkServlet</servlet-name>          <url-pattern>/IdentityLink</url-pattern>      </servlet-mapping> +    <servlet-mapping> +        <servlet-name>GETCertificateServlet</servlet-name> +        <url-pattern>/GETCertificate</url-pattern> +    </servlet-mapping> +    <servlet-mapping> +        <servlet-name>GETHardwareInfoServlet</servlet-name> +        <url-pattern>/GETHardwareinfo</url-pattern> +    </servlet-mapping>      <welcome-file-list>      <welcome-file>index.html</welcome-file>      <welcome-file>index.htm</welcome-file> | 
