13.01.2014 Aufrufe

PDF 941kB - Hochschule Ulm

PDF 941kB - Hochschule Ulm

PDF 941kB - Hochschule Ulm

MEHR ANZEIGEN
WENIGER ANZEIGEN

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

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!