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

451 pkCipher . doFinal ( ClassDH . dhBase , ( short ) 0 ,<br />

( short ) ClassDH . dhBase . length , i n b u f f ,<br />

452 i n b u f f O f f s e t ) ;<br />

453 break ;<br />

454 case GEN_DHKEY:<br />

455 try {<br />

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

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

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

459 SCBSCADHGeneratedValue = JCSystem . makeTransientByteArray (<br />

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

461 JCSystem .MEMORY_TYPE_TRANSIENT_DESELECT) ;<br />

462 pkCipher . doFinal ( i n b u f f , i n b u f f O f f s e t , ( short ) ( ( short )<br />

463 i n b u f f . l e n g t h − ( short ) this . PTLVDataOffset )<br />

464 , SCBSCADHGeneratedValue , ( short ) 0) ;<br />

465 }<br />

466 catch ( Exception cE ) {<br />

467 ISOException . throwIt ( ( short ) 0xD86E) ;<br />

468 }<br />

469 break ;<br />

470 default :<br />

471 ISOException . throwIt ( ( short ) 0x5FA1) ;<br />

472 }<br />

473 }<br />

474 void keygenerator ( ) {<br />

475 AESKey sessionGenKey = (AESKey) KeyBuilder . buildKey<br />

476 ( KeyBuilder .TYPE_AES_TRANSIENT_DESELECT,<br />

477 KeyBuilder .LENGTH_AES_128, f a l s e ) ;<br />

478 sessionGenKey . setKey ( SCBSCADHGeneratedValue , ( short ) 0) ;<br />

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

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

481 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 />

482 byte [ ] keyGenMacData = JCSystem . makeTransientByteArray ( ( short ) 64 ,<br />

483 JCSystem .MEMORY_TYPE_TRANSIENT_DESELECT) ;<br />

484 short p o i n t e r = 0 ;<br />

485 p o i n t e r = U t i l . arrayCopyNonAtomic ( this . SCARandomNumberArray ,<br />

486 this . PTLVDataOffset , keyGenMacData , ( short ) pointer , ( short ) 16) ;<br />

487 p o i n t e r = U t i l . arrayCopyNonAtomic ( this . SCBRandomNumberArray ,<br />

488 this . PTLVDataOffset , keyGenMacData , ( short ) pointer , ( short ) 16) ;<br />

489 p o i n t e r = U t i l . arrayCopyNonAtomic ( SCBSCADHGeneratedValue , (short ) 16 ,<br />

490 keyGenMacData , ( short ) pointer , ( short ) 16) ;<br />

491 <strong>for</strong> ( short i = 4 8 ; i < 6 4 ; i ++) {<br />

492 keyGenMacData [ i ] = ( byte ) 0x02 ;<br />

493 }<br />

494 phMacGenerator . s i g n ( keyGenMacData , ( short ) 0 , ( short )<br />

495 keyGenMacData . length , SCBSCADHGeneratedValue ,<br />

496 ( short ) 0) ;<br />

497 this . phCipherKey . setKey ( SCBSCADHGeneratedValue , ( short ) 0) ;<br />

498 <strong>for</strong> ( short i = 4 8 ; i < 6 4 ; i ++) {<br />

499 keyGenMacData [ i ] = ( byte ) 0x03 ;<br />

500 }<br />

427

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

Saved successfully!

Ooh no, something went wrong!