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

480 0) ;<br />

481 this . phCipherKey . setKey ( SCSPDHGeneratedValue , ( short ) 0) ;<br />

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

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

484 }<br />

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

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

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

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

489 keyGenMacData . length , SCSPDHGeneratedValue ,<br />

( short )<br />

490 0) ;<br />

491 this . phMacGeneratorKey . setKey ( SCSPDHGeneratedValue , ( short ) 0) ;<br />

492 SCSPDHGeneratedValue = null ;<br />

493 JCSystem . r e q u e s t O b j e c t D e l e t i o n ( ) ;<br />

494 }<br />

495 void messageEncryption ( byte [ ] i n b u f f , short i n b u f f O f f s e t , short<br />

496 inbuffLength ) {<br />

497 syCipher . i n i t ( phCipherKey , Cipher .MODE_ENCRYPT, I n i t i a l i s a t i o n V e c t o r ,<br />

498 ( short ) 0 , ( short ) 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 />

499 this . shortToBytes ( i n b u f f , ( short ) ( i n b u f f O f f s e t − 3) , ( short )<br />

500 syCipher . doFinal ( i n b u f f , i n b u f f O f f s e t , inbuffLength ,<br />

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

502 }<br />

503 void phDecryption ( byte [ ] i n b u f f , short i n b u f f O f f s e t , short inbuffLength )<br />

504 {<br />

505 syCipher . i n i t ( phCipherKey , Cipher .MODE_DECRYPT, I n i t i a l i s a t i o n V e c t o r ,<br />

506 ( short ) 0 , ( short ) 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 />

507 syCipher . doFinal ( i n b u f f , i n b u f f O f f s e t , inbuffLength , i n b u f f ,<br />

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

509 }<br />

510 boolean macGenerate ( byte [ ] i n b u f f , short i n b u f f O f f s e t , short<br />

511 inbuffLength , short macMode) {<br />

512 i f (macMode == S i g n a t u r e .MODE_SIGN) {<br />

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

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

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

516 try {<br />

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

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

519 this . MACedDataTag . l e n g t h ) ;<br />

520 copyPointer += 2 ;<br />

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

522 ISOException . throwIt ( ( short ) 0xFA17) ;<br />

523 }<br />

524 try {<br />

525 short l e n g t h = ( short ) phMacGenerator . s i g n ( this . r e c e i v i n g B u f f e r ,<br />

526 i n b u f f O f f s e t , inbuffLength , i n b u f f , copyPointer ) ;<br />

527 this . shortToBytes ( i n b u f f , ( short ) ( copyPointer − ( short ) 2) ,<br />

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

528 copyPointer += l e n g t h ;<br />

323

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

Saved successfully!

Ooh no, something went wrong!