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.9 Plat<strong>for</strong>m Binding Protocol<br />

401 }<br />

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

403 }<br />

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

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

406 ] ;<br />

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

408 try {<br />

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

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

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

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

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

414 this . SCADHChanllengerArray . l e n g t h ) ;<br />

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

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

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

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

419 this . SCARandomNumberArray , ( short ) 0 ,<br />

420 ( short )<br />

421 ( this . SCARandomNumberArray . l e n g t h ) ) ;<br />

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

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

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

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

426 this . SCACookieArray , ( short ) 0 ,<br />

427 ( short ) ( this . SCACookieArray . l e n g t h ) ) ;<br />

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

429 }<br />

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

431 }<br />

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

433 ISOException . throwIt ( ( short ) c h i l d L e f t ) ;<br />

434 }<br />

435 }<br />

436 void protocolImplementation ( ) {}<br />

437 void d h I n i t i a l i s a t i o n ( ) {<br />

438 dhKey . setModulus ( ClassDH . dhModulus , ( short ) 0 ,<br />

( short ) ClassDH . dhModulus . l e n g t h ) ;<br />

439 }<br />

440 void dhKeyConGen(byte [ ] i n b u f f , short i n b u f f O f f s e t , byte Oper_Mode)<br />

441 {<br />

442 switch (Oper_Mode) {<br />

443 case GEN_KEYCONTRIBUTION: randomExponent =<br />

444 JCSystem . makeTransientByteArray ( ( short ) 32 ,<br />

445 JCSystem .MEMORY_TYPE_TRANSIENT_DESELECT) ;<br />

446 randomDataGen . generateData ( randomExponent , ( short ) 0 , ( short )<br />

447 randomExponent . l e n g t h ) ;<br />

448 dhKey . setExponent ( randomExponent , ( short ) 0 , ( short )<br />

449 randomExponent . l e n g t h ) ;<br />

450 pkCipher . i n i t ( dhKey , Cipher .MODE_ENCRYPT) ;<br />

426

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

Saved successfully!

Ooh no, something went wrong!