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

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

C.3 Attestation Protocol<br />

312 inLength = 3 ;<br />

313 CMVerificationKey . setExponent ( inArray , i n O f f s e t , inLength ) ;<br />

314 i n O f f s e t += ( short ) ( inLength + this . PTLVDataOffset ) ;<br />

315 inLength = ( short ) 6 4 ;<br />

316 CMVerificationKey . setModulus ( inArray , i n O f f s e t , inLength ) ;<br />

317 i n O f f s e t = ( short ) ( this . CTLVDataOffset + this . CTLVDataOffset ) ;<br />

318 inLength = ( short ) 8 4 ;<br />

319 i f ( this . signGenerate ( inArray , i n O f f s e t , inLength ,<br />

320 CMVerificationKey , S i g n a t u r e .MODE_VERIFY) ) {<br />

321 return true ;<br />

322 } else {<br />

323 ISOException . throwIt ( ( short ) 0 x6666 ) ;<br />

324 }<br />

325 } catch ( Exception ce ) {<br />

326 ISOException . throwIt ( ( short ) 0xAB23) ;<br />

327 }<br />

328 return true ;<br />

329 } else {<br />

330 ISOException . throwIt ( ( short ) 0xFA18) ;<br />

331 }<br />

332 return f a l s e ;<br />

333 }<br />

334 void parseMessage ( byte [ ] i n B u f f e r ) {<br />

335 byte c h i l d L e f t = i n B u f f e r [ ( short ) ( this . CTLVDataOffset − ( short ) 1) ] ;<br />

336 short p o i n t e r = ( short ) this . CTLVDataOffset ;<br />

337 try {<br />

338 while ( c h i l d L e f t > 0) {<br />

339 i f ( U t i l . arrayCompare ( CMDHChallengeTag , ( short ) 0 , i n B u f f e r ,<br />

340 pointer , ( short ) 4) == 0) {<br />

341 U t i l . arrayCopy ( i n B u f f e r , pointer , this . CMDHChanllengerArray ,<br />

342 ( short ) 0 ,<br />

( short ) this . CMDHChanllengerArray . l e n g t h )<br />

343 ;<br />

344 p o i n t e r += ( short ) this . CMDHChanllengerArray . l e n g t h ;<br />

345 } else i f ( U t i l . arrayCompare ( this . CMRandomNumberTag, ( short ) 0 ,<br />

346 i n B u f f e r , pointer , ( short ) 4) == 0) {<br />

347 U t i l . arrayCopyNonAtomic ( i n B u f f e r , pointer ,<br />

348 this . CMRandomNumberArray , ( short ) 0 ,<br />

349 ( short ) ( this . CMRandomNumberArray . l e n g t h ) )<br />

350 ;<br />

351 p o i n t e r += ( short ) ( this . CMRandomNumberArray . l e n g t h ) ;<br />

352 } else i f ( U t i l . arrayCompare ( this . CMCookieTag , ( short ) 0 , i n B u f f e r ,<br />

353 pointer , ( short ) 4) == 0) {<br />

354 U t i l . arrayCopyNonAtomic ( i n B u f f e r , pointer , this . CMCookieArray ,<br />

355 ( short ) 0 , ( short )<br />

356 ( this . CMCookieArray . l e n g t h ) ) ;<br />

357 p o i n t e r += ( short ) ( this . CMCookieArray . l e n g t h ) ;<br />

358 }<br />

359 c h i l d L e f t −= ( short ) 1 ;<br />

360 }<br />

361 } catch ( Exception cE ) {<br />

279

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

Saved successfully!

Ooh no, something went wrong!