<commit_before>% vim: set tw=160:

\chapter{Bindung an ein XHTML-Dokument}
\label{chap:Signaturbindung}
Eine Signatur mit \gls{xml-dsig} hält ihre Verweise zu den signierten Inhalten über die \xmlelem{Reference}-Elemente aus \fref{sec:XML-DSig:Referenzen}.
Im Fall der Verwendung innerhalb eines \gls{webbrowser} muss das aufgerufene \gls{xhtml}-Dokument einen Verweis auf die Signatur beinhalten. Dies ist notwendig,
da die Information über die Bereiche, welche signiert wurden, nur in der Signatur selbst festgehalten werden. Ruft ein \gls{webbrowser} ein \gls{xhtml}-Dokument
ab, so muss ihm bekannt gemacht werden, dass für dieses Dokument Signaturinformationen vorhanden sind. Sind diese Informationen verfügbar gemacht worden, kann
der \gls{webbrowser} daraus die signierten Bereiche ermitteln.

Um solche Verweise auf Signaturen an ein \gls{xhtml}-Dokument binden zu können, bieten sich mehrere Verfahren an.

\section{HTTP-Header}
\index{HTTP-Header}
Als Antwort auf die Anfrage eines \gls{webbrowser} wird vom Webserver ein eigener \gls{http}-Header ausgeliefert, welcher eine Liste von \glspl{url} enthält, die auf
Signatur-Dateien verweisen. Dadurch wäre eine klare Trennung der Signaturen vom \gls{xhtml}-Inhalt gewährleistet.
Ein \gls{http}-Header kann auch mehrfach in der Antwort eines Webservers an einen \gls{webbrowser} enthalten sein. \gls{http} sieht keine Größenbeschränkung für
die Header-Informationen vor \cite{http:ietf}, jedoch sind Beschränkungen in \gls{http}-verarbeitenden Programmen möglich.

\lstinputlisting[caption={Verwendung von \protect\gls{http}-Header},
                 label=lst:http-header,
                 emph={X-Signature}]{source/http-header}

\section{\xmlelem{link}-Element}
Der \gls{xhtml}-Standard definiert das \xmlelem{link}-Element, um Relationen zu anderen Dokumenten zu definieren \cite{xhtml:oreilly}. Es ist Teil des
\xmlelem{head}-Bereichs und kann dort mehrfach eingesetzt werden. Ein einzelnes \xmlelem{link}-Element definiert genau eine Relation. Bezüglich des Verhaltens
der \gls{webbrowser} beim Verarbeiten eines \xmlelem{link}-Elements macht der \gls{xhtml}-Standard keine verbindlichen Aussagen. Es wird aber darauf
hingewiesen, dass dieses Element speziell für zukünftige, noch nicht definierte Verhaltensmuster bei \gls{webbrowser} vorgesehen ist.

Es ist damit möglich, über das \xmlattr{link}{href}-Attribut des \xmlelem{link}-Elements den Verweis auf die \gls{url} einer Signaturinformation zu realisieren. In
\fref{lst:link} ist dies auf \fref{lin:link-href} zu sehen. Da das
Element auch mehrfach in einem \gls{xhtml}-Dokument verwendet werden kann, lassen sich damit auch mehrere unterschiedliche Signaturinformationen einbinden.

\lstinputlisting[language=HTML,
                 caption={Verwendung von \xmlelem{link}},
                 label=lst:link,
                 emph={link,href}]{source/link.html}

\section{XML-Namespaces}
\label{sec:Signaturbindung:XML-NS}
Um mehrere verschiedene \gls{xml}-Dialekte in einem gemeinsamen Dokument zu trennen werden \gls{xml-ns} benutzt \cite{xml-ns:w3c}. Auch das Auffinden von
Elementen in einem Dokument, die zum selben \gls{xml}-Dialekt gehören, wird mittels \gls{xml-ns} bewerkstelligt \cite{xml:oreilly}. Diese Eigenschaften lässt
sich auf die beiden \gls{xml}-Dialekte \gls{xhtml} und \gls{xml-dsig} anwenden, um sie in einem Dokument zu kombinieren. Dazu kann die Signatur an einer
beliebigen Stelle innerhalb des \gls{xhtml}-Dokuments platziert werden und über \xmlelem{Reference} auf Bereiche des Dokuments verweisen. Zur Identifikation der
einzelnen Namespaces werden \glspl{uri} wie in \fref{tab:xml-namespaces} benutzt, welche in der Spezifikation der \gls{xml}-Dialekte festgelegt sind.

\fref{lst:xmlns} zeigt die Kombination der Namespaces von \gls{xhtml} und \gls{xml-dsig}. Dabei wird für das Wurzel-Element des Dokuments, \xmlelem{html} auf<commit_msg>Don't use links in listing caption.<commit_after>% vim: set tw=160:

