13.01.2014 Aufrufe

PDF 941kB - Hochschule Ulm

PDF 941kB - Hochschule Ulm

PDF 941kB - Hochschule Ulm

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

Implementierung<br />

8<br />

9 return secretKey ;<br />

10 }<br />

Listing 13: Funktionsweise der Methode GetSecretKey() der Klasse<br />

EllipticCurveDiffieHellman.<br />

Zunächst wird ein IBasicAgreement Objekt erstellt, welches das Diffie-Hellman Schlüsselaustauschverfahren<br />

mit elliptischer Kurven repräsentiert. Dieses Objekt wird mit<br />

dem Private Key des zuvor im Konstruktor erzeugen Schlüsselpaars initialisiert. Um<br />

den geheimen Schlüssel zu erzeugen, wird der Methode CalculateAgreement() des<br />

IBasicAgreement Objekts das empfangene Teilgeheimnis übergeben.<br />

Der praktische Einsatz dieser Klasse wiederspiegelt sich zunächst bei den Nachrichten<br />

mit der Sequenznummer 1 und 2, wie in Abbildung 26 bereits zu sehen war. Die App<br />

empfängt die Nachricht vom Reader mit der Sequenznummer 0. Die Instanz der Klasse<br />

EllipticCurveDiffieHellman wurde zuvor im Konstruktor der App erzeugt und<br />

der Klassenvariable ecdh zugewiesen. Mithilfe des ecdh Objekts wird auf die Property<br />

Teilgeheimnis zugegriffen und der Inhalt der Variable appTeilgeheimnis zugewiesen. Als<br />

nächstes wird ein NdefMessage Objekt erzeugt, dem ein NdefRecord Objekt mit der<br />

Id = 1 als Sequenznummer und dem appTeilgeheimnis als Payload zugewiesen wird. In<br />

Listing 14 wird dies veranschaulicht.<br />

1 if( ndefMessage [0]. Id [0] == 0 && this . currentStage == 0)<br />

2 {<br />

3 byte [] appTeilgeheimnis = this . ecdh . Teilgeheimnis ;<br />

4<br />

5 this . currentStage += 2;<br />

6 byte [] B = { 66 };<br />

7 byte [] id = { 1 };<br />

8 this . nfc . SendMessage ( new NdefMessage () { new<br />

NdefRecord () { Id = id , Payload =<br />

appTeilgeheimnis , Type = B, TypeNameFormat =<br />

NdefRecord . TypeNameFormatType . ExternalRtd } });<br />

9 }<br />

Listing 14: App überträgt sein Teilgeheimnis.<br />

Anschließend wird das Teilgeheimnis der App über die SendMessage() Methode an<br />

den Reader übertragen. Der Reader empfängt die Nachricht mit der Sequenznummer 1<br />

und speichert den Payload der Nachricht in der Variable appTeilgeheimnis ab, wie in<br />

Listing 15 zu sehen ist.<br />

1 if( ndefMessage [0]. Id [0] == 1 && this . currentStage == 1)<br />

2 {<br />

3 this . appTeilgeheimnis = ndefMessage [0]. Payload ;<br />

4<br />

58

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!