PDF 941kB - Hochschule Ulm
PDF 941kB - Hochschule Ulm
PDF 941kB - Hochschule Ulm
Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
Implementierung<br />
1 public byte [] GetOriginalData ( byte [] bytesWithChecksum )<br />
2 {<br />
3 int checksumLength = ( int ) bytesWithChecksum .<br />
LastOrDefault ();<br />
4 int dataLength = bytesWithChecksum . Length -<br />
checksumLength - 1;<br />
5<br />
6 byte [] data = new byte [ dataLength ];<br />
7 for ( int i = 0; i < dataLength ; i ++)<br />
8 {<br />
9 data [i] = bytesWithChecksum [i];<br />
10 }<br />
11<br />
12 return data ;<br />
13 }<br />
Listing 24: Funktionsweise der GetOriginalData() Methode.<br />
Nachdem die App die Nachricht mit der Sequenznummer 4 vom Reader erhalten hat<br />
und die digitale Signatur vom Reader erfolgreich auf Gültigkeit überprüft werden konnte,<br />
überträgt die App eine AES-verschlüsselte Nachricht an den Reader. Welche Schritte<br />
dabei durchgeführt werden müssen, wird in Listing 25 gezeigt.<br />
1 if( ndefMessage [0]. Id [0] == 4 && this . currentStage == 4)<br />
2 {<br />
3 this . readerSignature = ndefMessage [0]. Payload ;<br />
4<br />
5 bool isValid = this . readerRsa . VerifyData ( this .<br />
readerTeilgeheimnis , new SHA256Managed () , this .<br />
readerSignature );<br />
6 if( isValid )<br />
7 {<br />
8 this . secretKey = this . ecdh . GetSecretKey ( this<br />
. readerTeilgeheimnis );<br />
9 this . aes = new Aes ( this . secretKey .<br />
ToByteArray ());<br />
10<br />
11 // ...<br />
12<br />
13 Checksum c = new Checksum ();<br />
14 byte [] dataWithChecksum = c.<br />
GetBytesWithChecksum (" Encrypted Hello<br />
from App !");<br />
15 byte [] encryptedMessage = this . aes . Encrypt (<br />
dataWithChecksum );<br />
67