PDF 941kB - Hochschule Ulm
PDF 941kB - Hochschule Ulm
PDF 941kB - Hochschule Ulm
Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
Implementierung<br />
11 }<br />
Listing 16: App empfängt das Teilgeheimnis vom Reader und sendet ihre digitale<br />
Signatur weiter.<br />
Anschließend wird das Objekt appRsa, die das Schlüsselpaar der App repräsentiert wie<br />
in Kapitel 7.3 gezeigt wurde, dazu verwendet um mit der SignData() Methode das Teilgeheimnis<br />
der App zu signieren. Dazu wird das Teilgeheimnis und eine Instanz der Klasse<br />
SHA256Managed, die als Hashfunktion verwendet wird, übergeben. Der Rückgabewert<br />
der SignData() Methode wird in dem Byte-Array appSignature zugewiesen. Danach<br />
wird ein NdefMessage Objekt erzeugt, dem ein NdefRecord Objekt hinzugefügt wird.<br />
Dem NdefRecord Objekt wird die Id = 3 zugewiesen sowie der Property Payload der<br />
Inhalt der Variable appSignature. Anschließend wird das NdefMessage Objekt mit der<br />
SendData() Methode an den Reader übertragen.<br />
Der Reader erhält die Nachricht mit der Sequenznummer 3 von der App und fügt<br />
zunächst den Inhalt des empfangenen Payloads der Variable appSignature hinzu, wie in<br />
Listing 17 gezeigt wird.<br />
1 if( ndefMessage [0]. Id [0] == 3 && this . currentStage == 3)<br />
2 {<br />
3 this . appSignature = ndefMessage [0]. Payload ;<br />
4<br />
5 bool isValid = this . appRsa . VerifyData ( this .<br />
appTeilgeheimnis , new SHA256Managed () , this .<br />
appSignature );<br />
6 if( isValid )<br />
7 {<br />
8 byte [] readerSignature = this . readerRsa .<br />
SignData ( this . ecdh . Teilgeheimnis , new<br />
SHA256Managed ());<br />
9<br />
10 this . currentStage += 2;<br />
11 byte [] B = { 66 };<br />
12 byte [] id = { 4 };<br />
13 this . nfc . SendMessage ( new NdefMessage () { new<br />
NdefRecord () { Id = id , Payload =<br />
readerSignature , Type = B, TypeNameFormat<br />
= NdefRecord . TypeNameFormatType .<br />
ExternalRtd } });<br />
14 }<br />
15 else<br />
16 {<br />
17 this . currentStage = 1;<br />
18 Console . WriteLine (" Invalid Checksum \n");<br />
19 Debug . WriteLine (" Invalid Checksum ");<br />
60