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.5 Secure and Trusted Channel Protocol Smart Card<br />

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

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

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

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

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

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

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

438 break ;<br />

439 case GEN_DHKEY:<br />

440 try {<br />

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

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

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

444 SCSPDHGeneratedValue = JCSystem . makeTransientByteArray ( ( short )<br />

445 ClassDH . dhModulus . length ,<br />

JCSystem .MEMORY_TYPE_TRANSIENT_DESELECT) ;<br />

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

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

448 SCSPDHGeneratedValue , ( short ) 0) ;<br />

449 }<br />

450 catch ( Exception cE ) {<br />

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

452 }<br />

453 break ;<br />

454 default :<br />

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

456 }<br />

457 }<br />

458 void keygenerator ( ) {<br />

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

460 ( KeyBuilder .TYPE_AES_TRANSIENT_DESELECT,<br />

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

462 sessionGenKey . setKey ( SCSPDHGeneratedValue , ( short ) 0) ;<br />

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

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

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

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

467 JCSystem .MEMORY_TYPE_TRANSIENT_DESELECT) ;<br />

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

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

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

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

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

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

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

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

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

477 }<br />

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

479 keyGenMacData . length , SCSPDHGeneratedValue ,<br />

( short )<br />

322

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

Saved successfully!

Ooh no, something went wrong!