\chapter{Bindung an ein XHTML-Dokument}
\label{chap:Signaturbindung}
Eine Signatur mit \gls{xml-dsig} hält ihre Verweise zu den signierten Inhalten über die \xmlelem{Reference}-Elemente aus \fref{sec:XML-DSig:Referenzen}.
Im Fall der Verwendung innerhalb eines \gls{webbrowser} muss das aufgerufene \gls{xhtml}-Dokument einen Verweis auf die Signatur beinhalten. Dies ist notwendig,
da die Information über die Bereiche, welche signiert wurden, nur in der Signatur selbst festgehalten werden. Ruft ein \gls{webbrowser} ein \gls{xhtml}-Dokument
ab, so muss ihm bekannt gemacht werden, dass für dieses Dokument Signaturinformationen vorhanden sind. Sind diese Informationen verfügbar gemacht worden, kann
der \gls{webbrowser} daraus die signierten Bereiche ermitteln.

Um solche Verweise auf Signaturen an ein \gls{xhtml}-Dokument binden zu können, bieten sich mehrere Verfahren an.

\section{HTTP-Header}
\index{HTTP-Header}
Als Antwort auf die Anfrage eines \gls{webbrowser} wird vom Webserver ein eigener \gls{http}-Header ausgeliefert, welcher eine Liste von \glspl{url} enthält, die auf
Signatur-Dateien verweisen. Dadurch wäre eine klare Trennung der Signaturen vom \gls{xhtml}-Inhalt gewährleistet.
Ein \gls{http}-Header kann auch mehrfach in der Antwort eines Webservers an einen \gls{webbrowser} enthalten sein. \gls{http} sieht keine Größenbeschränkung für
die Header-Informationen vor \cite{http:ietf}, jedoch sind Beschränkungen in \gls{http}-verarbeitenden Programmen möglich.

\lstinputlisting[caption={Verwendung von \protect\glstext*{http}-Header},
                 label=lst:http-header,
                 emph={X-Signature}]{source/http-header}

\section{\xmlelem{link}-Element}
Der \gls{xhtml}-Standard definiert das \xmlelem{link}-Element, um Relationen zu anderen Dokumenten zu definieren \cite{xhtml:oreilly}. Es ist Teil des
\xmlelem{head}-Bereichs und kann dort mehrfach eingesetzt werden. Ein einzelnes \xmlelem{link}-Element definiert genau eine Relation. Bezüglich des Verhaltens
der \gls{webbrowser} beim Verarbeiten eines \xmlelem{link}-Elements macht der \gls{xhtml}-Standard keine verbindlichen Aussagen. Es wird aber darauf
hingewiesen, dass dieses Element speziell für zukünftige, noch nicht definierte Verhaltensmuster bei \gls{webbrowser} vorgesehen ist.

Es ist damit möglich, über das \xmlattr{link}{href}-Attribut des \xmlelem{link}-Elements den Verweis auf die \gls{url} einer Signaturinformation zu realisieren. In
\fref{lst:link} ist dies auf \fref{lin:link-href} zu sehen. Da das
Element auch mehrfach in einem \gls{xhtml}-Dokument verwendet werden kann, lassen sich damit auch mehrere unterschiedliche Signaturinformationen einbinden.

\lstinputlisting[language=HTML,
                 caption={Verwendung von \xmlelem{link}},
                 label=lst:link,
                 emph={link,href}]{source/link.html}

\section{XML-Namespaces}
\label{sec:Signaturbindung:XML-NS}
Um mehrere verschiedene \gls{xml}-Dialekte in einem gemeinsamen Dokument zu trennen werden \gls{xml-ns} benutzt \cite{xml-ns:w3c}. Auch das Auffinden von
Elementen in einem Dokument, die zum selben \gls{xml}-Dialekt gehören, wird mittels \gls{xml-ns} bewerkstelligt \cite{xml:oreilly}. Diese Eigenschaften lässt
sich auf die beiden \gls{xml}-Dialekte \gls{xhtml} und \gls{xml-dsig} anwenden, um sie in einem Dokument zu kombinieren. Dazu kann die Signatur an einer
beliebigen Stelle innerhalb des \gls{xhtml}-Dokuments platziert werden und über \xmlelem{Reference} auf Bereiche des Dokuments verweisen. Zur Identifikation der
einzelnen Namespaces werden \glspl{uri} wie in \fref{tab:xml-namespaces} benutzt, welche in der Spezifikation der \gls{xml}-Dialekte festgelegt sind.

\fref{lst:xmlns} zeigt die Kombination der Namespaces von \gls{xhtml} und \gls{xml-dsig}. Dabei wird für das Wurzel-Element des Dokuments, \xmlelem{html} auf
{'fraction_non_alphanumeric': 0.08494554772581678, 'fraction_numerical': 0.0010249839846252402, 'mean_word_length': 5.074708171206225, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 48}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '3939270', 'n_tokens_mistral': 2628, 'n_tokens_neox': 2687, 'n_words': 826}