06.11.2014 Views

A User Centric Security Model for Tamper-Resistant Devices

A User Centric Security Model for Tamper-Resistant Devices

A User Centric Security Model for Tamper-Resistant Devices

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

C.3 Attestation Protocol<br />

214 }<br />

215 private void generateResponse ( short msgNumber) {<br />

216 short childPM1 = 0 ;<br />

217 short childPM2 = 0 ;<br />

218 copyPointer = 0 ;<br />

219 i f (msgNumber == 1) {<br />

220 copyPointer = U t i l . arrayCopy ( this . SCProtocolInitiatorTag , ( short ) 0 ,<br />

221 this . r e c e i v i n g B u f f e r , copyPointer ,<br />

222 ( short )<br />

223 this . S C P r o t o c o l I n i t i a t o r T a g . l e n g t h ) ;<br />

224 randomDataGen . generateData ( this . SCRandomNumberArray ,<br />

225 this . PTLVDataOffset , ( short ) 16) ;<br />

226 childPM1 = copyPointer ;<br />

227 copyPointer += 2 ;<br />

228 phMacGeneratorKey . setKey ( this . SCRandomNumberArray ,<br />

229 this . PTLVDataOffset ) ;<br />

230 phMacGenerator . i n i t ( phMacGeneratorKey , S i g n a t u r e .MODE_SIGN,<br />

231 I n i t i a l i s a t i o n V e c t o r , ( short ) 0 , ( short )<br />

232 I n i t i a l i s a t i o n V e c t o r . l e n g t h ) ;<br />

233 return ;<br />

234 } else i f (msgNumber == 2) {<br />

235 keygenerator ( ) ;<br />

236 childPM1 = ( short ) 6 ;<br />

237 copyPointer = U t i l . arrayCopyNonAtomic ( this . MessageHandlerTagTwo ,<br />

238 ( short ) 0 , this . r e c e i v i n g B u f f e r , copyPointer , ( short )<br />

239 this . MessageHandlerTagTwo . l e n g t h ) ;<br />

240 copyPointer = U t i l . arrayCopyNonAtomic ( this . SCRandomNumberArray ,<br />

241 ( short ) 0 , this . r e c e i v i n g B u f f e r , copyPointer , ( short )<br />

242 this . SCRandomNumberArray . l e n g t h ) ;<br />

243 this . r e c e i v i n g B u f f e r [ childPM1 ]++;<br />

244 copyPointer = U t i l . arrayCopyNonAtomic ( this . EncryptedDataTag , ( short )<br />

245 0 , this . r e c e i v i n g B u f f e r , copyPointer , ( short )<br />

246 this . EncryptedDataTag . l e n g t h ) ;<br />

247 copyPointer += 3 ;<br />

248 childPM2 = ( short ) ( copyPointer − ( short ) 1) ;<br />

249 this . r e c e i v i n g B u f f e r [ childPM1 ]++;<br />

250 MessageDigest myHashGen = MessageDigest . g e t I n s t a n c e<br />

251 ( MessageDigest .ALG_SHA_256, f a l s e ) ;<br />

252 short tempLength = ( short )myHashGen . doFinal ( this . ClassDH . dhModulus ,<br />

( short ) 0 ,<br />

253 ( short ) this . ClassDH . dhModulus . length ,<br />

r e c e i v i n g B u f f e r ,<br />

254 copyPointer ) ;<br />

255 this . r e c e i v i n g B u f f e r [ childPM2 ]++;<br />

256 this . shortToBytes ( this . r e c e i v i n g B u f f e r , ( short ) ( copyPointer −<br />

( short )<br />

257 2) , tempLength ) ;<br />

258 copyPointer += tempLength ;<br />

259 copyPointer = U t i l . arrayCopyNonAtomic ( this . SCIdentityTag , ( short ) 0 ,<br />

260 this . r e c e i v i n g B u f f e r , copyPointer , ( short )<br />

261 this . SCIdentityTag . l e n g t h ) ;<br />

277

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!