﻿<?xml version="1.0" encoding="utf-8" ?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:msxsl="urn:schemas-microsoft-com:xslt"
	exclude-result-prefixes="msxsl extensions" xmlns:extensions="http://mailgateway.netatwork.de/processcard">
	<xsl:output method="html" indent="yes" media-type="text/html" omit-xml-declaration="yes" encoding="utf-8" />
	<xsl:template match="ValidationReport">
		<html>
			<head>
				<title>Validation report</title>
				<style type="text/css">
					* {
					margin: 0;
					padding: 0;
					}

					img {
					border: 0;
					}

					html, body {
					color: #383738;
					background: #ffffff;
					font-family: Calibri, Arial, Verdana;
					font-size: 16px;
					text-decoration: none;
					font-weight: normal;
					line-height: 18px;
					}

					table.frame {
					width: 100%;
					border-spacing: 0;
					border: 1px solid #d2d6d9;
					border-collapse: collapse;
					}

					table.frame td#right {
					text-align: right;
					padding: 10px;
					}

					td#left, td#right {
					background: #d2d6d9;
					}

					table td#content {
					border-top: 10px solid #00137F;
					}

					#content {
					padding: 10px 40px 20px 40px;
					}

					h1, h2, h3, h4, h5 {
					color: #00137F;
					font-weight: bold;
					}

					h1 {
					font-size: 1.5em;
					margin-top: 4pt;
					margin-bottom: 0pt;
					font-weight: bold;
					}

					h2 {
					font-size: 1.4em;
					margin-top: 8pt;
					margin-bottom: 0pt;
					font-weight: bold;
					}

					h3 {
					font-size: 1.3em;
					margin-top: 8pt;
					margin-bottom: 0pt;
					font-weight: bold;
					}

					h4 {
					font-size: 1.2em;
					margin-top: 6pt;
					margin-bottom: 0pt;
					font-weight: bold;
					}

					h5 {
					font-size: 1.1em;
					font-weight: bold;
					margin-top: 6pt;
					margin-bottom: 0pt;
					}

					p {
					padding: 0px 0 8px 0;
					}


					td {
					vertical-align: top;
					padding-right: 8pt;
					}

					th {
					vertical-align: top;
					text-align: left;
					font-style: normal;
					font-weight: normal;
					white-space: nowrap;
					padding-right: 24pt;
					}

					.error {
					font-weight: bold;
					color: #FF0000;
					}

					th.indented {
					padding-left: 1em;
					}

					th, td {
					padding-bottom: 2pt;
					}

					td.ProperCapitalization {
					text-transform: capitalize;
					}
				</style>
			</head>
			<body>
				<table>
					<tr>
						<th colspan="2">
							<h2>
								1. Zusammenfassung der Prüfergebnisse
							</h2>
						</th>
					</tr>
					<tr>
						<th>
							Betreff
						</th>
						<td colspan="2">
							<xsl:value-of select="Subject" />
						</td>
					</tr>
					<tr>
						<th>
							Nachrichten-Id
						</th>
						<td colspan="2">
							<xsl:value-of select="MessageId" />
						</td>
					</tr>
					<tr>
						<th>
							Transport-System
						</th>
						<td>
							<xsl:choose>
								<xsl:when test="MessageType = 'LegallyCompliant'">
									<xsl:text>De-Mail</xsl:text>
								</xsl:when>
								<xsl:when test="MessageType = 'WebPortal'">
									<xsl:text>Web Portal</xsl:text>
								</xsl:when>
								<xsl:otherwise>
									<xsl:choose>
										<xsl:when test="TransportSecurity/Protocol = 'None'">
											<xsl:text>Internet (ungesichert)</xsl:text>
										</xsl:when>
										<xsl:otherwise>
											<xsl:text>Internet (gesichert)</xsl:text>
										</xsl:otherwise>
									</xsl:choose>
								</xsl:otherwise>
							</xsl:choose>
						</td>
					</tr>
					<tr>
						<th>
							Ergebnis der Signaturprüfung
						</th>
						<td colspan="2">
							<xsl:choose>
								<xsl:when test="count(SignatureValidations/*) &gt; 0 and WasValidationSuccessful = 'true'">
									<span class="Success">Erfolgreich</span>
								</xsl:when>
								<xsl:when test="count(SignatureValidations/*) = 0">
									<xsl:text>Die E-Mail besitzt keine digitale Signatur</xsl:text>
								</xsl:when>
								<xsl:otherwise>
									<span class="Error">Fehlgeschlagen</span>
								</xsl:otherwise>
							</xsl:choose>
						</td>
					</tr>
					<tr>
						<th>
							Prüfzeitpunkt
						</th>
						<td colspan="2">
							<xsl:value-of select="extensions:FormatDateTime(ValidationTime, 'dd.MM.yyyy HH:mm:ss')" />
						</td>
					</tr>
					<tr>
						<th>
							Geprüft durch
						</th>
						<td colspan="2">
							<xsl:value-of select="ValidatedBy" />
						</td>
					</tr>
					<tr>
						<th colspan="2">
							<h2>
								2. Detaillierte Prüfergebnisse
							</h2>
						</th>
					</tr>
					<tr>
						<th colspan="2">
							<h3>
								2.1 Transportsicherheit
							</h3>
						</th>
					</tr>
					<xsl:choose>
						<xsl:when test="MessageType = 'WebPortal'">
							<tr>
								<th colspan="2">Die E-Mail wurde gesichert über das Web Portal übertragen.</th>
							</tr>
						</xsl:when>
						<xsl:when test="TransportSecurity/Protocol = 'None'">
							<tr>
								<td colspan="2">Die E-Mail wurde unverschlüsselt übertragen.</td>
							</tr>
						</xsl:when>
						<xsl:otherwise>
							<tr>
								<td>Protokoll</td>
								<td>
									<xsl:choose>
										<xsl:when test="TransportSecurity/Protocol = 'SSL2'">SSL 2.0</xsl:when>
										<xsl:when test="TransportSecurity/Protocol = 'SSL3'">SSL 3.0</xsl:when>
										<xsl:when test="TransportSecurity/Protocol = 'Tls'">TLS 1.0</xsl:when>
										<xsl:when test="TransportSecurity/Protocol = 'Tls11'">TLS 1.1</xsl:when>
										<xsl:when test="TransportSecurity/Protocol = 'Tls12'">TLS 1.2</xsl:when>
									</xsl:choose>
								</td>
							</tr>
							<tr>
								<td>Verschlüsselungs-Algorithmus</td>
								<td>
									<xsl:choose>
										<xsl:when test="TransportSecurity/Cipher/@Algorithm = 'Des'">DES</xsl:when>
										<xsl:when test="TransportSecurity/Cipher/@Algorithm = 'Rc2'">RC2</xsl:when>
										<xsl:when test="TransportSecurity/Cipher/@Algorithm = 'TripleDes'">Triple DES</xsl:when>
										<xsl:when test="TransportSecurity/Cipher/@Algorithm = 'Aes128'">AES-CBC (128 Bit)</xsl:when>
										<xsl:when test="TransportSecurity/Cipher/@Algorithm = 'Aes192'">AES-CBC (192 Bit)</xsl:when>
										<xsl:when test="TransportSecurity/Cipher/@Algorithm = 'Aes256'">AES-CBC (256 Bit)</xsl:when>
										<xsl:when test="TransportSecurity/Cipher/@Algorithm = 'Aes128Gcm'">AES-GCM (128 Bit)</xsl:when>
										<xsl:when test="TransportSecurity/Cipher/@Algorithm = 'Aes256Gcm'">AES-GCM (256 Bit)</xsl:when>
										<xsl:when test="TransportSecurity/Cipher/@Algorithm = 'Des'">DES</xsl:when>
										<xsl:when test="TransportSecurity/Cipher/@Algorithm = 'Rc4'">RC4</xsl:when>
									</xsl:choose>
								</td>
							</tr>
							<tr>
								<td>Hash-Algorithmus</td>
								<td>
									<xsl:choose>
										<xsl:when test="TransportSecurity/Hash/@Algorithm = 'Sha1'">SHA-1</xsl:when>
										<xsl:when test="TransportSecurity/Hash/@Algorithm = 'Sha256'">SHA-256</xsl:when>
										<xsl:when test="TransportSecurity/Hash/@Algorithm = 'Sha384'">SHA-384</xsl:when>
										<xsl:when test="TransportSecurity/Hash/@Algorithm = 'Sha512'">SHA-512</xsl:when>
										<xsl:when test="TransportSecurity/Hash/@Algorithm = 'Md5'">MD5</xsl:when>
									</xsl:choose>
								</td>
							</tr>
							<tr>
								<td>Schlüsselaustausch-Algorithmus</td>
								<td>
									<xsl:choose>
										<xsl:when test="TransportSecurity/KeyExchange/@Algorithm = 'RsaSign'">RSA public-key signature</xsl:when>
										<xsl:when test="TransportSecurity/KeyExchange/@Algorithm = 'RsaKeyX'">RSA public-key exchange</xsl:when>
										<xsl:when test="TransportSecurity/KeyExchange/@Algorithm = 'DiffieHellman'">Diffie Hellman ephemeral key exchange</xsl:when>
										<xsl:when test="TransportSecurity/KeyExchange/@Algorithm = 'DiffieHellmanEllipticKey'">
											Diffie Hellman ephemeral key exchange mit der elliptischen Kurve P-<xsl:value-of select="TransportSecurity/KeyExchange/@Strength"/>
										</xsl:when>
									</xsl:choose>
								</td>
							</tr>
							<xsl:choose>
								<xsl:when test="TransportSecurity/ClientCertificate/Signer != ''">
									<tr>
										<th colspan="2">Identität des einliefernden Servers</th>
									</tr>
									<tr>
										<th class="indented">Ausgestellt für</th>
										<td>
											<xsl:value-of select="TransportSecurity/ClientCertificate/Signer" />
										</td>
									</tr>
									<tr>
										<th class="indented">Ausgestellt von</th>
										<td>
											<xsl:value-of select="TransportSecurity/ClientCertificate/Issuer" />
										</td>
									</tr>
									<tr>
										<th class="indented">Gültigkeit</th>
										<td>
											<xsl:text>Von&#160;</xsl:text>
											<xsl:value-of select="extensions:FormatDateTime(TransportSecurity/ClientCertificate/ValidFrom, 'dd.MM.yyyy HH:mm:ss')" />
											<xsl:text>&#160;bis&#160;</xsl:text>
											<xsl:value-of select="extensions:FormatDateTime(TransportSecurity/ClientCertificate/ValidTo, 'dd.MM.yyyy HH:mm:ss')" />
										</td>
									</tr>
									<tr>
										<th class="indented">Seriennummer</th>
										<td>
											<xsl:value-of select="TransportSecurity/ClientCertificate/CertificateSerialNumber" />
										</td>
									</tr>
								</xsl:when>
								<xsl:otherwise>
									<tr>
										<th>Identität des einliefernden Servers</th>
										<th>Der Server hat kein Zertifikat übermittelt</th>
									</tr>
								</xsl:otherwise>
							</xsl:choose>
						</xsl:otherwise>
					</xsl:choose>
					<tr>
						<th colspan="2">
							<h3>
								2.2 Signaturprüfung
							</h3>
						</th>
					</tr>
					<xsl:choose>
						<xsl:when test="count(SignatureValidations/*) &gt; 0">
							<xsl:apply-templates select="SignatureValidations/*" />
							<tr>
								<td colspan="2">
									<h4>Darstellung der Prüfschritte</h4>
								</td>
							</tr>
							<tr>
								<th>
									Integritätsprüfung
								</th>
								<td>
									<span class="success">Durchgeführt</span>
								</td>
							</tr>
							<tr>
								<th>
									Zertifikatskettenprüfung
								</th>
								<td>
									<span class="success">Durchgeführt</span>
								</td>
							</tr>
							<tr>
								<th>
									Sperrungsprüfung
								</th>
								<td>
									<span class="success">Durchgeführt</span>
								</td>
							</tr>
						</xsl:when>
						<xsl:otherwise>
							<tr>
								<th colspan="2">Die E-Mail wurde nicht digital signiert.</th>
							</tr>
						</xsl:otherwise>
					</xsl:choose>

					<tr>
						<th colspan="2">
							<h3>
								2.3 Ergebnis der Entschlüsselung
							</h3>
						</th>
					</tr>
					<xsl:choose>
						<xsl:when test="count(ContentDecryptions/*) &gt; 0">
							<xsl:apply-templates select="ContentDecryptions/*" />
						</xsl:when>
						<xsl:when test="MessageType = 'LegallyCompliant'">
							<tr>
								<th colspan="2">Die E-Mail wurde verschlüsselt über das De-Mail-System übertragen.</th>
							</tr>
						</xsl:when>
						<xsl:when test="MessageType = 'WebPortal'">
							<tr>
								<th colspan="2">Die E-Mail wurde verschlüsselt über das Web Portal übertragen.</th>
							</tr>
						</xsl:when>
						<xsl:otherwise>
							<tr>
								<th colspan="2">Die E-Mail wurde unverschlüsselt übertragen.</th>
							</tr>
						</xsl:otherwise>
					</xsl:choose>

					<tr>
						<th colspan="2">
							<h3>
								2.4 De-Mail
							</h3>
						</th>
					</tr>
					<xsl:choose>
						<xsl:when test="count(DeMail/*) &gt; 0">
							<xsl:apply-templates select="DeMail/*" />
						</xsl:when>
						<xsl:otherwise>
							<tr>
								<th colspan="2">Die E-Mail wurde nicht über das De-Mail System übertragen.</th>
							</tr>
						</xsl:otherwise>
					</xsl:choose>
				</table>
			</body>
		</html>
	</xsl:template>
	<xsl:template match="PgpSignatureValidation">
		<tr>
			<th>
				<h4>
					<xsl:text>2.2.</xsl:text>
					<xsl:value-of select="position()"/>
					<xsl:text>&#160;PGP Signatur</xsl:text>
				</h4>
			</th>
		</tr>
		<tr>
			<th>
				Prüfergebnis
			</th>
			<td colspan="2">
				<xsl:choose>
					<xsl:when test="IsMessageUnaltered = 'true'">
						<span class="success">Erfolgreich</span>
						<br />
						<xsl:text>Der Inhalt dieser Nachricht wurde seit dem Aufbringen der Signatur nicht verändert.</xsl:text>
					</xsl:when>
					<xsl:otherwise>
						<span class="error">Fehlgeschlagen</span>
						<br />
						<xsl:text>Der Inhalt dieser Nachricht wurde möglicherweise verändert.</xsl:text>
					</xsl:otherwise>
				</xsl:choose>
			</td>
		</tr>
		<tr>
			<th>
				<h4>
					Signaturen
				</h4>
			</th>
		</tr>
		<xsl:apply-templates select="Signers" />
	</xsl:template>
	<xsl:template match="SMimeSignatureValidation">
		<tr>
			<th>
				<h4>
					<xsl:text>2.2.</xsl:text>
					<xsl:value-of select="position()"/>
					<xsl:text>&#160;S/MIME Signatur</xsl:text>
				</h4>
			</th>
		</tr>
		<tr>
			<th>
				Prüfergebnis
			</th>
			<td colspan="2">
				<xsl:choose>
					<xsl:when test="IsMessageUnaltered = 'true'">
						<span class="success">Erfolgreich</span>
						<br />
						<xsl:text>Der Inhalt dieser Nachricht wurde seit dem Aufbringen der Signatur nicht verändert.</xsl:text>
					</xsl:when>
					<xsl:otherwise>
						<span class="error">Fehlgeschlagen</span>
						<br />
						<xsl:text>Der Inhalt dieser Nachricht wurde möglicherweise verändert.</xsl:text>
					</xsl:otherwise>
				</xsl:choose>
			</td>
		</tr>
		<tr>
			<th>
				<h4>
					Unterzeichnende Personen
				</h4>
			</th>
		</tr>
		<xsl:apply-templates select="Signers" />
	</xsl:template>
	<xsl:template match="PgpSigner[ValidationResult != 'SignatureKeyMissing']">
		<tr>
			<th colspan="2">
				<h5>
					<xsl:value-of select="Identity" />
				</h5>
			</th>
		</tr>
		<tr>
			<th>
				Signaturstatus
			</th>
			<td colspan="2">
				<xsl:apply-templates select="ValidationResult" mode="PGP" />
			</td>
		</tr>
		<tr>
			<th>
				Erstelldatum
			</th>
			<td colspan="2">
				<xsl:value-of select="extensions:FormatDateTime(CreationDate, 'dd.MM.yyyy HH:mm:ss')" />
			</td>
		</tr>
		<tr>
			<th>
				Ablaufdatum
			</th>
			<td colspan="2">
				<xsl:choose>
					<xsl:when test="ExpirationDate/text() != ''">
						<xsl:value-of select="extensions:FormatDateTime(ExpirationDate, 'dd.MM.yyyy HH:mm:ss')" />
					</xsl:when>
					<xsl:otherwise>
						<xsl:text>Never</xsl:text>
					</xsl:otherwise>
				</xsl:choose>
			</td>
		</tr>
		<tr>
			<th>
				Hash Algorithmus
			</th>
			<td colspan="2">
				<xsl:apply-templates select="HashAlgorithm" />
			</td>
		</tr>
	</xsl:template>
	<xsl:template match="PgpSigner[ValidationResult = 'SignatureKeyMissing']">
		<tr>
			<th colspan="2">
				<h5>
					Unbekannte Unterzeichner
				</h5>
			</th>
		</tr>
		<tr>
			<td colspan="2">
				<xsl:text>Der PGP Schlüssel dieses Unterzeichners konnte nicht gefunden werden. Daher ist die Signaturprüfung ergebnislos verlaufen. Der fehlende Schlüssel hat die ID </xsl:text>
				<xsl:value-of select="KeyId"/>
				<xsl:text>. Bitte kontaktieren Sie den Absender der E-Mail und lassen Sie sich den Schlüssel übermitteln.</xsl:text>
			</td>
		</tr>
	</xsl:template>
	<xsl:template match="ValidationResult" mode="PGP">
		<xsl:choose>
			<xsl:when test="text() = 'Valid'">
				<span class="success">Die Signatur ist gültig.</span>
			</xsl:when>
			<xsl:when test="text() = 'Invalid'">
				<span class="error">Die Signatur ist ungültig.</span>
			</xsl:when>
			<xsl:when test="text() = 'UnkownSignatureAlgorithm'">
				<span class="error">Der Signaturalgorithmus is unbekannt.</span>
			</xsl:when>
		</xsl:choose>
	</xsl:template>
	<xsl:template match="HashAlgorithm">
		<xsl:choose>
			<xsl:when test="text() = 'MD5'">
				<xsl:text>MD5</xsl:text>
			</xsl:when>
			<xsl:when test="text() = 'Sha1'">
				<xsl:text>SHA-1</xsl:text>
			</xsl:when>
			<xsl:when test="text() = 'Sha256'">
				<xsl:text>SHA-256</xsl:text>
			</xsl:when>
			<xsl:when test="text() = 'Sha384'">
				<xsl:text>SHA-384</xsl:text>
			</xsl:when>
			<xsl:when test="text() = 'Sha512'">
				<xsl:text>SHA-512</xsl:text>
			</xsl:when>
			<xsl:when test="text() = 'RipeMD160'">
				<xsl:text>RIPE-MD 160bit</xsl:text>
			</xsl:when>
			<xsl:when test="text() = 'Sha224'">
				<xsl:text>SHA-224</xsl:text>
			</xsl:when>
		</xsl:choose>
	</xsl:template>

	<xsl:template match="SignatureSigner">
		<tr>
			<th colspan="2">
				<h5>
					<xsl:value-of select="Signer" />
				</h5>
			</th>
		</tr>
		<tr>
			<th>Zertifikatsstatus</th>
			<td colspan="2">
				<xsl:choose>
					<xsl:when test="CertificateStatus/Status[1]/text() = 'NoError'">
						<span class="success">Gültig</span>
						<br />
						<xsl:text>Bei der Überprüfung des Zertifikats sind keine Fehler aufgetreten.</xsl:text>
					</xsl:when>
					<xsl:otherwise>
						<span class="error">Ungültig</span>
						<br />
						<xsl:text>Die folgenden Fehler sind bei der Überprüfung des Zertifikates aufgetreten:</xsl:text>
						<xsl:for-each select="CertificateStatus/Status">
							<li>
								<xsl:choose>
									<xsl:when test="text() = 'NotTimeValid'">Eines der Zertifikate in der Zertifikatskette ist abgelaufen oder noch nicht gültig.</xsl:when>
									<xsl:when test="text() = 'NotTimeNested'">Der Gültigkeitszeitraum des Zertifikats und des Zertifikats der Ausstellungsstelle (CA) stimmen nicht überein.</xsl:when>
									<xsl:when test="text() = 'Revoked'">Eines der Zertifikate in der Kette wurde zurückgezogen.</xsl:when>
									<xsl:when test="text() = 'NotSignatureValid'">Eines der Zertifikate in der Kette hat eine ungültige Signatur.</xsl:when>
									<xsl:when test="text() = 'NotValidForUsage'">Das Zertifikat ist nicht für die verwendete Schlüsselverwendung zugelassen.</xsl:when>
									<xsl:when test="text() = 'UntrustedRoot'">Die Zertifikatskette ist ungültig, da das Stammzertifkat nicht vertrauenswürdig ist.</xsl:when>
									<xsl:when test="text() = 'RevocationStatusUnknown'">Der Widerrufsstatus des Zertifikats kann nicht abgerufen werden. Das kann daran liegen das Sperrliste der Zertifikate (CRL) offline oder nicht erreichbar ist.</xsl:when>
									<xsl:when test="text() = 'Cyclic'">Die Zertifikatskette konnte nicht erzeugt werden da in den zugeordneten Zertifikaten eine zyklische Abhängigkeit vorliegt.</xsl:when>
									<xsl:when test="text() = 'InvalidExtension'">Die Zertifikatskette ist ungültig da in einem der Zertifikate ungültige Zertifikatserweiterungen vorhanden sind.</xsl:when>
									<xsl:when test="text() = 'InvalidPolicyConstraints'">Die Zertifikatskette ist aufgrund ungültiger Richtlinieneinschränkungen ungültig.</xsl:when>
									<xsl:when test="text() = 'InvalidBasicConstraints'">Die Zertifikatskette ist aufgrund ungültiger Basiseinschränkungen ungültig.</xsl:when>
									<xsl:when test="text() = 'InvalidNameConstraints'">Die Zertifikatskette ist aufgrund ungültiger Namenseinschränkungen ungültig.</xsl:when>
									<xsl:when test="text() = 'HasNotSupportedNameConstraint'">Eines der Zertifikate in der Kette unterstützt keine Namenskonstanten oder besitzt nicht unterstützte Namenskonstanten.</xsl:when>
									<xsl:when test="text() = 'HasNotDefinedNameConstraint'">Eines der Zertifikate in der Kette besitzt eine undefinierte Namenskonstante.</xsl:when>
									<xsl:when test="text() = 'HasNotPermittedNameConstraint'">Eines der Zertifikate in der Kette besitzt eine nicht zugelassene Namenskonstante.</xsl:when>
									<xsl:when test="text() = 'HasExcludedNameConstraint'">Die Zertifikatskette is ungültig da ein Zertifikate eine Namenskonstante ausgeschlossen hat.</xsl:when>
									<xsl:when test="text() = 'PartialChain'">Die Zertifikats-Kette konnte nicht bis zum Stammzertifikat aufgebaut werden.</xsl:when>
									<xsl:when test="text() = 'CtlNotTimeValid'">Die Zertifikatsvertrauensliste (CTL) ist nicht gültig aufgrund eines ungültigen Zeitwerts der angibt das die Gültigkeit der CTL abgelaufen ist.</xsl:when>
									<xsl:when test="text() = 'CtlNotSignatureValid'">Die Zertifikatsvertrauensliste (CTL) enthält eine ungültige Signatur.</xsl:when>
									<xsl:when test="text() = 'CtlNotValidForUsage'">Die Zertifikatsvertrauensliste (CTL) ist für diese Verwendung nicht gültig.</xsl:when>
									<xsl:when test="text() = 'OfflineRevocation'">Die online Sperrliste der Zertifikate (CRL), auf die die Zertifikats-Kette aufbaut, ist derzeit offline.</xsl:when>
									<xsl:when test="text() = 'NoIssuanceChainPolicy'">Ein Zertifikat in der Kette besitzt kein Zertifikatsrichtlinienerweiterung im Zertifikat. Dieser Fehler kann auftreten wenn eine Gruppenrichtlinie angibt, dass alle Zertifikate eine Zertifikatsrichtlinie besitzen müssen.</xsl:when>
								</xsl:choose>
							</li>
						</xsl:for-each>
					</xsl:otherwise>
				</xsl:choose>
			</td>
		</tr>
		<tr>
			<th>
				E-Mail-Adresse des Unterzeichners
			</th>
			<td colspan="2">
				<xsl:value-of select="SignerMailAddress" />
			</td>
		</tr>
		<tr>
			<th>
				Zertifikatsaussteller
			</th>
			<td colspan="2">
				<xsl:value-of select="Issuer" />
			</td>
		</tr>
		<tr>
			<th>
				Unterschriftszeitpunkt
			</th>
			<td colspan="2">
				<xsl:value-of select="extensions:FormatDateTime(SignatureTime, 'dd.MM.yyyy HH:mm:ss')" />
			</td>
		</tr>
		<tr>
			<th>
				Signaturverfahren
			</th>
			<td colspan="2">
				<xsl:value-of select="MessageIntegrityCheckAlgorithm" />
			</td>
		</tr>
		<tr>
			<th>
				Signaturart
			</th>
			<td colspan="2">
				<xsl:choose>
					<xsl:when test="SignatureType = 'Originator'">
						<xsl:text>Personal signature</xsl:text>
					</xsl:when>
					<xsl:when test="SignatureType = 'DomainSig'">
						<xsl:text>Domain signature</xsl:text>
					</xsl:when>
					<xsl:when test="SignatureType = 'Reviewer'">
						<xsl:text>Reviewer siganture</xsl:text>
					</xsl:when>
					<xsl:otherwise>
						<xsl:text>Unbekannt (</xsl:text>
						<xsl:value-of select="SignatureType" />
						<xsl:text>)</xsl:text>
					</xsl:otherwise>
				</xsl:choose>
			</td>
		</tr>
		<tr>
			<th>
				Seriennummer des Zertifikats
			</th>
			<td colspan="2">
				<xsl:value-of select="CertificateSerialNumber" />
			</td>
		</tr>
		<tr>
			<th>
				Zertifikat ist gültig
			</th>
			<td colspan="2">
				<xsl:text>vom&#160;</xsl:text>
				<xsl:value-of select="extensions:FormatDateTime(ValidFrom, 'dd.MM.yyyy HH:mm:ss')" />
				<xsl:text>&#160;bis zum&#160;</xsl:text>
				<xsl:value-of select="extensions:FormatDateTime(ValidTo, 'dd.MM.yyyy HH:mm:ss')" />
			</td>
		</tr>
	</xsl:template>
	<xsl:template match="SMimeDecryption">
		<tr>
			<th>
				<h4>
					<xsl:text>2.3.</xsl:text>
					<xsl:value-of select="position()"/>
					<xsl:text>&#160;S/MIME Entschlüsselung</xsl:text>
				</h4>
			</th>
		</tr>
		<tr>
			<th>
				Verschlüsselungsalgorithmus
			</th>
			<td colspan="2">
				<xsl:choose>
					<xsl:when test="EncryptionAlgorithm = 'Des'">
						<xsl:text>DES</xsl:text>
					</xsl:when>
					<xsl:when test="EncryptionAlgorithm = 'TripleDes'">
						<xsl:text>Triple DES</xsl:text>
					</xsl:when>
					<xsl:when test="EncryptionAlgorithm = 'RC2_40'">
						<xsl:text>RC-2</xsl:text>
					</xsl:when>
					<xsl:when test="EncryptionAlgorithm = 'RC2_64'">
						<xsl:text>RC-2</xsl:text>
					</xsl:when>
					<xsl:when test="EncryptionAlgorithm = 'RC2_128'">
						<xsl:text>RC-2</xsl:text>
					</xsl:when>
					<xsl:when test="EncryptionAlgorithm = 'Aes128'">
						<xsl:text>AES-CBC</xsl:text>
					</xsl:when>
					<xsl:when test="EncryptionAlgorithm = 'Aes192'">
						<xsl:text>AES-CBC</xsl:text>
					</xsl:when>
					<xsl:when test="EncryptionAlgorithm = 'Aes256'">
						<xsl:text>AES-CBC</xsl:text>
					</xsl:when>
					<xsl:when test="EncryptionAlgorithm = 'Aes128Gcm'">
						<xsl:text>AES-GCM</xsl:text>
					</xsl:when>
					<xsl:when test="EncryptionAlgorithm = 'Aes256Gcm'">
						<xsl:text>AES-GCM</xsl:text>
					</xsl:when>
				</xsl:choose>
			</td>
		</tr>
		<tr>
			<th>
				Schlüssellänge
			</th>
			<td colspan="2">
				<xsl:choose>
					<xsl:when test="EncryptionAlgorithm = 'Des'">
						<xsl:value-of select="KeyLength"/>
						<xsl:text>&#160;Bit</xsl:text>
					</xsl:when>
					<xsl:when test="EncryptionAlgorithm = 'TripleDes'">
						<xsl:text>168 Bit</xsl:text>
					</xsl:when>
					<xsl:when test="EncryptionAlgorithm = 'RC2_40'">
						<xsl:text>40 Bit</xsl:text>
					</xsl:when>
					<xsl:when test="EncryptionAlgorithm = 'RC2_64'">
						<xsl:text>64 Bit</xsl:text>
					</xsl:when>
					<xsl:when test="EncryptionAlgorithm = 'RC2_128'">
						<xsl:text>128 Bit</xsl:text>
					</xsl:when>
					<xsl:when test="EncryptionAlgorithm = 'Aes128'">
						<xsl:text>128 Bit</xsl:text>
					</xsl:when>
					<xsl:when test="EncryptionAlgorithm = 'Aes192'">
						<xsl:text>192 Bit</xsl:text>
					</xsl:when>
					<xsl:when test="EncryptionAlgorithm = 'Aes256'">
						<xsl:text>256 Bit</xsl:text>
					</xsl:when>
					<xsl:when test="EncryptionAlgorithm = 'Aes128Gcm'">
						<xsl:text>128 Bit</xsl:text>
					</xsl:when>
					<xsl:when test="EncryptionAlgorithm = 'Aes256Gcm'">
						<xsl:text>256 Bit</xsl:text>
					</xsl:when>
				</xsl:choose>
			</td>
		</tr>
	</xsl:template>
	<xsl:template match="PgpDecryption">
		<tr>
			<th>
				<h4>
					<xsl:text>2.3.</xsl:text>
					<xsl:value-of select="position()"/>
					<xsl:text>&#160;PGP Entschlüsselung</xsl:text>
				</h4>
			</th>
		</tr>
		<tr>
			<th>
				Verschlüsselungsalgorithmus
			</th>
			<td colspan="2">
				<xsl:choose>
					<xsl:when test="EncryptionAlgorithm = 'Des'">
						<xsl:text>DES</xsl:text>
					</xsl:when>
					<xsl:when test="EncryptionAlgorithm = 'TripleDes'">
						<xsl:text>Triple DES</xsl:text>
					</xsl:when>
					<xsl:when test="EncryptionAlgorithm = 'RC2_40'">
						<xsl:text>RC-2</xsl:text>
					</xsl:when>
					<xsl:when test="EncryptionAlgorithm = 'RC2_64'">
						<xsl:text>RC-2</xsl:text>
					</xsl:when>
					<xsl:when test="EncryptionAlgorithm = 'RC2_128'">
						<xsl:text>RC-2</xsl:text>
					</xsl:when>
					<xsl:when test="EncryptionAlgorithm = 'Aes128'">
						<xsl:text>AES</xsl:text>
					</xsl:when>
					<xsl:when test="EncryptionAlgorithm = 'Aes192'">
						<xsl:text>AES</xsl:text>
					</xsl:when>
					<xsl:when test="EncryptionAlgorithm = 'Aes256'">
						<xsl:text>AES</xsl:text>
					</xsl:when>
					<xsl:when test="EncryptionAlgorithm = 'Blowfish'">
						<xsl:text>Blowfish</xsl:text>
					</xsl:when>
					<xsl:when test="EncryptionAlgorithm = 'Idea'">
						<xsl:text>Idea</xsl:text>
					</xsl:when>
					<xsl:when test="EncryptionAlgorithm = 'Twofish256'">
						<xsl:text>Twofish256</xsl:text>
					</xsl:when>
					<xsl:when test="EncryptionAlgorithm = 'Cast5'">
						<xsl:text>AES</xsl:text>
					</xsl:when>
				</xsl:choose>
			</td>
		</tr>
		<tr>
			<th>
				Schlüssellänge
			</th>
			<td colspan="2">
				<xsl:choose>
					<xsl:when test="EncryptionAlgorithm = 'Des'">
						<xsl:value-of select="KeyLength"/>
						<xsl:text>&#160;Bit</xsl:text>
					</xsl:when>
					<xsl:when test="EncryptionAlgorithm = 'TripleDes'">
						<xsl:text>168 Bit</xsl:text>
					</xsl:when>
					<xsl:when test="EncryptionAlgorithm = 'RC2_40'">
						<xsl:text>40 Bit</xsl:text>
					</xsl:when>
					<xsl:when test="EncryptionAlgorithm = 'RC2_64'">
						<xsl:text>64 Bit</xsl:text>
					</xsl:when>
					<xsl:when test="EncryptionAlgorithm = 'RC2_128'">
						<xsl:text>128 Bit</xsl:text>
					</xsl:when>
					<xsl:when test="EncryptionAlgorithm = 'Aes128'">
						<xsl:text>128 Bit</xsl:text>
					</xsl:when>
					<xsl:when test="EncryptionAlgorithm = 'Aes192'">
						<xsl:text>192 Bit</xsl:text>
					</xsl:when>
					<xsl:when test="EncryptionAlgorithm = 'Aes256'">
						<xsl:text>256 Bit</xsl:text>
					</xsl:when>
					<xsl:when test="EncryptionAlgorithm = 'Blowfish'">
						<xsl:text>128 Bit</xsl:text>
					</xsl:when>
					<xsl:when test="EncryptionAlgorithm = 'Idea'">
						<xsl:text>128 Bit</xsl:text>
					</xsl:when>
					<xsl:when test="EncryptionAlgorithm = 'Twofish256'">
						<xsl:text>256 Bit</xsl:text>
					</xsl:when>
					<xsl:when test="EncryptionAlgorithm = 'Cast5'">
						<xsl:text>128 Bit</xsl:text>
					</xsl:when>
				</xsl:choose>
			</td>
		</tr>
	</xsl:template>
	<xsl:template match="MalwareInformation">
		<xsl:call-template name="DeMailHeader">
			<xsl:with-param name="Heading" select="'Malware Nachricht'" />
		</xsl:call-template>
		<tr>
			<td>Art:</td>
			<td>
				<xsl:choose>
					<xsl:when test="Notification">
						<xsl:text>Benachrichtigung</xsl:text>
					</xsl:when>
					<xsl:otherwise>
						<xsl:text>Bestätigung</xsl:text>
					</xsl:otherwise>
				</xsl:choose>
			</td>
		</tr>
		<xsl:call-template name="DeMailStandardInfos" />
	</xsl:template>
	<xsl:template match="IdentificationMessage">
		<xsl:call-template name="DeMailHeader">
			<xsl:with-param name="Heading" select="'Identifikationsnachricht'" />
		</xsl:call-template>
		<xsl:call-template name="DeMailStandardInfos" />
		<xsl:call-template name="DeMailDeliveryOptions" />
	</xsl:template>
	<xsl:template name="DeMailDeliveryOptions">
		<tr>
			<th>Verwendete Zustelloptionen</th>
			<td>
				<xsl:call-template name="FormatList">
					<xsl:with-param name="Nodes" select="IsPrivate[text()='true'] | IsAuthoritative[text()='true']"	 />
				</xsl:call-template>
			</td>
		</tr>
	</xsl:template>
	<xsl:template match="Notification">
		<xsl:call-template name="DeMailHeader">
			<xsl:with-param name="Heading" select="'Benachrichtigung'" />
		</xsl:call-template>
		<xsl:call-template name="DeMailStandardInfos" />
	</xsl:template>
	<xsl:template match="DeMail/ConfirmationMessage">
		<xsl:call-template name="DeMailHeader">
			<xsl:with-param name="Heading" select="'Bestätigungsnachricht'" />
		</xsl:call-template>
		<xsl:call-template name="DeMailStandardInfos" />
		<xsl:call-template name="DeMailDeliveryOptions" />
	</xsl:template>

	<xsl:template match="DeMail/InboundMessage">
		<xsl:call-template name="DeMailHeader">
			<xsl:with-param name="Heading" select="'Standard Nachricht'" />
		</xsl:call-template>
		<xsl:call-template name="DeMailStandardInfos" />
		<xsl:call-template name="DeMailDeliveryOptions" />
		<tr>
			<th>Angeforderte Bestätigungen</th>
			<td>
				<xsl:call-template name="FormatList">
					<xsl:with-param name="Nodes" select="IsConfirmationOfDispatchRequested[text()='true'] | IsConfirmationOfReceiptRequested[text()='true'] | IsConfirmationOfRetrieveRequested[text()='true']"	 />
				</xsl:call-template>
			</td>
		</tr>
	</xsl:template>
	<xsl:template match="IsConfirmationOfDispatchRequested">
		<xsl:text>Versand (Einschreiben)</xsl:text>
	</xsl:template>
	<xsl:template match="IsConfirmationOfReceiptRequested">
		<xsl:text>Eingang (Einschreiben Einwurf)</xsl:text>
	</xsl:template>
	<xsl:template match="IsConfirmationOfRetrieveRequested">
		<xsl:text>Abholung</xsl:text>
	</xsl:template>
	<xsl:template name="DeMailHeader">
		<xsl:param name="Heading" />
		<tr>
			<th>Nachrichtenart</th>
			<td>
				<xsl:value-of select="$Heading" />
			</td>
		</tr>
	</xsl:template>

	<xsl:template name="DeMailStandardInfos">
		<tr>
			<th>Absender</th>
			<td colspan="1">
				<xsl:value-of select="Sender"/>
			</td>

		</tr>
		<tr>
			<th>Ursprüngliche Empfänger</th>
			<td colspan="1">
				<xsl:apply-templates select="ChosenRecipients"/>
			</td>

		</tr>
		<tr>
			<th>Tatsächliche Empfänger</th>
			<td colspan="1">
				<xsl:apply-templates select="ActualRecipients"/>
			</td>

		</tr>
		<tr>
			<th>Authentisierungsniveau</th>
			<td colspan="1">
				<xsl:choose>
					<xsl:when test="AuthenticationLevel = 'High'">Hoch</xsl:when>
					<xsl:otherwise>Normal</xsl:otherwise>
				</xsl:choose>
			</td>

		</tr>
		<tr>
			<th>Authentisierungs-Mechanismus</th>
			<td colspan="1" class="ProperCapitalization">
				<xsl:choose>
					<xsl:when test="AuthenticationMechanism != ''">
						<xsl:value-of select="AuthenticationMechanism"/>
					</xsl:when>
					<xsl:otherwise>
						<xsl:text>Unbekannt</xsl:text>
					</xsl:otherwise>
				</xsl:choose>
			</td>

		</tr>
		<tr>
			<th>Nachrichten Id</th>
			<td colspan="1">
				<xsl:value-of select="MessageId"/>
			</td>

		</tr>
		<tr>
			<th>De-Mail Provider des Absenders</th>
			<td colspan="1">
				<xsl:value-of select="OriginatorProvider"/>
			</td>

		</tr>
		<tr>
			<th>Vom Dienstanbieter signiert</th>
			<xsl:choose>
				<xsl:when test="SignatureCertificate/*">
					<td>Ja</td>
				</xsl:when>
				<xsl:otherwise>
					<td>Nein</td>
				</xsl:otherwise>
			</xsl:choose>
		</tr>
		<xsl:if test="SignatureCertificate/*">
			<tr>
				<th class="indented">Ausgestellt für</th>
				<td>
					<xsl:value-of select="SignatureCertificate/Subject" />
				</td>
			</tr>
			<tr>
				<th class="indented">Ausgestellt von</th>
				<td>
					<xsl:value-of select="SignatureCertificate/Issuer" />
				</td>
			</tr>
			<tr>
				<th class="indented">Gültigkeit</th>
				<td>
					<xsl:text>From&#160;</xsl:text>
					<xsl:value-of select="extensions:FormatDateTime(SignatureCertificate/ValidFrom, 'dd.MM.yyyy HH:mm:ss')" />
					<xsl:text>&#160;to&#160;</xsl:text>
					<xsl:value-of select="extensions:FormatDateTime(SignatureCertificate/ValidTo, 'dd.MM.yyyy HH:mm:ss')" />
				</td>
			</tr>
		</xsl:if>
	</xsl:template>
	<xsl:template match="IsPrivate">
		<xsl:text>Persönlich (Einschreiben Eigenhändig)</xsl:text>
	</xsl:template>
	<xsl:template match="IsAuthoritative">
		<xsl:text>Absenderbestätigt</xsl:text>
	</xsl:template>
	<xsl:template name="FormatList">
		<xsl:param name="Nodes" />
		<xsl:param name="FallbackText" select="'None'" />
		<xsl:choose>
			<xsl:when test="count($Nodes) &gt; 0">
				<xsl:for-each select="$Nodes">
					<xsl:apply-templates select="." />
					<xsl:if test="position() != last()">,&#160;</xsl:if>
				</xsl:for-each>
			</xsl:when>
			<xsl:otherwise>
				<xsl:value-of select="$FallbackText"/>
			</xsl:otherwise>
		</xsl:choose>

	</xsl:template>

	<xsl:template match="ChosenRecipients | ActualRecipients">
		<xsl:if test="count(ToRecipients/Recipient) &gt; 0">
			<tr>
				<th class="indented">An</th>
				<xsl:apply-templates select="ToRecipients" />
			</tr>
		</xsl:if>
		<xsl:if test="count(CCRecipients/Recipient) &gt; 0">
			<tr>
				<th class="indented">CC</th>
				<xsl:apply-templates select="CCRecipients" />
			</tr>
		</xsl:if>
		<xsl:if test="count(BccRecipients/Recipient) &gt; 0">
			<tr>
				<th class="indented">BCC</th>
				<xsl:apply-templates select="BccRecipients" />
			</tr>
		</xsl:if>
	</xsl:template>
	<xsl:template match="ToRecipients | CCRecipients | BccRecipients">
		<td>
			<xsl:for-each select="Recipient">
				<xsl:value-of select="."/>
				<xsl:if test="position() != last()">,&#160;</xsl:if>
			</xsl:for-each>
		</td>
	</xsl:template>
</xsl:stylesheet>
