<%@ page contentType="text/html; charset=ISO-8859-1" %>

<jsp:useBean 
  id="checksInfo"
  class="at.gv.egovernment.moa.spss.slinterface.beans.ChecksInfoBean" scope="request">
</jsp:useBean> 

<jsp:useBean 
  id="signerInfo"
  class="at.gv.egovernment.moa.spss.slinterface.beans.SignerInfoBean" scope="request">
</jsp:useBean> 

<jsp:useBean 
  id="dataInfo"
  class="at.gv.egovernment.moa.spss.slinterface.beans.DataInfoBean" scope="session">
</jsp:useBean> 

<html>
  <head>
    <title>MOA SL - Signaturpr�fdienst</title>
    <script type="text/javascript">
      var doTerminate = true;
      var breakWhile = false;
      
      function terminateSession()
      {
        if (doTerminate)
        {
          ref = "<%out.print(
	          ((at.gv.egovernment.moa.spss.slinterface.URLRewriter) application.getAttribute(at.gv.egovernment.moa.spss.slinterface.Constants.WSCP_URL_REWRITER_)).rewrite(
	          request.getContextPath() + "/return", request.getSession()));%>";
          window.location.replace(ref);
	      }
       doTerminate = true;
      }
      
      function doNotTerminate()
      {
        doTerminate = false;
      }
    </script>
  </head>
  <body onunload="terminateSession()">
    <table width="800px" align="center">
    <tr>
    <td>
    <table bgcolor="#eeeeee" width="790px" border="1" cellpadding="3">
    <td width="150px" align="center"><img width="70px" 
      <% out.print(
        "src=\"" + 
        ((at.gv.egovernment.moa.spss.slinterface.URLRewriter) application.getAttribute(at.gv.egovernment.moa.spss.slinterface.Constants.WSCP_URL_REWRITER_)).rewrite(
          request.getContextPath() + "/pages/images/LogoMoa4c.png\"", request.getSession()) +
        " alt=\"Republik �sterreich\""); %>
    ></td>
    <td align="center"><b>MOA SL - Signaturpr�fdienst</b></td>
    </table>
    
    <p>Nachfolgend finden Sie das Ergebnis der Pr�fung der eingereichten elektronischen Signatur.</p>

    <p>
      <a onclick="doNotTerminate()" href="<%out.print(
	    ((at.gv.egovernment.moa.spss.slinterface.URLRewriter) application.getAttribute(at.gv.egovernment.moa.spss.slinterface.Constants.WSCP_URL_REWRITER_)).rewrite(
	      request.getContextPath() + "/return", request.getSession()));%>">
        Zur�ck zur Anwendung ...</a>
    </p>

    <!-- ######################################################### -->
    <!-- Name des Unterzeichners -->
    <!-- ######################################################### -->

    <table bgcolor="#eeeeee" width="790px" border="1" cellpadding="3">
    <th>
    <tr span="2"><b>Unterzeichner</b></tr>
    </th>
      <%
	    String[] subOIDNames = new String[]{"2.5.4.3", "2.5.4.11", "2.5.4.10", "2.5.4.6"}; // CN, OU, O, C
	    String[] subOIDRegNames = new String[]{"Name", "Organisationseinheit", "Organisation", "Staat"};
	    for (int i = 0; i < subOIDNames.length; i++)
	    {
	      signerInfo.setSubjectNameItemSel(subOIDNames[i]);
	      String currSubjectNameRDN = signerInfo.getSubjectNameItem();
	      if (currSubjectNameRDN != null)
	      {
	        out.print("<tr ><td width=\"150px\" align=\"right\">" + subOIDRegNames[i] + "</td><td align=\"left\"><code>" + currSubjectNameRDN + "</code></td></tr>");
	      }
	    }
      %>
    </table>

    <!-- ######################################################### -->
    <!-- Name des Ausstellers -->
    <!-- ######################################################### -->


    <table bgcolor="#eeeeee" width="790px" border="1" cellpadding="3">
    <th>
    <tr span="2"><b>Aussteller des Zertifikats</b></tr>
    </th>
      <%
	    String[] issuerOIDNames = new String[]{"2.5.4.3", "2.5.4.11", "2.5.4.10", "2.5.4.6"}; // CN, OU, O, C
	    String[] issuerOIDRegNames = new String[]{"Name", "Organisationseinheit", "Organisation", "Staat"};
	    for (int i = 0; i < issuerOIDNames.length; i++)
	    {
	      signerInfo.setIssuerNameItemSel(issuerOIDNames[i]);
	      String currIssuerNameRDN = signerInfo.getIssuerNameItem();
	      if (currIssuerNameRDN != null)
	      {
	        out.print("<tr><td width=\"150px\" align=\"right\">" + issuerOIDRegNames[i] + "</td><td align=\"left\"><code>" + currIssuerNameRDN + "</code></td></tr>");
	      }
	    }
      %>
      </table>

    <!-- ######################################################### -->
    <!-- Seriennummer des Zertifikats -->
    <!-- ######################################################### -->

    <table bgcolor="#eeeeee" width="790px" border="1" cellpadding="3">
    <th>
    <tr span="2"><b>Informationen zum Zertifikat</b></tr>
    </th>
    <tr>
    <td width="150px" align="right">Seriennummer</td>
    <td align="left"><code> 
      <%
        out.print(signerInfo.getSerial());
	  %>
	</code></td>  
	</tr>

    <!-- ######################################################### -->
    <!-- Qualifiziertes Zertifikat? -->
    <!-- ######################################################### -->

    <tr>
    <td align="right">Qualit�t</td>
    <td align="left"><code> 
        <% out.print(signerInfo.getIsQualified() ? "qualifiziertes" : "gew�hnliches"); %> Zertifikat
	</code></td>  
	</tr>
	</table>


    <table bgcolor="#eeeeee" width="790px" border="1" cellpadding="3">
    <th>
    <tr span="2"><b>Pr�fungen</b></tr>
    </th>

    <!-- ######################################################### -->
    <!-- Signaturpr�fung -->
    <!-- ######################################################### -->

    <tr>
    <td width="150px" align="right">Signatur</td>
    <%
      String [] sigCheckMsgs = new String[]
      {
        "Die �berpr�fung der Hash-Werte und des Werts der Signatur konnte erfolgreich durchgef�hrt werden.",
        "Bei der �berpr�fung des Hash-Werts zumindest einer dsig:Reference der Signatur ist ein Fehler aufgetreten. Der Wert der Signatur (dsig:SignatureValue) wurde nicht �berpr�ft.",
        "Die �berpr�fung der Hash-Werte konnte erfolgreich durchgef�hrt werden. Beim �berpr�fen des Werts der Signatur (dsig:SignatureValue) ist jedoch ein Fehler aufgetreten."
      };
      
      int sigCheckCode = Integer.parseInt(checksInfo.getSigCheckCode());
      out.print("<td align=\"left\"><p><code>");
      if (sigCheckCode != 0) out.print("<font color=\"red\">");
      out.print(sigCheckMsgs[sigCheckCode]);
      if (sigCheckCode != 0) out.print("</font>");
    %>
    </code></p>
    <%
      if (sigCheckCode == 1)
      {
    %>
      <p><code><font color="red">Fehlerhafte Referenzen: 
    <%  
        int count = 0;
        do
        {
          checksInfo.setSigCheckFailedRefCount(count);
          String failedRef = checksInfo.getSigCheckFailedRef();
          if (null == failedRef) break;
          if (count > 0) out.print(", ");
          out.print(failedRef);
          count++;  
        } 
        while (true);
    %>
    </code></font></p>
    <%
      }
    %>
    </td></tr>

    <!-- ######################################################### -->
    <!-- Signaturmanifestpr�fung -->
    <!-- ######################################################### -->

    <!-- Aus der Sicht des B�rgers nicht sinnvoll -->

    <!-- ######################################################### -->
    <!-- XMLDSIG-Manifestpr�fung -->
    <!-- ######################################################### -->

    <!-- Derzeit nicht implementiert, Bean "checksInfo" enth�lt allerdings alle notwendigen Infos -->

    <!-- ######################################################### -->
    <!-- Zertifikatspr�fung -->
    <!-- ######################################################### -->

    <tr>
    <td align="right">Zertifikat</td>
    <%
      String [] certCheckMsgs = new String[]
      {
        "Eine formal korrekte Zertifikatskette vom Signatorzertifikat zu einem vertrauensw�rdigen Wurzelzertifikat konnte konstruiert werden. Jedes Zertifikat dieser Kette ist zum in der Anfrage angegebenen Pr�fzeitpunkt g�ltig.",
        "Es konnte keine formal korrekte Zertifikatskette vom Signatorzertifikat zu einem vertrauensw�rdigen Wurzelzertifikat konstruiert werden.",
        "Eine formal korrekte Zertifikatskette vom Signatorzertifikat zu einem vertrauensw�rdigen Wurzelzertifikat konnte konstruiert werden. F�r zumindest ein Zertifikat dieser Kette f�llt der Pr�fzeitpunkt nicht in das G�ltigkeitsintervall.",
        "Eine formal korrekte Zertifikatskette vom Signatorzertifikat zu einem vertrauensw�rdigen Wurzelzertifikat konnte konstruiert werden. F�r alle Zertifikate dieser Kette f�llt der Pr�fzeitpunkt in das jeweilige G�ltigkeitsintervall. F�r zumindest ein Zertifikat konnte der Zertifikatstatus nicht festgestellt werden.",
        "Eine formal korrekte Zertifikatskette vom Signatorzertifikat zu einem vertrauensw�rdigen Wurzelzertifikat konnte konstruiert werden. F�r alle Zertifikate dieser Kette f�llt der Pr�fzeitpunkt in das jeweilige G�ltigkeitsintervall. Zumindest ein Zertifikat ist zum Pr�fzeitpunkt widerrufen.",
        "Eine formal korrekte Zertifikatskette vom Signatorzertifikat zu einem vertrauensw�rdigen Wurzelzertifikat konnte konstruiert werden. F�r alle Zertifikate dieser Kette f�llt der Pr�fzeitpunkt in das jeweilige G�ltigkeitsintervall. Kein Zertifikat dieser Kette ist zum Pr�fzeitpunkt widerrufen. Zumindest ein Zertifikat ist zum Pr�fzeitpunkt gesperrt.",
        "Die Pr�fung der Signaturpr�fdaten wurde nicht durchgef�hrt, da bei der Pr�fung der G�ltigkeit der Signatur ein Fehler aufgetreten ist."
      };
      int certCheckCode = Integer.parseInt(checksInfo.getCertCheckCode());
      certCheckCode = (certCheckCode == 99) ? 6 : certCheckCode;
      out.print("<td align=\"left\"><p><code>");
      if (certCheckCode != 0) out.print("<font color=\"red\">");
      out.print(certCheckMsgs[certCheckCode]);
      if (certCheckCode != 0) out.print("</font>");
    %>
    </code></p></td></tr></table>

    <!-- ######################################################### -->
    <!-- Signierte Daten -->
    <!-- ######################################################### -->

    <table bgcolor="#eeeeee" width="790px" border="1" cellpadding="3">
    <th>
    <tr span="2"><b>Signierte Daten</b></tr>
    </th>
    <%
      int i = 0;
      int j = 0;
      do
      {
        dataInfo.setHashInputDataCount(i);
        String hashDataInputURL = dataInfo.getHashInputDataURL();
        if (hashDataInputURL == null) break;
        boolean doShow = dataInfo.getShowHashInputData();
        if (doShow)
        {
	        out.print("<tr><td width=\"150px\" align=\"right\"><code>");
	        
	        // out.print("<a href=\"" + response.encodeURL(request.getContextPath() + dataInfo.getHashInputDataURL()) + "\"");
	        out.print(
	          "<a onclick=\"doNotTerminate()\" href=\"" + 
	          ((at.gv.egovernment.moa.spss.slinterface.URLRewriter) application.getAttribute(at.gv.egovernment.moa.spss.slinterface.Constants.WSCP_URL_REWRITER_)).rewrite(
                request.getContextPath() + dataInfo.getHashInputDataURL(), request.getSession()) +
	          "\"");
	        
	        boolean isSLXHTML = dataInfo.getIsSLXHTMLDocument();
	        if (isSLXHTML) out.write(" target=\"_blank\"");
	        out.print(">Datei Nr." + (j + 1) + "</a>");
	        out.print("</code></td><td align=\"left\">");
	        if (isSLXHTML) 
	        {
	          out.print(" Die Datei kann in einem eigenen Browser-Fenster angezeigt werden.");
	        }
	        else
	        {
	         out.print("Der Typ der Datei ist nicht bekannt. Die Datei kann in Bin�rform heruntergeladen werden.");
	        }
	        out.print("</td><tr>");
	        j++;
	    }
        i++;
      }
      while (true);
    %>
    </table>
    
    <p>
      <a onclick="doNotTerminate()" href="<%out.print(
	    ((at.gv.egovernment.moa.spss.slinterface.URLRewriter) application.getAttribute(at.gv.egovernment.moa.spss.slinterface.Constants.WSCP_URL_REWRITER_)).rewrite(
	      request.getContextPath() + "/return", request.getSession()));%>">
        Zur�ck zur Anwendung ...</a>
    </p>
    </td>
    </tr>
    </table>
  </body>
</html>